-<BR><BR><A NAME="history"><FONT SIZE="+2">Payment History</FONT></A><BR>
-
%# payment links
% my $s = 0;
'action' => "${p}edit/cust_credit.cgi",
'cust_main' => $cust_main,
'actionlabel' => 'Enter credit',
- 'width' => 392,
+ 'width' => 616, #make room for reasons #540 default
#default# 'height' => 336,
)
%>
%# tax exemption link
-% if ( $curuser->access_right('View customer tax exemptions') ) {
- <A HREF="<% $p %>search/cust_tax_exempt_pkg.cgi?custnum=<% $custnum %>">View tax exemptions</A>
+% my $view_exemptions = $curuser->access_right('View customer tax exemptions');
+% my $add_adjustment = ( $conf->exists('enable_tax_adjustments')
+% && $curuser->access_right('Add customer tax adjustment')
+% );
+% if ( $view_exemptions || $add_adjustment ) {
+
+% if ( $view_exemptions ) {
+ <A HREF="<% $p %>search/cust_tax_exempt_pkg.cgi?custnum=<% $custnum %>">View tax exemptions</A>
+ <% $add_adjustment ? '|' : '' %>
+% }
+
+% if ( $add_adjustment ) {
+ <% include('/elements/popup_link.html', {
+ 'action' => $p.'edit/cust_tax_adjustment.html?custnum='. $cust_main->custnum,
+ 'label' => 'Add tax adjustment',
+ 'actionlabel' => 'Add tax adjustment',
+ #'color' => '#333399',
+ #'width' => 763,
+ 'height' => 200,
+ })
+ %>
+ |
+ <A HREF="<% $p %>search/cust_tax_adjustment.html?custnum=<% $custnum %>">View tax adjustments</A>
+% }
+
<BR>
-% }
+% }
%# batched payment links
-% if ( $conf->exists('batch-enable')
+% if ( ( $conf->exists('batch-enable') || $conf->config('batch-enable_payby') )
% && $curuser->access_right('View customer batched payments')
-% ) {
- View batched payments:
+% )
+% {
+ View batched payments:
% foreach my $status (qw( Queued In-transit Complete All )) {
<A HREF="<% $p %>search/cust_pay_batch.cgi?status=<% $status{$status} %>;custnum=<% $custnum %>"><% $status %></A>
<% $status ne 'All' ? '|' : '' %>
% }
- <BR>
+ <BR>
% }
+%# pending payment links
+
+% if ( $curuser->access_right('View customer pending payments')
+% && scalar($cust_main->cust_pay_pending)
+% )
+% {
+ <A HREF="<% $p %>search/cust_pay_pending.html?magic=_date;statusNOT=done;custnum=<% $custnum %>">View pending payments</A><BR>
+% }
+
%# and now the table
<% include("/elements/table-grid.html") %>
<TR>
<TH CLASS="grid" BGCOLOR="#cccccc">Date</TH>
<TH CLASS="grid" BGCOLOR="#cccccc">Description</TH>
- <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Charge</FONT></TH>
+ <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Invoice</FONT></TH>
<TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Payment</FONT></TH>
<TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>In-house<BR>Credit</FONT></TH>
<TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Refund</FONT></TH>
%#display payment history
+%my $money_char = $conf->config('money_char') || '$';
+%
%sub balance_forward_row {
-% my( $b, $date ) = @_;
-% my $conf = new FS::Conf;
-% my $money_char = $conf->config('money_char') || '$';
+% my( $b, $date, $money_char ) = @_;
% ( my $balance_forward = $money_char. $b ) =~ s/^\$\-/- \$/;
<TR ID="balance_forward_row">
<TD CLASS="grid" BGCOLOR="#dddddd">
- <% time2str("%D",$date) %>
+ <% time2str($date_format, $date) %>
</TD>
<TD CLASS="grid" BGCOLOR="#dddddd">
- <I>Starting balance on <% time2str("%D",$date) %></I>
+ <I>Starting balance on <% time2str($date_format, $date) %></I>
(<A HREF="javascript:void(0);" onClick="show_history();">show prior history</A>)
</TD>
<TD CLASS="grid" BGCOLOR="#dddddd"></TD>
<TD CLASS="grid" BGCOLOR="#dddddd"></TD>
<TD CLASS="grid" BGCOLOR="#dddddd"></TD>
- <TD CLASS="grid" BGCOLOR="#dddddd"><I><% $balance_forward %></I></TD>
+ <TD CLASS="grid" BGCOLOR="#dddddd" ALIGN="right"><I><% $balance_forward %></I></TD>
</TR>
%}
%
%my $balance = 0;
%my %target = ();
-%my $money_char = $conf->config('money_char') || '$';
%
%my $years = $conf->config('payment_history-years') || 2;
-%my $older_than = time - $years * 31556736; #60*60*24*365.24
+%my $older_than = time - $years * 31556926; #60*60*24*365.2422
%my $hidden = 0;
%my $seen = 0;
%my $old_history = 0;
% $display = '';
%
% if ( $hidden && ! $seen++ ) {
-% balance_forward_row($balance, $item->{'date'});
+% balance_forward_row($balance, $item->{'date'}, $money_char);
% }
%
% }
<TR <% $display ? $display.' ID="old_history'.$old_history++.'"' : ''%>>
- <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD VALIGN="top" CLASS="grid" BGCOLOR="<% $bgcolor %>">
% unless ( !$target || $target{$target}++ ) {
<A NAME="<% $target %>">
% }
- <% time2str("%D",$item->{'date'}) %>
+ <% time2str($date_format, $item->{'date'}) %>
% if ( $target && $target{$target} == 1 ) {
</A>
<TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $item->{'desc'} %>
</TD>
- <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD VALIGN="top" ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $charge %>
</TD>
- <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD VALIGN="top" ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $payment %>
</TD>
- <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD VALIGN="top" ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $credit %>
</TD>
- <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD VALIGN="top" ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $refund %>
</TD>
- <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
+ <TD VALIGN="top" ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
<% $showbalance %>
</TD>
</TR>
% }
%if ( scalar(@history) && $hidden && ! $seen++ ) {
-% balance_forward_row($balance, $lastdate);
+% balance_forward_row($balance, $lastdate, $money_char);
%}
</TABLE>
my $custnum = $cust_main->custnum;
my $conf = new FS::Conf;
+my $date_format = $conf->config('date_format') || '%m/%d/%Y';
my $curuser = $FS::CurrentUser::CurrentUser;
#get payment history
my @history = ();
+my %opt = (
+ ( map { $_ => scalar($conf->config($_)) }
+ qw( card_refund-days date_format )
+ ),
+ ( map { $_ => $conf->exists($_) }
+ qw( deleteinvoices deletepayments deleterefunds pkg-balances )
+ )
+);
+
#invoices
foreach my $cust_bill ($cust_main->cust_bill) {
push @history, {
'date' => $cust_bill->_date,
- 'desc' => include('payment_history/invoice.html', $cust_bill),
+ 'desc' => include('payment_history/invoice.html', $cust_bill, %opt ),
'charge' => $cust_bill->charged,
};
}
+#statements
+foreach my $cust_statement ($cust_main->cust_statement) {
+ push @history, {
+ 'date' => $cust_statement->_date,
+ 'desc' => include('payment_history/statement.html', $cust_statement, %opt ),
+ #'charge' => $cust_bill->charged,
+ };
+}
+
#payments (some false laziness w/credits)
foreach my $cust_pay ($cust_main->cust_pay) {
push @history, {
'date' => $cust_pay->_date,
- 'desc' => include('payment_history/payment.html', $cust_pay),
+ 'desc' => include('payment_history/payment.html', $cust_pay, %opt ),
'payment' => $cust_pay->paid,
#'target' => $target, #XXX
};
foreach my $cust_pay_void ($cust_main->cust_pay_void) {
push @history, {
'date' => $cust_pay_void->_date,
- 'desc' => include('payment_history/voided_payment.html', $cust_pay_void),
+ 'desc' => include('payment_history/voided_payment.html', $cust_pay_void, %opt ),
'void_payment' => $cust_pay_void->paid,
};
}
+#declined payments
+foreach my $cust_pay_pending ($cust_main->cust_pay_pending_attempt) {
+ push @history, {
+ 'date' => $cust_pay_pending->_date,
+ 'desc' => include('payment_history/attempted_payment.html', $cust_pay_pending, %opt ),
+ 'void_payment' => $cust_pay_pending->paid, #??
+ #'target' => $target, #XXX
+ };
+}
+
#credits (some false laziness w/payments)
foreach my $cust_credit ($cust_main->cust_credit) {
push @history, {
'date' => $cust_credit->_date,
- 'desc' => include('payment_history/credit.html', $cust_credit),
+ 'desc' => include('payment_history/credit.html', $cust_credit, %opt ),
'credit' => $cust_credit->amount,
};