From 4b5c6ba830fe2845a0055e1fcf5af0c7e8b8cd0c Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 29 Sep 2007 02:17:48 +0000 Subject: [PATCH] fix ambiguous agentnum errors in cust_event.html & report_tax.cgi (provide a table option in access_user::agentnums_sql so this is easy to fix for other reports too) --- FS/FS/access_user.pm | 8 ++++++-- httemplate/search/cust_event.html | 6 ++---- httemplate/search/report_tax.cgi | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm index 8e4ad46bd..e3a677b11 100644 --- a/FS/FS/access_user.pm +++ b/FS/FS/access_user.pm @@ -323,6 +323,8 @@ Options are passed as a hashref or a list. Available options are: =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 @@ -331,9 +333,11 @@ sub agentnums_sql { 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'}) ); diff --git a/httemplate/search/cust_event.html b/httemplate/search/cust_event.html index f9cce46ca..dc6fd0582 100644 --- a/httemplate/search/cust_event.html +++ b/httemplate/search/cust_event.html @@ -151,7 +151,7 @@ my $title = $cgi->param('failed') 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; } @@ -183,9 +183,7 @@ if ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) { } #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 ); diff --git a/httemplate/search/report_tax.cgi b/httemplate/search/report_tax.cgi index e97480540..bb9c8f433 100755 --- a/httemplate/search/report_tax.cgi +++ b/httemplate/search/report_tax.cgi @@ -226,7 +226,7 @@ if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { 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 = " -- 2.11.0