diff options
author | Jonathan Prykop <jonathan@freeside.biz> | 2015-03-02 17:53:51 -0600 |
---|---|---|
committer | Jonathan Prykop <jonathan@freeside.biz> | 2015-03-02 18:03:09 -0600 |
commit | 65d6c927e8062a04ec262a241ed39f945f998ee9 (patch) | |
tree | d89abf9ec3f1f7fb4f68347709c0503fa3e8c85c | |
parent | c880cbc2d246e961149c5b1f4f9b0c4c00753e2b (diff) |
RT#30825: Modernize Bulk payment importing [error handling for mismatched agentnum]
-rw-r--r-- | FS/FS/cust_pay.pm | 43 | ||||
-rw-r--r-- | httemplate/elements/select-payby.html | 2 | ||||
-rw-r--r-- | httemplate/misc/cust_pay-import.cgi | 2 |
3 files changed, 28 insertions, 19 deletions
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index 7edf6f173..fae94c3d3 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -1184,40 +1184,49 @@ sub process_batch_import { my $hashcb = sub { my %hash = @_; my $custnum = $hash{'custnum'}; + my $agentnum = $hash{'agentnum'}; my $agent_custid = $hash{'agent_custid'}; #standardize date $hash{'_date'} = parse_datetime($hash{'_date'}) if $hash{'_date'} && $hash{'_date'} =~ /\D/; + #remove custnum_prefix + my $custnum_prefix = $conf->config('cust_main-custnum-display_prefix'); + my $custnum_length = $conf->config('cust_main-custnum-display_length') || 8; + if ( + $custnum_prefix + && $custnum =~ /^$custnum_prefix(0*([1-9]\d*))$/ + && length($1) == $custnum_length + ) { + $custnum = $2; + } + # check agentnum against custnum and # translate agent_custid into regular custnum if ($custnum && $agent_custid) { die "can't specify both custnum and agent_custid\n"; - } elsif ($agent_custid) { + } elsif ($agentnum || $agent_custid) { # here is the agent virtualization my $extra_sql = ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql; - my $agentnum = $hash{'agentnum'}; - my %search = ( - 'agent_custid' => $agent_custid, - 'agentnum' => $agentnum, - ); + my %search; + $search{'agentnum'} = $agentnum + if $agentnum; + $search{'agent_custid'} = $agent_custid + if $agent_custid; + $search{'custnum'} = $custnum + if $custnum; my $cust_main = qsearchs({ 'table' => 'cust_main', 'hashref' => \%search, 'extra_sql' => $extra_sql, }); - die "can't find customer with agent_custid $agent_custid\n" + die "can't find customer with" . + ($agentnum ? " agentnum $agentnum" : '') . + ($custnum ? " custnum $custnum" : '') . + ($agent_custid ? " agent_custid $agent_custid" : '') . "\n" unless $cust_main; + die "mismatched customer number\n" + if $custnum && ($custnum ne $cust_main->custnum); $custnum = $cust_main->custnum; } - #remove custnum_prefix - my $custnum_prefix = $conf->config('cust_main-custnum-display_prefix'); - my $custnum_length = $conf->config('cust_main-custnum-display_length') || 8; - if ( - $custnum_prefix - && $custnum =~ /^$custnum_prefix(0*([1-9]\d*))$/ - && length($1) == $custnum_length - ) { - $custnum = $2; - } $hash{'custnum'} = $custnum; delete($hash{'agent_custid'}); return %hash; diff --git a/httemplate/elements/select-payby.html b/httemplate/elements/select-payby.html index 2018874e7..a976b77cf 100644 --- a/httemplate/elements/select-payby.html +++ b/httemplate/elements/select-payby.html @@ -3,7 +3,7 @@ <% $onchange %> > -% unless ( $opt{'multiple'} || $opt{'no_all'} ) { +% unless ( $opt{'multiple'} || $opt{'disable_empty'} ) { <OPTION VALUE="" <% '' eq $value ? 'SELECTED' : '' %> ><% mt('all') |h %> % } diff --git a/httemplate/misc/cust_pay-import.cgi b/httemplate/misc/cust_pay-import.cgi index ee0154db5..102f84286 100644 --- a/httemplate/misc/cust_pay-import.cgi +++ b/httemplate/misc/cust_pay-import.cgi @@ -41,7 +41,7 @@ Import a file containing customer payments. <% include( '/elements/tr-select-payby.html', 'paybys' => \%paybys, - 'no_all' => 1, + 'disable_empty' => 1, 'label' => '<B>Payment type</B>', ) %> |