'cust_pkg' => 1,
'cust_pay_batch' => 1,
'cust_statement' => 1,
+ 'svc_acct' => 1,
};
}
This method is used for optimizing event queries. You may want to add indices
for any columns referenced. It is acceptable to return an SQL fragment which
partially tests the condition; doing so will still reduce the number of
-records which much be returned and tested with the B<condition> method.
+records which must be returned and tested with the B<condition> method.
=cut
}
+=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
}
+=item condition_sql_option_integer OPTION [ DRIVER_NAME ]
+
+As I<condition_sql_option>, but cast the option value to an integer so that
+comparison to other integers is type-correct.
+
+=cut
+
+sub condition_sql_option_integer {
+ my ($class, $option, $driver_name) = @_;
+
+ my $integer = ($driver_name =~ /^mysql/) ? 'UNSIGNED INTEGER' : 'INTEGER';
+
+ 'CAST(
+ COALESCE('. $class->condition_sql_option($option).
+ " ,'0') ".
+ " AS $integer )";
+}
+
=head1 NEW CONDITION CLASSES
A module should be added in FS/FS/part_event/Condition/ which implements the