[REF] stock_account: _get_in_svl_vals for stock.move
Part-of: odoo/odoo#99411
This commit is contained in:
@@ -159,21 +159,7 @@ class StockMove(models.Model):
|
||||
:param forced_quantity: under some circunstances, the quantity to value is different than
|
||||
the initial demand of the move (Default value = None)
|
||||
"""
|
||||
svl_vals_list = []
|
||||
for move in self:
|
||||
move = move.with_company(move.company_id)
|
||||
valued_move_lines = move._get_in_move_lines()
|
||||
valued_quantity = 0
|
||||
for valued_move_line in valued_move_lines:
|
||||
valued_quantity += valued_move_line.product_uom_id._compute_quantity(valued_move_line.qty_done, move.product_id.uom_id)
|
||||
unit_cost = abs(move._get_price_unit()) # May be negative (i.e. decrease an out move).
|
||||
if move.product_id.cost_method == 'standard':
|
||||
unit_cost = move.product_id.standard_price
|
||||
svl_vals = move.product_id._prepare_in_svl_vals(forced_quantity or valued_quantity, unit_cost)
|
||||
svl_vals.update(move._prepare_common_svl_vals())
|
||||
if forced_quantity:
|
||||
svl_vals['description'] = 'Correction of %s (modification of past move)' % move.picking_id.name or move.name
|
||||
svl_vals_list.append(svl_vals)
|
||||
svl_vals_list = self._get_in_svl_vals(forced_quantity)
|
||||
return self.env['stock.valuation.layer'].sudo().create(svl_vals_list)
|
||||
|
||||
def _create_out_svl(self, forced_quantity=None):
|
||||
@@ -366,6 +352,24 @@ class StockMove(models.Model):
|
||||
journal_id = accounts_data['stock_journal'].id
|
||||
return journal_id, acc_src, acc_dest, acc_valuation
|
||||
|
||||
def _get_in_svl_vals(self, forced_quantity):
|
||||
svl_vals_list = []
|
||||
for move in self:
|
||||
move = move.with_company(move.company_id)
|
||||
valued_move_lines = move._get_in_move_lines()
|
||||
valued_quantity = 0
|
||||
for valued_move_line in valued_move_lines:
|
||||
valued_quantity += valued_move_line.product_uom_id._compute_quantity(valued_move_line.qty_done, move.product_id.uom_id)
|
||||
unit_cost = abs(move._get_price_unit()) # May be negative (i.e. decrease an out move).
|
||||
if move.product_id.cost_method == 'standard':
|
||||
unit_cost = move.product_id.standard_price
|
||||
svl_vals = move.product_id._prepare_in_svl_vals(forced_quantity or valued_quantity, unit_cost)
|
||||
svl_vals.update(move._prepare_common_svl_vals())
|
||||
if forced_quantity:
|
||||
svl_vals['description'] = 'Correction of %s (modification of past move)' % move.picking_id.name or move.name
|
||||
svl_vals_list.append(svl_vals)
|
||||
return svl_vals_list
|
||||
|
||||
def _get_src_account(self, accounts_data):
|
||||
return self.location_id.valuation_out_account_id.id or accounts_data['stock_input'].id
|
||||
|
||||
|
||||
Reference in New Issue
Block a user