From 7f5e32275a5a2674fd1d220cd651b222b9831476 Mon Sep 17 00:00:00 2001 From: mark Date: Sat, 17 Dec 2011 20:12:42 +0000 Subject: [PATCH 1/1] enable package class condition for invoices, #14499 --- FS/FS/part_event/Condition/pkg_class.pm | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) 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; -- 2.11.0