Added invoice preselection option.
[fa-stable.git] / purchasing / po_entry_items.php
index b0d116995a73507ee649bfb39c2d5aab08bee265..5a7958d28d9295ba6941b311c6f481dcc2bc4388 100644 (file)
@@ -9,8 +9,8 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
-$page_security = 4;
-$path_to_root="..";
+$page_security = 'SA_PURCHASEORDER';
+$path_to_root = "..";
 include_once($path_to_root . "/purchasing/includes/po_class.inc");
 include_once($path_to_root . "/includes/session.inc");
 include_once($path_to_root . "/purchasing/includes/purchasing_ui.inc");
@@ -24,11 +24,11 @@ if ($use_date_picker)
 
 if (isset($_GET['ModifyOrderNumber'])) 
 {
-       page(_("Modify Purchase Order #") . $_GET['ModifyOrderNumber'], false, false, "", $js);
+       page(_($help_context = "Modify Purchase Order #") . $_GET['ModifyOrderNumber'], false, false, "", $js);
 } 
 else 
 {
-       page(_("Purchase Order Entry"), false, false, "", $js);
+       page(_($help_context = "Purchase Order Entry"), false, false, "", $js);
 }
 
 //---------------------------------------------------------------------------------------------------
@@ -42,15 +42,17 @@ check_db_has_purchasable_items(_("There are no purchasable inventory items defin
 if (isset($_GET['AddedID'])) 
 {
        $order_no = $_GET['AddedID'];
-       $trans_type = systypes::po();   
+       $trans_type = ST_PURCHORDER;    
 
        if (!isset($_GET['Updated']))
                display_notification_centered(_("Purchase Order has been entered"));
        else
                display_notification_centered(_("Purchase Order has been updated") . " #$order_no");
-       display_note(get_trans_view_str($trans_type, $order_no, _("&View this order")));
-       echo '<br>';
-       display_note(print_document_link($order_no, _("&Print This Order"), true, $trans_type));
+       display_note(get_trans_view_str($trans_type, $order_no, _("&View this order")), 0, 1);
+
+       display_note(print_document_link($order_no, _("&Print This Order"), true, $trans_type), 0, 1);
+
+       display_note(print_document_link($order_no, _("&Email This Order"), true, $trans_type, false, "", "", 1));
 
        hyperlink_params($path_to_root . "/purchasing/po_receive_items.php", _("&Receive Items on this Purchase Order"), "PONumber=$order_no");
 
@@ -155,9 +157,12 @@ function handle_cancel_po()
 
 function check_data()
 {
-    if (!check_num('qty',0))
+       $dec = get_qty_dec($_POST['stock_id']);
+       $min = 1 / pow(10, $dec);
+    if (!check_num('qty',$min))
     {
-               display_error(_("The quantity of the order item must be numeric and not less than zero."));
+       $min = number_format2($min, $dec);
+               display_error(_("The quantity of the order item must be numeric and not less than ").$min);
                set_focus('qty');
                return false;
     }
@@ -183,19 +188,21 @@ function handle_update_item()
 {
        $allow_update = check_data(); 
 
-       if ($allow_update && 
-               ($_SESSION['PO']->line_items[$_POST['line_no']]->qty_inv > input_num('qty') ||
-               $_SESSION['PO']->line_items[$_POST['line_no']]->qty_received > input_num('qty')))
+       if ($allow_update)
        {
-               display_error(_("You are attempting to make the quantity ordered a quantity less than has already been invoiced or received.  This is prohibited.") .
-                       "<br>" . _("The quantity received can only be modified by entering a negative receipt and the quantity invoiced can only be reduced by entering a credit note against this item."));
-               set_focus('qty');
-               return;
-       }
+               if ($_SESSION['PO']->line_items[$_POST['line_no']]->qty_inv > input_num('qty') ||
+                       $_SESSION['PO']->line_items[$_POST['line_no']]->qty_received > input_num('qty'))
+               {
+                       display_error(_("You are attempting to make the quantity ordered a quantity less than has already been invoiced or received.  This is prohibited.") .
+                               "<br>" . _("The quantity received can only be modified by entering a negative receipt and the quantity invoiced can only be reduced by entering a credit note against this item."));
+                       set_focus('qty');
+                       return;
+               }
        
-       $_SESSION['PO']->update_order_item($_POST['line_no'], input_num('qty'), input_num('price'),
-               $_POST['req_del_date']);
-       unset_form_variables();
+               $_SESSION['PO']->update_order_item($_POST['line_no'], input_num('qty'), input_num('price'),
+                       $_POST['req_del_date']);
+               unset_form_variables();
+       }       
     line_start_focus();
 }
 
@@ -211,24 +218,18 @@ function handle_add_new_item()
                {
                    foreach ($_SESSION['PO']->line_items as $order_item) 
                    {
-
                        /* do a loop round the items on the order to see that the item
                        is not already on this order */
-                           if (($order_item->stock_id == $_POST['stock_id']) && 
-                               ($order_item->Deleted == false)) 
+                           if (($order_item->stock_id == $_POST['stock_id'])) 
                            {
-                                       $allow_update = false;
-                                       display_error(_("The selected item is already on this order."));
+                                       display_warning(_("The selected item is already on this order."));
                            }
                    } /* end of the foreach loop to look for pre-existing items of the same code */
                }
 
                if ($allow_update == true)
                {
-                       $sql = "SELECT description, units, mb_flag
-                               FROM ".TB_PREF."stock_master WHERE stock_id = '". $_POST['stock_id'] . "'";
-
-                   $result = db_query($sql,"The stock details for " . $_POST['stock_id'] . " could not be retrieved");
+                       $result = get_short_info($_POST['stock_id']);
 
                    if (db_num_rows($result) == 0)
                    {
@@ -259,6 +260,8 @@ function handle_add_new_item()
 
 function can_commit()
 {
+       global $Refs;
+
        if (!is_date($_POST['OrderDate'])) 
        {
                display_error(_("The entered order date is invalid."));
@@ -268,14 +271,14 @@ function can_commit()
        
        if (!$_SESSION['PO']->order_no) 
        {
-       if (!references::is_valid(get_post('ref'))) 
+       if (!$Refs->is_valid(get_post('ref'))) 
        {
                display_error(_("There is no reference entered for this purchase order."));
                        set_focus('ref');
                return false;
        } 
        
-       if (!is_new_reference(get_post('ref'), systypes::po())) 
+       if (!is_new_reference(get_post('ref'), ST_PURCHORDER)) 
        {
                display_error(_("The entered reference is already in use."));
                        set_focus('ref');