X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fview%2Fcust_main%2Fpayment_history.html;h=0fcfe8341668aa56f7adff80f1005e01e866be40;hb=1f1c0ad8798bfaea287c47565f1a565ee7d82e5c;hp=915be49e528c71233403f8d5c12bb45455b1fa76;hpb=ded0ab5cac02f099b387de360fb6dd6bd8cbb6b4;p=freeside.git diff --git a/httemplate/view/cust_main/payment_history.html b/httemplate/view/cust_main/payment_history.html index 915be49e5..0fcfe8341 100644 --- a/httemplate/view/cust_main/payment_history.html +++ b/httemplate/view/cust_main/payment_history.html @@ -12,7 +12,7 @@ 'action' => "${p}edit/cust_pay.cgi?popup=1;payby=BILL", 'cust_main' => $cust_main, 'actionlabel' => emt('Enter check payment'), - 'width' => 392, + 'width' => ( $opt{'pkg-balances'} ? 763 : 392), 'height' => 392, &> % } @@ -24,7 +24,7 @@ 'action' => "${p}edit/cust_pay.cgi?popup=1;payby=CASH", 'cust_main' => $cust_main, 'actionlabel' => emt('Enter cash payment'), - 'width' => 392, + 'width' => ( $opt{'pkg-balances'} ? 763 : 392), 'height' => 392, &> % } @@ -58,6 +58,11 @@ <% mt('Post manual (offline/POS) credit card payment') |h %> % } +% if ( $payby{'MCRD'} && $curuser->access_right('Post payment') ) { + <% $s++ ? ' | ' : '' %> + <% mt('Post manual (offline) electronic check payment') |h %> +% } + <% $s ? '
' : '' %> %# credit links @@ -70,7 +75,7 @@ 'action' => "${p}edit/cust_credit.cgi", 'cust_main' => $cust_main, 'actionlabel' => emt('Enter credit'), - 'width' => 616, #make room for reasons #540 default + 'width' => ( $opt{'pkg-balances'} ? 763 : 616), &> % } % if ( $curuser->access_right('Credit line items') ) { @@ -97,7 +102,7 @@ 'action' => "${p}edit/cust_refund.cgi?popup=1;payby=BILL", 'cust_main' => $cust_main, 'actionlabel' => emt('Enter check refund'), - 'width' => 392, + 'width' => 440, &> % } @@ -136,16 +141,29 @@ <% mt('Post manual (offline/POS) credit card refund') |h %> % } +% if ( $payby{'MCHK'} && $curuser->access_right('Post refund') ) { + <% $s++ ? ' | ' : '' %> + <% mt('Post manual (offline) electronic check refund') |h %> +% } + %# invoice reports, combined statement % if ( $curuser->access_right('List invoices') ) { -% if ( $conf->exists('cust_main-print_statement_link') -% and $num_cust_bill > 0 ) { - <% - mt('Print a current statement') |h %> +% if ( $curuser->access_right('Resend invoices') +% && $cust_main->invoicing_list_emailonly ) { + + <% mt('Email statement to this customer') |h %>
+ +% } +% if ( $num_cust_bill > 0 +% && $curuser->access_right('View legacy typeset statements') +% ) { + <% + mt('Download typeset statement PDF') |h %> +
% } <% mt('Invoice reports') |h %> % } @@ -271,6 +289,11 @@ % ? sprintf("- $money_char\%.2f", $item->{'credit'}) % : ''; % +% $credit ||= sprintf( "- $money_char\%.2f", +% $item->{'void_credit'} +% ) +% if exists($item->{'void_credit'}); +% % my $refund = exists($item->{'refund'}) % ? sprintf("$money_char\%.2f", $item->{'refund'}) % : ''; @@ -317,29 +340,44 @@ % if ( $item->{'balance_forward'} ) { <& .balance_forward_row, $item->{'balance'}, $item->{'date'} &> -% } +% } %} # foreach $item +% if ( $old_history ) { +<& .hide_history_row, $old_history++ &> +% } + + + <%def .balance_forward_row> % my( $b, $date ) = @_; @@ -352,7 +390,7 @@ function show_history () { <% mt("Starting balance on [_1]", time2str($date_format, $date) ) |h %> - (<% mt('show prior history') |h %>) + (<% mt('show prior history') |h %>) @@ -363,6 +401,17 @@ function show_history () { +<%def .hide_history_row> +% my $num = shift; + + + + (<% mt('hide prior history') |h %>) + + + + + <%shared> my $conf = new FS::Conf; my $date_format = $conf->config('date_format') || '%m/%d/%Y'; @@ -392,12 +441,36 @@ my %status = ( my @history = (); my %opt = ( + + #config ( map { $_ => scalar($conf->config($_)) } qw( card_refund-days date_format ) ), ( map { $_ => $conf->exists($_) } - qw( deleteinvoices deletepayments deleterefunds pkg-balances ) - ) + qw( deleteinvoices deletepayments deleterefunds pkg-balances + cust_credit_bill_pkg-manual cust_bill_pay_pkg-manual + ) + ), + 'money_char ' => $money_char, + + #rights + ( map { $_ => $curuser->access_right($_) } + ( + 'View invoices', 'Void invoices', 'Unvoid invoices', 'Delete invoices', 'Resend invoices', + 'Apply payment', 'Refund credit card payment', 'Refund Echeck payment', + 'Post refund', 'Post check refund', 'Post cash refund ', 'Refund payment', + 'Credit card void', 'Echeck void', 'Void payments', 'Unvoid payments', + 'Delete payment', 'Unapply payment', + 'Apply credit', 'Delete credit', 'Unapply credit', 'Void credit', 'Unvoid credit', + 'Delete refund', + 'Billing event reports', 'View customer billing events', + ) + ), + + #customer information + 'total_owed' => $cust_main->total_owed, + 'total_unapplied_refunds' => $cust_main->total_unapplied_refunds, + 'has_email_address' => scalar($cust_main->invoicing_list_emailonly), ); $opt{'date_format'} ||= '%m/%d/%Y'; @@ -406,6 +479,8 @@ $opt{'date_format'} ||= '%m/%d/%Y'; foreach my $legacy_cust_bill ($cust_main->legacy_cust_bill) { push @history, { 'date' => $legacy_cust_bill->_date, + 'order' => 1, + 'num' => $legacy_cust_bill->legacyid, 'desc' => include('payment_history/legacy_invoice.html', $legacy_cust_bill, %opt ), 'charge_nobal' => $legacy_cust_bill->charged, }; @@ -416,6 +491,8 @@ my $num_cust_bill = 0; foreach my $cust_bill ($cust_main->cust_bill) { push @history, { 'date' => $cust_bill->_date, + 'order' => 1, + 'num' => $cust_bill->invnum, 'desc' => include('payment_history/invoice.html', $cust_bill, %opt ), 'charge' => $cust_bill->charged, }; @@ -426,6 +503,8 @@ foreach my $cust_bill ($cust_main->cust_bill) { foreach my $cust_bill_void ($cust_main->cust_bill_void) { push @history, { 'date' => $cust_bill_void->_date, + 'order' => 0, + 'num' => $cust_bill_void->invnum, 'desc' => include('payment_history/voided_invoice.html', $cust_bill_void, %opt ), 'void_charge' => $cust_bill_void->charged, }; @@ -435,6 +514,8 @@ foreach my $cust_bill_void ($cust_main->cust_bill_void) { foreach my $cust_statement ($cust_main->cust_statement) { push @history, { 'date' => $cust_statement->_date, + 'order' => 2, + 'num' => $cust_statement->statementnum, 'desc' => include('payment_history/statement.html', $cust_statement, %opt ), #'charge' => $cust_bill->charged, }; @@ -444,6 +525,8 @@ foreach my $cust_statement ($cust_main->cust_statement) { foreach my $cust_pay ($cust_main->cust_pay) { push @history, { 'date' => $cust_pay->_date, + 'order' => 6, + 'num' => $cust_pay->paynum, 'desc' => include('payment_history/payment.html', $cust_pay, %opt ), 'payment' => $cust_pay->paid, #'target' => $target, #XXX @@ -454,6 +537,8 @@ foreach my $cust_pay ($cust_main->cust_pay) { foreach my $cust_pay_pending ($cust_main->cust_pay_pending) { push @history, { 'date' => $cust_pay_pending->_date, + 'order' => 4, + 'num' => $cust_pay_pending->paypendingnum, 'desc' => include('payment_history/pending_payment.html', $cust_pay_pending, %opt ), 'void_payment' => $cust_pay_pending->paid, }; @@ -464,16 +549,31 @@ foreach my $cust_pay_pending ($cust_main->cust_pay_pending) { foreach my $cust_pay_void ($cust_main->cust_pay_void) { push @history, { 'date' => $cust_pay_void->_date, + 'order' => 3, + 'num' => $cust_pay_void->paynum, 'desc' => include('payment_history/voided_payment.html', $cust_pay_void, %opt ), 'void_payment' => $cust_pay_void->paid, }; } +#voided credits +foreach my $cust_credit_void ($cust_main->cust_credit_void) { + push @history, { + 'date' => $cust_credit_void->_date, + 'order' => 7, + 'num' => $cust_credit_void->paynum, + 'desc' => include('payment_history/voided_credit.html', $cust_credit_void, %opt ), + 'void_credit' => $cust_credit_void->amount, + }; +} + #declined payments foreach my $cust_pay_pending ($cust_main->cust_pay_pending_attempt) { push @history, { 'date' => $cust_pay_pending->_date, + 'order' => 5, + 'num' => $cust_pay_pending->paypendingnum, 'desc' => include('payment_history/attempted_payment.html', $cust_pay_pending, %opt ), 'void_payment' => $cust_pay_pending->paid, #?? #'target' => $target, #XXX @@ -486,6 +586,8 @@ foreach my $cust_pay_batch ( my $pay_batch = $cust_pay_batch->pay_batch; push @history, { 'date' => $pay_batch->upload, + 'order' => 5, + 'num' => $cust_pay_batch->paybatchnum, 'desc' => include('payment_history/attempted_batch_payment.html', $cust_pay_batch, %opt), 'void_payment' => $cust_pay_batch->amount, }; @@ -495,6 +597,8 @@ foreach my $cust_pay_batch ( foreach my $cust_credit ($cust_main->cust_credit) { push @history, { 'date' => $cust_credit->_date, + 'order' => 8, + 'num' => $cust_credit->crednum, 'desc' => include('payment_history/credit.html', $cust_credit, %opt ), 'credit' => $cust_credit->amount, }; @@ -505,6 +609,8 @@ foreach my $cust_credit ($cust_main->cust_credit) { foreach my $cust_refund ($cust_main->cust_refund) { push @history, { 'date' => $cust_refund->_date, + 'order' => 9, + 'num' => $cust_refund->refundnum, 'desc' => include('payment_history/refund.html', $cust_refund, %opt), 'refund' => $cust_refund->refund, }; @@ -516,7 +622,12 @@ my $years = $conf->config('payment_history-years') || 2; my $older_than = time - $years * 31556926; #60*60*24*365.2422 my $balance = 0; -@history = sort { $a->{date} <=> $b->{date} } @history; +@history = sort { $a->{date} <=> $b->{date} + or $a->{order} <=> $b->{order} + or $a->{num} <=> $b->{num} + } + @history; + my $i = 0; my $balance_forward; foreach my $item (@history) { @@ -543,7 +654,11 @@ if ( @history and $history[-1]->{'hide'} ) { # then sort in user-pref order if ( $curuser->option('history_order') eq 'newest' ) { - @history = sort { $b->{date} <=> $a->{date} } @history; + @history = sort { $b->{date} <=> $a->{date} + or $b->{order} <=> $a->{order} #or still forward here? + or $b->{num} <=> $a->{num} + } + @history; } # else it's already oldest-first, and there are no other options yet sub translate_payby { @@ -581,13 +696,18 @@ sub translate_payinfo { my $payby = $object->payby; my $payinfo = $object->payinfo; - my $conf = new FS::Conf; - if ( $payby eq 'CARD' ) { $payinfo = $object->paymask; } elsif ( $payby eq 'CHEK' ) { + #false laziness w/payinfo_Mixin::payby_payinfo_pretty, should use that my( $account, $aba ) = split('@', $object->paymask ); - $payinfo = emt("ABA [_1], Acct #[_2]",$aba,$account); + if ( $aba =~ /^(\d{5})\.(\d{3})$/ ) { #blame canada + my($branch, $routing) = ($1, $2); + $payinfo = emt("Routing [_1], Branch [_2], Acct [_3]", + $routing, $branch, $account); + } else { + $payinfo = emt("Routing [_1], Acct [_2]", $aba, $account); + } } ($payby,$payinfo); @@ -595,7 +715,7 @@ sub translate_payinfo { sub areyousure_link { my ($url,$msg,$title,$label) = (shift,shift,shift,shift); - ' ('.$label.')'; + ' ('.$label.')'; }