Removed stock_move.person_id references from stock movements inquiry.
[fa-stable.git] / inventory / includes / inventory_db.inc
1 <?php
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 include_once($path_to_root . "/includes/date_functions.inc");
13 include_once($path_to_root . "/includes/banking.inc");
14 include_once($path_to_root . "/includes/inventory.inc");
15
16 include_once($path_to_root . "/inventory/includes/db/items_category_db.inc");
17 include_once($path_to_root . "/inventory/includes/db/items_trans_db.inc");
18 include_once($path_to_root . "/inventory/includes/db/items_prices_db.inc");
19 include_once($path_to_root . "/inventory/includes/db/items_purchases_db.inc");
20 include_once($path_to_root . "/inventory/includes/db/items_codes_db.inc");
21 include_once($path_to_root . "/inventory/includes/db/items_db.inc");
22 include_once($path_to_root . "/inventory/includes/db/items_locations_db.inc");
23 include_once($path_to_root . "/inventory/includes/db/movement_types_db.inc");
24 include_once($path_to_root . "/inventory/includes/db/items_adjust_db.inc");
25 include_once($path_to_root . "/inventory/includes/db/items_transfer_db.inc");
26 include_once($path_to_root . "/inventory/includes/db/items_units_db.inc");
27
28 function item_img_name($stock_id)
29 {
30         $stock_id = strtr($stock_id, "><\\/:|*?", '________');
31         return clean_file_name($stock_id);
32 }
33
34 function get_stock_movements($stock_id, $StockLocation, $BeforeDate, $AfterDate)
35 {
36         $before_date = date2sql($BeforeDate);
37         $after_date = date2sql($AfterDate);
38   $sql = "SELECT move.*, IF(ISNULL(supplier.supplier_id), debtor.name, supplier.supp_name) name";
39
40         if(!$StockLocation) {
41                  $sql .= ", move.loc_code";
42         }
43   $sql.=    " FROM ".TB_PREF."stock_moves move
44                                 LEFT JOIN ".TB_PREF."supp_trans credit ON credit.trans_no=move.trans_no AND credit.type=move.type
45                                 LEFT JOIN ".TB_PREF."grn_batch grn ON grn.id=move.trans_no AND 25=move.type
46                                 LEFT JOIN ".TB_PREF."suppliers supplier ON IFNULL(grn.supplier_id, credit.supplier_id)=supplier.supplier_id
47                                 LEFT JOIN ".TB_PREF."debtor_trans cust_trans ON cust_trans.trans_no=move.trans_no AND cust_trans.type=move.type
48                                 LEFT JOIN ".TB_PREF."debtors_master debtor ON cust_trans.debtor_no=debtor.debtor_no
49                 WHERE";
50
51   if ($StockLocation) {
52     $sql.= " move.loc_code=".db_escape($StockLocation)." AND";
53         }
54
55         $sql.= " move.tran_date >= '". $after_date . "'
56         AND move.tran_date <= '" . $before_date . "'
57         AND move.stock_id = ".db_escape($stock_id) . " ORDER BY move.tran_date, move.trans_id";
58
59   return db_query($sql, "could not query stock moves");
60 }
61
62 function calculate_reorder_level($location, $line, &$st_ids, &$st_names, &$st_num, &$st_reorder)
63 {
64         $sql = "SELECT ".TB_PREF."loc_stock.*, ".TB_PREF."locations.location_name, ".TB_PREF."locations.email
65                 FROM ".TB_PREF."loc_stock, ".TB_PREF."locations
66                 WHERE ".TB_PREF."loc_stock.loc_code=".TB_PREF."locations.loc_code
67                 AND ".TB_PREF."loc_stock.stock_id = '" . $line->stock_id . "'
68                 AND ".TB_PREF."loc_stock.loc_code = '" . $location . "'";
69         $res = db_query($sql,"a location could not be retreived");
70         $loc = db_fetch($res);
71         if ($loc['email'] != "")
72         {
73                 $qoh = get_qoh_on_date($line->stock_id, $location);
74                 $qoh -= get_demand_qty($line->stock_id, $location);
75                 $qoh -= get_demand_asm_qty($line->stock_id, $location);
76                 $qoh -= $line->quantity;
77                 if ($qoh < $loc['reorder_level'])
78                 {
79                         $st_ids[] = $line->stock_id;
80                         $st_names[] = $line->item_description;
81                         $st_num[] = $qoh - $loc['reorder_level'];
82                         $st_reorder[] = $loc['reorder_level'];
83                 }
84         }
85         return $loc;
86 }
87
88 function send_reorder_email($loc, $st_ids, $st_names, $st_num, $st_reorder)
89 {
90         global $path_to_root;
91         
92         require_once($path_to_root . "/reporting/includes/class.mail.inc");
93         $company = get_company_prefs();
94         $mail = new email($company['coy_name'], $company['email']);
95         $from = $company['coy_name'] . " <" . $company['email'] . ">";
96         $to = $loc['location_name'] . " <" . $loc['email'] . ">";
97         $subject = _("Stocks below Re-Order Level at " . $loc['location_name']);
98         $msg = "\n";
99         for ($i = 0; $i < count($st_ids); $i++)
100                 $msg .= $st_ids[$i] . " " . $st_names[$i] . ", " . _("Re-Order Level") . ": " . $st_reorder[$i] . ", " . _("Below") . ": " . $st_num[$i] . "\n";
101         $msg .= "\n" . _("Please reorder") . "\n\n";
102         $msg .= $company['coy_name'];
103         $mail->to($to);
104         $mail->subject($subject);
105         $mail->text($msg);
106         return $mail->send();
107 }