From 936fa95f952d966d697586518717858aa874d778 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 4 Nov 2010 20:35:55 +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 aa43de466..014affeae 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -264,6 +264,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 bcc2c6bc6..768f89487 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -222,7 +222,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