use base qw( FS::part_event::Condition );
sub description {
- 'Invoice is billing for a certain service type';
+ 'Invoice is billing for (any of) certain service definitions';
}
sub eventtable_hashref {
};
}
-# could not find component for path '/elements/tr-select-part_svc.html'
-# sub disabled { 1; }
-
sub option_fields {
(
'has_service' => { 'label' => 'Has service',
'type' => 'select-part_svc',
+ 'multiple' => 1, #the HTML element seems to have it
+ #by default, but edit/part_event.html
+ #(and process) need to know
},
);
}
#my($self, $cust_bill, %opt) = @_;
my($self, $cust_bill) = @_;
- my $servicenum = $self->option('has_service');
- grep { $servicenum == $_->svcpart }
- map { $_->cust_pkg->cust_svc }
- $cust_bill->cust_bill_pkg ;
+ my $servicenum = $self->option('has_service') || {};
+
+ grep $servicenum->{ $_->svcpart },
+ map $_->cust_svc,
+ $cust_bill->cust_pkg;
}
sub condition_sql {
- my( $class, $table ) = @_;
-
- my $servicenum = $class->condition_sql_option('has_service');
+ my( $class, $table, %opt ) = @_;
+
+ my $servicenums =
+ $class->condition_sql_option_option_integer('has_service');
+
my $sql = qq| 0 < ( SELECT COUNT(cs.svcpart)
FROM cust_bill_pkg cbp, cust_svc cs
WHERE cbp.invnum = cust_bill.invnum
AND cs.pkgnum = cbp.pkgnum
- AND cs.svcpart = $servicenum
+ AND cs.svcpart IN $servicenums
)
|;
return $sql;