enable package class condition for invoices, #14499
authormark <mark>
Sat, 17 Dec 2011 20:12:42 +0000 (20:12 +0000)
committermark <mark>
Sat, 17 Dec 2011 20:12:42 +0000 (20:12 +0000)
FS/FS/part_event/Condition/pkg_class.pm

index 8c9031c..d41ec6b 100644 (file)
@@ -11,8 +11,8 @@ sub description {
 }
 
 sub eventtable_hashref {
 }
 
 sub eventtable_hashref {
-    { 'cust_main' => 0,
-      'cust_bill' => 0,
+    { 'cust_main' => 1,
+      'cust_bill' => 1,
       'cust_pkg'  => 1,
     };
 }
       'cust_pkg'  => 1,
     };
 }
@@ -28,11 +28,22 @@ sub option_fields {
 }
 
 sub condition {
 }
 
 sub condition {
-  my( $self, $cust_pkg ) = @_;
+  my( $self, $object ) = @_;
 
 
-  #XXX test
+  # interpretation depends on the eventtable
   my $hashref = $self->option('pkgclass') || {};
   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;
 }
 
 1;