summaryrefslogtreecommitdiff
path: root/FS/FS/pay_batch.pm
diff options
context:
space:
mode:
authorivan <ivan>2007-08-01 22:26:52 +0000
committerivan <ivan>2007-08-01 22:26:52 +0000
commiteb4ff7f73c5d4bdf74a3472448b5a195598ff4cd (patch)
treebb38241e8c865c3bca861da7749071feeadd2b5b /FS/FS/pay_batch.pm
parent32b5d3a31f112a381f0a15ac5e3a2204242f3405 (diff)
event refactor, landing on HEAD!
Diffstat (limited to 'FS/FS/pay_batch.pm')
-rw-r--r--FS/FS/pay_batch.pm52
1 files changed, 35 insertions, 17 deletions
diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm
index 86ef7b0..8ae46ef 100644
--- a/FS/FS/pay_batch.pm
+++ b/FS/FS/pay_batch.pm
@@ -6,7 +6,6 @@ use Time::Local;
use Text::CSV_XS;
use FS::Record qw( dbh qsearch qsearchs );
use FS::cust_pay;
-use FS::part_bill_event qw(due_events);
@ISA = qw(FS::Record);
@@ -454,6 +453,20 @@ sub import_results {
$new_cust_pay_batch->status('Approved');
+ } elsif ( &{$declined_condition}(\%hash) ) {
+
+ $new_cust_pay_batch->status('Declined');
+
+ }
+
+ my $error = $new_cust_pay_batch->replace($cust_pay_batch);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "error updating status of paybatchnum $hash{'paybatchnum'}: $error\n";
+ }
+
+ if ( $new_cust_pay_batch->status =~ /Approved/i ) {
+
my $cust_pay = new FS::cust_pay ( {
'custnum' => $custnum,
'payby' => $payby,
@@ -469,33 +482,38 @@ sub import_results {
$cust_pay->cust_main->apply_payments;
- } elsif ( &{$declined_condition}(\%hash) ) {
+ } elsif ( $new_cust_pay_batch->status =~ /Declined/i ) {
- $new_cust_pay_batch->status('Declined');
+ #false laziness w/cust_main::collect
- foreach my $part_bill_event ( due_events ( $new_cust_pay_batch,
- 'DCLN',
- '',
- '') ) {
+ my $due_cust_event = $new_cust_pay_batch->cust_main->due_cust_event(
+ #'check_freq' => '1d', #?
+ 'eventtable' => 'cust_pay_batch',
+ 'objects' => [ $new_cust_pay_batch ],
+ );
+ unless( ref($due_cust_event) ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $due_cust_event;
+ }
- # don't run subsequent events if balance<=0
- last if $cust_pay_batch->cust_main->balance <= 0;
+ foreach my $cust_event ( @$due_cust_event ) {
+
+ #XXX lock event
+
+ #re-eval event conditions (a previous event could have changed things)
+ next unless $cust_event->test_conditions;
- if (my $error = $part_bill_event->do_event($new_cust_pay_batch)) {
+ if ( my $error = $cust_event->do_event() ) {
# gah, even with transactions.
- $dbh->commit if $oldAutoCommit; #well.
- return $error;
+ #$dbh->commit if $oldAutoCommit; #well.
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
}
}
}
- my $error = $new_cust_pay_batch->replace($cust_pay_batch);
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return "error updating status of paybatchnum $hash{'paybatchnum'}: $error\n";
- }
}