=item null_right - The fragment will also allow the selection of null agentnums if the current user has the provided access right
+=item table - Optional table name in which agentnum is being checked. Sometimes required to resolve 'column reference "agentnum" is ambiguous' errors.
+
=back
=cut
my( $self ) = shift;
my %opt = ref($_[0]) ? %{$_[0]} : @_;
- my @agentnums = map { "agentnum = $_" } $self->agentnums;
+ my $agentnum = $opt{'table'} ? $opt{'table'}.'.agentnum' : 'agentnum';
+
+ my @agentnums = map { "$agentnum = $_" } $self->agentnums;
- push @agentnums, 'agentnum IS NULL'
+ push @agentnums, "$agentnum IS NULL"
if $opt{'null'}
|| ( $opt{'null_right'} && $self->access_right($opt{'null_right'}) );
my @search = ();
if ( $cgi->param('agentnum') && $cgi->param('agentnum') =~ /^(\d+)$/ ) {
- push @search, "agentnum = $1";
+ push @search, "cust_main.agentnum = $1";
#my $agent = qsearchs('agent', { 'agentnum' => $1 } );
#die "unknown agentnum $1" unless $agent;
}
}
#here is the agent virtualization
-my $agent_sql = $curuser->agentnums_sql;
-$agent_sql =~ s/agentnum/cust_main.agentnum/g;
-push @search, $agent_sql;
+push @search, $curuser->agentnums_sql( 'table' => 'cust_main' );
my $where = 'WHERE '. join(' AND ', @search );
my $agent = qsearchs('agent', { 'agentnum' => $1 } );
die "agent not found" unless $agent;
$agentname = $agent->agent;
- $where .= ' AND agentnum = '. $agent->agentnum;
+ $where .= ' AND cust_main.agentnum = '. $agent->agentnum;
}
my $gotcust = "