$page_security = 2;
$path_to_root="../..";
+include($path_to_root . "/includes/db_pager.inc");
include_once($path_to_root . "/includes/session.inc");
include_once($path_to_root . "/includes/date_functions.inc");
page(_("Inventory Item Movement"), false, false, "", $js);
//------------------------------------------------------------------------------------------------
-
+include $path_to_root.'/sql/upgrade.php';
check_db_has_stock_items(_("There are no items defined in the system."));
-if(get_post('ShowMoves'))
-{
- $Ajax->activate('doc_tbl');
-}
-
if (isset($_GET['stock_id']))
{
$_POST['stock_id'] = $_GET['stock_id'];
end_form();
set_global_stock_item($_POST['stock_id']);
+$item_dec = get_qty_dec($_POST['stock_id']);
+//
+// Get summary displayed in headewr and footer.
+//
+function get_summary(&$table)
+{
+ global $Ajax, $item_dec;
-$before_date = date2sql($_POST['BeforeDate']);
-$after_date = date2sql($_POST['AfterDate']);
-
-$sql = "SELECT type, trans_no, tran_date, person_id, qty, reference
+ $sql = "SELECT
+ Sum(qty) as sum,
+ Sum(IF(qty>0, qty, 0)) as in_qty,
+ Sum(IF(qty<0, -qty, 0)) as out_qty
FROM ".TB_PREF."stock_moves
WHERE loc_code='" . $_POST['StockLocation'] . "'
- AND tran_date >= '". $after_date . "'
- AND tran_date <= '" . $before_date . "'
- AND stock_id = '" . $_POST['stock_id'] . "' ORDER BY tran_date,trans_id";
-$result = db_query($sql, "could not query stock moves");
-
-check_db_error("The stock movements for the selected criteria could not be retrieved",$sql);
-
-div_start('doc_tbl');
-start_table("$table_style width=70%");
-$th = array(_("Type"), _("#"), _("Reference"), _("Date"), _("Detail"),
- _("Quantity In"), _("Quantity Out"), _("Quantity On Hand"));
-
-table_header($th);
-
-$sql = "SELECT SUM(qty) FROM ".TB_PREF."stock_moves WHERE stock_id='" . $_POST['stock_id'] . "'
- AND loc_code='" . $_POST['StockLocation'] . "'
- AND tran_date < '" . $after_date . "'";
-$before_qty = db_query($sql, "The starting quantity on hand could not be calculated");
-
-$before_qty_row = db_fetch_row($before_qty);
-$after_qty = $before_qty = $before_qty_row[0];
-
-if (!isset($before_qty_row[0]))
+ AND tran_date >= '". date2sql($_POST['AfterDate']) . "'
+ AND tran_date <= '" . date2sql($_POST['BeforeDate']) . "'
+ AND stock_id = '" . $_POST['stock_id'] . "'";
+ " GROUP BY rec";
+ $result = db_query($sql, "cannot retrieve stock moves");
+
+ $qty = db_fetch($result);
+
+ $sum['beg'] = get_qoh_on_date($_POST['stock_id'], $_POST['StockLocation'],
+ add_days($_POST['AfterDate'], -1));
+ $sum['in'] = $qty['in_qty'];
+ $sum['out'] = $qty['out_qty'];
+ $sum['end'] = $sum['beg'] + $qty['sum'];
+ $sum['dec'] = $item_dec = get_qty_dec($_POST['stock_id']);
+
+ $table->sum = $sum;
+ $Ajax->activate('summary');
+ }
+//-----------------------------------------------------------------------------
+
+function systype_name($row)
{
- $after_qty = $before_qty = 0;
+ return systypes::name($row["type"]);
}
-start_row("class='inquirybg'");
-label_cell("<b>"._("Quantity on hand before") . " " . $_POST['AfterDate']."</b>", "align=center colspan=5");
-label_cell(" ", "colspan=2");
-$dec = get_qty_dec($_POST['stock_id']);
-qty_cell($before_qty, false, $dec);
-end_row();
-
-$j = 1;
-$k = 0; //row colour counter
-
-$total_in = 0;
-$total_out = 0;
-
-while ($myrow = db_fetch($result))
+function trans_view($row)
{
+ return get_trans_view_str($row["type"], $row["trans_no"]);
+}
- alt_table_row_color($k);
-
- $trandate = sql2date($myrow["tran_date"]);
-
- $type_name = systypes::name($myrow["type"]);
-
- if ($myrow["qty"] > 0)
- {
- $quantity_formatted = number_format2($myrow["qty"], $dec);
- $total_in += $myrow["qty"];
- }
- else
- {
- $quantity_formatted = number_format2(-$myrow["qty"], $dec);
- $total_out += -$myrow["qty"];
- }
- $after_qty += $myrow["qty"];
-
- label_cell($type_name);
-
- label_cell(get_trans_view_str($myrow["type"], $myrow["trans_no"]));
-
- label_cell(get_trans_view_str($myrow["type"], $myrow["trans_no"], $myrow["reference"]));
- label_cell($trandate);
-
- $person = $myrow["person_id"];
+function show_details($row)
+{
+ $person = $row["person_id"];
$gl_posting = "";
- if (($myrow["type"] == 13) || ($myrow["type"] == 11))
+ if (($row["type"] == 13) || ($row["type"] == 11))
{
- $cust_row = get_customer_details_from_trans($myrow["type"], $myrow["trans_no"]);
+ $cust_row = get_customer_details_from_trans($row["type"], $row["trans_no"]);
if (strlen($cust_row['name']) > 0)
$person = $cust_row['name'] . " (" . $cust_row['br_name'] . ")";
}
- elseif ($myrow["type"] == 25 || $myrow['type'] == 21)
+ elseif ($row["type"] == 25 || $row['type'] == 21)
{
// get the supplier name
- $sql = "SELECT supp_name FROM ".TB_PREF."suppliers WHERE supplier_id = '" . $myrow["person_id"] . "'";
+ $sql = "SELECT supp_name FROM ".TB_PREF."suppliers WHERE supplier_id = '" . $row["person_id"] . "'";
$supp_result = db_query($sql,"check failed");
$supp_row = db_fetch($supp_result);
if (strlen($supp_row['supp_name']) > 0)
$person = $supp_row['supp_name'];
}
- elseif ($myrow["type"] == systypes::location_transfer() || $myrow["type"] == systypes::inventory_adjustment())
+ elseif ($row["type"] == systypes::location_transfer() || $row["type"] == systypes::inventory_adjustment())
{
// get the adjustment type
- $movement_type = get_movement_type($myrow["person_id"]);
+ $movement_type = get_movement_type($row["person_id"]);
$person = $movement_type["name"];
}
- elseif ($myrow["type"]==systypes::work_order() || $myrow["type"] == 28 ||
- $myrow["type"] == 29)
+ elseif ($row["type"]==systypes::work_order() || $row["type"] == 28 ||
+ $row["type"] == 29)
{
$person = "";
}
+ return $person;
+}
- label_cell($person);
+$total_out = 0;
+$total_in = 0;
- label_cell((($myrow["qty"] >= 0) ? $quantity_formatted : ""), "nowrap align=right");
- label_cell((($myrow["qty"] < 0) ? $quantity_formatted : ""), "nowrap align=right");
- qty_cell($after_qty, false, $dec);
- end_row();
- $j++;
- If ($j == 12)
- {
- $j = 1;
- table_header($th);
+function qty_in($row)
+{
+ $q = $row["qty"];
+ return $q <= 0 ? '' : $q;
+}
+
+function qty_out($row)
+{
+ $q = -$row["qty"];
+ return $q <= 0 ? '' : $q;
+}
+/*
+function show_qoh($row)
+{
+ $qoh =& $_SESSION['qoh'];
+ $qoh += $row['qty'];
+ return $qoh;
+}
+*/
+function before_status($pager)
+{
+ $r[] =
+ array( "<b>"._("Quantity on hand before") . " " . $_POST['AfterDate']
+ .':'."</b>", "align='right' colspan=5");
+ if($pager->sum['beg']>=0) {
+ $r[] = array (number_format2($pager->sum['beg'], $pager->sum['dec']),
+ "align='right'");
+ $r[] = array(" ");
+ } else {
+ $r[] = array(" ");
+ $r[] = array (number_format2($pager->sum['beg'], $pager->sum['dec']),
+ "align='right'");
}
-//end of page full new headings if
+ return $r;
}
-//end of while loop
-
-// 2008-06-14. Always write this.
-//if ($total_in != 0 || $total_out != 0)
-//{
- start_row("class='inquirybg'");
- label_cell("<b>"._("Quantity on hand after") . " " . $_POST['BeforeDate']."</b>", "align=center colspan=5");
- qty_cell($total_in, false, $dec);
- qty_cell($total_out, false, $dec);
- qty_cell($after_qty, false, $dec);
- end_row();
-//}
-
-end_table(1);
-div_end();
-end_page();
+function after_status($pager)
+{
+ $r[] =
+ array( "<b>"._("Quantity on hand after") . " " . $_POST['BeforeDate']
+ .':'."</b>", "align='right' colspan=5");
+ if($pager->sum['end']>=0) {
+ $r[] = array (number_format2($pager->sum['end'], $pager->sum['dec']),
+ "align='right'");
+ $r[] = array(" ", "colspan=2");
+ } else {
+ $r[] = array(" ", "colspan=2");
+ $r[] = array (number_format2($pager->sum['end'], $pager->sum['dec']),
+ "align='right'");
+ }
+ return $r;
+}
+//-----------------------------------------------------------------------------
+
+$before_date = date2sql($_POST['BeforeDate']);
+$after_date = date2sql($_POST['AfterDate']);
+
+$sql = "SELECT
+ type,
+ trans_no,
+ reference,
+ tran_date,
+ person_id,
+ qty
+ FROM ".TB_PREF."stock_moves
+ WHERE loc_code='" . $_POST['StockLocation'] . "'
+ AND tran_date >= '". $after_date . "'
+ AND tran_date <= '" . $before_date . "'
+ AND stock_id = '" . $_POST['stock_id'] . "'";
+
+$cols = array(
+ _("Type") => array('fun'=>'systype_name' ),
+ _("#") => array('fun'=>'trans_view' ),
+ _("Reference"),
+ _("Date") => array('date', 'ord'=>'desc'),
+ _("Detail") => array('fun'=>'show_details' ),
+ _("Quantity In") => array('type'=>'amount', 'dec'=> $item_dec, 'insert'=>true,'fun'=>'qty_in' ),
+ _("Quantity Out") => array('type'=>'amount', 'dec'=> $item_dec,'insert'=>true,'fun'=>'qty_out' ),
+// _("Quantity On Hand") => array('insert'=>true,'type'=>'amount', 'fun'=>'show_qoh' )
+);
+
+$table =& new_db_pager('doc_tbl', $sql, $cols);
+$table->set_header('before_status');
+$table->set_footer('after_status');
+
+if (!$table->ready) // new sql query - update summary
+ get_summary(&$table);
+
+start_form();
+
+display_db_pager($table);
+
+end_form();
+end_page();
?>