X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_event%2FCondition%2Fpkg_class.pm;h=d41ec6ba838df189594cc411bdd022d5a88beb98;hp=8c9031c6b2f770dc471dee15f281cad90ac810ec;hb=7f5e32275a5a2674fd1d220cd651b222b9831476;hpb=624b2d44625f69d71175c3348cae635d580c890b diff --git a/FS/FS/part_event/Condition/pkg_class.pm b/FS/FS/part_event/Condition/pkg_class.pm index 8c9031c6b..d41ec6ba8 100644 --- a/FS/FS/part_event/Condition/pkg_class.pm +++ b/FS/FS/part_event/Condition/pkg_class.pm @@ -11,8 +11,8 @@ sub description { } sub eventtable_hashref { - { 'cust_main' => 0, - 'cust_bill' => 0, + { 'cust_main' => 1, + 'cust_bill' => 1, 'cust_pkg' => 1, }; } @@ -28,11 +28,22 @@ sub option_fields { } sub condition { - my( $self, $cust_pkg ) = @_; + my( $self, $object ) = @_; - #XXX test + # interpretation depends on the eventtable my $hashref = $self->option('pkgclass') || {}; - $hashref->{ $cust_pkg->part_pkg->classnum }; + if ( $object->isa('FS::cust_pkg') ) { + # is this package in that class? + $hashref->{ $object->part_pkg->classnum }; + } + elsif ( $object->isa('FS::cust_main') ) { + # does this customer have an active package in that class? + grep { $hashref->{ $_->part_pkg->classnum } } $object->ncancelled_pkgs; + } + elsif ( $object->isa('FS::cust_bill') ) { + # does a package of that class appear on this invoice? + grep { $hashref->{ $_->part_pkg->classnum } } $object->cust_pkg; + } } 1;