X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpay_batch.pm;h=b5ef85b5b997eba4d1fcb5142dd60adb65c1160c;hb=2e045a6029cc18a7ec7ae6353a352f8575df238c;hp=2561d3dc44c26f8d25cc6a928a2ef87625b647c0;hpb=8ad28f5361b81fe97654f4b8df8539ff1d2be189;p=freeside.git diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index 2561d3dc4..b5ef85b5b 100644 --- a/FS/FS/pay_batch.pm +++ b/FS/FS/pay_batch.pm @@ -7,6 +7,7 @@ use Text::CSV_XS; use FS::Record qw( dbh qsearch qsearchs ); use FS::cust_pay; use FS::Conf; +use Date::Parse qw(str2time); use Business::CreditCard qw(cardtype); @ISA = qw(FS::Record); @@ -373,7 +374,7 @@ sub import_results { my $cust_pay = new FS::cust_pay ( { 'custnum' => $custnum, 'payby' => $payby, - 'paybatch' => $self->batchnum, + 'paybatch' => $hash{'paybatch'} || $self->batchnum, 'payinfo' => ( $hash{'payinfo'} || $cust_pay_batch->payinfo ), map { $_ => $hash{$_} } (qw( paid _date )), } ); @@ -481,7 +482,20 @@ sub export_batch { my @cust_pay_batch = sort { $a->paybatchnum <=> $b->paybatchnum } qsearch('cust_pay_batch', { batchnum => $self->batchnum } ); - + + # handle batch-increment_expiration option + if ( $self->payby eq 'CARD' ) { + my ($cmon, $cyear) = (localtime(time))[4,5]; + foreach (@cust_pay_batch) { + my $etime = str2time($_->exp) or next; + my ($day, $mon, $year) = (localtime($etime))[3,4,5]; + if( $conf->exists('batch-increment_expiration') ) { + $year++ while( $year < $cyear or ($year == $cyear and $mon <= $cmon) ); + $_->exp( sprintf('%4u-%02u-%02u', $year + 1900, $mon+1, $day) ); + } + $_->setfield('expmmyy', sprintf('%02u%02u', $mon+1, $year % 100)); + } + } my $h = $info->{'header'}; if(ref($h) eq 'CODE') { $batch .= &$h($self, \@cust_pay_batch) . "\n";