% $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 $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( $pre, $post, $apply, $ext ) = ( '', '', '', '' );
if ( scalar(@cust_credit_bill) == 0
&& scalar(@cust_credit_refund) == 0 ) {
#completely unapplied
$pre = 'Unapplied ';
$post = '';
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',
'width' => 392,
#default# 'height' => 336,
).
')';
}
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 .= '
';
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.
'
';
#' on '. time2str($date_format, $app->_date).
} elsif ( $app->isa('FS::cust_credit_refund') ) {
$desc .= ' '.
'$'. $app->amount.
' refunded on '. time2str($date_format, $app->_date).
'
';
} else {
die "$app is not a FS::cust_credit_bill or a FS::cust_credit_refund";
}
}
if ( $cust_credit->credited > 0 ) {
$desc .= ' $'.
$cust_credit->credited. ' unapplied';
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',
'width' => 392,
#default# 'height' => 336,
).
')';
}
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 .= '
';
}
}
#
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! (!.
qq!delete)!;
}
my $unapply = '';
if ( $cust_credit->closed !~ /^Y/i
&& scalar(@cust_credit_bill)
&& $curuser->access_right('Unapply credit')
)
{
$unapply = qq! (!.
qq!unapply)!;
}
my $reason = $cust_credit->reason
? ' ('. $cust_credit->reason. ')'
: '';
%init>