diff options
author | Mark Wells <mark@freeside.biz> | 2013-08-05 18:04:44 -0500 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2013-08-05 18:04:44 -0500 |
commit | 9a753a28cb38ddf6e500805246173a8a1d12894a (patch) | |
tree | af3de90f706bb57810ac13cd539b739c5b8ac2f5 | |
parent | 426d4e697c5a96fc4884c444835b7e17b181b93b (diff) |
always bill ipifony charges within the month they were imported, #24325
-rw-r--r-- | FS/bin/freeside-ipifony-download | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/FS/bin/freeside-ipifony-download b/FS/bin/freeside-ipifony-download index 9df4db08a..51db035d5 100644 --- a/FS/bin/freeside-ipifony-download +++ b/FS/bin/freeside-ipifony-download @@ -183,11 +183,24 @@ FILE: foreach my $filename (@$files) { if $opt{v}; my $amount = sprintf('%.2f',$hash{quantity} * $hash{unit_price}); + + # bill the charge on the customer's next bill date, if that's within + # the current calendar month; otherwise bill it immediately + # (see RT#24325) + my $next_bill_date = $cust_main->next_bill_date; + if ( $next_bill_date ) { + my ($bill_month, $bill_year) = (localtime($next_bill_date))[4, 5]; + my ($this_month, $this_year) = (localtime(time))[4, 5]; + if ( $this_month == $bill_month and $this_year == $bill_year ) { + $cust_main->set('charge_date', $next_bill_date); + } + } + # construct arguments for $cust_main->charge my %charge_opt = ( amount => $hash{unit_price}, quantity => $hash{quantity}, - start_date => $cust_main->next_bill_date, + start_date => $cust_main->get('charge_date'), pkg => $hash{date_desc} . ' (' . $hash{quantity} . ' @ $' . $hash{unit_price} . ' ea)', taxclass => $TAXCLASSES{ $hash{taxclass} }, @@ -244,7 +257,7 @@ foreach my $custnum ( keys (%e911_qty) ) { my $cust_pkg = FS::cust_pkg->new({ pkgpart => $opt{e}, custnum => $custnum, - start_date => $cust_main->next_bill_date, + start_date => $cust_main->get('charge_date'), quantity => $quantity, }); my $error = $cust_main->order_pkg({ cust_pkg => $cust_pkg }); |