summaryrefslogtreecommitdiff
path: root/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-02-03 07:14:45 -0800
committerIvan Kohler <ivan@freeside.biz>2015-02-03 07:14:45 -0800
commit167dbdad01e2c1b62fd9be43cc05212e8c874a02 (patch)
tree0d49c9ba03d64560f21b02a20d32d6005a790ced /fs_selfservice/FS-SelfService/cgi/selfservice.cgi
parent475ae93877f1d834941f7b9adcc35ee84c5c22fa (diff)
contacts can be shared among customers / "duplicate contact emails", RT#27943
Diffstat (limited to 'fs_selfservice/FS-SelfService/cgi/selfservice.cgi')
-rwxr-xr-xfs_selfservice/FS-SelfService/cgi/selfservice.cgi16
1 files changed, 15 insertions, 1 deletions
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
index 9443a7de7..2337fb51e 100755
--- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
+++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
@@ -81,6 +81,7 @@ my @actions = ( qw(
process_change_password
customer_suspend_pkg
process_suspend_pkg
+ switch_cust
));
my @nologin_actions = (qw(
@@ -204,6 +205,12 @@ unless ( $nologin_actions{$action} ) {
# at this point $session_id is a real session
+ if ( ! $login_rv->{'custnum'} && ! $login_rv->{'svcnum'} && $login_rv->{'customers'} ) {
+ #select a customer if we're a multi-contact customer
+ do_template('select_cust', { %$login_rv } );
+ exit;
+ }
+
}
warn "calling $action sub\n"
@@ -212,6 +219,7 @@ $FS::SelfService::DEBUG = $DEBUG;
my $result = eval "&$action();";
die $@ if $@;
+use Data::Dumper;
warn Dumper($result) if $DEBUG;
if ( $result->{error} && ( $result->{error} eq "Can't resume session"
@@ -237,7 +245,13 @@ do_template($action, {
#--
-use Data::Dumper;
+sub switch_cust {
+ $action = 'myaccount';
+ FS::SelfService::switch_cust( 'session_id' => $session_id,
+ 'custnum' => scalar($cgi->param('custnum')),
+ );
+}
+
sub myaccount {
customer_info( 'session_id' => $session_id );
}