From e2cff16135741b166473d18f828ad54f57037dae Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 18 Oct 2010 02:46:33 +0000 Subject: [PATCH] suspend_bill package option to continue recurring billing while suspended and part_pkg-default_suspend_bill conf option to set it by default, RT#10148 --- FS/FS/Conf.pm | 7 +++++++ FS/FS/cust_main/Billing.pm | 17 ++++++++--------- FS/FS/part_pkg/flat.pm | 5 ++++- httemplate/edit/part_pkg.cgi | 3 +++ httemplate/view/cust_main/packages/status.html | 4 +++- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index b3e54778b..55495e362 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -3991,6 +3991,13 @@ and customer address. Include units.', 'type' => 'text', }, + { + 'key' => 'part_pkg-default_suspend_bill', + 'section' => 'billing', + 'description' => 'Default the "Continue recurring billing while suspended" flag to on for new package definitions.', + 'type' => 'checkbox', + }, + { key => "apacheroot", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachine", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachines", section => "deprecated", description => "DEPRECATED", type => "text" }, diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm index b588dc5cb..10734bf34 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -856,15 +856,14 @@ sub _make_lines { my $recur = 0; my $unitrecur = 0; my $sdate; - if ( ! $cust_pkg->get('susp') - and ! $cust_pkg->get('start_date') - and ( $part_pkg->getfield('freq') ne '0' - && ( $cust_pkg->getfield('bill') || 0 ) <= $time - ) - || ( $part_pkg->plan eq 'voip_cdr' - && $part_pkg->option('bill_every_call') - ) - || ( $options{cancel} ) + if ( ! $cust_pkg->start_date + and ( ! $cust_pkg->susp || $part_pkg->option('suspend_bill') ) + and + ( $part_pkg->freq ne '0' && ( $cust_pkg->bill || 0 ) <= $time ) + || ( $part_pkg->plan eq 'voip_cdr' + && $part_pkg->option('bill_every_call') + ) + || $options{cancel} ) { # XXX should this be a package event? probably. events are called diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index c52f96e12..ee54c09ec 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -135,6 +135,9 @@ tie my %contract_years, 'Tie::IxHash', ( 'with the customer\'s other packages', 'type' => 'checkbox', }, + 'suspend_bill' => { 'name' => 'Continue recurring billing while suspended', + 'type' => 'checkbox', + }, 'unsuspend_adjust_bill' => { 'name' => 'Adjust next bill date forward when '. 'unsuspending', @@ -153,7 +156,7 @@ tie my %contract_years, 'Tie::IxHash', ( expire_months adjourn_months contract_end_months start_1st sync_bill_date - unsuspend_adjust_bill + suspend_bill unsuspend_adjust_bill ), @usage_fieldorder, @usage_recharge_fieldorder, qw( externalid ), diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index 79dfa6afa..be8b0f68f 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -419,11 +419,14 @@ my $new_callback = sub { my( $cgi, $object, $fields ) = @_; my $conf = new FS::Conf; + if ( $conf->exists('agent_defaultpkg') ) { #my @all_agent_types = map {$_->typenum} qsearch('agent_type',{}); @agent_type = map {$_->typenum} qsearch('agent_type',{}); } + $options{'suspend_bill'}=1 if $conf->exists('part_pkg-default_suspend_bill'); + }; my $clone_callback = sub { diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html index 74e52efdd..c05cd5a94 100644 --- a/httemplate/view/cust_main/packages/status.html +++ b/httemplate/view/cust_main/packages/status.html @@ -54,7 +54,9 @@ <% pkg_status_row_changed( $cust_pkg, %opt, 'colspan'=>$colspan ) %> <% pkg_status_row_if( $cust_pkg, $last_bill_or_renewed, 'last_bill', %opt, curuser=>$curuser ) %> -% # pkg_status_row($cust_pkg, 'Next bill', 'bill', %opt) +% if ( $part_pkg->option('suspend_bill') ) { + <% pkg_status_row_if( $cust_pkg, 'Next bill', 'bill', %opt, curuser=>$curuser ) %> +% } <% pkg_status_row_if( $cust_pkg, 'Expires', 'expire', %opt, curuser=>$curuser ) %> <% pkg_status_row_if( $cust_pkg, 'Contract ends', 'contract_end', %opt ) %> -- 2.11.0