[freeside-commits] branch master updated. 4f68aef1daec2e338839bbe7968bf1919e33e962

Jonathan Prykop jonathan at 420.am
Mon Mar 21 16:14:22 PDT 2016


The branch, master has been updated
       via  4f68aef1daec2e338839bbe7968bf1919e33e962 (commit)
      from  087a9d9fbaea3a89db3f93f50fef580a388ce573 (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 4f68aef1daec2e338839bbe7968bf1919e33e962
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Mon Mar 21 18:13:13 2016 -0500

    RT#40056: Export DID's to portaone switch [add_account required fields]

diff --git a/FS/FS/part_export/portaone.pm b/FS/FS/part_export/portaone.pm
index cb1373a..2625c57 100644
--- a/FS/FS/part_export/portaone.pm
+++ b/FS/FS/part_export/portaone.pm
@@ -4,6 +4,7 @@ use strict;
 
 use base qw( FS::part_export );
 
+use Date::Format 'time2str';
 use Cpanel::JSON::XS;
 use Net::HTTPS::Any qw(https_post);
 
@@ -40,6 +41,7 @@ tie my %options, 'Tie::IxHash',
                           default => 'FREESIDE CUST $custnum' },
   'account_id'       => { label => 'Account ID',
                           default => 'FREESIDE SVC $svcnum' },
+  'product_id'       => { label => 'Account Product ID' },
   'debug'            => { type => 'checkbox',
                           label => 'Enable debug warnings' },
 ;
@@ -51,9 +53,9 @@ tie my %options, 'Tie::IxHash',
   'notes'           => <<'END',
 During insert, this will add customers to portaone if they do not yet exist,
 using the "Customer Name" option with substitutions from the customer record 
-in freeside.  If option "Account ID" is also specified, an account will be 
-created for the service and assigned to the customer, using substitutions
-from the phone service record in freeside.
+in freeside.  If options "Account ID" and "Account Product ID" are also specified,
+an account will be created for the service and assigned to the customer, using 
+substitutions from the phone service record in freeside for the Account ID.
 
 During replace, if a matching account id for the old service can be found,
 the existing customer and account will be updated.  Otherwise, if a matching 
@@ -113,7 +115,8 @@ sub _export_insert {
 
   # export account if account id is configured
   my $account_id = $self->portaone_account_id($svc_phone);
-  if ($account_id) {
+  my $product_id = $self->option('product_id');
+  if ($account_id && $product_id) {
     # check if account already exists
     my $account_info = $self->api_call('Account','get_account_info',{
       'id' => $account_id,
@@ -132,9 +135,12 @@ sub _export_insert {
       # normal case--insert account for this service
       $i_account = $self->api_call('Account','add_account',{
         'account_info' => {
-          'id' => $self->portaone_account_id($svc_phone),
+          'id' => $account_id,
           'i_customer' => $i_customer,
           'iso_4217' => ($conf->config('currency') || 'USD'),
+          'i_product' => $product_id,
+          'activation_date' => time2str("%Y-%m-%d %H:%M:%S",time),
+          'billing_model'   => 1, # '1' for credit, '-1' for debit, could make this an export option
         }
       },'i_account');
       return $self->api_error_logout if $self->api_error;
@@ -179,6 +185,10 @@ sub _export_replace {
   if ($account_info) {
     $i_account  = $account_info->{'i_account'};
     $i_customer = $account_info->{'i_customer'};
+    # if nothing changed, no need to update account
+    $i_account = undef
+      if ($account_info->{'i_product'} eq $self->option('product_id'))
+         && ($account_id eq $self->portaone_account_id($svc_phone));
   # otherwise, check for existing customer
   } else {
     my $customer_name = $self->portaone_customer_name($cust_main);
@@ -370,6 +380,7 @@ sub api_update_account {
     'account_info' => {
       'i_account' => $i_account,
       'id' => $newid,
+      'i_product' => $self->option('product_id'),
     },
   },'i_account');
   return if $self->api_error;

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

Summary of changes:
 FS/FS/part_export/portaone.pm |   21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)




More information about the freeside-commits mailing list