From c52f1b6999b57cc3cb52fe8e4304d0bbfbbbb2f2 Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 27 Jul 2011 23:26:57 +0000 Subject: [PATCH] add per-customer "Invoice reports" link, RT#13802 --- FS/FS/cust_bill.pm | 5 +++++ httemplate/search/cust_bill.html | 4 ++++ httemplate/search/report_cust_bill.html | 30 +++++++++++++++++++++++++- httemplate/view/cust_main/payment_history.html | 24 +++++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 4ea67b69a..a6a782a0c 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -5221,6 +5221,11 @@ sub search_sql_where { push @search, "cust_main.agentnum = $1"; } + #agentnum + if ( $param->{'custnum'} =~ /^(\d+)$/ ) { + push @search, "cust_bill.custnum = $1"; + } + #_date if ( $param->{_date} ) { my($beginning, $ending) = @{$param->{_date}}; diff --git a/httemplate/search/cust_bill.html b/httemplate/search/cust_bill.html index 4f73aaf84..627703691 100755 --- a/httemplate/search/cust_bill.html +++ b/httemplate/search/cust_bill.html @@ -93,6 +93,10 @@ if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) { $search{'agentnum'} = $1; } + if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { + $search{'custnum'} = $1; + } + # begin/end/beginning/ending my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, ''); $search{'_date'} = [ $beginning, $ending ] diff --git a/httemplate/search/report_cust_bill.html b/httemplate/search/report_cust_bill.html index 4be5f73a7..0f0d91b14 100644 --- a/httemplate/search/report_cust_bill.html +++ b/httemplate/search/report_cust_bill.html @@ -1,15 +1,18 @@ -<& /elements/header.html, mt('Invoice Report') &> +<& /elements/header.html, mt($title, @title_arg) &>
+ scalar( $cgi->param('agentnum') ), 'label' => emt('Invoices for agent: '), 'disable_empty' => 0, &> +% } <& /elements/tr-input-beginning_ending.html &> @@ -22,21 +25,29 @@ label => emt('Owed'), field => 'owed', &> + +% if ( $cust_main ) { + +% } else { <& /elements/tr-select-payby.html, label => emt('Payment method:'), payby_type => 'cust', multiple => 1, all_selected => 1, &> +% } + +% unless ( $custnum ) { +% }
<% mt('Show only open invoices') |h %>
<% mt('Show only the single most recent invoice per-customer') |h %>
@@ -51,4 +62,21 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('List invoices'); +my $title = 'Invoice Report'; +#false laziness w/report_cust_pkg.html +my @title_arg = (); + +my $custnum = ''; +my $cust_main = ''; +if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { + $custnum = $1; + $cust_main = qsearchs({ + 'table' => 'cust_main', + 'hashref' => { 'custnum' => $custnum }, + 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, + }) or die "unknown custnum $custnum"; + $title .= ': [_1]'; + push @title_arg, $cust_main->name; +} + diff --git a/httemplate/view/cust_main/payment_history.html b/httemplate/view/cust_main/payment_history.html index f29ae164b..fa9c16697 100644 --- a/httemplate/view/cust_main/payment_history.html +++ b/httemplate/view/cust_main/payment_history.html @@ -1,3 +1,7 @@ + + + + + + +
+ %# payment links % my $s = 0; @@ -28,6 +32,9 @@ <% mt('Enter Western Union payment') |h %> % } +
+% $s=0; + % if ( ( $payby{'CARD'} || $payby{'DCRD'} ) % && $curuser->access_right(['Process payment', 'Process credit card payment']) % && ! $cust_main->is_encrypted($cust_main->payinfo) @@ -113,8 +120,17 @@ <% mt('Post manual (offline/POS) credit card refund') |h %> % } +
+ +%# invoice reports +% if ( $curuser->access_right('List invoices') ) { + <% mt('Invoice reports') |h %> +% }
+%# XXX payments, credits, refund reports + %# tax exemption link % my $view_exemptions = $curuser->access_right('View customer tax exemptions'); @@ -166,6 +182,11 @@ <% mt('View pending payments') |h %>
% } +
+ %# and now the table <& /elements/table-grid.html &> @@ -319,6 +340,9 @@ %}
+ + +