From 102a0db99bff20d5c653a34fd3b4999f90078e6f Mon Sep 17 00:00:00 2001 From: levinse Date: Mon, 25 Apr 2011 04:39:38 +0000 Subject: [PATCH] add waive setup fee upon package order feature, RT12568 --- FS/FS/AccessRight.pm | 1 + FS/FS/Schema.pm | 1 + FS/FS/cust_main/Billing.pm | 13 ++++++++----- FS/FS/cust_pkg.pm | 3 +++ httemplate/edit/process/quick-cust_pkg.cgi | 1 + httemplate/misc/order_pkg.html | 7 +++++++ 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm index 773f66802..98cdfcbeb 100644 --- a/FS/FS/AccessRight.pm +++ b/FS/FS/AccessRight.pm @@ -143,6 +143,7 @@ tie my %rights, 'Tie::IxHash', 'Add on-the-fly suspend reason', #NEW 'Edit customer package invoice details', #NEW 'Edit customer package comments', #NEW + 'Waive setup fee', #NEW ], ### diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index e257a894b..a90e26921 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1339,6 +1339,7 @@ sub tables_hashref { 'no_auto', 'char', 'NULL', 1, '', '', 'quantity', 'int', 'NULL', '', '', '', 'agent_pkgid', 'int', 'NULL', '', '', '', + 'waive_setup', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgnum', 'unique' => [], diff --git a/FS/FS/cust_main/Billing.pm b/FS/FS/cust_main/Billing.pm index 49ffbfe84..e17f92d4b 100644 --- a/FS/FS/cust_main/Billing.pm +++ b/FS/FS/cust_main/Billing.pm @@ -846,13 +846,16 @@ sub _make_lines { { warn " bill setup\n" if $DEBUG > 1; - $lineitems++; - $setup = eval { $cust_pkg->calc_setup( $time, \@details ) }; - return "$@ running calc_setup for $cust_pkg\n" - if $@; + unless ( $cust_pkg->waive_setup ) { + $lineitems++; + + $setup = eval { $cust_pkg->calc_setup( $time, \@details ) }; + return "$@ running calc_setup for $cust_pkg\n" + if $@; - $unitsetup = $cust_pkg->part_pkg->unit_setup || $setup; #XXX uuh + $unitsetup = $cust_pkg->part_pkg->unit_setup || $setup; #XXX uuh + } $cust_pkg->setfield('setup', $time) unless $cust_pkg->setup; diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index 8b62cf721..539c8fb43 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -194,6 +194,8 @@ Previous pkgpart Previous locationnum +=item waive_setup + =back Note: setup, last_bill, bill, adjourn, susp, expire, cancel and change_date @@ -594,6 +596,7 @@ sub check { || $self->ut_numbern('adjourn') || $self->ut_numbern('expire') || $self->ut_enum('no_auto', [ '', 'Y' ]) + || $self->ut_enum('waive_setup', [ '', 'Y' ]) || $self->ut_numbern('agent_pkgid') ; return $error if $error; diff --git a/httemplate/edit/process/quick-cust_pkg.cgi b/httemplate/edit/process/quick-cust_pkg.cgi index 599f7607c..aed07df23 100644 --- a/httemplate/edit/process/quick-cust_pkg.cgi +++ b/httemplate/edit/process/quick-cust_pkg.cgi @@ -70,6 +70,7 @@ my $cust_pkg = new FS::cust_pkg { ? parse_datetime($cgi->param('contract_end')) : '' ), + 'waive_setup' => ( $cgi->param('waive_setup') eq 'Y' ? 'Y' : '' ), #'discountnum_disabled' => scalar($cgi->param('discountnum_disabled')), }; diff --git a/httemplate/misc/order_pkg.html b/httemplate/misc/order_pkg.html index a391f8c1d..bb87422a1 100644 --- a/httemplate/misc/order_pkg.html +++ b/httemplate/misc/order_pkg.html @@ -52,6 +52,13 @@ %> % } +% if ( $curuser->access_right('Waive setup fee') ) { + + Waive setup fee + + +% } + % if ( $conf->exists('pkg_referral') ) { <% include('/elements/tr-select-part_referral.html', 'curr_value' => scalar( $cgi->param('refnum') ), #get rid of empty_label first# || $cust_main->refnum, -- 2.11.0