diff options
Diffstat (limited to 'httemplate/view/cust_main/payment_history/credit.html')
-rw-r--r-- | httemplate/view/cust_main/payment_history/credit.html | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/httemplate/view/cust_main/payment_history/credit.html b/httemplate/view/cust_main/payment_history/credit.html new file mode 100644 index 0000000..75038cc --- /dev/null +++ b/httemplate/view/cust_main/payment_history/credit.html @@ -0,0 +1,156 @@ +<% $pre %>Credit<% $post %> +by <% $cust_credit->otaker %><% "$reason$desc$apply$delete$unapply" %> +<%init> + +my( $cust_credit, %opt ) = @_; + +my $date_format = $opt{'date_format'} || '%m/%d/%Y'; + +my $conf = new FS::Conf; +my $curuser = $FS::CurrentUser::CurrentUser; + +my @cust_credit_bill = $cust_credit->cust_credit_bill; +my @cust_credit_refund = $cust_credit->cust_credit_refund; + +my $desc = ''; +if ( $opt{'pkg-balances'} && $cust_credit->pkgnum ) { + my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $cust_credit->pkgnum } ); + $desc .= ' for '. $cust_pkg->pkg_label_long; +} + +my %cust_credit_bill_width = ('width' => 392); +my %cust_credit_bill_height = (); +if ($conf->exists('cust_credit_bill_pkg-manual')) { + %cust_credit_bill_width = ('width' => 592); + %cust_credit_bill_height = ('height' => 436); +} + +my( $pre, $post, $apply, $ext ) = ( '', '', '', '' ); +if ( scalar(@cust_credit_bill) == 0 + && scalar(@cust_credit_refund) == 0 ) { + #completely unapplied + $pre = '<B><FONT COLOR="#FF0000">Unapplied '; + $post = '</FONT></B>'; + if ( $curuser->access_right('Apply credit') ) { + if ( $cust_credit->cust_main->total_owed > 0 ) { + $apply = ' ('. + include( '/elements/popup_link.html', + 'label' => 'apply', + 'action' => "${p}edit/cust_credit_bill.cgi?". + $cust_credit->crednum, + 'actionlabel' => 'Apply credit', + %cust_credit_bill_width, + %cust_credit_bill_height, + ). + ')'; + } + if ( $cust_credit->cust_main->total_unapplied_refunds > 0 ) { + $apply.= ' ('. + include( '/elements/popup_link.html', + 'label' => 'apply to refund', + 'action' => "${p}edit/cust_credit_refund.cgi?". + $cust_credit->crednum, + 'actionlabel' => 'Apply credit to refund', + 'width' => 392, + #default# 'height' => 336, + ). + ')'; + } + } +} elsif ( scalar(@cust_credit_bill) == 1 + && scalar(@cust_credit_refund) == 0 + && $cust_credit->credited == 0 ) { + #applied to one invoice, the usual situation + $desc .= ' '. $cust_credit_bill[0]->applied_to_invoice; +} elsif ( scalar(@cust_credit_bill) == 0 + && scalar(@cust_credit_refund) == 1 + && $cust_credit->credited == 0 ) { + #applied to one refund + $desc .= ' refunded on '. time2str($date_format, $cust_credit_refund[0]->_date); +} else { + #complicated + $desc .= '<BR>'; + foreach my $app ( sort { $a->_date <=> $b->_date } + ( @cust_credit_bill, @cust_credit_refund ) ) { + if ( $app->isa('FS::cust_credit_bill') ) { + $desc .= ' '. + '$'. $app->amount. + ' '. $app->applied_to_invoice. + '<BR>'; + #' on '. time2str($date_format, $app->_date). + } elsif ( $app->isa('FS::cust_credit_refund') ) { + $desc .= ' '. + '$'. $app->amount. + ' refunded on '. time2str($date_format, $app->_date). + '<BR>'; + } else { + die "$app is not a FS::cust_credit_bill or a FS::cust_credit_refund"; + } + } + if ( $cust_credit->credited > 0 ) { + $desc .= ' <B><FONT COLOR="#FF0000">$'. + $cust_credit->credited. ' unapplied</FONT></B>'; + if ( $curuser->access_right('Apply credit') ) { + if ( $cust_credit->cust_main->total_owed > 0 ) { + $apply = ' ('. + include( '/elements/popup_link.html', + 'label' => 'apply', + 'action' => "${p}edit/cust_credit_bill.cgi?". + $cust_credit->crednum, + 'actionlabel' => 'Apply credit', + %cust_credit_bill_width, + %cust_credit_bill_height, + ). + ')'; + } + if ( $cust_credit->cust_main->total_unapplied_refunds > 0 ) { + $apply.= ' ('. + include( '/elements/popup_link.html', + 'label' => 'apply to refund', + 'action' => "${p}edit/cust_credit_refund.cgi?". + $cust_credit->crednum, + 'actionlabel' => 'Apply credit to refund', + 'width' => 392, + #default# 'height' => 336, + ). + ')'; + } + } + $desc .= '<BR>'; + } +} +# +my $delete = ''; +if ( $cust_credit->closed !~ /^Y/i + + #s'pose deleting a credit isn't bad like deleting a payment + # and this needs to be generally available until we have credit voiding.. + #&& $conf->exists('deletecredits') + + && $curuser->access_right('Delete credit') + ) +{ + $delete = qq! (<A HREF="javascript:areyousure('!. + qq!${p}misc/delete-cust_credit.cgi?!. $cust_credit->crednum. + qq!', 'Are you sure you want to delete this credit?')">!. + qq!delete</A>)!; +} + +my $unapply = ''; +if ( $cust_credit->closed !~ /^Y/i + && scalar(@cust_credit_bill) + && $curuser->access_right('Unapply credit') + ) +{ + $unapply = qq! (<A HREF="javascript:areyousure('!. + qq!${p}misc/unapply-cust_credit.cgi?!. $cust_credit->crednum. + qq!', 'Are you sure you want to unapply this credit?')">!. + qq!unapply</A>)!; +} + +my $reason = $cust_credit->reason + ? ' ('. $cust_credit->reason. ')' + : ''; + +</%init> + |