X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FMyAccount.pm;h=290022148ced4546106f4b3a2628a966ed1eac7e;hp=c9a74942493782d49d2378b5fae850fe943df173;hb=38d7ed9d33840a59bbbf6895e3c7a6d191094c03;hpb=3c0d5d77527f46e59c68fb6f92de2391e779f07b 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'})