Improved javascript allocations
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Fri, 21 Mar 2008 17:11:58 +0000 (17:11 +0000)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Fri, 21 Mar 2008 17:11:58 +0000 (17:11 +0000)
includes/ui/ui_view.inc
purchasing/allocations/supplier_allocate.php
sales/allocations/customer_allocate.php

index 9f0e445092c0f99f8ad9eb1965788eed1fb705f3..08402fca44367e364e3270a5f1ea862edb5f703c 100644 (file)
@@ -1076,7 +1076,7 @@ function add_js_user_num() {
 
        $js =
        "<script language=\"javascript\">
-function price_format(post, num, dec) {
+function price_format(post, num, dec, label) {
        //num = num.toString().replace(/\\$|\\,/g,'');
        if(isNaN(num))
                num = \"0\";
@@ -1094,9 +1094,15 @@ function price_format(post, num, dec) {
                        num.substring(num.length-(4*i+3));
         num = ((sign)?'':'-') + num;
         if(dec!=0) num = num + '".$ds."' + cents;
-       document.getElementsByName(post)[0].value = num;
+       if(label)
+           document.getElementById(post).innerHTML = num;
+       else
+           document.getElementsByName(post)[0].value = num;
        }
-       function get_amount(doc) {
+       function get_amount(doc, label) {
+           if(label)
+               var val = document.getElementById(doc).innerHTML;
+           else
                var val = document.getElementsByName(doc)[0].value;
                val = val.replace(/\\".$ts."/g,'');
                val = val.replace(/\\".$ds."/g,'.');
@@ -1110,25 +1116,32 @@ function add_js_allocate() {
        $source =
        "<script>
        function allocate_all(doc) {
-       var alloc = get_amount('left_to_allocate');
        var amount = get_amount('amount'+doc);
        var unallocated = get_amount('un_allocated'+doc);
+       var total = get_amount('total_allocated', 1);
+       var left = get_amount('left_to_allocate', 1);
+
        if(unallocated<amount) amount = unallocated;
-       if((unallocated-amount)<=alloc){
-               alloc-=unallocated-amount;
-       amount=unallocated;
+       if((unallocated-amount)<=left){
+           left-=unallocated-amount;
+           total+=unallocated-amount;
+           amount=unallocated;
        }else{
-       amount=amount+alloc;
-       alloc=0;
+       total+=left;
+       amount+=left;
+       left=0;
        }
        price_format('amount'+doc, amount, ".user_price_dec().");
-       price_format('left_to_allocate', alloc, ".user_price_dec().");
+       price_format('left_to_allocate', left, ".user_price_dec().", 1);
+       price_format('total_allocated', total, ".user_price_dec().", 1);
        }
        function allocate_none(doc) {
        amount = get_amount('amount'+doc);
-       left = get_amount('left_to_allocate');
-       price_format('left_to_allocate',amount+left, ".user_price_dec().");
+       left = get_amount('left_to_allocate', 1);
+       total = get_amount('total_allocated', 1);
+       price_format('left_to_allocate',amount+left, ".user_price_dec().", 1);
        price_format('amount'+doc, 0, ".user_price_dec().");
+       price_format('total_allocated', total-amount, ".user_price_dec().", 1);
        }
        </script>";
        add_js_user_num();
index a0e3b86fb187249097e1705797e2c2edfc6a12e6..0a85f478638ba39fd41d21fb8a0ecd0c78e65412 100644 (file)
@@ -227,7 +227,7 @@ function edit_allocations_for_transaction($type, $trans_no)
                }
                
         label_row(_("Total Allocated"), number_format2($total_allocated,user_price_dec()),
-               "colspan=6 align=right", "align=right");
+               "colspan=6 align=right", "align=right id='total_allocated'");
         if (-$_SESSION['alloc']->amount - $total_allocated < 0)
         {
                $font1 = "<font color=red>";
@@ -237,11 +237,11 @@ function edit_allocations_for_transaction($type, $trans_no)
                $font1 = $font2 = "";
                $left_to_allocate = price_format(-$_SESSION['alloc']->amount - $total_allocated); 
         label_row(_("Left to Allocate"), $font1 . $left_to_allocate . $font2, "colspan=6 align=right", 
-               "nowrap align=right");
+               "nowrap align=right id='left_to_allocate'");
                end_table();            
 
                hidden('TotalNumberOfAllocs', $counter);
-               hidden('left_to_allocate', $left_to_allocate);
+//             hidden('left_to_allocate', $left_to_allocate);
        echo "<br><center>";
                submit('UpdateDisplay', _("Update"));
                echo "&nbsp;";
index 6d09d7665aa0a2cd6656b649c04657f16e2a76e7..e1fd9ea2cac4bb3e9826bff7134380fa3f35a8dc 100644 (file)
@@ -226,7 +226,7 @@ function edit_allocations_for_transaction($type, $trans_no)
                }
 
                label_row(_("Total Allocated"), price_format($total_allocated),
-                       "colspan=6 align=right", "nowrap align=right");
+                       "colspan=6 align=right", "nowrap align=right id='total_allocated'");
         if ($_SESSION['alloc']->amount - $total_allocated < 0)
         {
                $font1 = "<font color=red>";
@@ -237,11 +237,11 @@ function edit_allocations_for_transaction($type, $trans_no)
                $left_to_allocate = $_SESSION['alloc']->amount - $total_allocated;
                $left_to_allocate = price_format($left_to_allocate);
         label_row(_("Left to Allocate"), $font1 . $left_to_allocate . $font2,
-               "colspan=6 align=right ", "nowrap align=right");
+               "colspan=6 align=right ", "nowrap align=right id='left_to_allocate'");
         end_table(1);
 
                hidden('TotalNumberOfAllocs', $counter);
-               hidden('left_to_allocate', $left_to_allocate);
+//             hidden('left_to_allocate', $left_to_allocate);
                submit_center_first('UpdateDisplay', _("Update"));
                submit('Process', _("Process"));
        }