Form submit/escape hotkeys added.
[fa-stable.git] / purchasing / allocations / supplier_allocate.php
index a77141e77f2affba99eae14014c1e2f2ff9fd63d..900f5cc1d1ea3d468affb4ff636b64c882b8b8bd 100644 (file)
@@ -1,17 +1,24 @@
 <?php
-
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
 $path_to_root="../..";
-include($path_to_root . "/includes/ui/allocation_cart.inc");
 $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/date_functions.inc");
-
 include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/banking.inc");
-
 include_once($path_to_root . "/sales/includes/sales_db.inc");
+
 $js = "";
 if ($use_popup_windows)
        $js .= get_js_open_window(900, 500);
@@ -20,7 +27,6 @@ add_js_file('allocate.js');
 
 page(_("Allocate Supplier Payment or Credit Note"), false, false, "", $js);
 
-
 //--------------------------------------------------------------------------------
 
 function clear_allocations()
@@ -30,23 +36,20 @@ function clear_allocations()
                unset($_SESSION['alloc']->allocs);
                unset($_SESSION['alloc']);
        }
-
        session_register("alloc");
 }
-
 //--------------------------------------------------------------------------------
 
 function check_data()
 {
        $total_allocated = 0;
 
-       for ($counter=0; $counter < $_POST["TotalNumberOfAllocs"]; $counter++)
+       for ($counter = 0; $counter < $_POST["TotalNumberOfAllocs"]; $counter++)
        {
-
                if (!check_num('amount' . $counter, 0))
                {
                        display_error(_("The entry for one or more amounts is invalid or negative."));
-                       set_focus('amount');
+                       set_focus('amount'.$counter);
                        return false;
                 }
 
@@ -80,7 +83,7 @@ function handle_process()
        begin_transaction();
 
        // clear all the allocations for this payment/credit
-       clear_supp_alloctions($_SESSION['alloc']->type, $_SESSION['alloc']->trans_no);
+       clear_supp_alloctions($_SESSION['alloc']->type, $_SESSION['alloc']->trans_no, $_SESSION['alloc']->date_);
 
        // now add the new allocations
        $total_allocated = 0;
@@ -94,6 +97,14 @@ function handle_process()
 
                        update_supp_trans_allocation($alloc_item->type, $alloc_item->type_no,
                                $alloc_item->current_allocated);
+
+                       // Exchange Variations Joe Hunt 2008-09-20 ////////////////////////////////////////
+
+                       exchange_variation($_SESSION['alloc']->type, $_SESSION['alloc']->trans_no,
+                               $alloc_item->type, $alloc_item->type_no, $_SESSION['alloc']->date_,
+                               $alloc_item->current_allocated, payment_person_types::supplier());
+
+                       ///////////////////////////////////////////////////////////////////////////
                        $total_allocated += $alloc_item->current_allocated;
                }
 
@@ -110,7 +121,7 @@ function handle_process()
 
 if (isset($_POST['Process']))
 {
-       if (check_data()) 
+       if (check_data())
        {
                handle_process();
                $_POST['Cancel'] = 1;
@@ -123,9 +134,7 @@ if (isset($_POST['Cancel']))
 {
        clear_allocations();
        meta_forward($path_to_root . "/purchasing/allocations/supplier_allocation_main.php");
-       exit;
 }
-
 //--------------------------------------------------------------------------------
 
 function get_allocations_for_transaction($type, $trans_no)
@@ -176,7 +185,7 @@ function edit_allocations_for_transaction($type, $trans_no)
 {
        global $table_style;
 
-       start_form(false, true);
+       start_form();
 
     display_heading(_("Allocation of") . " " . systypes::name($_SESSION['alloc']->type) . " # " . $_SESSION['alloc']->trans_no);
 
@@ -187,12 +196,13 @@ function edit_allocations_for_transaction($type, $trans_no)
 
     echo "<br>";
 
+       div_start('alloc_tbl');
     if (count($_SESSION['alloc']->allocs) > 0)
     {
                start_table($table_style);
-               $th = array(_("Transaction Type"), _("#"), _("Date"), _("Due Date"), _("Amount"), 
+               $th = array(_("Transaction Type"), _("#"), _("Date"), _("Due Date"), _("Amount"),
                        _("Other Allocations"), _("This Allocation"), _("Left to Allocate"),'');
-               table_header($th);      
+               table_header($th);
 
         $k = $counter = $total_allocated = 0;
 
@@ -207,57 +217,50 @@ function edit_allocations_for_transaction($type, $trans_no)
                amount_cell($alloc_item->amount);
                amount_cell($alloc_item->amount_allocated);
 
-           if (!isset($_POST['amount' . $counter]) || $_POST['amount' . $counter] == "")
-               $_POST['amount' . $counter] = price_format($alloc_item->current_allocated);
+               $_POST['amount' . $counter] = price_format($alloc_item->current_allocated);
            amount_cells(null, "amount" . $counter, price_format('amount' . $counter));
 
                $un_allocated = round($alloc_item->amount - $alloc_item->amount_allocated, 6);
-               hidden("un_allocated" . $counter, $un_allocated);
                amount_cell($un_allocated);
                        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>");
-
-//                     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>");
+                                        . _("None") . "</a>".hidden("un_allocated" . $counter, $un_allocated, false));
                        end_row();
 
            $total_allocated += input_num('amount' . $counter);
            $counter++;
                }
-               
+
         label_row(_("Total Allocated"), number_format2($total_allocated,user_price_dec()),
                "colspan=6 align=right", "align=right id='total_allocated'");
         if (-$_SESSION['alloc']->amount - $total_allocated < 0)
         {
                $font1 = "<font color=red>";
                $font2 = "</font>";
-        }      
+        }
         else
                $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", 
+               $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 id='left_to_allocate'");
-               end_table();            
+               end_table();
 
                hidden('TotalNumberOfAllocs', $counter);
-//             hidden('left_to_allocate', $left_to_allocate);
-       echo "<br><center>";
-               submit('UpdateDisplay', _("Update"));
-               echo "&nbsp;";
-               submit('Process', _("Process"));
-               echo "&nbsp;";
-       } 
-       else 
+
+       submit_center_first('UpdateDisplay', _("Refresh"), _('Start again allocation of selected amount'), true);
+               submit('Process', _("Process"), true, _('Process allocations'), 'default');
+               submit_center_last('Cancel', _("Back to Allocations"),
+                       _('Abandon allocations and return to selection of allocatable amounts'), 'cancel');
+       }
+       else
        {
        display_note(_("There are no unsettled transactions to allocate."), 0, 1);
-       echo "<center>";
+               submit_center('Cancel', _("Back to Allocations"), true,
+                       _('Abandon allocations and return to selection of allocatable amounts'), 'cancel');
     }
 
-       submit('Cancel', _("Back to Allocations"));
-       echo "</center><br><br>";
-
+       div_end();
        end_form();
 }
 
@@ -267,6 +270,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']))
 {