diff options
author | C.J. Adams-Collier <cjac@colliertech.org> | 2014-09-25 13:15:18 -0700 |
---|---|---|
committer | C.J. Adams-Collier <cjac@colliertech.org> | 2014-09-25 13:15:29 -0700 |
commit | 7bcf726ffbb331ad01e717f7de36bfb42f5ca4ba (patch) | |
tree | fc34a2ef6d2752ae9c235d0b44e5bce6b01d4fc8 /FS/FS | |
parent | a6def4c68914a9d8a282eaa34dcff5f6fd002568 (diff) |
FS RT #30362 - added configuration option to disable package modification in selfservice
checking for this value before displaying change link or accepting form submission data
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 8 | ||||
-rw-r--r-- | FS/FS/Conf.pm | 9 |
2 files changed, 16 insertions, 1 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 9330049..0131d89 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -1617,6 +1617,7 @@ sub list_pkgs { or return { 'error' => "unknown custnum $custnum" }; my $conf = new FS::Conf; + my $immutable = $conf->exists('selfservice_immutable-package'); # the duplication below is necessary: # 1. to maintain the current buggy behaviour wrt the cust_pkg and part_pkg @@ -1629,6 +1630,7 @@ sub list_pkgs { 'custnum' => $custnum, 'cust_pkg' => [ map { { $_->hash, + immutable => $immutable, part_pkg => [ map $_->hashref, $_->part_pkg ], part_svc => [ map $_->hashref, $_->available_part_svc ], @@ -1661,6 +1663,7 @@ sub list_pkgs { my $primary_cust_svc = $_->primary_cust_svc; +{ $_->hash, $_->part_pkg->hash, + immutable => $immutable, pkg_label => $_->pkg_locale, status => $_->status, statuscolor => $_->statuscolor, @@ -2353,6 +2356,10 @@ sub change_pkg { my($context, $session, $custnum) = _custoragent_session_custnum($p); return { 'error' => $session } if $context eq 'error'; + my $conf = new FS::Conf; + my $immutable = $conf->exists('selfservice_immutable-package'); + return { 'error' => "Package modification disabled" } if $immutable; + my $search = { 'custnum' => $custnum }; $search->{'agentnum'} = $session->{'agentnum'} if $context eq 'agent'; my $cust_main = qsearchs('cust_main', $search ) @@ -2374,7 +2381,6 @@ sub change_pkg { \@newpkg, ); - my $conf = new FS::Conf; if ( $conf->exists('signup_server-realtime') ) { my $bill_error = _do_bop_realtime( $cust_main, $status, 'no_credit'=>1 ); diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index a6781e9..1ed6b0c 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -2753,6 +2753,15 @@ and customer address. Include units.', }, { + 'key' => 'selfservice_immutable-package', + 'section' => 'self-service', + 'description' => 'Disable package changes in self-service interface.', + 'type' => 'checkbox', + 'per_agent' => 1, + }, + + + { 'key' => 'selfservice_process-pkgpart', 'section' => 'billing', 'description' => 'Package to add to each manual credit card and ACH payment entered by the customer themselves in the self-service interface. Enabling this option may be in violation of your merchant agreement(s), so please check it(/them) carefully before enabling this option.', |