diff --git a/models/ecozimut_mixin.py b/models/ecozimut_mixin.py index c9fe59d3e448374d2dcf121e045e811d301959cf..1cb3642f4a2e4e79775770c08782e8c41958d8cd 100644 --- a/models/ecozimut_mixin.py +++ b/models/ecozimut_mixin.py @@ -2,7 +2,7 @@ # 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 EcozimutMixin(models.AbstractModel): @@ -107,3 +107,23 @@ class EcozimutMixin(models.AbstractModel): mission3 = fields.Many2one("ecozimut.mission", string="Missions EcoZimut 3") mission4 = fields.Many2one("ecozimut.mission", string="Missions EcoZimut 4") mission5 = fields.Many2one("ecozimut.mission", string="Missions EcoZimut 5") + + @api.model + def _get_fields_to_sync(self): + mixin_fields = [f for f in self.env["ecozimut.mixin"].fields_get().keys()] + fields_noupdate = ["currency_id", "id", "display_name", "__last_update"] + fields_to_update = [x for x in mixin_fields if x not in fields_noupdate] + return fields_to_update + + def get_mixin_vals_from(self, remote=False): + vals = {} + if remote: + for field in self._get_fields_to_sync(): + if remote[field]: + if self._fields[field].type == "many2one": + vals[field] = remote[field].id + elif self._fields[field].type in ("one2many", "many2many"): + vals[field] = [(6, 0, remote[field].ids)] + else: + vals[field] = remote[field] + return vals