run_bill_events option for order_pkg, RT#42053
authorIvan Kohler <ivan@freeside.biz>
Mon, 25 Apr 2016 18:53:38 +0000 (11:53 -0700)
committerIvan Kohler <ivan@freeside.biz>
Mon, 25 Apr 2016 18:53:38 +0000 (11:53 -0700)
FS/FS/ClientAPI/MyAccount.pm
fs_selfservice/FS-SelfService/SelfService.pm

index ed7e353..8b04436 100644 (file)
@@ -2410,7 +2410,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);
@@ -2565,6 +2565,12 @@ sub _do_bop_realtime {
     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; #?
+  }
+
   '';
 }
 
index 49d6f31..bc54b1e 100644 (file)
@@ -1072,6 +1072,10 @@ Number of total bytes gained by recharge
 
 Orders a package for this customer.
 
+If signup_server-realtime is set, bills the new package, attemps to collect
+payment and (for auto-payment customers) cancels the package if the payment is
+declined.
+
 Takes a hash reference as parameter with the following keys:
 
 =over 4
@@ -1088,6 +1092,11 @@ Package to order (see L<FS::part_pkg>).
 
 Quantity for this package order (default 1).
 
+=item run_bill_events
+
+If true, runs billing events for the customer after ordering and billing the
+package (signup_server-realtime must be set).
+
 =item locationnum
 
 Optional locationnum for this package order, for existing locations.