[freeside-commits] branch master updated. 61e988d7675346395d24f1d7a2e89f4d90b95a6c

Ivan ivan at 420.am
Thu Dec 20 23:01:11 PST 2012


The branch, master has been updated
       via  61e988d7675346395d24f1d7a2e89f4d90b95a6c (commit)
      from  469f31f261476205bc9cf2d59335b8c30aa5e016 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 61e988d7675346395d24f1d7a2e89f4d90b95a6c
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Dec 20 23:01:07 2012 -0800

    credit line items interface: set credit amounts, RT#18676

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

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_credit.pm                              |   14 ++++--
 httemplate/edit/credit-cust_bill_pkg.html         |   48 +++++++++++++++------
 httemplate/edit/process/credit-cust_bill_pkg.html |    2 +-
 httemplate/view/cust_main/payment_history.html    |    2 +-
 4 files changed, 45 insertions(+), 21 deletions(-)




More information about the freeside-commits mailing list