X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FAPI.pm;h=99e04774fd3f208ce5aec419c49e7dcad46bf26f;hb=f48943ca9b3d280919d5e2d4cb6880ea8f095d7b;hp=2105409c5764bcac409802a7de031487bfca3be5;hpb=d38101d94807b4d7cff6bbff537cabe3b9837f51;p=freeside.git diff --git a/FS/FS/API.pm b/FS/FS/API.pm index 2105409c5..99e04774f 100644 --- a/FS/FS/API.pm +++ b/FS/FS/API.pm @@ -1,5 +1,6 @@ package FS::API; +use strict; use FS::Conf; use FS::Record qw( qsearch qsearchs ); use FS::cust_main; @@ -406,66 +407,18 @@ Referring customer number sub new_customer { my( $class, %opt ) = @_; + my $conf = new FS::Conf; return { 'error' => 'Incorrect shared secret' } unless $opt{secret} eq $conf->config('api_shared_secret'); #default agentnum like signup_server-default_agentnum? + #$opt{agentnum} ||= $conf->config('signup_server-default_agentnum'); #same for refnum like signup_server-default_refnum + $opt{refnum} ||= $conf->config('signup_server-default_refnum'); - my $cust_main = new FS::cust_main ( { - 'agentnum' => $agentnum, - 'refnum' => $opt{refnum} - || $conf->config('signup_server-default_refnum'), - 'payby' => 'BILL', - - map { $_ => $opt{$_} } qw( - agentnum refnum agent_custid referral_custnum - last first company - daytime night fax mobile - payby payinfo paydate paycvv payname - ), - - } ); - - my @invoicing_list = $opt{'invoicing_list'} - ? split( /\s*\,\s*/, $opt{'invoicing_list'} ) - : (); - push @invoicing_list, 'POST' if $opt{'postal_invoicing'}; - - my ($bill_hash, $ship_hash); - foreach my $f (FS::cust_main->location_fields) { - # avoid having to change this in front-end code - $bill_hash->{$f} = $opt{"bill_$f"} || $opt{$f}; - $ship_hash->{$f} = $opt{"ship_$f"}; - } - - my $bill_location = FS::cust_location->new($bill_hash); - my $ship_location; - # we don't have an equivalent of the "same" checkbox in selfservice^Wthis API - # so is there a ship address, and if so, is it different from the billing - # address? - if ( length($ship_hash->{address1}) > 0 and - grep { $bill_hash->{$_} ne $ship_hash->{$_} } keys(%$ship_hash) - ) { - - $ship_location = FS::cust_location->new( $ship_hash ); - - } else { - $ship_location = $bill_location; - } - - $cust_main->set('bill_location' => $bill_location); - $cust_main->set('ship_location' => $ship_location); - - $error = $cust_main->insert( {}, \@invoicing_list ); - return { 'error' => $error } if $error; - - return { 'error' => '', - 'custnum' => $cust_main->custnum, - }; - + $class->API_insert( %opt ); } =back @@ -476,19 +429,6 @@ Returns general customer information. Takes a hash reference as parameter with t =cut -#some false laziness w/ClientAPI::Myaccount customer_info/customer_info_short - -use vars qw( @cust_main_editable_fields @location_editable_fields ); -@cust_main_editable_fields = qw( - first last company daytime night fax mobile -); -# locale -# payby payinfo payname paystart_month paystart_year payissue payip -# ss paytype paystate stateid stateid_state -@location_editable_fields = qw( - address1 address2 city county state zip country -); - sub customer_info { my( $class, %opt ) = @_; my $conf = new FS::Conf; @@ -498,39 +438,9 @@ sub customer_info { my $cust_main = qsearchs('cust_main', { 'custnum' => $opt{custnum} }) or return { 'error' => 'Unknown custnum' }; - my %return = ( - 'error' => '', - 'display_custnum' => $cust_main->display_custnum, - 'name' => $cust_main->first. ' '. $cust_main->get('last'), - 'balance' => $cust_main->balance, - 'status' => $cust_main->status, - 'statuscolor' => $cust_main->statuscolor, - ); - - $return{$_} = $cust_main->get($_) - foreach @cust_main_editable_fields; - - for (@location_editable_fields) { - $return{$_} = $cust_main->bill_location->get($_) - if $cust_main->bill_locationnum; - $return{'ship_'.$_} = $cust_main->ship_location->get($_) - if $cust_main->ship_locationnum; - } - - my @invoicing_list = $cust_main->invoicing_list; - $return{'invoicing_list'} = - join(', ', grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list ); - $return{'postal_invoicing'} = - 0 < ( grep { $_ eq 'POST' } @invoicing_list ); - - #generally, the more useful data from the cust_main record the better. - # well, tell me what you want - - return \%return; - + $cust_main->API_getinfo; } - =item location_info Returns location specific information for the customer. Takes a hash reference as parameter with the following keys: custnum,secret