From: Janusz Dobrowolski Date: Sun, 16 Nov 2008 19:38:56 +0000 (+0000) Subject: Rewritten for paged query results. X-Git-Tag: v2.4.2~19^2~1746 X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=commitdiff_plain;h=b01b60d801cb6b3ac0a8c68e955dbc807f7100f9;p=fa-stable.git Rewritten for paged query results. --- diff --git a/inventory/inquiry/stock_movements.php b/inventory/inquiry/stock_movements.php index e8591e8f..be481b3f 100644 --- a/inventory/inquiry/stock_movements.php +++ b/inventory/inquiry/stock_movements.php @@ -3,6 +3,7 @@ $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"); @@ -18,14 +19,9 @@ if ($use_date_picker) 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']; @@ -50,96 +46,67 @@ end_table(); 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(""._("Quantity on hand before") . " " . $_POST['AfterDate']."", "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); @@ -147,47 +114,115 @@ while ($myrow = db_fetch($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( ""._("Quantity on hand before") . " " . $_POST['AfterDate'] + .':'."", "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(""._("Quantity on hand after") . " " . $_POST['BeforeDate']."", "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( ""._("Quantity on hand after") . " " . $_POST['BeforeDate'] + .':'."", "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(); ?>