diff options
author | Ivan Kohler <ivan@freeside.biz> | 2012-12-20 23:01:07 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2012-12-20 23:01:07 -0800 |
commit | 61e988d7675346395d24f1d7a2e89f4d90b95a6c (patch) | |
tree | 74c237252efa498e006e41e51204d15d91ff4b12 | |
parent | 469f31f261476205bc9cf2d59335b8c30aa5e016 (diff) |
credit line items interface: set credit amounts, RT#18676
-rw-r--r-- | FS/FS/cust_credit.pm | 14 | ||||
-rw-r--r-- | httemplate/edit/credit-cust_bill_pkg.html | 48 | ||||
-rw-r--r-- | httemplate/edit/process/credit-cust_bill_pkg.html | 2 | ||||
-rw-r--r-- | httemplate/view/cust_main/payment_history.html | 2 |
4 files changed, 45 insertions, 21 deletions
diff --git a/FS/FS/cust_credit.pm b/FS/FS/cust_credit.pm index dfe55fb63..9fd2d01a4 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 e317936b3..f5c4eefbf 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"> </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"> </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"> </TD></TR> +<TR><TD COLSPAN=4 BGCOLOR="#f8f8f8"> </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 8b2f3f3ea..1b6199772 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 6630d12a5..942b42f54 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> |