Fixing bug in Sales Invoice and Sales Delivery when Cash Sales and document date...
[fa-stable.git] / sales / sales_order_entry.php
index 3517196df208c18965e70d7b915fde0269af05be..9d87d93558b59985ccdb8ab20c5b3a136f7a9036 100644 (file)
@@ -101,6 +101,11 @@ if (isset($_GET['NewDelivery']) && is_numeric($_GET['NewDelivery'])) {
 
 page($_SESSION['page_title'], false, false, "", $js);
 
+if (isset($_GET['ModifyOrderNumber']) && is_prepaid_order_open($_GET['ModifyOrderNumber']))
+{
+       display_error(_("This order cannot be edited because there are invoices or payments related to it, and prepayment terms were used."));
+       end_page(); exit;
+}
 if (isset($_GET['ModifyOrderNumber']))
        check_is_editable(ST_SALESORDER, $_GET['ModifyOrderNumber']);
 elseif (isset($_GET['ModifyQuotationNumber']))
@@ -385,7 +390,7 @@ function can_process() {
                return false;
        }
        if ($_SESSION['Items']->payment_terms['cash_sale'] == 0) {
-               if (!$_SESSION['Items']->is_started() && ($_SESSION['Items']->payment_terms['days_before_due'] < 0) && ((input_num('prep_amount')<=0) ||
+               if (!$_SESSION['Items']->is_started() && ($_SESSION['Items']->payment_terms['days_before_due'] == -1) && ((input_num('prep_amount')<=0) ||
                        input_num('prep_amount')>$_SESSION['Items']->get_trans_total())) {
                        display_error(_("Pre-payment required have to be positive and less than total amount."));
                        set_focus('prep_amount');
@@ -448,6 +453,9 @@ function can_process() {
                display_error("Invoice total amount cannot be less than zero.");
                return false;
        }
+
+       if ($_SESSION['Items']->payment_terms['cash_sale']) 
+               $_SESSION['Items']->due_date = $_SESSION['Items']->document_date;
        return true;
 }
 
@@ -470,10 +478,9 @@ if (isset($_POST['ProcessOrder']) && can_process()) {
                $ref = $Refs->get_next($_SESSION['Items']->trans_type, null, array('date' => Today()));
                if ($ref != $_SESSION['Items']->reference)
                {
+                       unset($_POST['ref']); // force refresh reference
                        display_error(_("The reference number field has been increased. Please save the document again."));
-                       $_POST['ref'] = $_SESSION['Items']->reference = $ref;
-                       $Ajax->activate('ref');
-               }       
+               }
                set_focus('ref');
        }
        else