add per-customer "Invoice reports" link, RT#13802
authorivan <ivan>
Wed, 27 Jul 2011 23:27:26 +0000 (23:27 +0000)
committerivan <ivan>
Wed, 27 Jul 2011 23:27:26 +0000 (23:27 +0000)
FS/FS/cust_bill.pm
httemplate/search/cust_bill.html
httemplate/search/report_cust_bill.html
httemplate/view/cust_main/payment_history.html

index 32c2cb1..f5219c0 100644 (file)
@@ -5082,6 +5082,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}};
index 4e40fb0..0e7f211 100755 (executable)
@@ -98,6 +98,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 ]
index b1a252e..0ff9e6b 100644 (file)
@@ -1,16 +1,19 @@
-<% include('/elements/header.html', 'Invoice Report' ) %>
+<% include('/elements/header.html', $title ) %>
 
 <FORM ACTION="cust_bill.html" METHOD="GET">
 <INPUT TYPE="hidden" NAME="magic" VALUE="_date">
+<INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum %>">
 
 <TABLE BGCOLOR="#cccccc" CELLSPACING=0
 
+% unless ( $custnum ) {
   <% include( '/elements/tr-select-agent.html',
                  'curr_value'    => scalar( $cgi->param('agentnum') ),
                  'label'         => 'Invoices for agent: ',
                  'disable_empty' => 0,
              )
   %>
+% }
 
   <% include( '/elements/tr-input-beginning_ending.html' ) %>
 
                 field   => 'owed',
             )
   %>
+
+% if ( $cust_main ) {
+  <INPUT TYPE="hidden" NAME="payby" VALUE="<% $cust_main->payby %>">
+% } else {
   <% include( '/elements/tr-select-payby.html',
                 label   => 'Payment method:',
                 payby_type   => 'cust',
                 all_selected => 1,
             )
   %>
+% }
 
   <TR>
     <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="open" VALUE="1" CHECKED></TD>
     <TD>Show only open invoices</TD>
   </TR>
+
+% unless ( $custnum ) {
   <TR>
     <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="newest_percust" VALUE="1"></TD>
     <TD>Show only the single most recent invoice per-customer</TD>
   </TR>
+% }
 
 </TABLE>
 
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('List invoices');
 
+my $title = 'Invoice Report';
+
+#false laziness w/report_cust_pkg.html
+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 .= ': '. $cust_main->name;
+}
+
 </%init>
index 046899e..3288f15 100644 (file)
@@ -1,3 +1,7 @@
+<TABLE>
+  <TR>
+    <TD ALIGN="left">
+
 %# payment links
 
 % my $s = 0;
@@ -32,6 +36,9 @@
   <A HREF="<% $p %>edit/cust_pay.cgi?payby=WEST;custnum=<% $custnum %>">Enter Western Union payment</A>
 % } 
 
+<BR>
+% $s=0;
+
 % if ( ( $payby{'CARD'} || $payby{'DCRD'} )
 %        && $curuser->access_right(['Process payment', 'Process credit card payment'])
 %        && ! $cust_main->is_encrypted($cust_main->payinfo)
   <A HREF="<% $p %>edit/cust_refund.cgi?payby=MCRD;custnum=<% $custnum %>">Post manual (offline/POS) credit card refund</A>
 % } 
 
+    </TD>
+    <TD ALIGN="right" VALIGN="top">
+
+%# invoice reports
+% if ( $curuser->access_right('List invoices') ) { 
+  <A HREF="<% $p %>search/report_cust_bill.html?custnum=<% $custnum %>">Invoice reports</A>
+% } 
 <BR>
 
+%# XXX payments, credits, refund reports
+
 %# tax exemption link
 
 % my $view_exemptions = $curuser->access_right('View customer tax exemptions');
     <A HREF="<% $p %>search/cust_pay_pending.html?magic=_date;statusNOT=done;custnum=<% $custnum %>">View pending payments</A><BR>
 % }
 
+    </TD>
+  </TR>
+  <TR>
+    <TD COLSPAN=2>
+
 %# and now the table
 
 <% include("/elements/table-grid.html") %>
 %}
 
 </TABLE>
+    </TD>
+  </TR>
+</TABLE>
 
 <SCRIPT TYPE="text/javascript">