summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI
diff options
context:
space:
mode:
authorivan <ivan>2003-12-23 00:51:37 +0000
committerivan <ivan>2003-12-23 00:51:37 +0000
commit38d7ed9d33840a59bbbf6895e3c7a6d191094c03 (patch)
tree0d28b71f21742501f2ed99025d64ba0e30b790fd /FS/FS/ClientAPI
parent3c0d5d77527f46e59c68fb6f92de2391e779f07b (diff)
add edit_info to selfservice API
Diffstat (limited to 'FS/FS/ClientAPI')
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm34
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'})