X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_event%2FCondition%2Fcust_bill_has_service.pm;h=898b08d10ccc7fcdb37b175705bd1e0dae95423b;hp=ff02035d3a72fb1a9df2345895d340bf759ba44d;hb=aeb90ade381fc3d5477db0334048c2af623fccfe;hpb=7349e2c4d087cee96f677dc05e316885386428a7 diff --git a/FS/FS/part_event/Condition/cust_bill_has_service.pm b/FS/FS/part_event/Condition/cust_bill_has_service.pm index ff02035d3..898b08d10 100644 --- a/FS/FS/part_event/Condition/cust_bill_has_service.pm +++ b/FS/FS/part_event/Condition/cust_bill_has_service.pm @@ -6,7 +6,7 @@ use FS::cust_bill; 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 { @@ -16,13 +16,13 @@ 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 }, ); } @@ -31,23 +31,26 @@ sub condition { #my($self, $cust_bill, %opt) = @_; my($self, $cust_bill) = @_; - my $servicenum = $self->option('has_service'); - grep { $servicenum == $_->svcnum } - 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 $sql = qq| 0 < ( SELECT COUNT(cs.svcpart) + my( $class, $table, %opt ) = @_; + + my $servicenums = + $class->condition_sql_option_option_integer('has_service'); + + my $sql = " 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; }