diff --git a/models/res_partner.py b/models/res_partner.py index 53f8e46ec96fcd54d80df9e8d2962104f88f8cd2..72671d0fc6e963a7847f375664c1058655da7755 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -437,16 +437,27 @@ class ResPartner(models.Model): inpi_address = self._get_inpi_address(siege.adresse) adress_values = ["street", "cedex", "street2", "zip", "city"] - changing_values = [] + changing_period_values = [] + changing_object_values = [] period = self._get_current_period() period_values = self._get_values_from_period(period) for v in adress_values: if v in period._fields and inpi_address.get(v) != getattr(period, v): - changing_values.append(v) - - if changing_values: + changing_period_values.append(v) + if v in self._fields and inpi_address.get(v) != getattr(self, v): + changing_object_values.append(v) + # le changement d adresse de la periode, ou la creation d une nouvelle + # ne met pas a jours l adresse, on gère donc les deux (bug ?). + if changing_object_values: + to_write = {} + for value in changing_object_values: + to_write[value] = inpi_address.get(value) + self.write(to_write) + + + if changing_period_values: if new_period: period.write( {"end": datetime.datetime.now().date(), "end_reason": "adr"} @@ -454,13 +465,13 @@ class ResPartner(models.Model): period_values["start"] = fields.Date.today() period_values["partner_id"] = self.id - for value in changing_values: + for value in changing_period_values: period_values[value] = inpi_address.get(value) - if new_period: return self.env["scop.period"].with_context().create(period_values) else: period.write(period_values) + return period else: logger.info(_(f"No siege found for {self.name}: {self.siren}"))