summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/part_event/Condition/pkg_class.pm21
1 files 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;