X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=sales%2Fcustomer_delivery.php;h=605df69188fd200ccc48b3635975c51a4477d648;hb=3b06c6c4718610a408cae2e9b76c3134ca30b84c;hp=3c3c1800c5e02f1ae396863a37166ad053b6e8a7;hpb=f14d54f1294a8120fafc54bfb99d32cdcecb32a0;p=fa-stable.git diff --git a/sales/customer_delivery.php b/sales/customer_delivery.php index 3c3c1800..605df691 100644 --- a/sales/customer_delivery.php +++ b/sales/customer_delivery.php @@ -29,7 +29,7 @@ $js = ""; if ($use_popup_windows) { $js .= get_js_open_window(900, 500); } -if ($use_date_picker) { +if (user_use_date_picker()) { $js .= get_js_date_picker(); } @@ -58,7 +58,8 @@ if (isset($_GET['AddedID'])) { display_note(get_gl_view_str(13, $dispatch_no, _("View the GL Journal Entries for this Dispatch")),1); - hyperlink_params("$path_to_root/sales/customer_invoice.php", _("Invoice This Delivery"), "DeliveryNumber=$dispatch_no"); + if (!isset($_GET['prepaid'])) + hyperlink_params("$path_to_root/sales/customer_invoice.php", _("Invoice This Delivery"), "DeliveryNumber=$dispatch_no"); hyperlink_params("$path_to_root/sales/inquiry/sales_orders_view.php", _("Select Another Order For Dispatch"), "OutstandingOnly=1"); @@ -77,7 +78,8 @@ if (isset($_GET['AddedID'])) { display_note(print_document_link($delivery_no, _("P&rint as Packing Slip"), true, ST_CUSTDELIVERY, false, "printlink", "", 0, 1)); display_note(print_document_link($delivery_no, _("E&mail as Packing Slip"), true, ST_CUSTDELIVERY, false, "printlink", "", 1, 1), 1); - hyperlink_params($path_to_root . "/sales/customer_invoice.php", _("Confirm Delivery and Invoice"), "DeliveryNumber=$delivery_no"); + if (!isset($_GET['prepaid'])) + hyperlink_params($path_to_root . "/sales/customer_invoice.php", _("Confirm Delivery and Invoice"), "DeliveryNumber=$delivery_no"); hyperlink_params($path_to_root . "/sales/inquiry/sales_deliveries_view.php", _("Select A Different Delivery"), "OutstandingOnly=1"); @@ -88,13 +90,22 @@ if (isset($_GET['AddedID'])) { if (isset($_GET['OrderNumber']) && $_GET['OrderNumber'] > 0) { $ord = new Cart(ST_SALESORDER, $_GET['OrderNumber'], true); + if ($ord->is_prepaid()) + check_deferred_income_act(_("You have to set Deferred Income Account in GL Setup to entry prepayment invoices.")); 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(); } - // Adjust Shipping Charge based upon previous deliveries TAM adjust_shipping_charge($ord, $_GET['OrderNumber']); @@ -103,10 +114,11 @@ if (isset($_GET['OrderNumber']) && $_GET['OrderNumber'] > 0) { } elseif (isset($_GET['ModifyDelivery']) && $_GET['ModifyDelivery'] > 0) { - $_SESSION['Items'] = new Cart(ST_CUSTDELIVERY, $_GET['ModifyDelivery']); + check_is_editable(ST_CUSTDELIVERY, $_GET['ModifyDelivery']); + $_SESSION['Items'] = new Cart(ST_CUSTDELIVERY,$_GET['ModifyDelivery']); - if ($_SESSION['Items']->count_items() == 0) { - hyperlink_params($path_to_root . "/sales/inquiry/customer_inquiry.php", + 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.") . "
"; @@ -126,7 +138,7 @@ if (isset($_GET['OrderNumber']) && $_GET['OrderNumber'] > 0) { exit; } else { - check_edit_conflicts(); + check_edit_conflicts(get_post('cart_id')); if (!check_quantities()) { display_error(_("Selected quantity cannot be less than quantity invoiced nor more than quantity not dispatched on sales order.")); @@ -150,7 +162,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; } @@ -271,6 +283,38 @@ function check_quantities() if (isset($_POST['process_delivery']) && check_data()) { + 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()) { $dn = &$_SESSION['Items']; if ($_POST['bo_policy']) { @@ -292,11 +336,13 @@ if (isset($_POST['process_delivery']) && check_data()) } else { + $is_prepaid = $dn->is_prepaid() ? "&prepaid=Yes" : ''; + processing_end(); if ($newdelivery) { - meta_forward($_SERVER['PHP_SELF'], "AddedID=$delivery_no"); + meta_forward($_SERVER['PHP_SELF'], "AddedID=$delivery_no$is_prepaid"); } else { - meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$delivery_no"); + meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$delivery_no$is_prepaid"); } } }