HTML cleanup in fiscal years selector helper.
[fa-stable.git] / reporting / rep303.php
index 25b7a68ca589dd9a1462cc6e5302e253dc895847..e12e5f0f430bdafdaace4fd4f9255a23fbefba81 100644 (file)
@@ -1,12 +1,12 @@
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
-       Released under the terms of the GNU General Public License, GPL, 
-       as published by the Free Software Foundation, either version 3 
+       Released under the terms of the GNU General Public License, GPL,
+       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
        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.  
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 $page_security = 'SA_ITEMSVALREP';
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 $page_security = 'SA_ITEMSVALREP';
@@ -29,24 +29,34 @@ include_once($path_to_root . "/includes/db/manufacturing_db.inc");
 
 print_stock_check();
 
 
 print_stock_check();
 
-function getTransactions($category, $location)
+function getTransactions($category, $location, $item_like)
 {
        $sql = "SELECT ".TB_PREF."stock_master.category_id,
                        ".TB_PREF."stock_category.description AS cat_description,
                        ".TB_PREF."stock_master.stock_id,
 {
        $sql = "SELECT ".TB_PREF."stock_master.category_id,
                        ".TB_PREF."stock_category.description AS cat_description,
                        ".TB_PREF."stock_master.stock_id,
-                       ".TB_PREF."stock_master.description,
+                       ".TB_PREF."stock_master.units,
+                       ".TB_PREF."stock_master.description, ".TB_PREF."stock_master.inactive,
                        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 QtyOnHand
                FROM (".TB_PREF."stock_master,
                        ".TB_PREF."stock_category)
                LEFT JOIN ".TB_PREF."stock_moves ON
                        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 QtyOnHand
                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)
+                       (".TB_PREF."stock_master.stock_id=".TB_PREF."stock_moves.stock_id)
                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 = ".db_escape($category);
        if ($location != 'all')
                $sql .= " AND IF(".TB_PREF."stock_moves.stock_id IS NULL, '1=1',".TB_PREF."stock_moves.loc_code = ".db_escape($location).")";
                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 = ".db_escape($category);
        if ($location != 'all')
                $sql .= " AND IF(".TB_PREF."stock_moves.stock_id IS NULL, '1=1',".TB_PREF."stock_moves.loc_code = ".db_escape($location).")";
+  if($item_like)
+  {
+    $regexp = null;
+
+    if(sscanf($item_like, "/%s", $regexp)==1)
+      $sql .= " AND ".TB_PREF."stock_master.stock_id RLIKE ".db_escape($regexp);
+    else
+      $sql .= " AND ".TB_PREF."stock_master.stock_id LIKE ".db_escape($item_like);
+  }
        $sql .= " GROUP BY ".TB_PREF."stock_master.category_id,
                ".TB_PREF."stock_category.description,
                ".TB_PREF."stock_master.stock_id,
        $sql .= " GROUP BY ".TB_PREF."stock_master.category_id,
                ".TB_PREF."stock_category.description,
                ".TB_PREF."stock_master.stock_id,
@@ -61,20 +71,25 @@ function getTransactions($category, $location)
 
 function print_stock_check()
 {
 
 function print_stock_check()
 {
-    global $comp_path, $path_to_root, $pic_height, $pic_width;
-
-    $category = $_POST['PARAM_0'];
-    $location = $_POST['PARAM_1'];
-    $pictures = $_POST['PARAM_2'];
-    $check    = $_POST['PARAM_3'];
-    $shortage = $_POST['PARAM_4'];
-    $comments = $_POST['PARAM_5'];
-       $destination = $_POST['PARAM_6'];
+    global $path_to_root, $pic_height;
+
+       $category = $_POST['PARAM_0'];
+       $location = $_POST['PARAM_1'];
+       $pictures = $_POST['PARAM_2'];
+       $check    = $_POST['PARAM_3'];
+       $shortage = $_POST['PARAM_4'];
+       $no_zeros = $_POST['PARAM_5'];
+       $like     = $_POST['PARAM_6']; 
+       $comments = $_POST['PARAM_7'];
+       $orientation = $_POST['PARAM_8'];
+       $destination = $_POST['PARAM_9'];
+
        if ($destination)
                include_once($path_to_root . "/reporting/includes/excel_report.inc");
        else
                include_once($path_to_root . "/reporting/includes/pdf_report.inc");
 
        if ($destination)
                include_once($path_to_root . "/reporting/includes/excel_report.inc");
        else
                include_once($path_to_root . "/reporting/includes/pdf_report.inc");
 
+       $orientation = ($orientation ? 'L' : 'P');
        if ($category == ALL_NUMERIC)
                $category = 0;
        if ($category == 0)
        if ($category == ALL_NUMERIC)
                $category = 0;
        if ($category == 0)
@@ -87,48 +102,53 @@ function print_stock_check()
        if ($location == 'all')
                $loc = _('All');
        else
        if ($location == 'all')
                $loc = _('All');
        else
-               $loc = $location;
+               $loc = get_location_name($location);
        if ($shortage)
        {
                $short = _('Yes');
                $available = _('Shortage');
        if ($shortage)
        {
                $short = _('Yes');
                $available = _('Shortage');
-       }       
+       }
        else
        {
                $short = _('No');
                $available = _('Available');
        else
        {
                $short = _('No');
                $available = _('Available');
-       }       
+       }
+       if ($no_zeros) $nozeros = _('Yes');
+       else $nozeros = _('No');
        if ($check)
        {
        if ($check)
        {
-               $cols = array(0, 100, 250, 295, 345, 390, 445,  515);
-               $headers = array(_('Stock ID'), _('Description'), _('Quantity'), _('Check'), _('Demand'), $available, _('On Order'));
-               $aligns = array('left', 'left', 'right', 'right', 'right', 'right', 'right');
+               $cols = array(0, 75, 225, 250, 295, 345, 390, 445,      515);
+               $headers = array(_('Stock ID'), _('Description'), _('UOM'), _('Quantity'), _('Check'), _('Demand'), $available, _('On Order'));
+               $aligns = array('left', 'left', 'left', 'right', 'right', 'right', 'right', 'right');
        }
        else
        {
        }
        else
        {
-               $cols = array(0, 100, 250, 315, 380, 445,       515);
-               $headers = array(_('Stock ID'), _('Description'), _('Quantity'), _('Demand'), $available, _('On Order'));
-               $aligns = array('left', 'left', 'right', 'right', 'right', 'right');
+               $cols = array(0, 75, 225, 250, 315, 380, 445,   515);
+               $headers = array(_('Stock ID'), _('Description'), _('UOM'), _('Quantity'), _('Demand'), $available, _('On Order'));
+               $aligns = array('left', 'left', 'left', 'right', 'right', 'right', 'right');
        }
 
 
        }
 
 
-    $params =   array(         0 => $comments,
-                                   1 => array('text' => _('Category'), 'from' => $cat, 'to' => ''),
-                                   2 => array('text' => _('Location'), 'from' => $loc, 'to' => ''),
-                                   3 => array('text' => _('Only Shortage'), 'from' => $short, 'to' => ''));
+       $params =   array(      0 => $comments,
+                               1 => array('text' => _('Category'), 'from' => $cat, 'to' => ''),
+                               2 => array('text' => _('Location'), 'from' => $loc, 'to' => ''),
+                               3 => array('text' => _('Only Shortage'), 'from' => $short, 'to' => ''),
+                               4 => array('text' => _('Suppress Zeros'), 'from' => $nozeros, 'to' => ''));
 
        if ($pictures)
                $user_comp = user_company();
        else
                $user_comp = "";
 
 
        if ($pictures)
                $user_comp = user_company();
        else
                $user_comp = "";
 
-    $rep = new FrontReport(_('Stock Check Sheets'), "StockCheckSheet", user_pagesize());
+       $rep = new FrontReport(_('Stock Check Sheets'), "StockCheckSheet", user_pagesize(), 9, $orientation);
+    if ($orientation == 'L')
+       recalculate_cols($cols);
 
     $rep->Font();
     $rep->Info($params, $cols, $headers, $aligns);
 
     $rep->Font();
     $rep->Info($params, $cols, $headers, $aligns);
-    $rep->Header();
+    $rep->NewPage();
 
 
-       $res = getTransactions($category, $location);
+       $res = getTransactions($category, $location, $like);
        $catt = '';
        while ($trans=db_fetch($res))
        {
        $catt = '';
        while ($trans=db_fetch($res))
        {
@@ -139,7 +159,11 @@ function print_stock_check()
                $demandqty = get_demand_qty($trans['stock_id'], $loc_code);
                $demandqty += get_demand_asm_qty($trans['stock_id'], $loc_code);
                $onorder = get_on_porder_qty($trans['stock_id'], $loc_code);
                $demandqty = get_demand_qty($trans['stock_id'], $loc_code);
                $demandqty += get_demand_asm_qty($trans['stock_id'], $loc_code);
                $onorder = get_on_porder_qty($trans['stock_id'], $loc_code);
-               $onorder += get_on_worder_qty($trans['stock_id'], $loc_code);
+               $flag = get_mb_flag($trans['stock_id']);
+               if ($flag == 'M')
+                       $onorder += get_on_worder_qty($trans['stock_id'], $loc_code);
+               if ($no_zeros && $trans['QtyOnHand'] == 0 && $demandqty == 0 && $onorder == 0)
+                       continue;
                if ($shortage && $trans['QtyOnHand'] - $demandqty >= 0)
                        continue;
                if ($catt != $trans['cat_description'])
                if ($shortage && $trans['QtyOnHand'] - $demandqty >= 0)
                        continue;
                if ($catt != $trans['cat_description'])
@@ -157,30 +181,31 @@ function print_stock_check()
                $rep->NewLine();
                $dec = get_qty_dec($trans['stock_id']);
                $rep->TextCol(0, 1, $trans['stock_id']);
                $rep->NewLine();
                $dec = get_qty_dec($trans['stock_id']);
                $rep->TextCol(0, 1, $trans['stock_id']);
-               $rep->TextCol(1, 2, $trans['description']);
-               $rep->AmountCol(2, 3, $trans['QtyOnHand'], $dec);
+               $rep->TextCol(1, 2, $trans['description'].($trans['inactive']==1 ? " ("._("Inactive").")" : ""), -1);
+               $rep->TextCol(2, 3, $trans['units']);
+               $rep->AmountCol(3, 4, $trans['QtyOnHand'], $dec);
                if ($check)
                {
                if ($check)
                {
-                       $rep->TextCol(3, 4, "_________");
-                       $rep->AmountCol(4, 5, $demandqty, $dec);
-                       $rep->AmountCol(5, 6, $trans['QtyOnHand'] - $demandqty, $dec);
-                       $rep->AmountCol(6, 7, $onorder, $dec);
+                       $rep->TextCol(4, 5, "_________");
+                       $rep->AmountCol(5, 6, $demandqty, $dec);
+                       $rep->AmountCol(6, 7, $trans['QtyOnHand'] - $demandqty, $dec);
+                       $rep->AmountCol(7, 8, $onorder, $dec);
                }
                else
                {
                }
                else
                {
-                       $rep->AmountCol(3, 4, $demandqty, $dec);
-                       $rep->AmountCol(4, 5, $trans['QtyOnHand'] - $demandqty, $dec);
-                       $rep->AmountCol(5, 6, $onorder, $dec);
+                       $rep->AmountCol(4, 5, $demandqty, $dec);
+                       $rep->AmountCol(5, 6, $trans['QtyOnHand'] - $demandqty, $dec);
+                       $rep->AmountCol(6, 7, $onorder, $dec);
                }
                if ($pictures)
                {
                }
                if ($pictures)
                {
-                       $image = $comp_path .'/'. $user_comp . '/images/' 
+                       $image = company_path() . '/images/'
                                . item_img_name($trans['stock_id']) . '.jpg';
                        if (file_exists($image))
                        {
                                $rep->NewLine();
                                if ($rep->row - $pic_height < $rep->bottomMargin)
                                . item_img_name($trans['stock_id']) . '.jpg';
                        if (file_exists($image))
                        {
                                $rep->NewLine();
                                if ($rep->row - $pic_height < $rep->bottomMargin)
-                                       $rep->Header();
+                                       $rep->NewPage();
                                $rep->AddImage($image, $rep->cols[1], $rep->row - $pic_height, 0, $pic_height);
                                $rep->row -= $pic_height;
                                $rep->NewLine();
                                $rep->AddImage($image, $rep->cols[1], $rep->row - $pic_height, 0, $pic_height);
                                $rep->row -= $pic_height;
                                $rep->NewLine();