From 4d2fa2a3ad94d7c61c9429156ea121067b717d1a Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 4 Nov 2010 20:35:59 +0000 Subject: [PATCH] bill setup fees upon receiving a payment, for bill_every_call customers --- FS/FS/cust_pay.pm | 30 ++++++++++++++++++++++++++++++ FS/FS/part_pkg/voip_cdr.pm | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index 6dad3d702..116763b67 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -214,6 +214,36 @@ sub insert { } #eslaf + #bill setup fees for voip_cdr bill_every_call packages + #some false laziness w/search in freeside-cdrd + my $addl_from = + 'LEFT JOIN part_pkg USING ( pkgpart ) '. + "LEFT JOIN part_pkg_option + ON ( cust_pkg.pkgpart = part_pkg_option.pkgpart + AND part_pkg_option.optionname = 'bill_every_call' )"; + + my $extra_sql = " AND plan = 'voip_cdr' AND optionvalue = '1' ". + " AND ( cust_pkg.setup IS NULL OR cust_pkg.setup = 0 ) "; + + my @cust_pkg = qsearch({ + 'table' => 'cust_pkg', + 'addl_from' => $addl_from, + 'hashref' => { 'custnum' => $self->custnum, + 'susp' => '', + 'cancel' => '', + }, + 'extra_sql' => $extra_sql, + }); + + if ( @cust_pkg ) { + warn "voip_cdr bill_every_call packages found; billing customer\n"; + my $bill_error = $self->cust_main->bill_and_collect( 'fatal' => 'return' ); + if ( $bill_error ) { + warn "WARNING: Error billing customer: $bill_error\n"; + } + } + #end of billing setup fees for voip_cdr bill_every_call packages + $dbh->commit or die $dbh->errstr if $oldAutoCommit; #payment receipt diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index e2408a3d1..f80109509 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -175,7 +175,7 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities(); }, #eofalse - 'bill_every_call' => { 'name' => 'Generate an invoice immediately for every call. Useful for prepaid.', + 'bill_every_call' => { 'name' => 'Generate an invoice immediately for every call (as well any setup fee, upon first payment). Useful for prepaid.', 'type' => 'checkbox', }, -- 2.11.0