package FS::cust_event;
use strict;
+use base qw( FS::cust_main_Mixin FS::Record );
use vars qw( @ISA $DEBUG $me );
use Carp qw( croak confess );
use FS::Record qw( qsearch qsearchs dbdef );
-use FS::cust_main_Mixin;
use FS::part_event;
#for cust_X
use FS::cust_main;
use FS::cust_pkg;
use FS::cust_bill;
-@ISA = qw(FS::cust_main_Mixin FS::Record);
-
$DEBUG = 0;
$me = '[FS::cust_event]';
" (". $part_event->action. ") $for\n"
if $DEBUG;
- my $oldAutoCommit = $FS::UID::AutoCommit;
- local $FS::UID::AutoCommit = 0;
-
my $error;
{
local $SIG{__DIE__}; # don't want Mason __DIE__ handler active
- $error = eval { $part_event->do_action($object); };
+ $error = eval { $part_event->do_action($object, $self); };
}
my $status = '';
}
-=item search_sql HASHREF
+=item search_sql_where HASHREF
Class method which returns an SQL WHERE fragment to search for parameters
specified in HASHREF. Valid parameters are
=over 4
-=item
+=item agentnum
+
+=item custnum
+
+=item invnum
+
+=item pkgnum
+
+=item failed
+
+=item beginning
-=item
+=item ending
+
+=item payby
+
+=item
=back
#Note: validates all passed-in data; i.e. safe to use with unchecked CGI params.
#sub
-sub search_sql {
+sub search_sql_where {
my($class, $param) = @_;
if ( $DEBUG ) {
- warn "$me search_sql called with params: \n".
+ warn "$me search_sql_where called with params: \n".
join("\n", map { " $_: ". $param->{$_} } keys %$param ). "\n";
}
- my @search = ();
+ my @search = $class->cust_search_sql($param);
- if ( $param->{'agentnum'} && $param->{'agentnum'} =~ /^(\d+)$/ ) {
- push @search, "cust_main.agentnum = $1";
- #my $agent = qsearchs('agent', { 'agentnum' => $1 } );
- #die "unknown agentnum $1" unless $agent;
+ #eventpart
+ my @eventpart = ref($param->{'eventpart'})
+ ? @{ $param->{'eventpart'} }
+ : split(',', $param->{'eventpart'});
+ @eventpart = grep /^(\d+)$/, @eventpart;
+ if ( @eventpart ) {
+ push @search, 'eventpart IN ('. join(',', @eventpart). ')';
}
if ( $param->{'beginning'} =~ /^(\d+)$/ ) {
"statustext != 'N/A'";
}
- #if ( $param->{'part_event.payby'} =~ /^(\w+)$/ ) {
- # push @search, "part_event.payby = '$1'";
- #}
-
if ( $param->{'custnum'} =~ /^(\d+)$/ ) {
push @search, "cust_main.custnum = '$1'";
}
"tablenum = '$1'";
}
- #here is the agent virtualization
- push @search,
- $FS::CurrentUser::CurrentUser->agentnums_sql( 'table' => 'cust_main' );
-
my $where = 'WHERE '. join(' AND ', @search );
-
join(' AND ', @search );
}
sub re_X {
my($method, $param, $job) = @_;
- my $search_sql = FS::cust_event->search_sql($param);
+ my $search_sql = FS::cust_event->search_sql_where($param);
#maybe not...? we do want the "re-" action to match the search more closely
# # yuck! hardcoded *AND* sequential scans!