diff --git a/models/res_partner.py b/models/res_partner.py index beac707b5685066c1e434c580d00fa583b223850..3e514124d2b534d2f999c81f701ca9ce43181b59 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -873,7 +873,7 @@ class ScopPartner(models.Model): partner.scop_period_ids = new_period def _add_period(self, partner): - new_period = self.env["scop.period"].create( + new_period = self.env["scop.period"].with_context().create( { "partner_id": partner.id, "start": partner.registration_date or fields.Date.today(), @@ -1387,7 +1387,6 @@ class ScopPartner(models.Model): if (partner.revision_type == "1y") and (partner.cooperative_form_id.name == "SCIC") : partner.revision_type_ok = False - # ------------------------------------------------------ # Button & Action # ------------------------------------------------------ diff --git a/models/scop_period.py b/models/scop_period.py index f52de721174657e995e4270dc00c25bf7e5870fc..3a8c9b79dd6a4f5e43275032b745d351ac2b78e4 100644 --- a/models/scop_period.py +++ b/models/scop_period.py @@ -1,7 +1,7 @@ # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import fields, models +from odoo import api, fields, models class ScopPeriod(models.Model): @@ -82,32 +82,53 @@ class ScopPeriod(models.Model): # ------------------------------------------------------ # Override ORM # ------------------------------------------------------ + @api.model_create_multi + def create(self, vals_list): + period_ids = super().create(vals_list) + vals_list_index = 0 + for period in period_ids: + if period == period.partner_id.scop_period_ids[0]: + partner_vals = period._get_partner_vals(vals_list[vals_list_index]) + # Update partner + period.partner_id.sudo().write(partner_vals) + vals_list_index += 1 + return period_ids + def write(self, vals): for period in self: if period == period.partner_id.scop_period_ids[0]: - partner_vals = dict(vals) - # Suppression des valeurs à ne pas remonter à l'organisme - partner_vals.pop("partner_id", False) - partner_vals.pop("id_riga", False) - partner_vals.pop("start", False) - partner_vals.pop("comments", False) - - # Si la date de fin est modifiée et que l'organisme est décédé - # on remonte la date de décès - if "end" in partner_vals: - if ( - partner_vals.get("end_reason", False) == "deces" - or period.end_reason == "deces" - ): - partner_vals.update( - {"dissolution_date": partner_vals.get("end")} - ) - if not partner_vals.get("end"): - partner_vals.update({"dissolution_date": None}) - - partner_vals.pop("end", False) - partner_vals.pop("end_reason", False) - + partner_vals = self._get_partner_vals(vals) # Update partner period.partner_id.sudo().write(partner_vals) return super(ScopPeriod, self).write(vals) + + # ------------------------------------------------------ + # Business funcitons + # ------------------------------------------------------ + def _get_partner_vals(self, vals): + """ + :param dict vals: dictionnaire des valeurs à créer ou à mettre à jour + """ + partner_vals = dict(vals) + # Suppression des valeurs à ne pas remonter à l'organisme + partner_vals.pop("partner_id", False) + partner_vals.pop("id_riga", False) + partner_vals.pop("start", False) + partner_vals.pop("comments", False) + + # Si la date de fin est modifiée et que l'organisme est décédé + # on remonte la date de décès + if "end" in partner_vals: + if ( + partner_vals.get("end_reason", False) == "deces" + or self.end_reason == "deces" + ): + partner_vals.update( + {"dissolution_date": partner_vals.get("end")} + ) + if not partner_vals.get("end"): + partner_vals.update({"dissolution_date": None}) + + partner_vals.pop("end", False) + partner_vals.pop("end_reason", False) + return partner_vals diff --git a/wizard/scop_period_wizard.py b/wizard/scop_period_wizard.py index c52b835a33de56ce17a49a425cc37719c1b3c60a..0029db1d1461066bbec984409f96e0f348d6e685 100644 --- a/wizard/scop_period_wizard.py +++ b/wizard/scop_period_wizard.py @@ -246,7 +246,7 @@ class ScopPeriodWizard(models.TransientModel): "ur_id": period.ur_id.id, } period_values.update(values) - self.env["scop.period"].create(period_values) + self.env["scop.period"].with_context().create(period_values) # Update partner partner_values.update(values)