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_, $type, $increase, $reference, $memo_)
+function add_stock_adjustment($items, $location, $date_, $reference, $memo_)
{
- global $loc_notification, $path_to_root, $Refs;
+ 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_', 'type', '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 ($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 ($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_, $type, $reference,
- $line_item->quantity, $line_item->standard_cost, $memo_);
+ add_stock_adjustment_item($adj_id, $line_item->stock_id, $location, $date_, $reference,
+ $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 ($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_, $type, $reference,
- $quantity, $standard_cost, $memo_)
+function add_stock_adjustment_item($adj_id, $stock_id, $location, $date_, $reference,
+ $quantity, $unit_cost, $memo_)
{
$mb_flag = get_mb_flag($stock_id);
display_db_error("Cannot do inventory adjustment for Service item : $stock_id", "");
}
- /* Logic shifted to function update_average_material_cost
- //Chaitanya : If negative adjustment result in negative or zero inventory
- //then difference should be adjusted
- $qoh = get_qoh_on_date($stock_id);
- if ($qoh + $quantity <= 0 && $qoh > 0) //Positive inventory turning zero/negative
- {
- global $Refs;
+ update_average_material_cost(null, $stock_id, $unit_cost, $quantity, $date_);
- $id = get_next_trans_no(ST_JOURNAL);
- $ref = $Refs->get_next(ST_JOURNAL);
- $diff = get_standard_cost($stock_id) - $standard_cost;
-
- if ($diff !=0)
- {
- $stock_gl_code = get_stock_gl_code($stock_id);
- $memo = _("For zero inventory of ").$stock_id." INVADJ REF: ".$reference;
- //Reverse the inventory effect if $qoh <=0
- add_gl_trans_std_cost(ST_JOURNAL, $id, $date_,
- $stock_gl_code["inventory_account"],
- $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
- -$qoh * $diff);
- //GL Posting to inventory adjustment account
- add_gl_trans_std_cost(ST_JOURNAL, $id, $date_,
- $stock_gl_code["adjustment_account"],
- $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
- $qoh * $diff);
-
- add_audit_trail(ST_JOURNAL, $id, $date_);
- add_comments(ST_JOURNAL, $id, $date_, $memo);
- $Refs->save(ST_JOURNAL, $id, $ref);
- }
- }*/
-
- update_average_material_cost(null, $stock_id, $standard_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, $type);
+ $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_, ($standard_cost * $quantity));
+ add_gl_trans_std_cost(ST_INVADJUST, $adj_id, $date_, $stock_gl_codes['inventory_account'], 0, 0, $memo_, $inv_value);
}
-}
-//-------------------------------------------------------------------------------------------------------------
-
-?>
\ No newline at end of file
+ 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)));
+ }
+}