2 /**********************************************************************
3 Copyright (C) FrontAccounting, LLC.
4 Released under the terms of the GNU General Public License, GPL,
5 as published by the Free Software Foundation, either version 3
6 of the License, or (at your option) any later version.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 $page_security = 'SA_ITEMSTRANSVIEW';
13 $path_to_root = "../..";
14 include_once($path_to_root . "/includes/session.inc");
16 include_once($path_to_root . "/includes/date_functions.inc");
17 include_once($path_to_root . "/includes/banking.inc");
18 include_once($path_to_root . "/sales/includes/sales_db.inc");
20 include_once($path_to_root . "/includes/ui.inc");
22 if ($use_popup_windows)
23 $js .= get_js_open_window(800, 500);
24 if (user_use_date_picker())
25 $js .= get_js_date_picker();
26 page(_($help_context = "Inventory Item Movement"), @$_GET['popup'], false, "", $js);
27 //------------------------------------------------------------------------------------------------
29 check_db_has_stock_items(_("There are no items defined in the system."));
31 if(get_post('ShowMoves'))
33 $Ajax->activate('doc_tbl');
36 if (isset($_GET['stock_id']))
38 $_POST['stock_id'] = $_GET['stock_id'];
43 if (!isset($_POST['stock_id']))
44 $_POST['stock_id'] = get_global_stock_item();
46 start_table(TABLESTYLE_NOBORDER);
49 stock_costable_items_list_cells(_("Item:"), 'stock_id', $_POST['stock_id']);
53 start_table(TABLESTYLE_NOBORDER);
56 locations_list_cells(_("From Location:"), 'StockLocation', null, true);
58 date_cells(_("From:"), 'AfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
59 date_cells(_("To:"), 'BeforeDate');
61 submit_cells('ShowMoves',_("Show Movements"),'',_('Refresh Inquiry'), 'default');
67 set_global_stock_item($_POST['stock_id']);
69 $before_date = date2sql($_POST['BeforeDate']);
70 $after_date = date2sql($_POST['AfterDate']);
71 $display_location = !$_POST['StockLocation'];
73 $result = get_stock_movements($_POST['stock_id'], $_POST['StockLocation'],
74 $_POST['BeforeDate'], $_POST['AfterDate']);
77 start_table(TABLESTYLE);
78 $th = array(_("Type"), _("#"), _("Reference"));
79 if($display_location) array_push($th, _("Location"));
80 array_push($th, _("Date"), _("Detail"), _("Quantity In"), _("Quantity Out"), _("Quantity On Hand"));
85 $before_qty = get_stock_movements_before($_POST['stock_id'], $_POST['StockLocation'], $_POST['AfterDate']);
87 $after_qty = $before_qty;
90 if (!isset($before_qty_row[0]))
92 $after_qty = $before_qty = 0;
95 start_row("class='inquirybg'");
96 $header_span = $display_location ? 6 : 5;
97 label_cell("<b>"._("Quantity on hand before") . " " . $_POST['AfterDate']."</b>", "align=center colspan=$header_span");
98 label_cell(" ", "colspan=2");
99 $dec = get_qty_dec($_POST['stock_id']);
100 qty_cell($before_qty, false, $dec);
104 $k = 0; //row colour counter
109 while ($myrow = db_fetch($result))
112 alt_table_row_color($k);
114 $trandate = sql2date($myrow["tran_date"]);
116 $type_name = $systypes_array[$myrow["type"]];
118 if ($myrow["qty"] > 0)
120 $quantity_formatted = number_format2($myrow["qty"], $dec);
121 $total_in += $myrow["qty"];
125 $quantity_formatted = number_format2(-$myrow["qty"], $dec);
126 $total_out += -$myrow["qty"];
128 $after_qty += $myrow["qty"];
130 label_cell($type_name);
132 label_cell(get_trans_view_str($myrow["type"], $myrow["trans_no"]));
134 label_cell(get_trans_view_str($myrow["type"], $myrow["trans_no"], $myrow["reference"]));
135 if($display_location) {
136 label_cell($myrow['loc_code']);
138 label_cell($trandate);
140 $person = $myrow["person_id"];
143 if (($myrow["type"] == ST_CUSTDELIVERY) || ($myrow["type"] == ST_CUSTCREDIT))
145 $cust_row = get_customer_details_from_trans($myrow["type"], $myrow["trans_no"]);
147 if (strlen($cust_row['name']) > 0)
148 $person = $cust_row['name'] . " (" . $cust_row['br_name'] . ")";
151 elseif ($myrow["type"] == ST_SUPPRECEIVE || $myrow['type'] == ST_SUPPCREDIT)
153 // get the supplier name
154 $supp_name = get_supplier_name($myrow["person_id"]);
156 if (strlen($supp_name) > 0)
157 $person = $supp_name;
159 elseif ($myrow["type"] == ST_LOCTRANSFER || $myrow["type"] == ST_INVADJUST)
161 // get the adjustment type
162 $movement_type = get_movement_type($myrow["person_id"]);
163 $person = $movement_type["name"];
165 elseif ($myrow["type"]==ST_WORKORDER || $myrow["type"] == ST_MANUISSUE ||
166 $myrow["type"] == ST_MANURECEIVE)
173 label_cell((($myrow["qty"] >= 0) ? $quantity_formatted : ""), "nowrap align=right");
174 label_cell((($myrow["qty"] < 0) ? $quantity_formatted : ""), "nowrap align=right");
175 qty_cell($after_qty, false, $dec);
183 //end of page full new headings if
187 start_row("class='inquirybg'");
188 label_cell("<b>"._("Quantity on hand after") . " " . $_POST['BeforeDate']."</b>", "align=center colspan=$header_span");
189 qty_cell($total_in, false, $dec);
190 qty_cell($total_out, false, $dec);
191 qty_cell($after_qty, false, $dec);