X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2Fbin%2Ffreeside-ipifony-download;h=ee1f4bdfe01f99d3e2d040eeee8ddc5aa7d3948e;hb=6e33e8af0974d49c1c0cf65b1963846d35f6c156;hp=9df4db08a7070d02e0f676d7a339886c3ecde757;hpb=57db4484cae295551c72c88c936ef8a71d35730d;p=freeside.git diff --git a/FS/bin/freeside-ipifony-download b/FS/bin/freeside-ipifony-download index 9df4db08a..ee1f4bdfe 100644 --- a/FS/bin/freeside-ipifony-download +++ b/FS/bin/freeside-ipifony-download @@ -13,7 +13,7 @@ use File::Copy qw(copy); use Text::CSV; my %opt; -getopts('va:P:C:e:', \%opt); +getopts('vqa:P:C:e:', \%opt); # Product codes that are subject to flat rate E911 charges. For these # products, the'quantity' field represents the number of lines. @@ -31,6 +31,7 @@ sub HELP_MESSAGE { ' Usage: freeside-ipifony-download [ -v ] + [ -q ] [ -a archivedir ] [ -P port ] [ -C category ] @@ -183,15 +184,30 @@ 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, - pkg => $hash{date_desc} . - ' (' . $hash{quantity} . ' @ $' . $hash{unit_price} . ' ea)', + start_date => $cust_main->get('charge_date'), + pkg => $hash{date_desc}, taxclass => $TAXCLASSES{ $hash{taxclass} }, ); + if ( $opt{q} ) { + $charge_opt{pkg} .= ' (' . $hash{quantity} . ' @ $' . $hash{unit_price} . ' ea)'; + } if (my $classname = $hash{classname}) { if (!exists($classnum_of{$classname}) ) { # then look it up @@ -244,7 +260,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 }); @@ -279,6 +295,7 @@ freeside-ipifony-download - Download and import invoice items from IPifony. freeside-ipifony-download [ -v ] + [ -q ] [ -a archivedir ] [ -P port ] [ -C category ] @@ -299,6 +316,8 @@ I: the SFTP server. -v: Be verbose. +-q: Include the quantity and unit price in the charge description. + -a I: Save a copy of the downloaded file to I. -P I: Connect to that TCP port.