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>  | 
