procurement_auto_create_group: Set partner on created procurement group

This commit is contained in:
Jacques-Etienne Baudoux
2021-10-04 14:49:26 +02:00
parent 2cc6da40c5
commit 486d2fe99d
7 changed files with 44 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import stock_rule
from . import procurement_group
from . import stock_rule

View File

@@ -1,8 +1,12 @@
# Copyright 2017-2020 ForgeFlow, S.L.
# Copyright 2021 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _, api, models
from odoo.exceptions import UserError
import logging
from odoo import api, models
_logger = logging.getLogger(__name__)
class ProcurementGroup(models.Model):
@@ -10,25 +14,27 @@ class ProcurementGroup(models.Model):
@api.model
def _get_rule(self, product_id, location_id, values):
result = super()._get_rule(product_id, location_id, values)
rule = super()._get_rule(product_id, location_id, values)
# If there isn't a date planned in the values it means that this
# method has been called outside of a procurement process.
if (
result
rule
and not values.get("group_id")
and result.auto_create_group
and rule.auto_create_group
and values.get("date_planned")
):
group_data = self._prepare_auto_procurement_group_data()
if group_data:
_logger.warning(
"DEPRECATED: use _prepare_auto_procurement_group_data "
"on stock rule instead"
)
group_data.update(rule._prepare_auto_procurement_group_data())
group = self.env["procurement.group"].create(group_data)
values["group_id"] = group
return result
return rule
@api.model
def _prepare_auto_procurement_group_data(self):
name = self.env["ir.sequence"].next_by_code("procurement.group") or False
if not name:
raise UserError(_("No sequence defined for procurement group."))
return {
"name": name,
}
""" Deprecated """
return {}

View File

@@ -1,7 +1,9 @@
# Copyright 2017-2020 ForgeFlow, S.L.
# Copyright 2021 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class StockRule(models.Model):
@@ -13,3 +15,12 @@ class StockRule(models.Model):
def _onchange_group_propagation_option(self):
if self.group_propagation_option != "propagate":
self.auto_create_group = False
def _prepare_auto_procurement_group_data(self):
name = self.env["ir.sequence"].next_by_code("procurement.group") or False
if not name:
raise UserError(_("No sequence defined for procurement group."))
return {
"name": name,
"partner_id": self.partner_address_id.id,
}