X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fportaone.pm;h=986a556bad3a07d72519570e022171e5325a4e2e;hp=be7e7be5e345bbfd04a645af4908c5dfe274a77d;hb=5372897f367498972c96f5494e142e6e11b29eb8;hpb=48098d73a72b6cc4d4242ac66d497bf5a4466b7a diff --git a/FS/FS/part_export/portaone.pm b/FS/FS/part_export/portaone.pm index be7e7be5e..986a556ba 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); @@ -36,10 +37,11 @@ tie my %options, 'Tie::IxHash', default => '' }, 'port' => { label => 'Port', default => 443 }, - 'account_id' => { label => 'Account ID', - default => 'FREESIDE CUST $custnum' }, 'customer_name' => { label => 'Customer Name', - default => 'FREESIDE SVC $svcnum' }, + default => 'FREESIDE CUST $custnum' }, + 'account_id' => { label => 'Account ID', + default => '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,13 @@ 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",time), + 'billing_model' => 1, # '1' for credit, '-1' for debit, could make this an export option + 'h323_password' => $svc_phone->sip_password, } },'i_account'); return $self->api_error_logout if $self->api_error; @@ -179,6 +186,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 +381,8 @@ sub api_update_account { 'account_info' => { 'i_account' => $i_account, 'id' => $newid, + 'i_product' => $self->option('product_id'), + 'h323_password' => $svc_phone->sip_password, }, },'i_account'); return if $self->api_error;