Bug [0000052] Inventory Valuation Report
[fa-stable.git] / reporting / rep301.php
1 <?php
2
3 $page_security = 2;
4 // ----------------------------------------------------------------
5 // $ Revision:  2.0 $
6 // Creator:     Joe Hunt
7 // date_:       2005-05-19
8 // Title:       Supplier Balances
9 // ----------------------------------------------------------------
10 $path_to_root="../";
11
12 include_once($path_to_root . "includes/session.inc");
13 include_once($path_to_root . "includes/date_functions.inc");
14 include_once($path_to_root . "includes/data_checks.inc");
15 include_once($path_to_root . "gl/includes/gl_db.inc");
16 include_once($path_to_root . "inventory/includes/db/items_category_db.inc");
17
18 //----------------------------------------------------------------------------------------------------
19
20 // trial_inquiry_controls();
21 print_inventory_valuation_report();
22
23 function getTransactions($category, $location)
24 {
25         $sql = "SELECT ".TB_PREF."stock_master.category_id,
26                         ".TB_PREF."stock_category.description AS cat_description,
27                         ".TB_PREF."stock_master.stock_id,
28                         ".TB_PREF."stock_master.description,
29                         ".TB_PREF."stock_moves.loc_code,
30                         SUM(".TB_PREF."stock_moves.qty) AS QtyOnHand,
31                         ".TB_PREF."stock_master.material_cost + ".TB_PREF."stock_master.labour_cost + ".TB_PREF."stock_master.overhead_cost AS UnitCost,
32                         SUM(".TB_PREF."stock_moves.qty) *(".TB_PREF."stock_master.material_cost + ".TB_PREF."stock_master.labour_cost + ".TB_PREF."stock_master.overhead_cost) AS ItemTotal
33                 FROM ".TB_PREF."stock_master,
34                         ".TB_PREF."stock_category,
35                         ".TB_PREF."stock_moves
36                 WHERE ".TB_PREF."stock_master.stock_id=".TB_PREF."stock_moves.stock_id
37                 AND ".TB_PREF."stock_master.category_id=".TB_PREF."stock_category.category_id
38                 GROUP BY ".TB_PREF."stock_master.category_id,
39                         ".TB_PREF."stock_category.description,
40                         ".TB_PREF."stock_moves.loc_code,
41                         UnitCost,
42                         ".TB_PREF."stock_master.stock_id,
43                         ".TB_PREF."stock_master.description
44                 HAVING SUM(".TB_PREF."stock_moves.qty) != 0";
45                 if ($category != 0)
46                         $sql .= " AND ".TB_PREF."stock_master.category_id = '$category'";
47                 if ($location != 'all')
48                         $sql .= " AND ".TB_PREF."stock_moves.loc_code = '$location'";
49                 $sql .= " ORDER BY ".TB_PREF."stock_master.category_id,
50                         ".TB_PREF."stock_master.stock_id";
51
52     return db_query($sql,"No transactions were returned");
53 }
54
55 //----------------------------------------------------------------------------------------------------
56
57 function print_inventory_valuation_report()
58 {
59     global $path_to_root;
60
61     include_once($path_to_root . "reporting/includes/pdf_report.inc");
62
63     $category = $_POST['PARAM_0'];
64     $location = $_POST['PARAM_1'];
65     $detail = $_POST['PARAM_2'];
66     $comments = $_POST['PARAM_3'];
67
68     $dec = user_price_dec();
69
70         if ($category == reserved_words::get_all_numeric())
71                 $category = 0;
72         if ($category == 0)
73                 $cat = _('All');
74         else
75                 $cat = get_category_name($category);
76
77         if ($location == reserved_words::get_all())
78                 $location = 'all';
79         if ($location == 'all')
80                 $loc = _('All');
81         else
82                 $loc = $location;
83
84         $cols = array(0, 100, 250, 350, 450,    515);
85
86         $headers = array(_('Category'), '', _('Quantity'), _('Unit Cost'), _('Value'));
87
88         $aligns = array('left', 'left', 'right', 'right', 'right');
89
90     $params =   array(  0 => $comments,
91                                     1 => array('text' => _('Category'), 'from' => $cat, 'to' => ''),
92                                     2 => array('text' => _('Location'), 'from' => $loc, 'to' => ''));
93
94     $rep = new FrontReport(_('Inventory Valuation Report'), "InventoryValReport.pdf", user_pagesize());
95
96     $rep->Font();
97     $rep->Info($params, $cols, $headers, $aligns);
98     $rep->Header();
99
100         $res = getTransactions($category, $location);
101         $total = $grandtotal = 0.0;
102         $catt = '';
103         while ($trans=db_fetch($res))
104         {
105                 if ($catt != $trans['cat_description'])
106                 {
107                         if ($catt != '')
108                         {
109                                 if ($detail)
110                                 {
111                                         $rep->NewLine(2, 3);
112                                         $rep->TextCol(0, 4, _('Total'));
113                                 }
114                                 $rep->Textcol(4, 5, number_format2($total, $dec));
115                                 if ($detail)
116                                 {
117                                         $rep->Line($rep->row - 2);
118                                         $rep->NewLine();
119                                 }
120                                 $rep->NewLine();
121                                 $total = 0.0;
122                         }
123                         $rep->TextCol(0, 1, $trans['category_id']);
124                         $rep->TextCol(1, 2, $trans['cat_description']);
125                         $catt = $trans['cat_description'];
126                         if ($detail)
127                                 $rep->NewLine();
128                 }
129                 if ($detail)
130                 {
131                         $rep->NewLine();
132                         $rep->fontsize -= 2;
133                         $rep->TextCol(0, 1, $trans['stock_id']);
134                         $rep->TextCol(1, 2, $trans['description']);
135                         $rep->TextCol(2, 3, number_format2($trans['QtyOnHand'], get_qty_dec($trans['stock_id'])));
136                         $rep->TextCol(3, 4, number_format2($trans['UnitCost'], $dec));
137                         $rep->TextCol(4, 5, number_format2($trans['ItemTotal'], $dec));
138                         $rep->fontsize += 2;
139                 }
140                 $total += $trans['ItemTotal'];
141                 $grandtotal += $trans['ItemTotal'];
142         }
143         if ($detail)
144         {
145                 $rep->NewLine(2, 3);
146                 $rep->TextCol(0, 4, _('Total'));
147         }
148         $rep->Textcol(4, 5, number_format2($total, $dec));
149         if ($detail)
150         {
151                 $rep->Line($rep->row - 2);
152                 $rep->NewLine();
153         }
154         $rep->NewLine(2, 1);
155         $rep->TextCol(0, 4, _('Grand Total'));
156         $rep->TextCol(4, 5, number_format2($grandtotal, $dec));
157         $rep->Line($rep->row  - 4);
158     $rep->End();
159 }
160
161 ?>