Copyright notes at top op every source file
[fa-stable.git] / manufacturing / work_order_entry.php
index 4da03e6e0095d2ec8475a36d76dd385466401d07..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,12 +114,14 @@ 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;
        }
        }
@@ -118,17 +129,20 @@ function can_process()
        if (!check_num('quantity', 0))
        {
                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
@@ -137,6 +151,7 @@ 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;
         }
 
@@ -145,6 +160,7 @@ function can_process()
        if (!check_num('Costs', 0))
        {
                display_error( _("The cost entered is invalid or less than zero."));
+               set_focus('Costs');
                return false;
        }
 
@@ -168,6 +184,7 @@ function can_process()
                                {
                                        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,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;
                }
@@ -203,6 +221,7 @@ function can_process()
 
                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;
                }
@@ -271,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();
@@ -279,6 +303,7 @@ start_table($table_style2);
 
 $existing_comments = "";
 
+$dec = 0;
 if (isset($selected_id))
 {
        $myrow = get_work_order($selected_id);
@@ -298,18 +323,18 @@ if (isset($selected_id))
        }
 
        $_POST['wo_ref'] = $myrow["wo_ref"];
-       $_POST['quantity'] = qty_format($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'] = price_format($myrow["Costs"]);
+       $_POST['Costs'] = price_format($myrow["additional_costs"]);
 
        $_POST['memo_'] = get_comments_string(systypes::work_order(), $selected_id);
 
@@ -323,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)
@@ -349,19 +375,19 @@ else
 }
 
 if (!isset($_POST['quantity']))
-       $_POST['quantity'] = qty_format(1);
+       $_POST['quantity'] = qty_format(1, $_POST['stock_id'], $dec);
 
-if ($_POST['type'] == wo_types::advanced())
+if (get_post('type') == wo_types::advanced())
 {
-    amount_row(_("Quantity Required:"), 'quantity', 12);
+    qty_row(_("Quantity Required:"), 'quantity', null, null, null, $dec);
     if ($_POST['released'])
-       label_row(_("Quantity Manufactured:"), qty_format($_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
 {
-    amount_row(_("Quantity:"), 'quantity', 12);
+    qty_row(_("Quantity:"), 'quantity', null, null, null, $dec);
     date_row(_("Date") . ":", 'date_');
        hidden('RequDate', '');
 
@@ -378,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();