Copyright notes at top op every source file
[fa-stable.git] / manufacturing / work_order_entry.php
index 39fd25bfe20c3bbe5ea0f85674482bed26dbbdc9..9ba52cb68b2b44d175053993aaede0713f02d627 100644 (file)
@@ -1,5 +1,14 @@
 <?php
-
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU Affero General Public License,
+       AGPL, 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/agpl-3.0.html>.
+***********************************************************************/
 $page_security = 10;
 $path_to_root="..";
 
@@ -105,36 +114,35 @@ function can_process()
        if (!references::is_valid($_POST['wo_ref']))
        {
                display_error(_("You must enter a reference."));
+               set_focus('wo_ref');
                return false;
        }
 
        if (!is_new_reference($_POST['wo_ref'], systypes::work_order()))
        {
                display_error(_("The entered reference is already in use."));
+               set_focus('wo_ref');
                return false;
        }
        }
 
-       if (!is_numeric($_POST['quantity']))
-       {
-               display_error( _("The quantity entered must be numeric."));
-               return false;
-       }
-
-       if ($_POST['quantity'] <= 0)
+       if (!check_num('quantity', 0))
        {
-               display_error( _("The quantity entered must be a positive number greater than zero."));
+               display_error( _("The quantity entered is invalid or less than zero."));
+               set_focus('quantity');
                return false;
        }
 
        if (!is_date($_POST['date_']))
        {
                display_error( _("The date entered is in an invalid format."));
+               set_focus('date_');
                return false;
        }
        elseif (!is_date_in_fiscalyear($_POST['date_']))
        {
                display_error(_("The entered date is not in fiscal year."));
+               set_focus('date_');
                return false;
        }
        // only check bom and quantites if quick assembly
@@ -143,20 +151,16 @@ function can_process()
         if (!has_bom($_POST['stock_id']))
         {
                display_error(_("The selected item to manufacture does not have a bom."));
+               set_focus('stock_id');
                return false;
         }
 
                if ($_POST['Costs'] == "")
-                       $_POST['Costs'] = 0;
-       if (!is_numeric($_POST['Costs']))
-       {
-               display_error( _("The cost entered must be numeric."));
-               return false;
-       }
-
-       if ($_POST['Costs'] < 0)
+                       $_POST['Costs'] = price_format(0);
+       if (!check_num('Costs', 0))
        {
-               display_error( _("The cost entered cannot be negative."));
+               display_error( _("The cost entered is invalid or less than zero."));
+               set_focus('Costs');
                return false;
        }
 
@@ -173,13 +177,14 @@ function can_process()
                        if (has_stock_holding($bom_item["ResourceType"]))
                        {
 
-                               $quantity = $bom_item["quantity"] * $_POST['quantity'];
+                               $quantity = $bom_item["quantity"] * input_num('quantity');
 
                         $qoh = get_qoh_on_date($bom_item["component"], $bom_item["loc_code"], $_POST['date_']);
                                if (-$quantity + $qoh < 0)
                                {
                                        display_error(_("The work order cannot be processed because there is an insufficient quantity for component:") .
                                                " " . $bom_item["component"] . " - " .  $bom_item["description"] . ".  " . _("Location:") . " " . $bom_item["location_name"]);
+                                               set_focus('quantity');
                                                return false;
                                }
                        }
@@ -189,7 +194,7 @@ function can_process()
                {
                        // if unassembling, check item to unassemble
                                $qoh = get_qoh_on_date($_POST['stock_id'], $_POST['StockLocation'], $_POST['date_']);
-                       if (-$_POST['quantity'] + $qoh < 0)
+                       if (-input_num('quantity') + $qoh < 0)
                        {
                                display_error(_("The selected item cannot be unassembled because there is insufficient stock."));
                                        return false;
@@ -201,6 +206,7 @@ function can_process()
      {
        if (!is_date($_POST['RequDate']))
        {
+               set_focus('RequDate');
                display_error( _("The date entered is in an invalid format."));
                return false;
                }
@@ -213,8 +219,9 @@ function can_process()
        {
                $myrow = get_work_order($selected_id, true);
 
-               if ($_POST['units_issued'] > $_POST['quantity'])
+               if ($_POST['units_issued'] > input_num('quantity'))
                {
+                       set_focus('quantity');
                        display_error(_("The quantity cannot be changed to be less than the quantity already manufactured for this order."));
                        return false;
                }
@@ -229,9 +236,9 @@ function can_process()
 if (isset($_POST['ADD_ITEM']) && can_process())
 {
 
-       $id = add_work_order($_POST['wo_ref'], $_POST['StockLocation'], $_POST['quantity'],
+       $id = add_work_order($_POST['wo_ref'], $_POST['StockLocation'], input_num('quantity'),
                $_POST['stock_id'],  $_POST['type'], $_POST['date_'],
-               $_POST['RequDate'], $_POST['Costs'], $_POST['memo_']);
+               $_POST['RequDate'], input_num('Costs'), $_POST['memo_']);
 
        meta_forward($_SERVER['PHP_SELF'], "AddedID=$id");
 }
@@ -241,7 +248,7 @@ if (isset($_POST['ADD_ITEM']) && can_process())
 if (isset($_POST['UPDATE_ITEM']) && can_process())
 {
 
-       update_work_order($selected_id, $_POST['StockLocation'], $_POST['quantity'],
+       update_work_order($selected_id, $_POST['StockLocation'], input_num('quantity'),
                $_POST['stock_id'],  $_POST['date_'], $_POST['RequDate'], $_POST['memo_']);
 
        meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$selected_id");
@@ -283,6 +290,11 @@ if (isset($_POST['close']))
        meta_forward($_SERVER['PHP_SELF'], "ClosedID=$selected_id");
 }
 
+//-------------------------------------------------------------------------------------
+if (get_post('_type_update')) 
+{
+  $Ajax->activate('_page_body');
+}
 //-------------------------------------------------------------------------------------
 
 start_form();
@@ -291,6 +303,7 @@ start_table($table_style2);
 
 $existing_comments = "";
 
+$dec = 0;
 if (isset($selected_id))
 {
        $myrow = get_work_order($selected_id);
@@ -310,18 +323,18 @@ if (isset($selected_id))
        }
 
        $_POST['wo_ref'] = $myrow["wo_ref"];
-       $_POST['quantity'] = $myrow["units_reqd"];
+       $_POST['stock_id'] = $myrow["stock_id"];
+       $_POST['quantity'] = qty_format($myrow["units_reqd"], $_POST['stock_id'], $dec);
        $_POST['StockLocation'] = $myrow["loc_code"];
        $_POST['released'] = $myrow["released"];
        $_POST['closed'] = $myrow["closed"];
-       $_POST['stock_id'] = $myrow["stock_id"];
        $_POST['type'] = $myrow["type"];
        $_POST['date_'] = sql2date($myrow["date_"]);
        $_POST['RequDate'] = sql2date($myrow["required_by"]);
        $_POST['released_date'] = sql2date($myrow["released_date"]);
        $_POST['memo_'] = "";
        $_POST['units_issued'] = $myrow["units_issued"];
-       $_POST['Costs'] = $myrow["Costs"];
+       $_POST['Costs'] = price_format($myrow["additional_costs"]);
 
        $_POST['memo_'] = get_comments_string(systypes::work_order(), $selected_id);
 
@@ -335,13 +348,14 @@ if (isset($selected_id))
 
        label_row(_("Reference:"), $_POST['wo_ref']);
        label_row(_("Type:"), wo_types::name($_POST['type']));
+       hidden('type', $myrow["type"]);
 }
 else
 {
        $_POST['units_issued'] = $_POST['released'] = 0;
-       ref_row(_("Reference:"), 'wo_ref', references::get_next(systypes::work_order()));
+       ref_row(_("Reference:"), 'wo_ref', '', references::get_next(systypes::work_order()));
 
-       wo_types_list_row(_("Type:"), 'type', $_POST['type']);
+       wo_types_list_row(_("Type:"), 'type', null);
 }
 
 if ($_POST['released'] == true)
@@ -361,24 +375,24 @@ else
 }
 
 if (!isset($_POST['quantity']))
-       $_POST['quantity'] = 1;
+       $_POST['quantity'] = qty_format(1, $_POST['stock_id'], $dec);
 
-if ($_POST['type'] == wo_types::advanced())
+if (get_post('type') == wo_types::advanced())
 {
-    text_row_ex(_("Quantity Required:"), 'quantity', 12);
+    qty_row(_("Quantity Required:"), 'quantity', null, null, null, $dec);
     if ($_POST['released'])
-       label_row(_("Quantity Manufactured:"), $_POST['units_issued']);
+       label_row(_("Quantity Manufactured:"), number_format($_POST['units_issued'], get_qty_dec($_POST['stock_id'])));
     date_row(_("Date") . ":", 'date_');
-       date_row(_("Date Required By") . ":", 'RequDate', null, sys_prefs::default_wo_required_by());
+       date_row(_("Date Required By") . ":", 'RequDate', '', null, sys_prefs::default_wo_required_by());
 }
 else
 {
-    text_row_ex(_("Quantity:"), 'quantity', 12);
+    qty_row(_("Quantity:"), 'quantity', null, null, null, $dec);
     date_row(_("Date") . ":", 'date_');
        hidden('RequDate', '');
 
        if (!isset($_POST['Costs']))
-               $_POST['Costs'] = 0;
+               $_POST['Costs'] = price_format(0);
 
        amount_row(_("Total Additional Costs:"), 'Costs');
 }
@@ -390,20 +404,23 @@ textarea_row(_("Memo:"), 'memo_', null, 40, 5);
 
 end_table(1);
 
-submit_add_or_update_center(!isset($selected_id));
-
 if (isset($selected_id))
 {
-       echo "<br><br><table align=center><tr>";
+       echo "<table align=center><tr>";
 
+       submit_cells('UPDATE_ITEM', _("Update"), '', _('Save changes to work order'), true);
        if (isset($_POST['released']))
        {
-               submit_cells('close', _("Close This Work Order"));
+               submit_cells('close', _("Close This Work Order"),'','',true);
        }
-       submit_cells('delete', _("Delete This Work Order"));
+       submit_cells('delete', _("Delete This Work Order"),'','',true);
 
        echo "</tr></table>";
 }
+else
+{
+       submit_center('ADD_ITEM', _("Add Workorder"), true, '', true);
+}
 
 end_form();
 end_page();