[freeside-commits] branch master updated. 16542dcb6b35c8cf7f436f87adb2cfdb0e32f4fc
Jeremy Davis
jeremyd at 420.am
Mon Feb 9 08:57:03 PST 2015
The branch, master has been updated
via 16542dcb6b35c8cf7f436f87adb2cfdb0e32f4fc (commit)
from bb3b0a3d1854fdf8e6de9038cea3f73ac4f9d817 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 16542dcb6b35c8cf7f436f87adb2cfdb0e32f4fc
Author: Jeremy Davis <jeremyd at freeside.biz>
Date: Mon Feb 9 10:56:43 2015 -0600
Ticket #33252 API update
diff --git a/FS/FS/API.pm b/FS/FS/API.pm
index 30efa9c..5b56539 100644
--- a/FS/FS/API.pm
+++ b/FS/FS/API.pm
@@ -430,32 +430,36 @@ sub new_customer {
}
=item update_customer
-
-Updates an existing customer. Takes a hash reference as parameter with the foll$
+Updates an existing customer. Passing an empty value clears that field, while NOT passing that key/value at all leaves it alone.
+Takes a hash reference as parameter with the following keys:
=over 4
=item secret
-API Secret
+API Secret (required)
+
+=item custnum
+
+Customer number (required)
=item first
-first name (required)
+first name
=item last
-last name (required)
+last name
=item company
Company name
-=item address1 (required)
+=item address1
Address line one
-=item city (required)
+=item city
City
@@ -463,11 +467,11 @@ City
County
-=item state (required)
+=item state
State
-=item zip (required)
+=item zip
Zip or postal code
diff --git a/FS/FS/cust_main/API.pm b/FS/FS/cust_main/API.pm
index 4a09b93..cfdc222 100644
--- a/FS/FS/cust_main/API.pm
+++ b/FS/FS/cust_main/API.pm
@@ -159,7 +159,7 @@ sub API_insert {
sub API_update {
- my( $class, %opt ) = @_;
+ my( $class, %opt ) = @_;
my $conf = new FS::Conf;
@@ -180,43 +180,47 @@ sub API_update {
payby payinfo paydate paycvv payname
),
-
my @invoicing_list = $opt{'invoicing_list'}
? split( /\s*\,\s*/, $opt{'invoicing_list'} )
- : ();
+ : $cust_main->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"};
+
+ if ( exists( $opt{'address1'} ) ) {
+ my $bill_location = FS::cust_location->new({
+ map { $_ => $opt{$_} } @location_editable_fields
+ });
+ $bill_location->set('custnum' => $custnum);
+ my $error = $bill_location->find_or_insert;
+ die $error if $error;
+
+ # if this is unchanged from before, cust_main::replace will ignore it
+ $new->set('bill_location' => $bill_location);
}
- 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)
- ) {
+ if ( exists($opt{'ship_address1'}) ) {
+ my $ship_location = FS::cust_location->new({
+ map { $_ => $opt{"ship_$_"} } @location_editable_fields
+ });
- $ship_location = FS::cust_location->new( $ship_hash );
-
- } else {
- $ship_location = $bill_location;
- }
+ $ship_location->set('custnum' => $custnum);
+ my $error = $ship_location->find_or_insert;
+ die $error if $error;
+
+ }
- $new->set('bill_location' => $bill_location);
- $new->set('ship_location' => $ship_location);
+ if ( !grep { length($opt{"ship_$_"}) } @location_editable_fields ) {
+ # Selfservice unfortunately tries to indicate "same as billing
+ # address" by sending all fields empty. Did this ever work?
+ my $ship_location = $cust_main->bill_location;
+ $new->set('ship_location' => $ship_location);
+
+ }
my $error = $new->replace( $cust_main, \@invoicing_list );
return { 'error' => $error } if $error;
-
+
return { 'error' => '',
- };
-
+ };
}
1;
-----------------------------------------------------------------------
Summary of changes:
FS/FS/API.pm | 22 ++++++++++--------
FS/FS/cust_main/API.pm | 58 ++++++++++++++++++++++++++----------------------
2 files changed, 44 insertions(+), 36 deletions(-)
More information about the freeside-commits
mailing list