Merged changes from master branch up to current state.
[fa-stable.git] / inventory / includes / db / items_adjust_db.inc
index c824e003b7657063abe207f408614c7d59fe04a9..205b782e700f67a58b55a8ccb493cdaa325488aa 100644 (file)
@@ -1,28 +1,58 @@
 <?php
-
-//-------------------------------------------------------------------------------------------------------------
-
-function add_stock_adjustment($items, $location, $date_, $type, $increase, $reference, $memo_)
+/**********************************************************************
+    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 
+       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/gpl-3.0.html>.
+***********************************************************************/
+
+function add_stock_adjustment($items, $location, $date_, $reference, $memo_)
 {
+       global $SysPrefs, $path_to_root, $Refs;
+
        begin_transaction();
+       $args = func_get_args();
+       $args = (object)array_combine(array('items', 'location', 'date_', 'reference', 'memo_'), $args);
+       $args->trans_no = 0;
+       hook_db_prewrite($args, ST_INVADJUST);
 
-       $adj_id = get_next_trans_no(systypes::inventory_adjustment());
+       $adj_id = get_next_trans_no(ST_INVADJUST);
 
+       if ($SysPrefs->loc_notification() == 1)
+       {
+               include_once($path_to_root . "/inventory/includes/inventory_db.inc");
+               $st_ids = array();
+               $st_names = array();
+               $st_num = array();
+               $st_reorder = array();
+       }
        foreach ($items as $line_item)
        {
 
-               if (!$increase)
-                       $line_item->quantity = -$line_item->quantity;
+               if ($SysPrefs->loc_notification() == 1 && $line_item->qty < 0)
+               {
+                       $chg = $line; $chg->qty = -$chg->qty;   // calculate_reorder_level expect positive qty
+                       $loc = calculate_reorder_level($location, $line_item, $st_ids, $st_names, $st_num, $st_reorder); 
+               }
 
-               add_stock_adjustment_item($adj_id, $line_item->stock_id, $location, $date_, $type, $reference,
+               add_stock_adjustment_item($adj_id, $line_item->stock_id, $location, $date_, $reference,
                        $line_item->quantity, $line_item->standard_cost, $memo_);
        }
 
-       add_comments(systypes::inventory_adjustment(), $adj_id, $date_, $memo_);
+       add_comments(ST_INVADJUST, $adj_id, $date_, $memo_);
 
-       references::save_last($reference, systypes::inventory_adjustment());
+       $Refs->save(ST_INVADJUST, $adj_id, $reference);
+       add_audit_trail(ST_INVADJUST, $adj_id, $date_);
 
+       $args->trans_no = $adj_id;
+       hook_db_postwrite($args, ST_INVADJUST);
        commit_transaction();
+       if ($SysPrefs->loc_notification() == 1 && count($st_ids) > 0)
+               send_reorder_email($loc, $st_ids, $st_names, $st_num, $st_reorder);
 
        return $adj_id;
 }
@@ -31,15 +61,16 @@ function add_stock_adjustment($items, $location, $date_, $type, $increase, $refe
 
 function void_stock_adjustment($type_no)
 {
-       void_gl_trans(systypes::inventory_adjustment(), $type_no);
-       void_stock_move(systypes::inventory_adjustment(), $type_no);
+       hook_db_prevoid(ST_INVADJUST, $type_no);
+       void_gl_trans(ST_INVADJUST, $type_no);
+       void_stock_move(ST_INVADJUST, $type_no);
 }
 
 //-------------------------------------------------------------------------------------------------------------
 
 function get_stock_adjustment_items($trans_no)
 {
-       $result = get_stock_moves(systypes::inventory_adjustment(), $trans_no);
+       $result = get_stock_moves(ST_INVADJUST, $trans_no);
 
        if (db_num_rows($result) == 0)
        {
@@ -51,7 +82,7 @@ function get_stock_adjustment_items($trans_no)
 
 //--------------------------------------------------------------------------------------------------
 
-function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $type, $reference,
+function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $reference,
        $quantity, $standard_cost, $memo_)
 {
        $mb_flag = get_mb_flag($stock_id);
@@ -63,21 +94,17 @@ function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $type,
 
        update_average_material_cost(null, $stock_id, $standard_cost, $quantity, $date_);
 
-       add_stock_move(systypes::inventory_adjustment(), $stock_id, $adj_id, $location,
-        $date_, $reference, $quantity, $standard_cost, $type);
+       add_stock_move(ST_INVADJUST, $stock_id, $adj_id, $location,
+        $date_, $reference, $quantity, $standard_cost);
 
        if ($standard_cost > 0)
        {
 
                $stock_gl_codes = get_stock_gl_code($stock_id);
 
-               add_gl_trans_std_cost(systypes::inventory_adjustment(), $adj_id, $date_,
+               add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_,
                        $stock_gl_codes['adjustment_account'], $stock_gl_codes['dimension_id'], $stock_gl_codes['dimension2_id'], $memo_, ($standard_cost * -($quantity)));
 
-               add_gl_trans_std_cost(systypes::inventory_adjustment(), $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, ($standard_cost * $quantity));
+               add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, ($standard_cost * $quantity));
        }
 }
-
-//-------------------------------------------------------------------------------------------------------------
-
-?>
\ No newline at end of file