projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix credit cards showing up as PO#s, RT#16291
[freeside.git]
/
FS
/
FS
/
pay_batch.pm
diff --git
a/FS/FS/pay_batch.pm
b/FS/FS/pay_batch.pm
index
850335e
..
bb92bdf
100644
(file)
--- a/
FS/FS/pay_batch.pm
+++ b/
FS/FS/pay_batch.pm
@@
-5,8
+5,9
@@
use vars qw( @ISA $DEBUG %import_info %export_info $conf );
use Time::Local;
use Text::CSV_XS;
use FS::Record qw( dbh qsearch qsearchs );
use Time::Local;
use Text::CSV_XS;
use FS::Record qw( dbh qsearch qsearchs );
-use FS::cust_pay;
use FS::Conf;
use FS::Conf;
+use FS::cust_pay;
+use FS::agent;
use Date::Parse qw(str2time);
use Business::CreditCard qw(cardtype);
use Date::Parse qw(str2time);
use Business::CreditCard qw(cardtype);
@@
-40,6
+41,8
@@
from FS::Record. The following fields are currently supported:
=item batchnum - primary key
=item batchnum - primary key
+=item agentnum - optional agent number for agent batches
+
=item payby - CARD or CHEK
=item status - O (Open), I (In-transit), or R (Resolved)
=item payby - CARD or CHEK
=item status - O (Open), I (In-transit), or R (Resolved)
@@
-112,12
+115,23
@@
sub check {
$self->ut_numbern('batchnum')
|| $self->ut_enum('payby', [ 'CARD', 'CHEK' ])
|| $self->ut_enum('status', [ 'O', 'I', 'R' ])
$self->ut_numbern('batchnum')
|| $self->ut_enum('payby', [ 'CARD', 'CHEK' ])
|| $self->ut_enum('status', [ 'O', 'I', 'R' ])
+ || $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum')
;
return $error if $error;
$self->SUPER::check;
}
;
return $error if $error;
$self->SUPER::check;
}
+=item agent
+
+Returns the L<FS::agent> object for this template.
+
+=cut
+
+sub agent {
+ qsearchs('agent', { 'agentnum' => $_[0]->agentnum });
+}
+
=item rebalance
=cut
=item rebalance
=cut
@@
-383,20
+397,21
@@
sub import_results {
} # foreach (@all_values)
} # foreach (@all_values)
+ my $close = 1;
if ( defined($close_condition) ) {
# Allow the module to decide whether to close the batch.
# $close_condition can also die() to abort the whole import.
if ( defined($close_condition) ) {
# Allow the module to decide whether to close the batch.
# $close_condition can also die() to abort the whole import.
-
my
$close = eval { $close_condition->($self) };
+ $close = eval { $close_condition->($self) };
if ( $@ ) {
$dbh->rollback;
die $@;
}
if ( $@ ) {
$dbh->rollback;
die $@;
}
- if ( $close ) {
- my $error = $self->set_status('R');
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
-
return $error
;
- }
+ }
+ if ( $close ) {
+ my $error = $self->set_status('R');
+ if ( $error ) {
+
$dbh->rollback if $oldAutoCommit
;
+ return $error;
}
}
}
}
@@
-476,18
+491,11
@@
sub export_batch {
}
}
}
}
- my $delim = exists($info->{'delimiter'}) ? $info->{'delimiter'} : "\n";
+ if ($first_download) { #remove or reduce entries if customer's balance changed
- my $h = $info->{'header'};
- if(ref($h) eq 'CODE') {
- $batch .= &$h($self, \@cust_pay_batch) . $delim;
- }
- else {
- $batch .= $h . $delim;
- }
- foreach my $cust_pay_batch (@cust_pay_batch) {
+ my @new = ();
+ foreach my $cust_pay_batch (@cust_pay_batch) {
- if ($first_download) {
my $balance = $cust_pay_batch->cust_main->balance;
if ($balance <= 0) { # then don't charge this customer
my $error = $cust_pay_batch->delete;
my $balance = $cust_pay_batch->cust_main->balance;
if ($balance <= 0) { # then don't charge this customer
my $error = $cust_pay_batch->delete;
@@
-506,20
+514,35
@@
sub export_batch {
}
}
# else $balance >= $cust_pay_batch->amount
}
}
# else $balance >= $cust_pay_batch->amount
+
+ push @new, $cust_pay_batch;
}
}
+ @cust_pay_batch = @new;
+
+ }
+
+ my $delim = exists($info->{'delimiter'}) ? $info->{'delimiter'} : "\n";
+ my $h = $info->{'header'};
+ if (ref($h) eq 'CODE') {
+ $batch .= &$h($self, \@cust_pay_batch). $delim;
+ } else {
+ $batch .= $h. $delim;
+ }
+
+ foreach my $cust_pay_batch (@cust_pay_batch) {
$batchcount++;
$batchtotal += $cust_pay_batch->amount;
$batchcount++;
$batchtotal += $cust_pay_batch->amount;
- $batch .= &{$info->{'row'}}($cust_pay_batch, $self, $batchcount, $batchtotal) . $delim;
-
+ $batch .=
+ &{$info->{'row'}}($cust_pay_batch, $self, $batchcount, $batchtotal).
+ $delim;
}
my $f = $info->{'footer'};
}
my $f = $info->{'footer'};
- if(ref($f) eq 'CODE') {
- $batch .= &$f($self, $batchcount, $batchtotal) . $delim;
- }
- else {
- $batch .= $f . $delim;
+ if (ref($f) eq 'CODE') {
+ $batch .= &$f($self, $batchcount, $batchtotal). $delim;
+ } else {
+ $batch .= $f. $delim;
}
if ($info->{'autopost'}) {
}
if ($info->{'autopost'}) {