summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2016-04-25 11:54:04 -0700
committerIvan Kohler <ivan@freeside.biz>2016-04-25 11:54:04 -0700
commit0024f2331ce82ffaa87af9c6bd516d5bbe851923 (patch)
treeeb5f4f514e3bd9d8dc75f26db0bdb5044f7811a3 /FS/FS/ClientAPI
parenta74684f5655f4dd9595cd8dc48077fdfe12b22c9 (diff)
run_bill_events option for order_pkg, RT#42053
Diffstat (limited to 'FS/FS/ClientAPI')
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm56
1 files changed, 31 insertions, 25 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index ddd4367b7..5b2421b75 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -2342,7 +2342,7 @@ sub order_pkg {
my $conf = new FS::Conf;
if ( $conf->exists('signup_server-realtime') ) {
- my $bill_error = _do_bop_realtime( $cust_main, $status );
+ my $bill_error = _do_bop_realtime( $cust_main, $status, 'collect'=>$p->{run_bill_events} );
if ($bill_error) {
$cust_pkg->cancel('quiet'=>1);
@@ -2468,39 +2468,45 @@ sub order_recharge {
sub _do_bop_realtime {
my ($cust_main, $status, %opt) = @_;
- my $old_balance = $cust_main->balance;
+ my $old_balance = $cust_main->balance;
- my @cust_bill;
- my $bill_error = $cust_main->bill(
- 'return_bill' => \@cust_bill,
- );
-
- $bill_error ||= $cust_main->apply_payments_and_credits;
+ my @cust_bill;
+ my $bill_error = $cust_main->bill(
+ 'return_bill' => \@cust_bill,
+ );
- $bill_error ||= $cust_main->realtime_collect('selfservice' => 1)
- if $cust_main->payby =~ /^(CARD|CHEK)$/;
+ $bill_error ||= $cust_main->apply_payments_and_credits;
- if ( $cust_main->balance > $old_balance
- && $cust_main->balance > 0
- && ( $cust_main->payby !~ /^(BILL|DCRD|DCHK)$/
- || $status eq 'suspended'
- )
- )
- {
- unless ( $opt{'no_invoice_void'} ) {
+ $bill_error ||= $cust_main->realtime_collect('selfservice' => 1)
+ if $cust_main->payby =~ /^(CARD|CHEK)$/;
- #this used to apply a credit, but now we can void invoices...
- foreach my $cust_bill (@cust_bill) {
- my $voiderror = $cust_bill->void('automatic payment failed');
- warn "Error voiding cust bill after decline: $voiderror" if $voiderror;
- }
+ if ( $cust_main->balance > $old_balance
+ && $cust_main->balance > 0
+ && ( $cust_main->payby !~ /^(BILL|DCRD|DCHK)$/
+ || $status eq 'suspended'
+ )
+ )
+ {
+ unless ( $opt{'no_invoice_void'} ) {
+ #this used to apply a credit, but now we can void invoices...
+ foreach my $cust_bill (@cust_bill) {
+ my $voiderror = $cust_bill->void('automatic payment failed');
+ warn "Error voiding cust bill after decline: $voiderror" if $voiderror;
}
- return { 'error' => '_decline', 'bill_error' => $bill_error };
}
- '';
+ return { 'error' => '_decline', 'bill_error' => $bill_error };
+ }
+
+ if ( $opt{'collect'} ) {
+ my $collect_error = $cust_main->collect();
+ return { 'error' => '_decline', 'bill_error' => $collect_error }
+ if $collect_error; #?
+ }
+
+ '';
}
sub renew_info {