-<% $payment %>
-<% "$info$desc$view$apply$refund$void$delete$unapply" %>
+<% $payment. ' '. $info. $desc.
+ $view. $change_pkg. $apply. $refund. $void. $delete. $unapply
+%>
<%init>
my( $cust_pay, %opt ) = @_;
my $date_format = $opt{'date_format'} || '%m/%d/%Y';
-my $conf = new FS::Conf;
-my $money_char = $conf->config('money_char') || '$';
-my $curuser = $FS::CurrentUser::CurrentUser;
-
my @cust_bill_pay = $cust_pay->cust_bill_pay;
my @cust_pay_refund = $cust_pay->cust_pay_refund;
+my $unapplied = $cust_pay->unapplied;
my ($payby,$payinfo) = translate_payinfo($cust_pay);
my $target = "$payby$payinfo";
my %cust_bill_pay_width = ('width' => 392);
my %cust_bill_pay_height = ();
-if ($conf->exists('cust_bill_pay_pkg-manual')) {
+if ( $opt{'cust_bill_pay_pkg-manual'} ) {
%cust_bill_pay_width = ('width' => 592);
%cust_bill_pay_height = ('height' => 436);
}
my $apply = '';
+my $italicize_otaker = 0;
my $otaker = $cust_pay->otaker;
-$otaker = '<i>auto billing</i>' if $otaker eq 'fs_daily';
-$otaker = '<i>customer self-service</i>' if $otaker eq 'fs_selfservice';
+if ( $otaker eq 'fs_daily' ) {
+ $otaker = 'auto billing';
+ $italicize_otaker = 1;
+}
+if ( $otaker eq 'fs_selfservice' ) {
+ $otaker = 'customer self-service';
+ $italicize_otaker = 1;
+}
-my $payment = mt("Payment by [_1]",$otaker);
+my $payment = emt("Payment by [_1]",$otaker);
+$payment =~ s/$otaker/<i>$otaker<\/i>/ if $italicize_otaker;
if ( scalar(@cust_bill_pay) == 0
&& scalar(@cust_pay_refund) == 0 ) {
#completely unapplied
- $payment = '<B><FONT COLOR="#FF0000">'
- . mt("Unapplied Payment by [_1]",$otaker)
- . '</FONT></B>';
- if ( $curuser->access_right('Apply payment') ) {
- if ( $cust_pay->cust_main->total_owed > 0 ) {
- $apply = ' ('.
- include( '/elements/popup_link.html',
- 'label' => mt('apply'),
- 'action' => "${p}edit/cust_bill_pay.cgi?".
- $cust_pay->paynum,
- 'actionlabel' => mt('Apply payment'),
- %cust_bill_pay_width,
- %cust_bill_pay_height,
- ).
- ')';
- }
- if ( $cust_pay->cust_main->total_unapplied_refunds > 0 ) {
- $apply.= ' ('.
- include( '/elements/popup_link.html',
- 'label' => mt('apply to refund'),
- 'action' => "${p}edit/cust_pay_refund.cgi?".
- $cust_pay->paynum,
- 'actionlabel' => mt('Apply payment to refund'),
- 'width' => 392,
- ).
- ')';
- }
- }
+ $payment = emt("Unapplied Payment by [_1]",$otaker);
+ $payment =~ s/$otaker/<i>$otaker<\/i>/ if $italicize_otaker;
+ $payment = '<B><FONT COLOR="#FF0000">'.$payment.'</FONT></B>';
} elsif ( scalar(@cust_bill_pay) == 1
&& scalar(@cust_pay_refund) == 0
- && $cust_pay->unapplied == 0 ) {
+ && $unapplied == 0 ) {
#applied to one invoice, the usual situation
$desc .= ' '. $cust_bill_pay[0]->applied_to_invoice;
} elsif ( scalar(@cust_bill_pay) == 0
&& scalar(@cust_pay_refund) == 1
- && $cust_pay->unapplied == 0 ) {
+ && $unapplied == 0 ) {
#applied to one refund
- $desc .= mt(" refunded on [_1]", time2str($date_format, $cust_pay_refund[0]->_date) );
+ $desc .= emt(" refunded on [_1]", time2str($date_format, $cust_pay_refund[0]->_date) );
} else {
#complicated
$desc .= '<BR>';
foreach my $app ( sort { $a->_date <=> $b->_date }
( @cust_bill_pay, @cust_pay_refund ) ) {
if ( $app->isa('FS::cust_bill_pay') ) {
- $desc .= ' ' . $money_char . $app->amount . ' ' .
+ $desc .= ' ' . $opt{money_char} . $app->amount . ' ' .
$app->applied_to_invoice . '<BR>';
} elsif ( $app->isa('FS::cust_pay_refund') ) {
$desc .= ' ' .
- mt("[_1][_2] refunded on [_3]", $money_char, $app->amount,
+ emt("[_1][_2] refunded on [_3]", $opt{money_char}, $app->amount,
time2str($date_format, $app->_date) ) . '<BR>';
} else {
die "$app is not a FS::cust_bill_pay or FS::cust_pay_refund";
}
}
- if ( $cust_pay->unapplied > 0 ) {
+ if ( $unapplied > 0 ) {
$desc .= ' '.
- '<B><FONT COLOR="#FF0000">' .
- mt("[_1][_2] unapplied", $money_char, $cust_pay->unapplied) .
+ '<B><FONT COLOR="#FF0000">'.
+ emt("[_1][_2] unapplied", $opt{money_char}, $unapplied).
'</FONT></B>';
- if ( $curuser->access_right('Apply payment') ) {
- if ( $cust_pay->cust_main->total_owed > 0 ) {
- $apply = ' ('.
- include( '/elements/popup_link.html',
- 'label' => mt('apply'),
- 'action' => "${p}edit/cust_bill_pay.cgi?".
- $cust_pay->paynum,
- 'actionlabel' => mt('Apply payment'),
- %cust_bill_pay_width,
- %cust_bill_pay_height,
- ).
- ')';
- }
- if ( $cust_pay->cust_main->total_unapplied_refunds > 0 ) {
- $apply.= ' ('.
- include( '/elements/popup_link.html',
- 'label' => mt('apply to refund'),
- 'action' => "${p}edit/cust_pay_refund.cgi?".
- $cust_pay->paynum,
- 'actionlabel' => mt('Apply payment to refund'),
- 'width' => 392,
- ).
- ')';
- }
- }
$desc .= '<BR>';
}
}
+if ($unapplied > 0) {
+ if ( $opt{'Apply payment'} ) {
+ if ( $opt{total_owed} > 0 ) {
+ $apply = ' ('.
+ include( '/elements/popup_link.html',
+ 'label' => emt('apply'),
+ 'action' => "${p}edit/cust_bill_pay.cgi?".
+ $cust_pay->paynum,
+ 'actionlabel' => emt('Apply payment'),
+ %cust_bill_pay_width,
+ %cust_bill_pay_height,
+ ).
+ ')';
+ }
+ if ( $opt{total_unapplied_refunds} > 0 ) {
+ $apply.= ' ('.
+ include( '/elements/popup_link.html',
+ 'label' => emt('apply to refund'),
+ 'action' => "${p}edit/cust_pay_refund.cgi?".
+ $cust_pay->paynum,
+ 'actionlabel' => emt('Apply payment to refund'),
+ 'width' => 392,
+ ).
+ ')';
+ }
+ $apply .= ' (auto‑apply: '
+ . ($cust_pay->no_auto_apply ? 'no' : 'yes')
+ . ' | '
+ . include( '/elements/popup_link.html',
+ 'label' => emt($cust_pay->no_auto_apply ? 'yes' : 'no'),
+ 'action' => "${p}edit/process/cust_pay-no_auto_apply.cgi?paynum="
+ . $cust_pay->paynum
+ . '&no_auto_apply='
+ . ($cust_pay->no_auto_apply ? '' : 'Y'),
+ 'actionlabel' => emt('Toggle Auto-Apply'),
+ 'width' => 392,
+ 'height' => 200,
+ )
+ . ')';
+ } else { # end if $opt('Apply payment')
+ $apply .= ' (no auto-apply)' if $cust_pay->no_auto_apply;
+ }
+} # end if $unapplied > 0
+
my $view =
' ('. include('/elements/popup_link.html',
- 'label' => mt('view receipt'),
+ 'label' => emt('view receipt'),
'action' => "${p}view/cust_pay.html?link=popup;paynum=".
$cust_pay->paynum,
- 'actionlabel' => mt('Payment Receipt'),
+ 'actionlabel' => emt('Payment Receipt'),
).
')';
+my $change_pkg = '';
+if ( $apply && $opt{'pkg-balances'} && $cust_pay->pkgnum ) {
+ $change_pkg =
+ ' ('. include('/elements/popup_link.html',
+ 'label' => emt('change package'),
+ 'action' => "${p}edit/cust_pay-pkgnum.html?paynum=".
+ $cust_pay->paynum,
+ 'actionlabel' => emt('Change payment package'),
+ 'width' => 763,
+ ).
+ ')';
+}
+
my $refund = '';
my $refund_days = $opt{'card_refund-days'} || 120;
-my @rights = ('Refund payment');
-push @rights, 'Refund credit card payment' if $payby eq 'CARD';
-push @rights, 'Refund Echeck payment' if $payby eq 'CHEK';
+my $refund_right = '';
+$refund_right = 'Refund credit card payment' if $cust_pay->payby eq 'CARD';
+$refund_right = 'Refund Echeck payment' if $cust_pay->payby eq 'CHEK';
if ( $cust_pay->closed !~ /^Y/i
&& $cust_pay->payby =~ /^(CARD|CHEK)$/
&& time-$cust_pay->_date < $refund_days*86400
&& $cust_pay->unrefunded > 0
- && $curuser->access_right(\@rights)
+ && $opt{$refund_right}
) {
$refund = qq! (<A HREF="${p}edit/cust_refund.cgi?payby=$1;!.
qq!paynum=!. $cust_pay->paynum. '"'.
- qq! TITLE="! .mt('Send a refund for this payment to the payment gateway')
- . '">' . mt('refund') . '</A>)';
+ qq! TITLE="! .emt('Send a refund for this payment to the payment gateway')
+ . '">' . emt('refund') . '</A>)';
}
my $void = '';
my $voidmsg = $cust_pay->payby =~ /^(CARD|CHEK)$/
- ? ' (' . mt('do not send anything to the payment gateway').')'
+ ? ' (' . emt('do not send anything to the payment gateway').')'
: '';
$void = areyousure_link("${p}misc/void-cust_pay.cgi?".$cust_pay->paynum,
- mt('Are you sure you want to void this payment?'),
- mt('Void this payment from the database') . $voidmsg,
- mt('void')
+ emt('Are you sure you want to void this payment?'),
+ emt('Void this payment from the database') . $voidmsg,
+ emt('void')
)
- if ( $cust_pay->closed !~ /^Y/i
- && ( ( $cust_pay->payby eq 'CARD'
- && $curuser->access_right('Credit card void')
- )
- || ( $cust_pay->payby eq 'CHEK'
- && $curuser->access_right('Echeck void')
- )
- || ( $cust_pay->payby !~ /^(CARD|CHEK)$/
- && $curuser->access_right('Regular void')
- )
- )
- );
+ if $cust_pay->closed !~ /^Y/i
+ && ( ( $cust_pay->payby eq 'CARD' && $opt{'Credit card void'} )
+ || ( $cust_pay->payby eq 'CHEK' && $opt{'Echeck void'} )
+ || ( $cust_pay->payby !~ /^(CARD|CHEK)$/ && $opt{'Void payments'} )
+ );
my $delete = '';
$delete = areyousure_link("${p}misc/delete-cust_pay.cgi?".$cust_pay->paynum,
- mt('Are you sure you want to delete this payment?'),
- mt('Delete this payment from the database completely - not recommended'),
- mt('delete')
+ emt('Are you sure you want to delete this payment?'),
+ emt('Delete this payment from the database completely - not recommended'),
+ emt('delete')
)
- if ( $cust_pay->closed !~ /^Y/i && $opt{'deletepayments'}
- && $curuser->access_right('Delete payment') );
+ if $cust_pay->closed !~ /^Y/i
+ && $opt{'deletepayments'}
+ && $opt{'Delete payment'};
my $unapply = '';
$unapply = areyousure_link("${p}misc/unapply-cust_pay.cgi?".$cust_pay->paynum,
- mt('Are you sure you want to unapply this payment?'),
- mt('Keep this payment, but dissociate it from the invoices it is currently applied against'),
- mt('unapply')
+ emt('Are you sure you want to unapply this payment?'),
+ emt('Keep this payment, but dissociate it from the invoices it is currently applied against'),
+ emt('unapply')
)
- if ( $cust_pay->closed !~ /^Y/i && scalar(@cust_bill_pay)
- && $curuser->access_right('Unapply payment') );
+ if $cust_pay->closed !~ /^Y/i
+ && scalar(@cust_bill_pay)
+ && $opt{'Unapply payment'};
</%init>