From 60bc613d68c07840f5c31c4299ffcf8a235f9da7 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 28 Oct 2011 01:32:18 +0000 Subject: [PATCH] legacy invoices via self-service, RT#13656 --- FS/FS/ClientAPI/MyAccount.pm | 80 ++++++++++++++++++++++++---- FS/FS/ClientAPI_XMLRPC.pm | 2 + fs_selfservice/FS-SelfService/SelfService.pm | 2 + 3 files changed, 75 insertions(+), 9 deletions(-) diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 76084394d..4d2cccf07 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -30,6 +30,7 @@ use FS::dsl_device; use FS::part_svc; use FS::cust_main; use FS::cust_bill; +use FS::legacy_cust_bill; use FS::cust_main_county; use FS::cust_pkg; use FS::payby; @@ -1143,6 +1144,52 @@ sub invoice_pdf { } +sub legacy_invoice { + my $p = shift; + my $session = _cache->get($p->{'session_id'}) + or return { 'error' => "Can't resume session" }; #better error message + + my $custnum = $session->{'custnum'}; + + my $legacyinvnum = $p->{'legacyinvnum'}; + + my $legacy_cust_bill = qsearchs('legacy_cust_bill', { + 'legacyinvnum' => $legacyinvnum, + 'custnum' => $custnum, + }) or return { 'error' => "Can't find legacyinvnum" }; + + #my %return; + + return { 'error' => '', + 'legacyinvnum' => $legacyinvnum, + 'invoice_html' => $legacy_cust_bill->content_html, + }; + +} + +sub legacy_invoice_pdf { + my $p = shift; + my $session = _cache->get($p->{'session_id'}) + or return { 'error' => "Can't resume session" }; #better error message + + my $custnum = $session->{'custnum'}; + + my $legacyinvnum = $p->{'legacyinvnum'}; + + my $legacy_cust_bill = qsearchs('legacy_cust_bill', { + 'legacyinvnum' => $legacyinvnum, + 'custnum' => $custnum, + }) or return { 'error' => "Can't find legacyinvnum" }; + + #my %return; + + return { 'error' => '', + 'legacyinvnum' => $legacyinvnum, + 'invoice_pdf' => $legacy_cust_bill->content_pdf, + }; + +} + sub invoice_logo { my $p = shift; @@ -1187,6 +1234,7 @@ sub list_invoices { or return { 'error' => "unknown custnum $custnum" }; my @cust_bill = $cust_main->cust_bill; + my @legacy_cust_bill = $cust_main->legacy_cust_bill; my $balance = 0; @@ -1196,18 +1244,32 @@ sub list_invoices { map { my $owed = $_->owed; $balance += $owed; - +{ 'invnum' => $_->invnum, - '_date' => $_->_date, - 'date' => time2str("%b %o, %Y", $_->_date), - 'date_short' => time2str("%m-%d-%Y", $_->_date), - 'previous' => sprintf('%.2f', ($_->previous)[0]), - 'charged' => sprintf('%.2f', $_->charged), - 'owed' => sprintf('%.2f', $owed), - 'balance' => sprintf('%.2f', $balance), + +{ 'invnum' => $_->invnum, + '_date' => $_->_date, + 'date' => time2str("%b %o, %Y", $_->_date), + 'date_short' => time2str("%m-%d-%Y", $_->_date), + 'previous' => sprintf('%.2f', ($_->previous)[0]), + 'charged' => sprintf('%.2f', $_->charged), + 'owed' => sprintf('%.2f', $owed), + 'balance' => sprintf('%.2f', $balance), } } @cust_bill - ] + ], + 'legacy_invoices' => [ + map { + +{ 'legacyinvnum' => $_->legacyinvnum, + 'legacyid' => $_->legacyid, + '_date' => $_->_date, + 'date' => time2str("%b %o, %Y", $_->_date), + 'date_short' => time2str("%m-%d-%Y", $_->_date), + 'charged' => sprintf('%.2f', $_->charged), + 'has_content' => ( length($_->content_pdf) + || length($_->content_html) ), + } + } + @legacy_cust_bill + ], }; } diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm index b90951918..66d0740b1 100644 --- a/FS/FS/ClientAPI_XMLRPC.pm +++ b/FS/FS/ClientAPI_XMLRPC.pm @@ -72,6 +72,8 @@ sub ss2clientapi { 'edit_info' => 'MyAccount/edit_info', #add to ss cgi! 'invoice' => 'MyAccount/invoice', 'invoice_pdf' => 'MyAccount/invoice_pdf', + 'legacy_invoice' => 'MyAccount/legacy_invoice', + 'legacy_invoice_pdf' => 'MyAccount/legacy_invoice_pdf', 'invoice_logo' => 'MyAccount/invoice_logo', 'list_invoices' => 'MyAccount/list_invoices', #? 'cancel' => 'MyAccount/cancel', #add to ss cgi! diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index 89796b7b5..b639130d2 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -34,6 +34,8 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'edit_info' => 'MyAccount/edit_info', #add to ss cgi! 'invoice' => 'MyAccount/invoice', 'invoice_pdf' => 'MyAccount/invoice_pdf', + 'legacy_invoice' => 'MyAccount/legacy_invoice', + 'legacy_invoice_pdf' => 'MyAccount/legacy_invoice_pdf', 'invoice_logo' => 'MyAccount/invoice_logo', 'list_invoices' => 'MyAccount/list_invoices', #? 'cancel' => 'MyAccount/cancel', #add to ss cgi! -- 2.11.0