[freeside-commits] branch master updated. 0238fd7aa7a92887970507346ac7e6ad8ed5492c

Jeremy Davis jeremyd at 420.am
Mon Feb 9 19:32:32 PST 2015


The branch, master has been updated
       via  0238fd7aa7a92887970507346ac7e6ad8ed5492c (commit)
      from  16542dcb6b35c8cf7f436f87adb2cfdb0e32f4fc (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 0238fd7aa7a92887970507346ac7e6ad8ed5492c
Author: Jeremy Davis <jeremyd at freeside.biz>
Date:   Mon Feb 9 18:05:07 2015 -0600

    API Customer Update

diff --git a/FS/FS/API.pm b/FS/FS/API.pm
index 5b56539..dd172c1 100644
--- a/FS/FS/API.pm
+++ b/FS/FS/API.pm
@@ -430,8 +430,10 @@ sub new_customer {
 }
 
 =item update_customer
-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:
+
+Updates an existing customer. Passing an empty value clears that field, while
+NOT passing that key/value at all leaves it alone. Takes a list of keys and
+values as parameters with the following keys:
 
 =over 4
 
@@ -497,7 +499,9 @@ Mobile number
 
 =item invoicing_list
 
-comma-separated list of email addresses for email invoices. The special value '$
+Comma-separated list of email addresses for email invoices. The special value 
+'POST' is used to designate postal invoicing (it may be specified alone or in
+addition to email addresses),
 postal_invoicing
 Set to 1 to enable postal invoicing
 
@@ -507,7 +511,8 @@ CARD, DCRD, CHEK, DCHK, LECB, BILL, COMP or PREPAY
 
 =item payinfo
 
-Card number for CARD/DCRD, account_number at aba_number for CHEK/DCHK, prepaid "pi$
+Card number for CARD/DCRD, account_number at aba_number for CHEK/DCHK, prepaid 
+"pin" for PREPAY, purchase order number for BILL
 
 =item paycvv
 
diff --git a/FS/FS/cust_main/API.pm b/FS/FS/cust_main/API.pm
index cfdc222..158b5cf 100644
--- a/FS/FS/cust_main/API.pm
+++ b/FS/FS/cust_main/API.pm
@@ -163,7 +163,6 @@ sub API_update {
 
   my $conf = new FS::Conf;
 
-
   my $custnum = $opt{'custnum'}
     or return { 'error' => "no customer record" };
 
@@ -180,11 +179,14 @@ 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 @invoicing_list;
+  if ( exists $opt{'invoicing_list'} || exists $opt{'postal_invoicing'} ) {
+    @invoicing_list = split( /\s*\,\s*/, $opt{'invoicing_list'} );
+    push @invoicing_list, 'POST' if $opt{'postal_invoicing'};
+  } else {
+    @invoicing_list = $cust_main->invoicing_list;
+  }
+
   if ( exists( $opt{'address1'} ) ) {
     my $bill_location = FS::cust_location->new({
         map { $_ => $opt{$_} } @location_editable_fields
@@ -197,7 +199,7 @@ sub API_update {
     $new->set('bill_location' => $bill_location);
   }
 
-  if ( exists($opt{'ship_address1'}) ) {
+  if ( exists($opt{'ship_address1'}) && length($opt{"ship_address1"}) > 0 ) {
     my $ship_location = FS::cust_location->new({
         map { $_ => $opt{"ship_$_"} } @location_editable_fields
     });
@@ -206,16 +208,13 @@ sub API_update {
     my $error = $ship_location->find_or_insert;
     die $error if $error;
 
-   }
-
-   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);
+   $new->set('ship_location' => $ship_location);
 
+   } elsif (exists($opt{'ship_address1'} ) && !grep { length($opt{"ship_$_"}) } @location_editable_fields ) {
+      my $ship_location = $new->bill_location;
+     $new->set('ship_location' => $ship_location);
    }
+
   my $error = $new->replace( $cust_main, \@invoicing_list );
   return { 'error'   => $error } if $error;
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/API.pm           |   13 +++++++++----
 FS/FS/cust_main/API.pm |   29 ++++++++++++++---------------
 2 files changed, 23 insertions(+), 19 deletions(-)




More information about the freeside-commits mailing list