X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_event%2FCondition%2Fcust_bill_has_service.pm;h=6e981ee03cd80468810d16d19a01612cb0d2da59;hb=167dbdad01e2c1b62fd9be43cc05212e8c874a02;hp=be7ea2b02174a93ada0031edd2f7d06684f53521;hpb=9fd3c8211ebccf727d1c048620d1527926a3b779;p=freeside.git 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 be7ea2b02..6e981ee03 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,21 +31,24 @@ 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( $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;