Files
stock-logistics-warehouse/stock_orderpoint_uom/models/procurement_group.py
2021-09-01 11:51:26 +02:00

50 lines
2.0 KiB
Python

# Copyright (C) 2018 - TODAY, Open Source Integrators
# (http://www.opensourceintegrators.com)
# Copyright 2019 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, models
class ProcurementGroup(models.Model):
_inherit = "procurement.group"
@api.model
def run(self, procurements, raise_user_error=True):
# 'Procurement' is a 'namedtuple', which is not editable.
# The 'procurement' which needs to be edited is created new
# and the previous one is deleted.
Proc = self.env["procurement.group"].Procurement
indexes_to_pop = []
new_procs = []
for i, procurement in enumerate(procurements):
if "orderpoint_id" in procurement.values:
orderpoint = procurement.values.get("orderpoint_id")
if (
orderpoint.procure_uom_id
and procurement.product_uom != orderpoint.procure_uom_id
):
new_product_qty = procurement.product_uom._compute_quantity(
procurement.product_qty, orderpoint.procure_uom_id
)
new_product_uom = orderpoint.procure_uom_id
new_procs.append(
Proc(
procurement.product_id,
new_product_qty,
new_product_uom,
procurement.location_id,
procurement.name,
procurement.origin,
procurement.company_id,
procurement.values,
)
)
indexes_to_pop.append(i)
if new_procs:
indexes_to_pop.reverse()
for index in indexes_to_pop:
procurements.pop(index)
procurements.extend(new_procs)
return super(ProcurementGroup, self).run(procurements, raise_user_error)