[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