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 $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 ($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->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 ($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);\r
+ 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\r
- //Chaitanya : If negative adjustment result in negative or zero inventory \r
- //then difference should be adjusted\r
- $qoh = get_qoh_on_date($stock_id);\r
- if ($qoh + $quantity <= 0 && $qoh > 0) //Positive inventory turning zero/negative\r
- {\r
- global $Refs;\r
-\r
- $id = get_next_trans_no(ST_JOURNAL);\r
- $ref = $Refs->get_next(ST_JOURNAL);\r
- $diff = get_standard_cost($stock_id) - $standard_cost;\r
- \r
- if ($diff !=0)\r
- {\r
- $stock_gl_code = get_stock_gl_code($stock_id);\r
- $memo = _("For zero inventory of ").$stock_id." INVADJ REF: ".$reference;\r
- //Reverse the inventory effect if $qoh <=0\r
- add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, \r
- $stock_gl_code["inventory_account"],\r
- $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, \r
- -$qoh * $diff);\r
- //GL Posting to inventory adjustment account\r
- add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, \r
- $stock_gl_code["adjustment_account"],\r
- $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,\r
- $qoh * $diff);\r
- \r
- add_audit_trail(ST_JOURNAL, $id, $date_);\r
- add_comments(ST_JOURNAL, $id, $date_, $memo);\r
- $Refs->save(ST_JOURNAL, $id, $ref); \r
- } \r
- }*/\r
-\r
- 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, $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)));
+ }
+}