projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git]
/
FS
/
FS
/
pay_batch.pm
diff --git
a/FS/FS/pay_batch.pm
b/FS/FS/pay_batch.pm
index
b8da9b4
..
3079db1
100644
(file)
--- a/
FS/FS/pay_batch.pm
+++ b/
FS/FS/pay_batch.pm
@@
-1,21
+1,19
@@
package FS::pay_batch;
package FS::pay_batch;
+use base qw( FS::Record );
use strict;
use strict;
-use vars qw( @ISA $DEBUG %import_info %export_info $conf );
+use vars qw( $DEBUG %import_info %export_info $conf );
+use Scalar::Util qw(blessed);
+use IO::Scalar;
+use List::Util qw(sum);
use Time::Local;
use Text::CSV_XS;
use Time::Local;
use Text::CSV_XS;
-use FS::Record qw( dbh qsearch qsearchs );
-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);
-use Scalar::Util 'blessed';
-use IO::Scalar;
use FS::Misc qw(send_email); # for error notification
use FS::Misc qw(send_email); # for error notification
-use
List::Util qw(sum
);
-
-
@ISA = qw(FS::Record)
;
+use
FS::Record qw( dbh qsearch qsearchs
);
+use FS::Conf;
+
use FS::cust_pay
;
=head1 NAME
=head1 NAME
@@
-147,22
+145,10
@@
sub check {
Returns the L<FS::agent> object for this batch.
Returns the L<FS::agent> object for this batch.
-=cut
-
-sub agent {
- qsearchs('agent', { 'agentnum' => $_[0]->agentnum });
-}
-
=item cust_pay_batch
Returns all L<FS::cust_pay_batch> objects for this batch.
=item cust_pay_batch
Returns all L<FS::cust_pay_batch> objects for this batch.
-=cut
-
-sub cust_pay_batch {
- qsearch('cust_pay_batch', { 'batchnum' => $_[0]->batchnum });
-}
-
=item rebalance
=cut
=item rebalance
=cut
@@
-201,7
+187,7
@@
foreach my $INC (@INC) {
\\%FS::pay_batch::$mod\::export_info,
\$FS::pay_batch::$mod\::name)";
$name ||= $mod; # in case it's not defined
\\%FS::pay_batch::$mod\::export_info,
\$FS::pay_batch::$mod\::name)";
$name ||= $mod; # in case it's not defined
- if
(
$@) {
+ if
(
$@) {
# in FS::cdr this is a die, not a warn. That's probably a bug.
warn "error using FS::pay_batch::$mod (skipping): $@\n";
next;
# in FS::cdr this is a die, not a warn. That's probably a bug.
warn "error using FS::pay_batch::$mod (skipping): $@\n";
next;
@@
-401,12
+387,12
@@
sub import_results {
foreach ('paid', '_date', 'payinfo') {
$new_cust_pay_batch->$_($hash{$_}) if $hash{$_};
}
foreach ('paid', '_date', 'payinfo') {
$new_cust_pay_batch->$_($hash{$_}) if $hash{$_};
}
- $error = $new_cust_pay_batch->approve(
$hash{'paybatch'} || $self->batchnum
);
+ $error = $new_cust_pay_batch->approve(
%hash
);
$total += $hash{'paid'};
} elsif ( &{$declined_condition}(\%hash) ) {
$total += $hash{'paid'};
} elsif ( &{$declined_condition}(\%hash) ) {
- $error = $new_cust_pay_batch->decline;
+ $error = $new_cust_pay_batch->decline
($hash{'error_message'});
;
}
}
@@
-450,12
+436,10
@@
sub import_results {
}
}
-use MIME::Base64;
-use Storable 'thaw';
use Data::Dumper;
sub process_import_results {
my $job = shift;
use Data::Dumper;
sub process_import_results {
my $job = shift;
- my $param =
thaw(decode_base64(shift))
;
+ my $param =
shift
;
$param->{'job'} = $job;
warn Dumper($param) if $DEBUG;
my $gatewaynum = delete $param->{'gatewaynum'};
$param->{'job'} = $job;
warn Dumper($param) if $DEBUG;
my $gatewaynum = delete $param->{'gatewaynum'};
@@
-572,8
+556,6
@@
sub import_from_gateway {
my $payby; # CARD or CHEK
my $error;
my $payby; # CARD or CHEK
my $error;
- # follow realtime gateway practice here
- # though eventually this stuff should go into separate fields...
my $paybatch = $gateway->gatewaynum . '-' . $gateway->gateway_module .
':' . $item->authorization . ':' . $item->order_number;
my $paybatch = $gateway->gatewaynum . '-' . $gateway->gateway_module .
':' . $item->authorization . ':' . $item->order_number;
@@
-644,8
+626,11
@@
sub import_from_gateway {
payby => $payby,
invnum => $item->invoice_number,
batchnum => $pay_batch->batchnum,
payby => $payby,
invnum => $item->invoice_number,
batchnum => $pay_batch->batchnum,
- paybatch => $paybatch,
payinfo => $payinfo,
payinfo => $payinfo,
+ gatewaynum => $gateway->gatewaynum,
+ processor => $gateway->gateway_module,
+ auth => $item->authorization,
+ order_number => $item->order_number,
}
);
$error ||= $cust_pay->insert;
}
);
$error ||= $cust_pay->insert;
@@
-725,11
+710,17
@@
sub import_from_gateway {
# approval status
if ( $item->approved ) {
# follow Billing_Realtime format for paybatch
# approval status
if ( $item->approved ) {
# follow Billing_Realtime format for paybatch
- $error = $cust_pay_batch->approve($paybatch);
+ $error = $cust_pay_batch->approve(
+ 'gatewaynum' => $gateway->gatewaynum,
+ 'processor' => $gateway->gateway_module,
+ 'auth' => $item->authorization,
+ 'order_number' => $item->order_number,
+ );
$total += $cust_pay_batch->paid;
}
else {
$total += $cust_pay_batch->paid;
}
else {
- $error = $cust_pay_batch->decline($item->error_message);
+ $error = $cust_pay_batch->decline($item->error_message,
+ $item->failure_status);
}
if ( $error ) {
}
if ( $error ) {
@@
-758,7
+749,10
@@
sub import_from_gateway {
my $body = "Import from gateway ".$gateway->label."\n".$error_text;
send_email(
to => $mail_on_error,
my $body = "Import from gateway ".$gateway->label."\n".$error_text;
send_email(
to => $mail_on_error,
- from => $conf->config('invoice_from'),
+ from => $conf->config('invoice_from_name') ?
+ $conf->config('invoice_from_name') . ' <' .
+ $conf->config('invoice_from') . '>' :
+ $conf->config('invoice_from'),
subject => $subject,
body => $body,
);
subject => $subject,
body => $body,
);
@@
-829,6
+823,9
@@
sub try_to_resolve {
}
return $error if $error;
}
}
return $error if $error;
}
+ } elsif ( @unresolved ) {
+ # auto resolve is not enabled, and we're not ready to resolve
+ return;
}
$self->set_status('R');
}
$self->set_status('R');
@@
-937,7
+934,7
@@
sub export_batch {
my $info = $export_info{$format} or die "Format not found: '$format'\n";
my $info = $export_info{$format} or die "Format not found: '$format'\n";
- &{$info->{'init'}}($conf) if exists($info->{'init'});
+ &{$info->{'init'}}($conf
, $self->agentnum
) if exists($info->{'init'});
my $oldAutoCommit = $FS::UID::AutoCommit;
local $FS::UID::AutoCommit = 0;
my $oldAutoCommit = $FS::UID::AutoCommit;
local $FS::UID::AutoCommit = 0;
@@
-1028,7
+1025,6
@@
sub manual_approve {
my $self = shift;
my $date = time;
my %opt = @_;
my $self = shift;
my $date = time;
my %opt = @_;
- my $paybatch = $opt{'paybatch'} || $self->batchnum;
my $usernum = $opt{'usernum'} || die "manual approval requires a usernum";
my $conf = FS::Conf->new;
return 'manual batch approval disabled'
my $usernum = $opt{'usernum'} || die "manual approval requires a usernum";
my $conf = FS::Conf->new;
return 'manual batch approval disabled'
@@
-1058,7
+1054,9
@@
sub manual_approve {
'_date' => $date,
'usernum' => $usernum,
};
'_date' => $date,
'usernum' => $usernum,
};
- my $error = $new_cust_pay_batch->approve($paybatch);
+ my $error = $new_cust_pay_batch->approve();
+ # there are no approval options here (authorization, order_number, etc.)
+ # because the transaction wasn't really approved
if ( $error ) {
$dbh->rollback;
return 'paybatchnum '.$cust_pay_batch->paybatchnum.": $error";
if ( $error ) {
$dbh->rollback;
return 'paybatchnum '.$cust_pay_batch->paybatchnum.": $error";