[freeside-commits] branch FREESIDE_4_BRANCH updated. fcfe04d67690621ef777378f5ed58cd3729bae53

Jonathan Prykop jonathan at 420.am
Mon Mar 21 16:19:53 PDT 2016


The branch, FREESIDE_4_BRANCH has been updated
       via  fcfe04d67690621ef777378f5ed58cd3729bae53 (commit)
      from  50df78ba236d9c40adc4c73c04148b610471bc9c (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 fcfe04d67690621ef777378f5ed58cd3729bae53
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