See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
-function add_stock_adjustment($items, $location, $date_, $increase, $reference, $memo_)
+function add_stock_adjustment($items, $location, $date_, $reference, $memo_)
{
global $SysPrefs, $path_to_root, $Refs;
- begin_transaction();
+ begin_transaction(__FUNCTION__, func_get_args());
$args = func_get_args();
- $args = (object)array_combine(array('items', 'location', 'date_', 'increase',
- 'reference', 'memo_'), $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(ST_INVADJUST);
- if ($SysPrefs->loc_notification() == 1 && !$increase)
+ if ($SysPrefs->loc_notification() == 1)
{
include_once($path_to_root . "/inventory/includes/inventory_db.inc");
$st_ids = array();
foreach ($items as $line_item)
{
- if ($SysPrefs->loc_notification() == 1 && !$increase)
- $loc = calculate_reorder_level($location, $line_item, $st_ids, $st_names, $st_num, $st_reorder);
-
- if (!$increase)
- $line_item->quantity = -$line_item->quantity;
+ if ($SysPrefs->loc_notification() == 1 && $line_item->quantity < 0)
+ {
+ $chg = $line_item; $chg->quantity= -$chg->quantity; // calculate_reorder_level expect positive qty
+ $loc = calculate_reorder_level($location, $chg, $st_ids, $st_names, $st_num, $st_reorder);
+ }
add_stock_adjustment_item($adj_id, $line_item->stock_id, $location, $date_, $reference,
- $line_item->quantity, $line_item->standard_cost, $memo_);
+ $line_item->quantity, $line_item->unit_cost, $memo_);
}
add_comments(ST_INVADJUST, $adj_id, $date_, $memo_);
$args->trans_no = $adj_id;
hook_db_postwrite($args, ST_INVADJUST);
commit_transaction();
- if ($SysPrefs->loc_notification() == 1 && !$increase && count($st_ids) > 0)
+ if ($SysPrefs->loc_notification() == 1 && count($st_ids) > 0)
send_reorder_email($loc, $st_ids, $st_names, $st_num, $st_reorder);
return $adj_id;
function void_stock_adjustment($type_no)
{
+ begin_transaction(__FUNCTION__, func_get_args());
hook_db_prevoid(ST_INVADJUST, $type_no);
void_gl_trans(ST_INVADJUST, $type_no);
void_stock_move(ST_INVADJUST, $type_no);
+ commit_transaction();
}
//-------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $reference,
- $quantity, $standard_cost, $memo_)
+ $quantity, $unit_cost, $memo_)
{
$mb_flag = get_mb_flag($stock_id);
display_db_error("Cannot do inventory adjustment for Service item : $stock_id", "");
}
- update_average_material_cost(null, $stock_id, $standard_cost, $quantity, $date_);
+ update_average_material_cost(null, $stock_id, $unit_cost, $quantity, $date_);
+
+ if (is_fixed_asset($mb_flag)) {
+ $sql = "UPDATE ".TB_PREF."stock_master SET inactive=1
+ WHERE stock_id=".db_escape($stock_id);
+ db_query($sql,"The inactive flag for the fixed asset could not be updated");
+ }
add_stock_move(ST_INVADJUST, $stock_id, $adj_id, $location,
- $date_, $reference, $quantity, $standard_cost);
+ $date_, $reference, $quantity, $unit_cost);
+
+ $inv_value = $unit_cost * $quantity;
+ $adj_value = $unit_cost * -($quantity);
- if ($standard_cost > 0)
+ if (is_fixed_asset($mb_flag)) {
+ // get the initial value of the fixed assset.
+ $row = get_fixed_asset_move($stock_id, ST_SUPPRECEIVE);
+ $inv_value = $row['price'] * $quantity;
+ $adj_value = (-($row['price']) + $unit_cost) * $quantity;
+ }
+
+ if ($unit_cost > 0 || is_fixed_asset($mb_flag))
{
$stock_gl_codes = get_stock_gl_code($stock_id);
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)));
+ $stock_gl_codes['adjustment_account'], $stock_gl_codes['dimension_id'], $stock_gl_codes['dimension2_id'], $memo_, $adj_value );
+
+ add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, $inv_value);
+ }
- add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, ($standard_cost * $quantity));
+ if (is_fixed_asset($mb_flag)) {
+ // Additional gl entry for fixed asset.
+ $grn_act = get_company_pref('default_loss_on_asset_disposal_act');
+ add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_, $grn_act, 0, 0, $memo_, ($unit_cost * -($quantity)));
}
}