summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/cust_credit.pm14
-rw-r--r--httemplate/edit/credit-cust_bill_pkg.html48
-rw-r--r--httemplate/edit/process/credit-cust_bill_pkg.html2
-rw-r--r--httemplate/view/cust_main/payment_history.html2
4 files changed, 45 insertions, 21 deletions
diff --git a/FS/FS/cust_credit.pm b/FS/FS/cust_credit.pm
index dfe55fb..9fd2d01 100644
--- a/FS/FS/cust_credit.pm
+++ b/FS/FS/cust_credit.pm
@@ -5,6 +5,7 @@ use base qw( FS::otaker_Mixin FS::cust_main_Mixin FS::Record );
use vars qw( $conf $unsuspendauto $me $DEBUG
$otaker_upgrade_kludge $ignore_empty_reasonnum
);
+use List::Util qw( min );
use Date::Format;
use FS::UID qw( dbh getotaker );
use FS::Misc qw(send_email);
@@ -806,19 +807,22 @@ sub credit_lineitems {
foreach my $location ( $tax_cust_bill_pkg->cust_bill_pkg_tax_Xlocation ) {
- $location->cust_bill_pkg_desc($taxline->desc); #ugh @ that kludge
+ #support partial credits: use $amount if smaller
+ # (so just distribute to the first location? perhaps should
+ # do so evenly...)
+ my $loc_amount = min( $amount, $location->amount);
- #$taxtotal += $location->amount;
- $amount -= $location->amount;
+ #$taxtotal += $loc_amount
+ $amount -= $loc_amount;
#push @taxlines,
# #[ $location->desc, $taxline->setup, $taxlocnum, $taxratelocnum ];
# [ $location->desc, $location->amount, $taxlocnum, $taxratelocnum ];
- $cust_credit_bill{$invnum} += $location->amount;
+ $cust_credit_bill{$invnum} += $loc_amount;
push @{ $cust_credit_bill_pkg{$invnum} },
new FS::cust_credit_bill_pkg {
'billpkgnum' => $tax_cust_bill_pkg->billpkgnum,
- 'amount' => $location->amount,
+ 'amount' => $loc_amount,
'setuprecur' => 'setup',
'billpkgtaxlocationnum' => $location->billpkgtaxlocationnum,
'billpkgtaxratelocationnum' => $location->billpkgtaxratelocationnum,
diff --git a/httemplate/edit/credit-cust_bill_pkg.html b/httemplate/edit/credit-cust_bill_pkg.html
index e317936..f5c4eef 100644
--- a/httemplate/edit/credit-cust_bill_pkg.html
+++ b/httemplate/edit/credit-cust_bill_pkg.html
@@ -20,18 +20,18 @@
% next unless $amount > 0;
% if ( $cust_bill_pkg->invnum ne $old_invnum ) {
- <TR><TD COLSPAN=3 BGCOLOR="#f8f8f8">&nbsp;</TD></TR>
- <TR><TH COLSPAN=3 BGCOLOR="#f8f8f8" ALIGN="left">Invoice #<% $cust_bill_pkg->invnum %> - <% time2str($date_format, $cust_bill_pkg->cust_bill->_date) %></TD></TR>
+ <TR><TD COLSPAN=4 BGCOLOR="#f8f8f8">&nbsp;</TD></TR>
+ <TR><TH COLSPAN=4 BGCOLOR="#f8f8f8" ALIGN="left">Invoice #<% $cust_bill_pkg->invnum %> - <% time2str($date_format, $cust_bill_pkg->cust_bill->_date) %></TD></TR>
% $old_invnum = $cust_bill_pkg->invnum;
% }
+% my $el_name = 'billpkgnum'. $cust_bill_pkg->billpkgnum. '-'. $setuprecur;
<TR>
<TD>
<INPUT TYPE = "checkbox"
- NAME = "billpkgnum<% $cust_bill_pkg->billpkgnum.'-'. $setuprecur %>"
- VALUE = "<% $amount %>"
+ NAME = "<% $el_name %>"
+ ID = "<% $el_name %>"
onClick = "calc_total(this)"
- data-amount = "<% $amount %>"
data-billpkgnum = "<% $cust_bill_pkg->billpkgnum %>"
data-setuprecur = "<% $setuprecur %>"
>
@@ -39,24 +39,35 @@
<TD BGCOLOR="#ffffff"><% $cust_bill_pkg->desc |h %></TD>
%# show one-time/setup vs recur vs usage?
<TD BGCOLOR="#ffffff" ALIGN="right"><% $money_char. $amount %></TD>
+ <TD ALIGN="right">
+ <% $money_char %><INPUT TYPE = "text"
+ NAME = "<% $el_name %>-amount"
+ ID = "<% $el_name %>-amount"
+ VALUE = "<% $amount %>"
+ SIZE = 6
+ onChange = "calc_total(this)"
+ STYLE = "text-align:right;"
+ DISABLED
+ >
+ </TD>
</TR>
% }
-<TR><TD COLSPAN=3 BGCOLOR="#f8f8f8">&nbsp;</TD></TR>
+<TR><TD COLSPAN=4 BGCOLOR="#f8f8f8">&nbsp;</TD></TR>
<TR>
<TD></TD>
- <TD ALIGN="right">Subtotal: </TD>
+ <TD ALIGN="right" COLSPAN=2>Subtotal: </TD>
<TD ALIGN="right" ID="subtotal_td"><% $money_char %><% sprintf('%.2f', 0) %></TD>
</TR>
<TR>
<TD></TD>
- <TD ALIGN="right">Taxes: </TD>
+ <TD ALIGN="right" COLSPAN=2>Taxes: </TD>
<TD ALIGN="right" ID="taxtotal_td"><% $money_char %><% sprintf('%.2f', 0) %></TD>
</TR>
<TR>
<TD></TD>
- <TH ALIGN="right">Total credit amount: </TD>
+ <TH ALIGN="right" COLSPAN=2>Total credit amount: </TD>
<TH ALIGN="right" ID="total_td"><% $money_char %><% sprintf('%.2f', 0) %></TD>
</TR>
<INPUT TYPE="hidden" NAME="amount" ID="total_el" VALUE="0.00">
@@ -183,12 +194,21 @@ function calc_total(what) {
var setuprecurs = [];
var amounts = [];
for (var i=0; i<el.length; i++) {
- if ( el[i].type == 'checkbox' && el[i].checked ) {
- subtotal += parseFloat( el[i].getAttribute('data-amount') );
- amounts.push( el[i].getAttribute('data-amount') );
- billpkgnums.push( el[i].getAttribute('data-billpkgnum') );
- setuprecurs.push( el[i].getAttribute('data-setuprecur') );
+
+ if ( el[i].type == 'checkbox' ) {
+ var amount_el = document.getElementById( el[i].id + '-amount' );
+ if ( el[i].checked ) {
+ amount_el.disabled = false;
+ var amount = amount_el.value;
+ subtotal += parseFloat( amount );
+ amounts.push( amount );
+ billpkgnums.push( el[i].getAttribute('data-billpkgnum') );
+ setuprecurs.push( el[i].getAttribute('data-setuprecur') );
+ } else {
+ amount_el.disabled = true;
+ }
}
+
}
document.getElementById('subtotal_td').innerHTML =
diff --git a/httemplate/edit/process/credit-cust_bill_pkg.html b/httemplate/edit/process/credit-cust_bill_pkg.html
index 8b2f3f3..1b61997 100644
--- a/httemplate/edit/process/credit-cust_bill_pkg.html
+++ b/httemplate/edit/process/credit-cust_bill_pkg.html
@@ -20,7 +20,7 @@ my @billpkgnums = ();
my @setuprecurs = ();
my @amounts = ();
foreach my $billpkgnum_setuprecur (@billpkgnum_setuprecurs) {
- my $amount = $cgi->param("billpkgnum$billpkgnum_setuprecur");
+ my $amount = $cgi->param("billpkgnum$billpkgnum_setuprecur-amount");
my( $billpkgnum, $setuprecur ) = split('-', $billpkgnum_setuprecur);
push @billpkgnums, $billpkgnum;
push @setuprecurs, $setuprecur;
diff --git a/httemplate/view/cust_main/payment_history.html b/httemplate/view/cust_main/payment_history.html
index 6630d12..942b42f 100644
--- a/httemplate/view/cust_main/payment_history.html
+++ b/httemplate/view/cust_main/payment_history.html
@@ -77,7 +77,7 @@
'action' => "${p}edit/credit-cust_bill_pkg.html",
'cust_main' => $cust_main,
'actionlabel' => emt('Credit line items'),
- 'width' => 884, #763,
+ 'width' => 968, #763,
'height' => 575,
&>
<BR>