Moving 2.0 development version to main trunk.
[fa-stable.git] / sales / allocations / customer_allocate.php
index 15eba74cdd4c27436b0afba00284906196e42c22..d92cf39a1c562568a29c5a94aebe3ddf8fd4af76 100644 (file)
@@ -2,16 +2,20 @@
 
 $path_to_root="../..";
 $page_security = 3;
+
 include($path_to_root . "/includes/ui/allocation_cart.inc");
 include_once($path_to_root . "/includes/session.inc");
-
+include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/sales/includes/sales_ui.inc");
 include_once($path_to_root . "/sales/includes/sales_db.inc");
+
 $js = "";
 if ($use_popup_windows)
        $js .= get_js_open_window(900, 500);
-page(_("Allocate Customer Payment or Credit Note"), false, false, "", $js);
 
+add_js_file('allocate.js');
+
+page(_("Allocate Customer Payment or Credit Note"), false, false, "", $js);
 
 //--------------------------------------------------------------------------------
 
@@ -22,7 +26,7 @@ function clear_allocations()
                unset($_SESSION['alloc']->allocs);
                unset($_SESSION['alloc']);
        }
-       session_register("alloc");
+       session_register('alloc');
 }
 
 //--------------------------------------------------------------------------------
@@ -34,31 +38,33 @@ function check_data()
        for ($counter = 0; $counter < $_POST["TotalNumberOfAllocs"]; $counter++)
        {
 
-               if (!is_numeric($_POST['amount' . $counter]))
+               if (!check_num('amount' . $counter, 0))
                {
-                       display_error(_("The entry for one or more amounts is invalid."));
+                       display_error(_("The entry for one or more amounts is invalid or negative."));
+                       set_focus('amount'.$counter);
                        return false;
                }
 
-               if ($_POST['amount' . $counter] < 0)
+               if (!check_num('amount' . $counter,0))
                {
                        display_error(_("The entry for an amount to allocate was negative. A positive allocation amount is expected."));
+               set_focus('amount'.$counter);
                        return false;
                }
 
                  /*Now check to see that the AllocAmt is no greater than the
                amount left to be allocated against the transaction under review */
-               if ($_POST['amount' . $counter] > $_POST['un_allocated' . $counter])
+               if (input_num('amount' . $counter) > $_POST['un_allocated' . $counter])
                {
                    //$_POST['amount' . $counter] = $_POST['un_allocated' . $counter];
                }
 
-               $_SESSION['alloc']->allocs[$counter]->current_allocated = $_POST['amount' . $counter];
+               $_SESSION['alloc']->allocs[$counter]->current_allocated = input_num('amount' . $counter);
 
-               $total_allocated += $_POST['amount' . $counter];
+               $total_allocated += input_num('amount' . $counter);
        }
 
-       if ($total_allocated + $_SESSION['alloc']->amount > sys_prefs::allocation_settled_allowance())
+       if ($total_allocated - $_SESSION['alloc']->amount > sys_prefs::allocation_settled_allowance())
        {
                display_error(_("These allocations cannot be processed because the amount allocated is more than the total amount left to allocate."));
                //echo  _("Total allocated:") . " " . $total_allocated ;
@@ -91,6 +97,7 @@ function handle_process()
                        update_debtor_trans_allocation($allocn_item->type, $allocn_item->type_no,
                                $allocn_item->current_allocated);
                        $total_allocated += $allocn_item->current_allocated;
+
                }
 
        }  /*end of the loop through the array of allocations made */
@@ -102,27 +109,23 @@ function handle_process()
 
        clear_allocations();
 }
-
 //--------------------------------------------------------------------------------
 
 if (isset($_POST['Process']))
 {
-       if (check_data()) 
+       if (check_data())
        {
                handle_process();
                $_POST['Cancel'] = 1;
        }
 }
-
 //--------------------------------------------------------------------------------
 
 if (isset($_POST['Cancel']))
 {
        clear_allocations();
        meta_forward($path_to_root . "/sales/allocations/customer_allocation_main.php");
-       exit;
 }
-
 //--------------------------------------------------------------------------------
 
 function get_allocations_for_transaction($type, $trans_no)
@@ -131,7 +134,7 @@ function get_allocations_for_transaction($type, $trans_no)
 
        $debtor = get_customer_trans($trans_no, $type);
 
-       $_SESSION['alloc'] = new allocation($trans_no, $type, $debtor["debtor_no"], 
+       $_SESSION['alloc'] = new allocation($trans_no, $type, $debtor["debtor_no"],
                $debtor["DebtorName"], $debtor["Total"], sql2date($debtor["tran_date"]));
 
        /* Now populate the array of possible (and previous actual) allocations for this customer */
@@ -148,7 +151,6 @@ function get_allocations_for_transaction($type, $trans_no)
                        0); // this allocation
        }
 
-
        /* Now get trans that might have previously been allocated to by this trans
        NB existing entries where still some of the trans outstanding entered from
        above logic will be overwritten with the prev alloc detail below */
@@ -162,38 +164,37 @@ function get_allocations_for_transaction($type, $trans_no)
                        $myrow["Total"], $myrow["alloc"] - $myrow["amt"], $myrow["amt"]);
        }
 }
-
 //--------------------------------------------------------------------------------
 
 function edit_allocations_for_transaction($type, $trans_no)
 {
        global $table_style;
 
-       start_form(false, true);
-
-    display_heading(_("Allocation of") . " " . systypes::name($_SESSION['alloc']->type) . " # " . $_SESSION['alloc']->trans_no);
+    display_heading(sprintf(_("Allocation of %s # %d"), systypes::name($_SESSION['alloc']->type),$_SESSION['alloc']->trans_no));
 
-       display_heading($_SESSION['alloc']->person_name);
+    display_heading($_SESSION['alloc']->person_name);
 
     display_heading2(_("Date:") . " <b>" . $_SESSION['alloc']->date_ . "</b>");
-    display_heading2(_("Total:") . " <b>" . number_format2(-$_SESSION['alloc']->amount,user_price_dec()) . "</b>");
+    display_heading2(_("Total:") . " <b>" . price_format($_SESSION['alloc']->amount) . "</b>");
 
     echo "<br>";
 
+       start_form(false, true);
+       div_start('alloc_tbl');
     if (count($_SESSION['alloc']->allocs) > 0)
     {
                start_table($table_style);
-               
+
                $th = array(_("Transaction Type"), _("#"), _("Date"), _("Due Date"), _("Amount"),
                        _("Other Allocations"), _("This Allocation"), _("Left to Allocate"), "", "");
-                       
+
                table_header($th);
 
         $k = $counter = $total_allocated = 0;
 
         foreach ($_SESSION['alloc']->allocs as $allocn_item)
         {
-               alt_table_row_color($k);
+                       alt_table_row_color($k);
 
            label_cell(systypes::name($allocn_item->type));
                label_cell(get_trans_view_str($allocn_item->type, $allocn_item->type_no));
@@ -202,47 +203,50 @@ function edit_allocations_for_transaction($type, $trans_no)
                amount_cell($allocn_item->amount);
                        amount_cell($allocn_item->amount_allocated);
 
-           if (!isset($_POST['amount' . $counter]) || $_POST['amount' . $counter] == "")
-               $_POST['amount' . $counter] = $allocn_item->current_allocated;
-           text_cells(null, "amount" . $counter, $_POST['amount' . $counter], 13, 12);
+           $_POST['amount' . $counter] = price_format($allocn_item->current_allocated);
+           amount_cells(null, 'amount' . $counter, price_format('amount' . $counter));
 
                $un_allocated = round($allocn_item->amount - $allocn_item->amount_allocated, 6);
-               hidden("un_allocated" . $counter, $un_allocated);
                amount_cell($un_allocated);
 
-                       label_cell("<a href='#' onclick='forms[0].amount$counter.value=forms[0].un_allocated$counter.value; return true;'>" . _("All") . "</a>");
-                       label_cell("<a href='#' onclick='forms[0].amount$counter.value=0; return true;'>" . _("None") . "</a>");
+                       label_cell("<a href='#' name='Alloc$counter' onclick='allocate_all(this.name.substr(5));return true;'>"
+                                        . _("All") . "</a>");
+                       label_cell("<a href='#' name='DeAll$counter' onclick='allocate_none(this.name.substr(5));return true;'>"
+                                        . _("None") . "</a>".hidden("un_allocated" . $counter, $un_allocated, false));
                        end_row();
 
-           $total_allocated += $_POST['amount' . $counter];
+           $total_allocated += input_num('amount' . $counter);
            $counter++;
                }
 
-               label_row(_("Total Allocated"), number_format2($total_allocated,user_price_dec()), 
-                       "colspan=6 align=right", "nowrap align=right");
-        if (-$_SESSION['alloc']->amount - $total_allocated < 0)
+               label_row(_("Total Allocated"), price_format($total_allocated),
+                       "colspan=6 align=right", "nowrap align=right id='total_allocated'");
+        if ($_SESSION['alloc']->amount - $total_allocated < 0)
         {
                $font1 = "<font color=red>";
                $font2 = "</font>";
         }
         else
                $font1 = $font2 = "";
-        label_row(_("Left to Allocate"), $font1 . number_format2(-$_SESSION['alloc']->amount - 
-               $total_allocated,user_price_dec()) . $font2, "colspan=6 align=right", 
-               "nowrap align=right");
+               $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 id='left_to_allocate'");
         end_table(1);
 
                hidden('TotalNumberOfAllocs', $counter);
-               submit_center_first('UpdateDisplay', _("Update"));
-               submit('Process', _("Process"));
-       } 
-       else 
+               submit_center_first('UpdateDisplay', _("Refresh"), _('Start again allocation of selected amount'), true);
+               submit('Process', _("Process"), true, _('Process allocations'), true);
+               submit_center_last('Cancel', _("Back to Allocations"),_('Abandon allocations and return to selection of allocatable amounts'), true);
+       }
+       else
        {
        display_note(_("There are no unsettled transactions to allocate."), 0, 1);
+               
+               submit_center('Cancel', _("Back to Allocations"), true,
+                       _('Abandon allocations and return to selection of allocatable amounts'), true);
     }
-
-       submit_center_last('Cancel', _("Back to Allocations"));
-
+       div_end();
        end_form();
 }
 
@@ -252,6 +256,14 @@ if (isset($_GET['trans_no']) && isset($_GET['trans_type']))
 {
        get_allocations_for_transaction($_GET['trans_type'], $_GET['trans_no']);
 }
+if(get_post('UpdateDisplay'))
+{
+       $trans_no = $_SESSION['alloc']->trans_no;
+       $type = $_SESSION['alloc']->type;
+       clear_allocations();
+       get_allocations_for_transaction($type, $trans_no);
+       $Ajax->activate('alloc_tbl');
+}
 
 if (isset($_SESSION['alloc']))
 {