$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"));
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."));
}
//--------------------------------------------------------------------------------------------------
{
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)
{
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, $ln_itm->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);
{
$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;
}
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 (!check_reference($_POST['ref'], ST_SUPPRECEIVE))
+ if (!check_reference($_POST['ref'], ST_SUPPRECEIVE, $_SESSION['PO']->grn_id))
{
set_focus('ref');
return false;
$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;
$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;
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']);
$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']);
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
set from the post to the quantity to be received in this receival*/
foreach ($_SESSION['PO']->line_items as $line)
{
- if( ($line->quantity - $line->qty_received)>0) {
+ if( ($line->qty_ordered - $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 (!isset($_POST['DefaultReceivedDate']) || $_POST['DefaultReceivedDate'] == "")
$_POST['DefaultReceivedDate'] = new_doc_date();
- $_SESSION['PO']->line_items[$line->line_no]->receive_qty = input_num($line->line_no);
+ $_SESSION['PO']->line_items[$line->line_no]->quantity = input_num($line->line_no);
if (isset($_POST[$line->stock_id . "Desc"]) && strlen($_POST[$line->stock_id . "Desc"]) > 0)
{