X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fcustomer_delivery.php;h=f770e5907053e617d9a9e6b5f0ea268fb6e55b68;hb=7e830126b96477e969fe3b48d9fc0e78f6c1fe00;hp=814ff8dcc7595fd0c4fc0f3375fec6bb242a271f;hpb=40ee20a833a502a0914202b56473fb330d5774cf;p=fa-stable.git diff --git a/sales/customer_delivery.php b/sales/customer_delivery.php index 814ff8dc..f770e590 100644 --- a/sales/customer_delivery.php +++ b/sales/customer_delivery.php @@ -89,28 +89,31 @@ if (isset($_GET['OrderNumber']) && $_GET['OrderNumber'] > 0) { $ord = new Cart(ST_SALESORDER, $_GET['OrderNumber'], true); - /*read in all the selected order into the Items cart */ - if ($ord->count_items() == 0) { hyperlink_params($path_to_root . "/sales/inquiry/sales_orders_view.php", _("Select a different sales order to delivery"), "OutstandingOnly=1"); - die ("
" . _("This order has no items. There is nothing to delivery.") . ""); + echo "
" . _("This order has no items. There is nothing to delivery.") . + "
"; + display_footer_exit(); + } else if (!$ord->is_released()) { + hyperlink_params($path_to_root . "/sales/inquiry/sales_orders_view.php",_("Select a different sales order to delivery"), + "OutstandingOnly=1"); + echo "
"._("This prepayment order is not yet ready for delivery due to insufficient amount received.") + ."
"; + display_footer_exit(); } - - $ord->trans_type = ST_CUSTDELIVERY; - $ord->src_docs = $ord->trans_no; - $ord->order_no = key($ord->trans_no); - $ord->trans_no = 0; - $ord->reference = $Refs->get_next(ST_CUSTDELIVERY); - $ord->document_date = new_doc_date(); + // Adjust Shipping Charge based upon previous deliveries TAM + adjust_shipping_charge($ord, $_GET['OrderNumber']); + $_SESSION['Items'] = $ord; copy_from_cart(); } elseif (isset($_GET['ModifyDelivery']) && $_GET['ModifyDelivery'] > 0) { + check_is_closed(ST_CUSTDELIVERY, $_GET['ModifyDelivery']); $_SESSION['Items'] = new Cart(ST_CUSTDELIVERY,$_GET['ModifyDelivery']); - if ($_SESSION['Items']->count_items() == 0) { + if (!$_SESSION['Items']->prepaid && $_SESSION['Items']->count_items() == 0) { hyperlink_params($path_to_root . "/sales/inquiry/sales_orders_view.php", _("Select a different delivery"), "OutstandingOnly=1"); echo "
" . _("This delivery has all items invoiced. There is nothing to modify.") . @@ -155,7 +158,7 @@ function check_data() } if (!is_date_in_fiscalyear($_POST['DispatchDate'])) { - display_error(_("The entered date of delivery is not in fiscal year.")); + display_error(_("The entered date is out of fiscal year or is closed for further data entry.")); set_focus('DispatchDate'); return false; } @@ -210,6 +213,8 @@ function copy_to_cart() $cart->due_date = $_POST['due_date']; $cart->Location = $_POST['Location']; $cart->Comments = $_POST['Comments']; + $cart->dimension_id = $_POST['dimension_id']; + $cart->dimension2_id = $_POST['dimension2_id']; if ($cart->trans_no == 0) $cart->reference = $_POST['ref']; @@ -225,6 +230,8 @@ function copy_from_cart() $_POST['due_date'] = $cart->due_date; $_POST['Location'] = $cart->Location; $_POST['Comments'] = $cart->Comments; + $_POST['dimension_id'] = $cart->dimension_id; + $_POST['dimension2_id'] = $cart->dimension2_id; $_POST['cart_id'] = $cart->cart_id; $_POST['ref'] = $cart->reference; } @@ -270,24 +277,35 @@ function check_quantities() function check_qoh() { - global $SysPrefs; - - if (!$SysPrefs->allow_negative_stock()) { - foreach ($_SESSION['Items']->line_items as $itm) { - - if ($itm->qty_dispatched && has_stock_holding($itm->mb_flag)) { - $qoh = get_qoh_on_date($itm->stock_id, $_POST['Location'], $_POST['DispatchDate']); - - if ($itm->qty_dispatched > $qoh) { - display_error(_("The delivery cannot be processed because there is an insufficient quantity for item:") . - " " . $itm->stock_id . " - " . $itm->item_description); - return false; - } - } - } - } - return true; + global $SysPrefs; + $dn = &$_SESSION['Items']; + $newdelivery = ($dn->trans_no==0); + if (!$SysPrefs->allow_negative_stock()) { + foreach ($_SESSION['Items']->line_items as $itm) { + + if ($itm->qty_dispatched && has_stock_holding($itm->mb_flag)) { + $qoh_by_date = get_qoh_on_date($itm->stock_id, $_POST['Location'], $_POST['DispatchDate']); + $qoh_abs = get_qoh_on_date($itm->stock_id, $_POST['Location'], null); + //If editing current delivery delivered qty should be added + if (!$newdelivery) + { + $delivered = get_already_delivered($itm->stock_id, $_POST['Location'], key($dn->trans_no)); + + $qoh_abs = $qoh_abs - $delivered; + $qoh_by_date = $qoh_by_date - $delivered; + } + $qoh = ($qoh_by_date < $qoh_abs ? $qoh_by_date : $qoh_abs); + if ($itm->qty_dispatched > $qoh) { + display_error(_("The delivery cannot be processed because there is an insufficient quantity for item:") . + " " . $itm->stock_id . " - " . $itm->item_description); + return false; + } + } + } + } + return true; } + //------------------------------------------------------------------------------ if (isset($_POST['process_delivery']) && check_data() && check_qoh()) { @@ -378,6 +396,25 @@ if (!isset($_POST['due_date']) || !is_date($_POST['due_date'])) { $_POST['due_date'] = get_invoice_duedate($_SESSION['Items']->payment, $_POST['DispatchDate']); } customer_credit_row($_SESSION['Items']->customer_id, $_SESSION['Items']->credit, "class='tableheader2'"); +// 2010-09-03 Joe Hunt +$dim = get_company_pref('use_dimension'); +if ($dim > 0) { + start_row(); + label_cell(_("Dimension").":", "class='tableheader2'"); + dimensions_list_cells(null, 'dimension_id', null, true, ' ', false, 1, false); + end_row(); +} +else + hidden('dimension_id', 0); +if ($dim > 1) { + start_row(); + label_cell(_("Dimension")." 2:", "class='tableheader2'"); + dimensions_list_cells(null, 'dimension2_id', null, true, ' ', false, 2, false); + end_row(); +} +else + hidden('dimension2_id', 0); +//--------- start_row(); date_cells(_("Invoice Dead-line"), 'due_date', '', null, 0, 0, 0, "class='tableheader2'"); end_row();