diff options
author | ivan <ivan> | 2003-12-23 00:51:37 +0000 |
---|---|---|
committer | ivan <ivan> | 2003-12-23 00:51:37 +0000 |
commit | 38d7ed9d33840a59bbbf6895e3c7a6d191094c03 (patch) | |
tree | 0d28b71f21742501f2ed99025d64ba0e30b790fd /FS/FS/ClientAPI | |
parent | 3c0d5d77527f46e59c68fb6f92de2391e779f07b (diff) |
add edit_info to selfservice API
Diffstat (limited to 'FS/FS/ClientAPI')
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index c9a749424..290022148 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -20,6 +20,7 @@ use FS::ClientAPI; #hmm FS::ClientAPI->register_handlers( 'MyAccount/login' => \&login, 'MyAccount/customer_info' => \&customer_info, + 'MyAccount/edit_info' => \&edit_info, 'MyAccount/invoice' => \&invoice, 'MyAccount/cancel' => \&cancel, 'MyAccount/payment_info' => \&payment_info, @@ -29,6 +30,14 @@ FS::ClientAPI->register_handlers( 'MyAccount/cancel_pkg' => \&cancel_pkg, ); +use vars qw( @cust_main_editable_fields ); +@cust_main_editable_fields = qw( + first last company address1 address2 city + county state zip country daytime night fax + ship_first ship_last ship_company ship_address1 ship_address2 ship_city + ship_state ship_zip ship_country ship_daytime ship_night ship_fax +); + #store in db? my $cache = new Cache::SharedMemoryCache(); @@ -104,6 +113,10 @@ sub customer_info { $return{name} = $cust_main->first. ' '. $cust_main->get('last'); + for (@cust_main_editable_fields) { + $return{$_} = $cust_main->get($_); + } + } else { #no customer record my $svc_acct = qsearchs('svc_acct', { 'svcnum' => $session->{'svcnum'} } ) @@ -119,6 +132,27 @@ sub customer_info { } +sub edit_info { + my $p = shift; + my $session = $cache->get($p->{'session_id'}) + or return { 'error' => "Can't resume session" }; #better error message + + my $custnum = $session->{'custnum'} + or return { 'error' => "no customer record" }; + + my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ) + or return { 'error' => "unknown custnum $custnum" }; + + my $new = new FS::cust_main { $cust_main->hash }; + $new->set( $_ => $p->{$_} ) + foreach grep { exists $p->{$_} } @cust_main_editable_fields; + my $error = $new->replace($cust_main); + return { 'error' => $error } if $error; + #$cust_main = $new; + + return { 'error' => '' }; +} + sub payment_info { my $p = shift; my $session = $cache->get($p->{'session_id'}) |