[freeside-commits] branch FREESIDE_3_BRANCH updated. 8737f1938d224b046aa42c7a45c780a8f82751b5
Mark Wells
mark at 420.am
Tue Jul 8 12:23:16 PDT 2014
The branch, FREESIDE_3_BRANCH has been updated
via 8737f1938d224b046aa42c7a45c780a8f82751b5 (commit)
from 54396ff98128b81c7feabadb34aed849ef1e587d (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 8737f1938d224b046aa42c7a45c780a8f82751b5
Author: Mark Wells <mark at freeside.biz>
Date: Sat Jul 5 13:13:34 2014 -0700
Northern 911 export, #29195
diff --git a/FS/FS/part_export/northern_911.pm b/FS/FS/part_export/northern_911.pm
new file mode 100644
index 0000000..27f150c
--- /dev/null
+++ b/FS/FS/part_export/northern_911.pm
@@ -0,0 +1,107 @@
+package FS::part_export::northern_911;
+
+use strict;
+use vars qw(@ISA %info);
+use Tie::IxHash;
+use FS::Record qw(qsearch dbh);
+use base 'FS::part_export';
+use Data::Dumper;
+
+tie my %options, 'Tie::IxHash',
+ 'vendor_code' => { label=>'Northern 911 vendor code' },
+ 'password' => { label=>'API passcode' },
+ 'test_mode' => { label=>'Test mode',
+ type =>'checkbox' },
+ 'debug' => { label=>'Enable debugging',
+ type =>'checkbox' },
+;
+
+%info = (
+ 'svc' => 'svc_phone',
+ 'desc' => 'Provision E911 to Northern 911',
+ 'options' => \%options,
+ 'no_machine' => 1,
+ 'notes' => <<'END'
+Requires installation of
+<a href="http://search.cpan.org/dist/WebService-Northern911">WebService::Northern911</a>
+from CPAN.
+END
+);
+
+sub client {
+ my $self = shift;
+
+ if (!$self->get('client')) {
+ local $@;
+ eval "use WebService::Northern911";
+ return "error loading WebService::Northern911 ($@)" if $@;
+ $self->set('client',
+ WebService::Northern911->new(
+ vendor_code => $self->option('vendor_code'),
+ password => $self->option('password'),
+ live => ( $self->option('test_mode') ? 0 : 1),
+ )
+ );
+ }
+
+ return $self->get('client');
+}
+
+sub export_insert {
+ my( $self, $svc_phone ) = (shift, shift);
+
+ my %location_hash = $svc_phone->location_hash;
+ $location_hash{address1} =~ /^(\w+) +(.*)$/;
+ my %customer = (
+ 'PHONE_NUMBER' => $svc_phone->phonenum,
+ 'STREET_NUMBER' => $1,
+ 'STREET_NAME' => $2,
+ 'CITY' => $location_hash{city},
+ 'PROVINCE_STATE' => $location_hash{state},
+ 'POSTAL_CODE_ZIP' => $location_hash{zip},
+ 'OTHER_ADDRESS_INFO' => $location_hash{address2},
+ );
+
+ if ($self->option('debug')) {
+ warn "\nAddorUpdateCustomer:\n".Dumper(\%customer)."\n\n";
+ }
+ my $response = $self->client->AddorUpdateCustomer(%customer);
+ if (!$response->is_success) {
+ return $response->error_message;
+ }
+ '';
+}
+
+sub export_replace {
+ my( $self, $new, $old ) = (shift, shift, shift);
+
+ # except when changing the phone number, exactly like export_insert;
+ if ($new->phonenum ne $old->phonenum) {
+ my $error = $self->export_delete($old);
+ return $error if $error;
+ }
+ $self->export_insert($new);
+}
+
+sub export_delete {
+ my ($self, $svc_phone) = (shift, shift);
+
+ if ($self->option('debug')) {
+ warn "\nDeleteCustomer:\n".$svc_phone->phonenum."\n\n";
+ }
+ my $response = $self->client->DeleteCustomer($svc_phone->phonenum);
+ if (!$response->is_success) {
+ return $response->error_message;
+ }
+ '';
+}
+
+# export_suspend and _unsuspend do nothing
+
+sub export_relocate {
+ my ($self, $svc_phone) = (shift, shift);
+ $self->export_insert($svc_phone);
+}
+
+1;
+
-----------------------------------------------------------------------
Summary of changes:
FS/FS/part_export/northern_911.pm | 107 +++++++++++++++++++++++++++++++++++++
1 file changed, 107 insertions(+)
create mode 100644 FS/FS/part_export/northern_911.pm
More information about the freeside-commits
mailing list