summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-03-02 17:53:51 -0600
committerJonathan Prykop <jonathan@freeside.biz>2015-03-02 18:03:09 -0600
commit65d6c927e8062a04ec262a241ed39f945f998ee9 (patch)
treed89abf9ec3f1f7fb4f68347709c0503fa3e8c85c
parentc880cbc2d246e961149c5b1f4f9b0c4c00753e2b (diff)
RT#30825: Modernize Bulk payment importing [error handling for mismatched agentnum]
-rw-r--r--FS/FS/cust_pay.pm43
-rw-r--r--httemplate/elements/select-payby.html2
-rw-r--r--httemplate/misc/cust_pay-import.cgi2
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>',
)
%>