diff options
Diffstat (limited to 'FS/FS/ClientAPI/MyAccount.pm')
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 3fd621493..eddb16456 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -930,7 +930,12 @@ sub validate_payment { my $conf = new FS::Conf; my $fee_display = $conf->config('selfservice_process-display') || 'add'; my $fee_pkgpart = $conf->config('selfservice_process-pkgpart'); - if ( $fee_display eq 'add' && $fee_pkgpart ) { + my $fee_skip_first = $conf->exists('selfservice_process-skip_first'); + if ( $fee_display eq 'add' + and $fee_pkgpart + and ! $fee_skip_first || scalar($cust_main->cust_pay) + ) + { my $fee_pkg = qsearchs('part_pkg', { pkgpart=>$fee_pkgpart } ); $amount = sprintf('%.2f', $amount + $fee_pkg->option('setup_fee') ); } @@ -1097,7 +1102,9 @@ sub do_process_payment { #no error, so order the fee package if applicable... my $conf = new FS::Conf; my $fee_pkgpart = $conf->config('selfservice_process-pkgpart'); - if ( $fee_pkgpart ) { + my $fee_skip_first = $conf->exists('selfservice_process-skip_first'); + + if ( $fee_pkgpart and ! $fee_skip_first || scalar($cust_main->cust_pay) ) { my $cust_pkg = new FS::cust_pkg { 'pkgpart' => $fee_pkgpart }; |