{ 'cust_main' => 1,
'cust_bill' => 1,
'cust_pkg' => 1,
+ 'cust_pay' => 1,
'cust_pay_batch' => 1,
'cust_statement' => 1,
+ 'svc_acct' => 1,
};
}
}
+=item cust_pkg OBJECT
+
+Return the package object (L<FS::cust_pkg>) associated with the provided
+object. The object must be either a service (L<FS::svc_Common>) or a
+package.
+
+=cut
+
+sub cust_pkg {
+ my( $self, $object ) = @_;
+ $object->isa('FS::cust_pkg') ? $object :
+ $object->isa('FS::svc_Common') ? $object->cust_svc->cust_pkg :
+ undef;
+}
+
=item option_label OPTIONNAME
Returns the label for the specified option name.
=back
+=item option_type OPTION
+
+Returns the type of the option, as a string: 'text', 'money', 'date',
+or 'freq'.
+
+=cut
+
+sub option_type {
+ my( $self, $optionname ) = @_;
+
+ my %option_fields = $self->option_fields;
+
+ ref( $option_fields{$optionname} )
+ ? $option_fields{$optionname}->{'type'}
+ : 'text'
+}
+
=item option_age_from OPTION FROM_TIMESTAMP
Retreives a condition option, parses it from a frequency (such as "1d", "1w" or
} elsif ( $age =~ /^(\d+)d$/i ) {
$mday -= $1;
} elsif ( $age =~ /^(\d+)h$/i ) {
- $hour -= $hour;
+ $hour -= $1;
} else {
die "unparsable age: $age";
}
)";
"( 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
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('. $class->condition_sql_option($option). " AS $integer )";
+ 'CAST(
+ COALESCE('. $class->condition_sql_option($option).
+ " ,'0') ".
+ " AS $integer )";
}
=head1 NEW CONDITION CLASSES