Files
stock-logistics-warehouse/stock_valuation_layer_total_value/models/stock_valuation_layer.py
2023-11-01 10:59:29 -05:00

36 lines
1.4 KiB
Python

# Copyright 2022 ForgeFlow
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class StockValuationLayer(models.Model):
_inherit = "stock.valuation.layer"
total_value_with_additional_costs = fields.Float(
string="Total value (with additional costs)",
compute="_compute_original_layer_values",
help="This is the sum of the total value's layer and total value of child layers",
store=True,
)
unit_price_with_extra_cost = fields.Float(
string="New unit price (with additional costs)",
compute="_compute_original_layer_values",
help="This is the unit cost after the additional costs are added",
store=True,
)
@api.depends("stock_valuation_layer_ids")
def _compute_original_layer_values(self):
for rec in self:
if len(rec.stock_valuation_layer_ids):
children_value = sum(rec.stock_valuation_layer_ids.mapped("value"))
total_value = rec.value + children_value
new_unit_price = (
(total_value / rec.quantity) if rec.quantity else rec.unit_cost
)
else:
total_value = rec.value
new_unit_price = rec.unit_cost
rec.total_value_with_additional_costs = total_value
rec.unit_price_with_extra_cost = new_unit_price