From 5ca42e2aa31bf595a076f8c6a721c9c74fc51840 Mon Sep 17 00:00:00 2001 From: jayce Date: Wed, 26 Sep 2007 19:27:23 +0000 Subject: [PATCH] Initial import. Condition tests to see if the Invoice bills for a particular service. --- .../part_event/Condition/cust_bill_has_service.pm | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 FS/FS/part_event/Condition/cust_bill_has_service.pm diff --git a/FS/FS/part_event/Condition/cust_bill_has_service.pm b/FS/FS/part_event/Condition/cust_bill_has_service.pm new file mode 100644 index 000000000..c28047cdd --- /dev/null +++ b/FS/FS/part_event/Condition/cust_bill_has_service.pm @@ -0,0 +1,51 @@ +package FS::part_event::Condition::cust_bill_has_service; + +use strict; +use FS::cust_bill; + +use base qw( FS::part_event::Condition ); + +sub description { + 'Invoice is billing for a certain service type'; +} + +sub eventtable_hashref { + { 'cust_main' => 0, + 'cust_bill' => 1, + 'cust_pkg' => 0, + }; +} + +sub option_fields { + ( + 'has_service' => { 'label' => 'Has service', + 'type' => 'select-part_svc', + }, + ); +} + +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 ; +} + +sub condition_sql { + my( $class, $table ) = @_; + + my $servicenum = $class->condition_sql_option('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 + ) + |; + return $sql; +} + +1; -- 2.11.0