[IMP] rma: Refactor all rma modules in order to consider using the correct price unit in moves

Otherwise the inventory accounting will be completely wrong.
This commit is contained in:
Jordi Ballester
2022-03-02 11:35:08 +01:00
committed by Jordi Ballester Alomar
parent a42553708a
commit 3389bca693
2 changed files with 52 additions and 1 deletions

View File

@@ -1,7 +1,8 @@
# Copyright 2020 ForgeFlow S.L.
# Copyright 2020-2022 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
from . import sale_order_line
from . import sale_order
from . import rma_order_line
from . import rma_order
from . import rma_operation
from . import procurement

View File

@@ -0,0 +1,50 @@
# Copyright 2022 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
from odoo import models
class StockRule(models.Model):
_inherit = "stock.rule"
def _get_stock_move_values(
self,
product_id,
product_qty,
product_uom,
location_id,
name,
origin,
company_id,
values,
):
res = super(StockRule, self)._get_stock_move_values(
product_id,
product_qty,
product_uom,
location_id,
name,
origin,
company_id,
values,
)
if "rma_line_id" in values:
line = values.get("rma_line_id")
if line.reference_move_id:
return res
if line.sale_line_id:
moves = line.sale_line_id.move_ids
if moves:
# TODO: Should we be smart in the choice of the move?
layers = moves.mapped("stock_valuation_layer_ids")
cost = layers[-1].unit_cost
res["price_unit"] = cost
elif line.account_move_line_id:
sale_lines = line.account_move_line_id.sale_line_ids
moves = sale_lines.mapped("move_ids")
if moves:
layers = moves.mapped("stock_valuation_layer_ids")
cost = layers[-1].unit_cost
# TODO: Should we be smart in the choice of the move?
res["price_unit"] = cost
return res