[freeside-commits] branch FREESIDE_3_BRANCH updated. 0a7f7a78dafb35f9dc445147aa7d7b64a44162e0
Ivan
ivan at 420.am
Sat Mar 26 22:46:24 PDT 2016
The branch, FREESIDE_3_BRANCH has been updated
via 0a7f7a78dafb35f9dc445147aa7d7b64a44162e0 (commit)
from 2ab62f031f902a03bb4e3c54e7f47a35acffb5e1 (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 0a7f7a78dafb35f9dc445147aa7d7b64a44162e0
Author: Ivan Kohler <ivan at freeside.biz>
Date: Sat Mar 26 22:46:23 2016 -0700
freeside inc. web services for address normalizaion and printing, RT#33849
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 76cadc3..775cc3d 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -2345,6 +2345,112 @@ sub mimebuild_pdf {
);
}
+
+
+use CAM::PDF;
+use LWP::UserAgent;
+use HTTP::Request::Common qw( POST );
+use JSON::XS;
+sub postal_mail_fsinc {
+ my ( $self, %opt ) = @_;
+
+ my $url = 'https://ws.freeside.biz/print';
+
+ my $cust_main = $self->cust_main;
+ my $agentnum = $cust_main->agentnum;
+ my $bill_location = $cust_main->bill_location;
+
+ die "Extra charges for international mailing; contact support\@freeside.biz to enable\n"
+ if $bill_location->country ne 'US';
+
+ my $conf = new FS::Conf;
+
+ my @company_address = $conf->config('company_address', $agentnum);
+ my ( $company_address1, $company_address2, $company_city, $company_state, $company_zip );
+ if ( $company_address[2] =~ /^\s*(\S.*\S)\s*[\s,](\w\w),?\s*(\d{5}(-\d{4})?)\s*$/ ) {
+ $company_address1 = $company_address[0];
+ $company_address2 = $company_address[1];
+ $company_city = $1;
+ $company_state = $2;
+ $company_zip = $3;
+ } elsif ( $company_address[1] =~ /^\s*(\S.*\S)\s*[\s,](\w\w),?\s*(\d{5}(-\d{4})?)\s*$/ ) {
+ $company_address1 = $company_address[0];
+ $company_address2 = '';
+ $company_city = $1;
+ $company_state = $2;
+ $company_zip = $3;
+ } else {
+ die "Unparsable company_address; contact support\@freeside.biz\n";
+ }
+
+ my $file = $self->print_pdf(%opt);
+ my $pages = CAM::PDF->new($file)->numPages;
+
+ my $ua = LWP::UserAgent->new( 'ssl_opts' => { 'verify_hostname'=>0 });
+ my $response = $ua->request( POST $url, [
+ 'support-key' => scalar($conf->config('support-key')),
+ 'file' => $file,
+ 'pages' => $pages,
+
+ #from:
+ 'company_name' => scalar( $conf->config('company_name', $agentnum) ),
+ 'company_address1' => $company_address1,
+ 'company_address2' => $company_address2,
+ 'company_city' => $company_city,
+ 'company_state' => $company_state,
+ 'company_zip' => $company_zip,
+ 'company_country' => 'US',
+ 'company_phonenum' => scalar($conf->config('company_phonenum', $agentnum)),
+ 'company_email' => scalar($conf->config('invoice_from', $agentnum)),
+
+ #to:
+ 'name' => ( $cust_main->payname
+ && $cust_main->payby !~ /^(CARD|DCRD|CHEK|DCHK)$/
+ ? $cust_main->payname
+ : $cust_main->contact_firstlast
+ ),
+ 'company' => $cust_main->company,
+ 'address1' => $bill_location->address1,
+ 'address2' => $bill_location->address2,
+ 'city' => $bill_location->city,
+ 'state' => $bill_location->state,
+ 'zip' => $bill_location->zip,
+ 'country' => $bill_location->country,
+ ]);
+
+ die "Print connection error: ". $response->message. "\n"
+ unless $response->is_success;
+
+ local $@;
+ my $content = eval { decode_json($response->content) };
+ die "Print JSON error : $@\n" if $@;
+
+ die $content->{error}."\n"
+ if $content->{error};
+}
+
+1;
+ 'address1' => $bill_location->address1,
+ 'address2' => $bill_location->address2,
+ 'city' => $bill_location->city,
+ 'state' => $bill_location->state,
+ 'zip' => $bill_location->zip,
+ 'country' => $bill_location->country,
+ ]);
+
+ die "Print connection error: ". $response->message
+ unless $response->is_success;
+
+ local $@;
+ my $content = eval { decode_json($response->content) };
+ die "Print JSON error : $@\n" if $@;
+
+ die $content->{error}."\n"
+ if $content->{error};
+
+ #TODO: get some kind of letter ID back we can later retreive a status on
+}
+
=item _items_sections OPTIONS
Generate section information for all items appearing on this invoice.
diff --git a/FS/FS/part_event/Action/cust_bill_fsinc_print.pm b/FS/FS/part_event/Action/cust_bill_fsinc_print.pm
index ed323b9..b0d65c6 100644
--- a/FS/FS/part_event/Action/cust_bill_fsinc_print.pm
+++ b/FS/FS/part_event/Action/cust_bill_fsinc_print.pm
@@ -2,11 +2,6 @@ package FS::part_event::Action::cust_bill_fsinc_print;
use strict;
use base qw( FS::part_event::Action );
-use LWP::UserAgent;
-use HTTP::Request::Common qw( POST );
-use JSON::XS;
-use CAM::PDF;
-use FS::Conf;
sub description { 'Send invoice to Freeside Inc. for printing and mailing'; }
@@ -29,77 +24,10 @@ sub do_action {
$cust_bill->set('mode' => $self->option('modenum'));
- my $url = 'https://ws.freeside.biz/print';
+ my $error = $cust_bill->postal_mail_fsinc;
+ die $error if $error;
- my $cust_main = $cust_bill->cust_main;
- my $bill_location = $cust_main->bill_location;
-
- die 'Extra charges for international mailing; contact support at freeside.biz to enable'
- if $bill_location->country ne 'US';
-
- my $conf = new FS::Conf;
-
- my @company_address = $conf->config('company_address', $agentnum);
- my ( $company_address1, $company_address2, $company_city, $company_state, $company_zip );
- if ( $company_address[2] =~ /^\s*(\S.*\S)\s*[\s,](\w\w),?\s*(\d{5}(-\d{4})?)\s*$/ ) {
- $company_address1 = $company_address[0];
- $company_address2 = $company_address[1];
- $company_city = $1;
- $company_state = $2;
- $company_zip = $3;
- } elsif ( $company_address[1] =~ /^\s*(\S.*\S)\s*[\s,](\w\w),?\s*(\d{5}(-\d{4})?)\s*$/ ) {
- $company_address1 = $company_address[0];
- $company_address2 = '';
- $company_city = $1;
- $company_state = $2;
- $company_zip = $3;
- } else {
- die 'Unparsable company_address; contact support at freeside.biz';
- }
-
- my $file = $cust_bill->print_pdf;
- my $pages = CAM::PDF->new($file)->numPages;
-
- my $ua = LWP::UserAgent->new( 'ssl_opts' => { 'verify_hostname'=>0 });
- my $response = $ua->request( POST $url, [
- 'support-key' => scalar($conf->config('support-key')),
- 'file' => $file,
- 'pages' => $pages,
-
- #from:
- 'company_name' => scalar( $conf->config('company_name', $agentnum) ),
- 'company_address1' => $company_address1,
- 'company_address2' => $company_address2,
- 'company_city' => $company_city
- 'company_state' => $company_state,
- 'company_zip' => $company_zip,
- 'company_country' => 'US',
- 'company_phonenum' => scalar($conf->config('company_phonenum', $agentnum)),
- 'company_email' => scalar($conf->config('invoice_from', $agentnum)),
-
- #to:
- 'name' => ( $cust_main->payname
- && $cust_main->payby !~ /^(CARD|DCRD|CHEK|DCHK)$/
- ? $cust_main->payname
- : $cust_main->contact_firstlast
- )
- 'address1' => $bill_location->address1,
- 'address2' => $bill_location->address2,
- 'city' => $bill_location->city,
- 'state' => $bill_location->state,
- 'zip' => $bill_location->zip,
- 'country' => $bill_location->country,
- ]);
-
- die "Print connection error: ". $response->message
- unless $response->is_success;
-
- local $@;
- my $content = eval { decode_json($response->content) };
- die "Print JSON error : $@\n" if $@;
-
- die $content->{error}."\n"
- if $content->{error};
+ #TODO: get some kind of letter ID back we can later retreive a status on
}
1;
-----------------------------------------------------------------------
Summary of changes:
FS/FS/Template_Mixin.pm | 106 ++++++++++++++++++++++
FS/FS/part_event/Action/cust_bill_fsinc_print.pm | 78 +---------------
2 files changed, 109 insertions(+), 75 deletions(-)
More information about the freeside-commits
mailing list