Bug 0001669: get_exchange_rate not raising error
[fa-stable.git] / sales / sales_order_entry.php
index 856c5a235c1c457a0835f2341de4209a1a146bef..a49ff9af4f9b9b1647d4ab1515d73293708f88e0 100644 (file)
@@ -223,6 +223,8 @@ if (isset($_GET['AddedID'])) {
                submenu_option(_("Enter a &New Direct Invoice"),
                        "/sales/sales_order_entry.php?NewInvoice=0");
 
+       submenu_option(_("Add an Attachment"), "/admin/attachments.php?filterType=".ST_SALESINVOICE."&trans_no=$invoice");
+
        display_footer_exit();
 } else
        check_edit_conflicts();
@@ -244,24 +246,23 @@ function copy_to_cart()
                $cart->payment_terms = get_payment_terms($_POST['payment']);
                $newpayment = true;
        }
-       if ($newpayment && $cart->payment_terms['cash_sale']) {
-               $cart->due_date = $cart->document_date;
-               $cart->phone = $cart->cust_ref = $cart->delivery_address = '';
-               $cart->freight_cost = input_num('freight_cost');
-               $cart->ship_via = 1;
-               $cart->deliver_to = '';
-               $cart->Location = $cart->pos['pos_location'];
-               $cart->location_name = $cart->pos['location_name'];
+       if ($cart->payment_terms['cash_sale']) {
+               if ($newpayment) {
+                       $cart->due_date = $cart->document_date;
+                       $cart->phone = $cart->cust_ref = $cart->delivery_address = '';
+                       $cart->ship_via = 1;
+                       $cart->deliver_to = '';
+               }
        } else {
                $cart->due_date = $_POST['delivery_date'];
                $cart->cust_ref = $_POST['cust_ref'];
-               $cart->freight_cost = input_num('freight_cost');
                $cart->deliver_to = $_POST['deliver_to'];
                $cart->delivery_address = $_POST['delivery_address'];
                $cart->phone = $_POST['phone'];
                $cart->ship_via = $_POST['ship_via'];
-               $cart->Location = $_POST['Location'];
        }
+       $cart->Location = $_POST['Location'];
+       $cart->freight_cost = input_num('freight_cost');
        if (isset($_POST['email']))
                $cart->email =$_POST['email'];
        else
@@ -273,7 +274,7 @@ function copy_to_cart()
        if ($cart->trans_type!=ST_SALESORDER && $cart->trans_type!=ST_SALESQUOTE) { // 2008-11-12 Joe Hunt
                $cart->dimension_id = $_POST['dimension_id'];
                $cart->dimension2_id = $_POST['dimension2_id'];
-       }       
+       }
 }
 
 //-----------------------------------------------------------------------------
@@ -403,12 +404,10 @@ function can_process() {
                set_focus('ref');
                return false;
        }
-       if ($_SESSION['Items']->trans_no==0 && !is_new_reference($_POST['ref'], 
-               $_SESSION['Items']->trans_type)) {
-               display_error(_("The entered reference is already in use."));
-               set_focus('ref');
-               return false;
-       } elseif ($_SESSION['Items']->get_items_total() < 0) {
+       if (!db_has_currency_rates($_SESSION['Items']->customer_currency, $_POST['OrderDate']))
+               return false;
+       
+       if ($_SESSION['Items']->get_items_total() < 0) {
                display_error("Invoice total amount cannot be less than zero.");
                return false;
        }
@@ -417,37 +416,47 @@ function can_process() {
 
 //-----------------------------------------------------------------------------
 
+if (isset($_POST['update'])) {
+       copy_to_cart();
+       $Ajax->activate('items_table');
+}
+
 if (isset($_POST['ProcessOrder']) && can_process()) {
        copy_to_cart();
        $modified = ($_SESSION['Items']->trans_no != 0);
        $so_type = $_SESSION['Items']->so_type;
-       $_SESSION['Items']->write(1);
-       if (count($messages)) { // abort on failure or error messages are lost
-               $Ajax->activate('_page_body');
-               display_footer_exit();
-       }
-       $trans_no = key($_SESSION['Items']->trans_no);
-       $trans_type = $_SESSION['Items']->trans_type;
-       new_doc_date($_SESSION['Items']->document_date);
-       processing_end();
-       if ($modified) {
-               if ($trans_type == ST_SALESQUOTE)
-                       meta_forward($_SERVER['PHP_SELF'], "UpdatedQU=$trans_no");
-               else    
-                       meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$trans_no");
-       } elseif ($trans_type == ST_SALESORDER) {
-               meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no");
-       } elseif ($trans_type == ST_SALESQUOTE) {
-               meta_forward($_SERVER['PHP_SELF'], "AddedQU=$trans_no");
-       } elseif ($trans_type == ST_SALESINVOICE) {
-               meta_forward($_SERVER['PHP_SELF'], "AddedDI=$trans_no&Type=$so_type");
-       } else {
-               meta_forward($_SERVER['PHP_SELF'], "AddedDN=$trans_no&Type=$so_type");
-       }
-}
 
-if (isset($_POST['update'])) {
-       $Ajax->activate('items_table');
+       $ret = $_SESSION['Items']->write(1);
+       if ($ret == -1)
+       {
+               display_error(_("The entered reference is already in use."));
+               set_focus('ref');
+       }
+       else
+       {
+               if (count($messages)) { // abort on failure or error messages are lost
+                       $Ajax->activate('_page_body');
+                       display_footer_exit();
+               }
+               $trans_no = key($_SESSION['Items']->trans_no);
+               $trans_type = $_SESSION['Items']->trans_type;
+               new_doc_date($_SESSION['Items']->document_date);
+               processing_end();
+               if ($modified) {
+                       if ($trans_type == ST_SALESQUOTE)
+                               meta_forward($_SERVER['PHP_SELF'], "UpdatedQU=$trans_no");
+                       else    
+                               meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$trans_no");
+               } elseif ($trans_type == ST_SALESORDER) {
+                       meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no");
+               } elseif ($trans_type == ST_SALESQUOTE) {
+                       meta_forward($_SERVER['PHP_SELF'], "AddedQU=$trans_no");
+               } elseif ($trans_type == ST_SALESINVOICE) {
+                       meta_forward($_SERVER['PHP_SELF'], "AddedDI=$trans_no&Type=$so_type");
+               } else {
+                       meta_forward($_SERVER['PHP_SELF'], "AddedDN=$trans_no&Type=$so_type");
+               }
+       }       
 }
 
 //--------------------------------------------------------------------------------
@@ -491,6 +500,22 @@ function check_item_data()
                }
                return true;
        }
+       $cost_home = get_standard_cost(get_post('stock_id')); // Added 2011-03-27 Joe Hunt
+       $cost = $cost_home / get_exchange_rate_from_home_currency($_SESSION['Items']->customer_currency, $_SESSION['Items']->document_date);
+       if (input_num('price') < $cost)
+       {
+               $dec = user_price_dec();
+               $curr = $_SESSION['Items']->customer_currency;
+               $price = number_format2(input_num('price'), $dec);
+               if ($cost_home == $cost)
+                       $std_cost = number_format2($cost_home, $dec);
+               else
+               {
+                       $price = $curr . " " . $price;
+                       $std_cost = $curr . " " . number_format2($cost, $dec);
+               }
+               display_warning(sprintf(_("Price %s is below Standard Cost %s"), $price, $std_cost));
+       }       
        return true;
 }