X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=purchasing%2Fpo_receive_items.php;h=36bb7ca04cc76c7a56fe84c554b7f40b0ee6444f;hb=fa46467fccb4052d4c517833cf4198c8bf1dc229;hp=fcd7348b4e9b2fd72f3fa5153db533044c48892d;hpb=95ff74b5722826544743a01daf527aa3c9efe11a;p=fa-stable.git diff --git a/purchasing/po_receive_items.php b/purchasing/po_receive_items.php index fcd7348b..36bb7ca0 100644 --- a/purchasing/po_receive_items.php +++ b/purchasing/po_receive_items.php @@ -22,13 +22,35 @@ if ($SysPrefs->use_popup_windows) $js .= get_js_open_window(900, 500); if (user_use_date_picker()) $js .= get_js_date_picker(); -page(_($help_context = "Receive Purchase Order Items"), false, false, "", $js); + +//-------------------------------------------------------------------------------------------------- + +if (isset($_GET['PONumber']) && $_GET['PONumber'] > 0 && !isset($_POST['Update'])) +{ + $_SESSION['page_title'] = _($help_context = "Receive Purchase Order Items"); + create_cart(ST_PURCHORDER, $_GET['PONumber']); + $_SESSION['PO']->trans_type = ST_SUPPRECEIVE; + $_SESSION['PO']->reference = $Refs->get_next(ST_SUPPRECEIVE, + array('date' => Today(), 'supplier' => $_SESSION['PO']->supplier_id)); + foreach ($_SESSION['PO']->line_items as $line) + $line->quantity = $line->qty_ordered - $line->qty_received; + copy_from_cart(); +} +elseif (isset($_GET['ModifyGRN']) && $_GET['ModifyGRN'] > 0 && !isset($_POST['Update'])) +{ + $_SESSION['page_title'] = _($help_context = "Modify GRN #") . $_GET['ModifyGRN']; + create_cart(ST_SUPPRECEIVE, $_GET['ModifyGRN']); + copy_from_cart(); +} + +page($_SESSION['page_title'], false, false, "", $js); //--------------------------------------------------------------------------------------------------------------- -if (isset($_GET['AddedID'])) +if (isset($_GET['AddedID']) || isset($_GET['UpdatedID'])) { - $grn = $_GET['AddedID']; + $new = isset($_GET['AddedID']); + $grn = $_GET[$new ? 'AddedID' : 'UpdatedID']; $trans_type = ST_SUPPRECEIVE; display_notification_centered(_("Purchase Order Delivery has been processed")); @@ -41,16 +63,19 @@ if (isset($_GET['AddedID'])) hyperlink_params("$path_to_root/purchasing/supplier_invoice.php", _("Entry purchase &invoice for this receival"), "New=1"); - hyperlink_no_params("$path_to_root/purchasing/inquiry/po_search.php", _("Select a different &purchase order for receiving items against")); + if ($new) + hyperlink_no_params("$path_to_root/purchasing/inquiry/po_search.php", _("Select another &purchase order for receiving items against")); + else + hyperlink_no_params("$path_to_root/purchasing/inquiry/supplier_inquiry.php", _("Select another &document for edition")); display_footer_exit(); } //-------------------------------------------------------------------------------------------------- -if ((!isset($_GET['PONumber']) || $_GET['PONumber'] == 0) && !isset($_SESSION['PO'])) +if ((!isset($_GET['PONumber']) || $_GET['PONumber'] == 0) && (!isset($_GET['ModifyGRN']) || $_GET['ModifyGRN'] == 0) && !isset($_SESSION['PO'])) { - die (_("This page can only be opened if a purchase order has been selected. Please select a purchase order first.")); + die (_("This page can only be opened with valid Purchase Order or GRN number.")); } //-------------------------------------------------------------------------------------------------- @@ -59,47 +84,55 @@ function display_po_receive_items() { div_start('grn_items'); start_table(TABLESTYLE, "colspan=7 width='90%'"); - $th = array(_("Item Code"), _("Description"), _("Ordered"), _("Units"), _("Received"), - _("Outstanding"), _("This Delivery"), _("Price"), _("Total")); + $mod_grn = $_SESSION['PO']->grn_id; + + if ($mod_grn) // modify GRN + $th = array(_("Item Code"), _("Description"), _("Ordered"), _("Units"), _("Received"), _("Invoiced"), _("This Delivery"), _("Price"), _("Total")); + else + $th = array(_("Item Code"), _("Description"), _("Ordered"), _("Units"), _("Received"), _("Outstanding"), _("This Delivery"), _("Price"), _("Total")); table_header($th); - /*show the line items on the order with the quantity being received for modification */ + /* show the line items on the order with the quantity being received for modification */ $total = 0; $k = 0; //row colour counter - if (count($_SESSION['PO']->line_items)> 0 ) + if (count($_SESSION['PO']->line_items) > 0 ) { - foreach ($_SESSION['PO']->line_items as $ln_itm) + foreach ($_SESSION['PO']->line_items as $line_no => $ln_itm) { alt_table_row_color($k); - $qty_outstanding = $ln_itm->quantity - $ln_itm->qty_received; + $qty_outstanding = $ln_itm->qty_ordered - $ln_itm->qty_received; - if (!isset($_POST['Update']) && !isset($_POST['ProcessGoodsReceived']) && $ln_itm->receive_qty == 0) + if (!isset($_POST['Update']) && !isset($_POST['ProcessGoodsReceived']) && $ln_itm->quantity == 0) { //If no quantites yet input default the balance to be received - $ln_itm->receive_qty = $qty_outstanding; + $ln_itm->quantity = $qty_outstanding; } - $line_total = ($ln_itm->receive_qty * $ln_itm->price); + $line_total = ($ln_itm->quantity * $ln_itm->price); $total += $line_total; label_cell($ln_itm->stock_id); - if ($qty_outstanding > 0) + if ($mod_grn || $qty_outstanding > 0) text_cells(null, $ln_itm->stock_id . "Desc", $ln_itm->item_description, 30, 50); else label_cell($ln_itm->item_description); + $dec = get_qty_dec($ln_itm->stock_id); - qty_cell($ln_itm->quantity, false, $dec); + qty_cell($ln_itm->qty_ordered, false, $dec); label_cell($ln_itm->units); qty_cell($ln_itm->qty_received, false, $dec); - qty_cell($qty_outstanding, false, $dec); + if ($mod_grn) + qty_cell($ln_itm->qty_inv, false, $dec); + else + qty_cell($qty_outstanding, false, $dec); - if ($qty_outstanding > 0) - qty_cells(null, $ln_itm->line_no, number_format2($ln_itm->receive_qty, $dec), "align=right", null, $dec); + if ($mod_grn || $qty_outstanding > 0) + qty_cells(null, $line_no, number_format2($ln_itm->quantity, $dec), "align=right", null, $dec); else - label_cell(number_format2($ln_itm->receive_qty, $dec), "align=right"); + label_cell(number_format2($ln_itm->quantity, $dec), "align=right"); amount_decimal_cell($ln_itm->price); amount_cell($line_total); @@ -140,13 +173,13 @@ function check_po_changed() { $ln_item = $_SESSION['PO']->line_items[$line_no]; // only compare against items that are outstanding - $qty_outstanding = $ln_item->quantity - $ln_item->qty_received; + $qty_outstanding = $ln_item->qty_ordered - $ln_item->qty_received; if ($qty_outstanding > 0) { if ($ln_item->qty_inv != $myrow["qty_invoiced"] || $ln_item->stock_id != $myrow["item_code"] || - $ln_item->quantity != $myrow["quantity_ordered"] || - $ln_item->qty_received != $myrow["quantity_received"]) + $ln_item->qty_ordered != $myrow["quantity_ordered"] || + $ln_item->qty_received + @$ln_item->qty_old != $myrow["quantity_received"]) { return true; } @@ -162,26 +195,26 @@ function check_po_changed() function can_process() { global $SysPrefs; - + if (count($_SESSION['PO']->line_items) <= 0) { display_error(_("There is nothing to process. Please enter valid quantities greater than zero.")); return false; } - if (!is_date($_POST['DefaultReceivedDate'])) + if (!is_date($_POST['tran_date'])) { display_error(_("The entered date is invalid.")); - set_focus('DefaultReceivedDate'); + set_focus('tran_date'); return false; } - if (!is_date_in_fiscalyear($_POST['DefaultReceivedDate'])) { + if (!is_date_in_fiscalyear($_POST['tran_date'])) { display_error(_("The entered date is out of fiscal year or is closed for further data entry.")); - set_focus('DefaultReceivedDate'); + set_focus('tran_date'); return false; } - if (!check_reference($_POST['ref'], ST_SUPPRECEIVE)) + if (!check_reference($_POST['ref'], ST_SUPPRECEIVE, $_SESSION['PO']->grn_id)) { set_focus('ref'); return false; @@ -190,7 +223,7 @@ function can_process() $something_received = 0; foreach ($_SESSION['PO']->line_items as $order_line) { - if ($order_line->receive_qty > 0) + if ($order_line->quantity > 0) { $something_received = 1; break; @@ -201,8 +234,8 @@ function can_process() $delivery_qty_too_large = 0; foreach ($_SESSION['PO']->line_items as $order_line) { - if ($order_line->receive_qty+$order_line->qty_received > - $order_line->quantity * (1+ ($SysPrefs->over_receive_allowance() / 100))) + if ($order_line->quantity+$order_line->qty_received > + $order_line->qty_ordered * (1+ ($SysPrefs->over_receive_allowance() / 100))) { $delivery_qty_too_large = 1; break; @@ -241,9 +274,14 @@ function process_receive_po() hyperlink_no_params("$path_to_root/purchasing/inquiry/po_search.php", _("Select a different purchase order for receiving goods against")); - hyperlink_params("$path_to_root/purchasing/po_receive_items.php", - _("Re-Read the updated purchase order for receiving goods against"), - "PONumber=" . $_SESSION['PO']->order_no); + if (!$_SESSION['PO']->grn_id) + hyperlink_params("$path_to_root/purchasing/po_receive_items.php", + _("Re-Read the updated purchase order for receiving goods against"), + "PONumber=" . $_SESSION['PO']->order_no); + else + hyperlink_params("$path_to_root/purchasing/po_receive_items.php", + _("Re-Read the GRN for reedition"), + "ModifyGRN=" . $_SESSION['PO']->grn_id); unset($_SESSION['PO']->line_items); unset($_SESSION['PO']); @@ -253,53 +291,45 @@ function process_receive_po() } $grn = &$_SESSION['PO']; - $grn->orig_order_date = $_POST['DefaultReceivedDate']; + $grn->tran_date = $_POST['tran_date']; $grn->reference = $_POST['ref']; $grn->Location = $_POST['Location']; $grn->ex_rate = input_num('_ex_rate', null); - $grn_no = add_grn($grn); + $trans_no = write_grn($grn); + $new = $grn->grn_id == 0; - new_doc_date($_POST['DefaultReceivedDate']); + new_doc_date($_POST['tran_date']); unset($_SESSION['PO']->line_items); unset($_SESSION['PO']); - meta_forward($_SERVER['PHP_SELF'], "AddedID=$grn_no"); -} - -//-------------------------------------------------------------------------------------------------- - -if (isset($_GET['PONumber']) && $_GET['PONumber'] > 0 && !isset($_POST['Update'])) -{ - create_new_po(ST_PURCHORDER, $_GET['PONumber']); - $_SESSION['PO']->trans_type = ST_SUPPRECEIVE; - $_SESSION['PO']->reference = $Refs->get_next(ST_SUPPRECEIVE, - array('date' => Today(), 'supplier' => $_SESSION['PO']->supplier_id)); - copy_from_cart(); + if ($new) + meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no"); + else + meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$trans_no"); } //-------------------------------------------------------------------------------------------------- if (isset($_POST['Update']) || isset($_POST['ProcessGoodsReceived'])) { - - /* if update quantities button is hit page has been called and ${$line->line_no} would have be + /* if update quantities button is hit page has been called and ${$line_no} would have be set from the post to the quantity to be received in this receival*/ - foreach ($_SESSION['PO']->line_items as $line) + foreach ($_SESSION['PO']->line_items as $line_no => $line) { - if( ($line->quantity - $line->qty_received)>0) { - $_POST[$line->line_no] = max($_POST[$line->line_no], 0); - if (!check_num($line->line_no)) - $_POST[$line->line_no] = number_format2(0, get_qty_dec($line->stock_id)); + if( ($line->qty_ordered - $line->qty_received) > 0) { + $_POST[$line_no] = max($_POST[$line_no], 0); + if (!check_num($line_no)) + $_POST[$line_no] = number_format2(0, get_qty_dec($line->stock_id)); - if (!isset($_POST['DefaultReceivedDate']) || $_POST['DefaultReceivedDate'] == "") - $_POST['DefaultReceivedDate'] = new_doc_date(); + if (!isset($_POST['tran_date']) || $_POST['tran_date'] == "") + $_POST['tran_date'] = new_doc_date(); - $_SESSION['PO']->line_items[$line->line_no]->receive_qty = input_num($line->line_no); + $_SESSION['PO']->line_items[$line_no]->quantity = input_num($line_no); if (isset($_POST[$line->stock_id . "Desc"]) && strlen($_POST[$line->stock_id . "Desc"]) > 0) { - $_SESSION['PO']->line_items[$line->line_no]->item_description = $_POST[$line->stock_id . "Desc"]; + $_SESSION['PO']->line_items[$line_no]->item_description = $_POST[$line->stock_id . "Desc"]; } } }