<?php
-
+/**********************************************************************
+ Copyright (C) FrontAccounting, LLC.
+ Released under the terms of the GNU Affero General Public License,
+ AGPL, as published by the Free Software Foundation, either version
+ 3 of the License, or (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License here <http://www.gnu.org/licenses/agpl-3.0.html>.
+***********************************************************************/
$page_security = 2;
// ----------------------------------------------------------------
// $ Revision: 2.0 $
// date_: 2005-05-19
// Title: Inventory Planning
// ----------------------------------------------------------------
-$path_to_root="../";
+$path_to_root="..";
-include_once($path_to_root . "includes/session.inc");
-include_once($path_to_root . "includes/date_functions.inc");
-include_once($path_to_root . "includes/data_checks.inc");
-include_once($path_to_root . "gl/includes/gl_db.inc");
-include_once($path_to_root . "inventory/includes/db/items_category_db.inc");
+include_once($path_to_root . "/includes/session.inc");
+include_once($path_to_root . "/includes/date_functions.inc");
+include_once($path_to_root . "/includes/data_checks.inc");
+include_once($path_to_root . "/gl/includes/gl_db.inc");
+include_once($path_to_root . "/inventory/includes/db/items_category_db.inc");
//----------------------------------------------------------------------------------------------------
".TB_PREF."stock_category.description AS cat_description,
".TB_PREF."stock_master.stock_id,
".TB_PREF."stock_master.description,
- ".TB_PREF."stock_moves.loc_code,
- SUM(".TB_PREF."stock_moves.qty) AS qty_on_hand
- FROM ".TB_PREF."stock_master,
- ".TB_PREF."stock_category,
- ".TB_PREF."stock_moves
- WHERE ".TB_PREF."stock_master.stock_id=".TB_PREF."stock_moves.stock_id
- AND ".TB_PREF."stock_master.category_id=".TB_PREF."stock_category.category_id
+ IF(".TB_PREF."stock_moves.stock_id IS NULL, '', ".TB_PREF."stock_moves.loc_code) AS loc_code,
+ SUM(IF(".TB_PREF."stock_moves.stock_id IS NULL,0,".TB_PREF."stock_moves.qty)) AS qty_on_hand
+ FROM (".TB_PREF."stock_master,
+ ".TB_PREF."stock_category)
+ LEFT JOIN ".TB_PREF."stock_moves ON
+ (".TB_PREF."stock_master.stock_id=".TB_PREF."stock_moves.stock_id OR ".TB_PREF."stock_master.stock_id IS NULL)
+ WHERE ".TB_PREF."stock_master.category_id=".TB_PREF."stock_category.category_id
AND (".TB_PREF."stock_master.mb_flag='B' OR ".TB_PREF."stock_master.mb_flag='M')";
if ($category != 0)
$sql .= " AND ".TB_PREF."stock_master.category_id = '$category'";
if ($location != 'all')
$sql .= " AND ".TB_PREF."stock_moves.loc_code = '$location'";
$sql .= " GROUP BY ".TB_PREF."stock_master.category_id,
- ".TB_PREF."stock_master.description,
".TB_PREF."stock_category.description,
- ".TB_PREF."stock_moves.stock_id,
- ".TB_PREF."stock_master.stock_id
+ ".TB_PREF."stock_master.stock_id,
+ ".TB_PREF."stock_master.description
ORDER BY ".TB_PREF."stock_master.category_id,
".TB_PREF."stock_master.stock_id";
function getCustQty($stockid, $location)
{
- $sql = "SELECT SUM(".TB_PREF."sales_order_details.quantity - ".TB_PREF."sales_order_details.qty_invoiced) AS qty_demand
+ $sql = "SELECT SUM(".TB_PREF."sales_order_details.quantity - ".TB_PREF."sales_order_details.qty_sent) AS qty_demand
FROM ".TB_PREF."sales_order_details,
".TB_PREF."sales_orders
- WHERE ".TB_PREF."sales_order_details.order_no=".TB_PREF."sales_orders.order_no AND
- ".TB_PREF."sales_orders.from_stk_loc ='$location' AND
- ".TB_PREF."sales_order_details.stk_code = '$stockid'";
+ WHERE ".TB_PREF."sales_order_details.order_no=".TB_PREF."sales_orders.order_no AND ";
+ if ($location != "")
+ $sql .= TB_PREF."sales_orders.from_stk_loc ='$location' AND ";
+ $sql .= TB_PREF."sales_order_details.stk_code = '$stockid'";
$TransResult = db_query($sql,"No transactions were returned");
$DemandRow = db_fetch($TransResult);
function getCustAsmQty($stockid, $location)
{
- $sql = "SELECT SUM((".TB_PREF."sales_order_details.quantity-".TB_PREF."sales_order_details.qty_invoiced)*".TB_PREF."bom.quantity)
+ $sql = "SELECT SUM((".TB_PREF."sales_order_details.quantity-".TB_PREF."sales_order_details.qty_sent)*".TB_PREF."bom.quantity)
AS Dem
FROM ".TB_PREF."sales_order_details,
".TB_PREF."sales_orders,
".TB_PREF."bom,
".TB_PREF."stock_master
WHERE ".TB_PREF."sales_order_details.stk_code=".TB_PREF."bom.parent AND
- ".TB_PREF."sales_orders.order_no = ".TB_PREF."sales_order_details.order_no AND
- ".TB_PREF."sales_orders.from_stk_loc='$location' AND
- ".TB_PREF."sales_order_details.quantity-".TB_PREF."sales_order_details.qty_invoiced > 0 AND
+ ".TB_PREF."sales_orders.order_no = ".TB_PREF."sales_order_details.order_no AND ";
+ if ($location != "")
+ $sql .= TB_PREF."sales_orders.from_stk_loc ='$location' AND ";
+ $sql .= TB_PREF."sales_order_details.quantity-".TB_PREF."sales_order_details.qty_sent > 0 AND
".TB_PREF."bom.component='$stockid' AND
".TB_PREF."stock_master.stock_id=".TB_PREF."bom.parent AND
".TB_PREF."stock_master.mb_flag='A'";
FROM ".TB_PREF."purch_order_details,
".TB_PREF."purch_orders
WHERE ".TB_PREF."purch_order_details.order_no = ".TB_PREF."purch_orders.order_no
- AND ".TB_PREF."purch_order_details.item_code = '$stockid'
- AND ".TB_PREF."purch_orders.into_stock_location= '$location'";
+ AND ".TB_PREF."purch_order_details.item_code = '$stockid'";
+ if ($location != "")
+ $sql .= " AND ".TB_PREF."purch_orders.into_stock_location= '$location'";
$TransResult = db_query($sql,"No transactions were returned");
$DemandRow = db_fetch($TransResult);
FROM ".TB_PREF."stock_moves
WHERE stock_id='$stockid'
AND loc_code ='$location'
- AND (type=10 OR type=11)
+ AND (type=13 OR type=11)
AND visible=1";
$TransResult = db_query($sql,"No transactions were returned");
{
global $path_to_root;
- include_once($path_to_root . "reporting/includes/pdf_report.inc");
+ include_once($path_to_root . "/reporting/includes/pdf_report.inc");
$category = $_POST['PARAM_0'];
$location = $_POST['PARAM_1'];
$comments = $_POST['PARAM_2'];
-
- $dec = user_qty_dec();
if ($category == reserved_words::get_all_numeric())
$category = 0;
$cols = array(0, 50, 150, 180, 210, 240, 270, 300, 330, 390, 435, 480, 525);
- $per0 = strftime('%b',mktime(0,0,0,date('m'),date('d'),date('Y')));
- $per1 = strftime('%b',mktime(0,0,0,date('m')-1,date('d'),date('Y')));
- $per2 = strftime('%b',mktime(0,0,0,date('m')-2,date('d'),date('Y')));
- $per3 = strftime('%b',mktime(0,0,0,date('m')-3,date('d'),date('Y')));
- $per4 = strftime('%b',mktime(0,0,0,date('m')-4,date('d'),date('Y')));
+ $per0 = strftime('%b',mktime(0,0,0,date('m'),1,date('Y')));
+ $per1 = strftime('%b',mktime(0,0,0,date('m')-1,1,date('Y')));
+ $per2 = strftime('%b',mktime(0,0,0,date('m')-2,1,date('Y')));
+ $per3 = strftime('%b',mktime(0,0,0,date('m')-3,1,date('Y')));
+ $per4 = strftime('%b',mktime(0,0,0,date('m')-4,1,date('Y')));
- $headers = array(_('Category'), '', $per4, $per3, $per2, $per1, $per0, '3*M',
+ $headers = array(_('Category'), '', $per4, $per3, $per2, $per1, $per0, '3*M',
_('QOH'), _('Cust Ord'), _('Supp Ord'), _('Sugg Ord'));
$aligns = array('left', 'left', 'right', 'right', 'right', 'right', 'right', 'right',
$catt = $trans['cat_description'];
$rep->NewLine();
}
-
- $custqty = getCustQty($trans['stock_id'], $trans['loc_code']);
- $custqty += getCustAsmQty($trans['stock_id'], $trans['loc_code']);
- $suppqty = getSuppQty($trans['stock_id'], $trans['loc_code']);
+ if ($location == 'all')
+ $loc_code = "";
+ else
+ $loc_code = $trans['loc_code'];
+ $custqty = getCustQty($trans['stock_id'], $loc_code);
+ $custqty += getCustAsmQty($trans['stock_id'], $loc_code);
+ $suppqty = getSuppQty($trans['stock_id'], $loc_code);
$period = getPeriods($trans['stock_id'], $trans['loc_code']);
$rep->NewLine();
+ $dec = get_qty_dec($trans['stock_id']);
$rep->TextCol(0, 1, $trans['stock_id']);
$rep->TextCol(1, 2, $trans['description']);
$rep->TextCol(2, 3, number_format2($period['prd0'], $dec));
$rep->TextCol(4, 5, number_format2($period['prd2'], $dec));
$rep->TextCol(5, 6, number_format2($period['prd3'], $dec));
$rep->TextCol(6, 7, number_format2($period['prd4'], $dec));
-
+
$MaxMthSales = Max($period['prd0'], $period['prd1'], $period['prd2'], $period['prd3']);
$IdealStockHolding = $MaxMthSales * 3;
$rep->TextCol(7, 8, number_format2($IdealStockHolding, $dec));
-
+
$rep->TextCol(8, 9, number_format2($trans['qty_on_hand'], $dec));
$rep->TextCol(9, 10, number_format2($custqty, $dec));
$rep->TextCol(10, 11, number_format2($suppqty, $dec));
-
+
$SuggestedTopUpOrder = $IdealStockHolding - $trans['qty_on_hand'] + $custqty - $suppqty;
if ($SuggestedTopUpOrder < 0.0)
- $SuggestedTopUpOrder = 0.0;
+ $SuggestedTopUpOrder = 0.0;
$rep->TextCol(11, 12, number_format2($SuggestedTopUpOrder, $dec));
}
$rep->Line($rep->row - 4);