From 9ffc202e968b54e9b2d5bdbade74416a3b36c0ac Mon Sep 17 00:00:00 2001 From: Christopher Burger Date: Thu, 8 Feb 2018 09:40:27 -0500 Subject: [PATCH] RT# 75095 - Import one time charge V3 fix. --- FS/FS/Mason.pm | 1 + FS/FS/cust_main.pm | 115 -------------------------------------- FS/FS/cust_main/Import_Charges.pm | 4 +- 3 files changed, 4 insertions(+), 116 deletions(-) diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index 76c3000c9..5beb100b7 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -173,6 +173,7 @@ if ( -e $addl_handler_use_file ) { use FS::h_cust_main; use FS::cust_main::Search qw(smart_search); use FS::cust_main::Import; + use FS::cust_main::Import_Charges; use FS::cust_main_county; use FS::cust_location; use FS::cust_pay; diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 8cccd1830..7d913b955 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -5179,121 +5179,6 @@ sub search { =over 4 -=item batch_charge - -=cut - -sub batch_charge { - my $param = shift; - #warn join('-',keys %$param); - my $fh = $param->{filehandle}; - my $agentnum = $param->{agentnum}; - my $format = $param->{format}; - - my $extra_sql = ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql; - - my @fields; - if ( $format eq 'simple' ) { - @fields = qw( custnum agent_custid amount pkg ); - } else { - die "unknown format $format"; - } - - eval "use Text::CSV_XS;"; - die $@ if $@; - - my $csv = new Text::CSV_XS; - #warn $csv; - #warn $fh; - - my $imported = 0; - #my $columns; - - local $SIG{HUP} = 'IGNORE'; - local $SIG{INT} = 'IGNORE'; - local $SIG{QUIT} = 'IGNORE'; - local $SIG{TERM} = 'IGNORE'; - local $SIG{TSTP} = 'IGNORE'; - local $SIG{PIPE} = 'IGNORE'; - - my $oldAutoCommit = $FS::UID::AutoCommit; - local $FS::UID::AutoCommit = 0; - my $dbh = dbh; - - #while ( $columns = $csv->getline($fh) ) { - my $line; - while ( defined($line=<$fh>) ) { - - $csv->parse($line) or do { - $dbh->rollback if $oldAutoCommit; - return "can't parse: ". $csv->error_input(); - }; - - my @columns = $csv->fields(); - #warn join('-',@columns); - - my %row = (); - foreach my $field ( @fields ) { - $row{$field} = shift @columns; - } - - if ( $row{custnum} && $row{agent_custid} ) { - dbh->rollback if $oldAutoCommit; - return "can't specify custnum with agent_custid $row{agent_custid}"; - } - - my %hash = (); - if ( $row{agent_custid} && $agentnum ) { - %hash = ( 'agent_custid' => $row{agent_custid}, - 'agentnum' => $agentnum, - ); - } - - if ( $row{custnum} ) { - %hash = ( 'custnum' => $row{custnum} ); - } - - unless ( scalar(keys %hash) ) { - $dbh->rollback if $oldAutoCommit; - return "can't find customer without custnum or agent_custid and agentnum"; - } - - my $cust_main = qsearchs('cust_main', { %hash } ); - unless ( $cust_main ) { - $dbh->rollback if $oldAutoCommit; - my $custnum = $row{custnum} || $row{agent_custid}; - return "unknown custnum $custnum"; - } - - if ( $row{'amount'} > 0 ) { - my $error = $cust_main->charge($row{'amount'}, $row{'pkg'}); - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } - $imported++; - } elsif ( $row{'amount'} < 0 ) { - my $error = $cust_main->credit( sprintf( "%.2f", 0-$row{'amount'} ), - $row{'pkg'} ); - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } - $imported++; - } else { - #hmm? - } - - } - - $dbh->commit or die $dbh->errstr if $oldAutoCommit; - - return "Empty file!" unless $imported; - - ''; #no error - -} - =item notify CUSTOMER_OBJECT TEMPLATE_NAME OPTIONS Deprecated. Use event notification and message templates diff --git a/FS/FS/cust_main/Import_Charges.pm b/FS/FS/cust_main/Import_Charges.pm index 3d2031d45..f194e78de 100644 --- a/FS/FS/cust_main/Import_Charges.pm +++ b/FS/FS/cust_main/Import_Charges.pm @@ -5,6 +5,8 @@ package FS::cust_main::Import_Charges; use strict; use FS::UID qw( dbh ); +use Storable qw(thaw); +use MIME::Base64; use FS::CurrentUser; use FS::Record qw( qsearchs ); use FS::cust_main; @@ -81,7 +83,7 @@ Batch customer charging. sub batch_charge { my $job = shift; - my $param = shift; + my $param = thaw(decode_base64(shift)); #warn join('-',keys %$param); my $agentnum = $param->{agentnum}; my $format = $param->{format}; -- 2.11.0