From: mark Date: Sat, 17 Dec 2011 20:12:42 +0000 (+0000) Subject: enable package class condition for invoices, #14499 X-Git-Tag: freeside_2_3_1~72 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=7f5e32275a5a2674fd1d220cd651b222b9831476;hp=9dd7da8c2e0c7547adf0ef6abefa06b5e951dbf1 enable package class condition for invoices, #14499 --- 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;