X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_event%2FCondition.pm;h=36fbe9a0d200c9f234af96741d53176f6cad0b4e;hp=b969cf6f8fb94e78c99a418f5d57e9bd3412093c;hb=376794a00e837317e35fefd61a29ab58c0303b35;hpb=a3f6af253b06d80e3be43b0f954df9c18a93c12d diff --git a/FS/FS/part_event/Condition.pm b/FS/FS/part_event/Condition.pm index b969cf6f8..36fbe9a0d 100644 --- a/FS/FS/part_event/Condition.pm +++ b/FS/FS/part_event/Condition.pm @@ -52,6 +52,7 @@ sub eventtable_hashref { { 'cust_main' => 1, 'cust_bill' => 1, 'cust_pkg' => 1, + 'cust_pay' => 1, 'cust_pay_batch' => 1, 'cust_statement' => 1, 'svc_acct' => 1, @@ -355,11 +356,35 @@ sub condition_sql_option_option { )"; "( SELECT optionname FROM part_event_condition_option_option - WHERE optionnum = $optionnum + WHERE optionnum IN $optionnum )"; } +#used for part_event/Condition/cust_bill_has_service.pm and has_cust_tag.pm +#a little false laziness w/above and condition_sql_option_integer +sub condition_sql_option_option_integer { + my( $class, $option ) = @_; + + ( my $condname = $class ) =~ s/^.*:://; + + my $optionnum = + "( SELECT optionnum FROM part_event_condition_option + WHERE part_event_condition_option.eventconditionnum = + cond_$condname.eventconditionnum + AND part_event_condition_option.optionname = '$option' + AND part_event_condition_option.optionvalue = 'HASH' + )"; + + my $integer = (driver_name =~ /^mysql/) ? 'UNSIGNED INTEGER' : 'INTEGER'; + + my $optionname = "CAST(optionname AS $integer)"; + + "( SELECT $optionname FROM part_event_condition_option_option + WHERE optionnum IN $optionnum + )"; + +} =item condition_sql_option_age_from OPTION FROM_TIMESTAMP @@ -500,7 +525,7 @@ comparison to other integers is type-correct. sub condition_sql_option_integer { my ($class, $option, $driver_name) = @_; - my $integer = ($driver_name =~ /^mysql/) ? 'UNSIGNED INTEGER' : 'INTEGER'; + my $integer = (driver_name() =~ /^mysql/) ? 'UNSIGNED INTEGER' : 'INTEGER'; 'CAST( COALESCE('. $class->condition_sql_option($option).