From 253bfaf676d15e5f8e6dee5774f3ff9af0b64b5b Mon Sep 17 00:00:00 2001 From: Julien Ortet <julien@le-filament.com> Date: Wed, 28 May 2025 16:20:00 +0200 Subject: [PATCH] [UPD] handle date parution on period --- models/res_partner.py | 101 +++++++++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 35 deletions(-) diff --git a/models/res_partner.py b/models/res_partner.py index 09f34a8..8e85fb2 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -21,8 +21,7 @@ class ResPartner(models.Model): string="Dirigeants", ) last_inpi_update_date = fields.Datetime( - string="Dernière mise à jours INPI", - tracking=True + string="Dernière mise à jours INPI", tracking=True ) first_company_closeout = fields.Date(string="Date de première cloture") @@ -136,7 +135,7 @@ class ResPartner(models.Model): # Fonctions update générale # -------------------------------------------------- - def update_from_inpi(self, update_type="all"): + def update_from_inpi(self, update_type="all", date_parution=None): """ MAJ from inpi """ @@ -167,7 +166,9 @@ class ResPartner(models.Model): sirens=[self.siren.replace(" ", "")] ) if inpi_data: - update_methods.get(update_type)(inpi_data=inpi_data) + update_methods.get(update_type)( + inpi_data=inpi_data, date_parution=date_parution + ) else: logger.error(_(f"No INPI response for {self.name}: {self.siren}")) @@ -175,7 +176,9 @@ class ResPartner(models.Model): # Denomination # -------------------------------------------------- - def _update_denomination_from_inpi(self, inpi_data, new_period=True): + def _update_denomination_from_inpi( + self, inpi_data, new_period=True, date_parution=None + ): """ MAJ denomination """ @@ -193,10 +196,12 @@ class ResPartner(models.Model): logger.info( _(f"Up denomination :Period creation for {self.name}: {self.siren}") ) - period.write( - {"end": datetime.datetime.now().date(), "end_reason": "nom"} - ) - period_values["start"] = fields.Date.today() + if date_parution: + period_date = date_parution + else: + period_date = fields.Date.today() + period.write({"end": period_date, "end_reason": "adr"}) + period_values["start"] = period_date period_values["name"] = inpi_name period_values["partner_id"] = self.id if new_period: @@ -209,7 +214,7 @@ class ResPartner(models.Model): # NAF # -------------------------------------------------- - def _update_naf_from_inpi(self, inpi_data, new_period=True): + def _update_naf_from_inpi(self, inpi_data, new_period=True, date_parution=None): """ MAJ code naf """ @@ -224,10 +229,12 @@ class ResPartner(models.Model): if inpi_naf_id != period.naf_id: if new_period: - period.write( - {"end": datetime.datetime.now().date(), "end_reason": "acti"} - ) - period_values["start"] = fields.Date.today() + if date_parution: + period_date = date_parution + else: + period_date = fields.Date.today() + period.write({"end": period_date, "end_reason": "adr"}) + period_values["start"] = period_date period_values["naf_id"] = inpi_naf_id period_values["partner_id"] = self.id @@ -337,7 +344,9 @@ class ResPartner(models.Model): facility_values.update(inpi_adress) facility.write(facility_values) - def _update_etablissement_from_inpi(self, inpi_data, new_period=True): + def _update_etablissement_from_inpi( + self, inpi_data, new_period=True, date_parution=None + ): """ MAJ établissements Les nouveaux sont créées on ne fait rien pour ceux qui ne sont plus dans INPI @@ -383,7 +392,9 @@ class ResPartner(models.Model): # FORME JURIDIQUE # -------------------------------------------------- - def _update_forme_juridique_from_inpi(self, inpi_data, new_period=True): + def _update_forme_juridique_from_inpi( + self, inpi_data, new_period=True, date_parution=None + ): """ MAJ forme juridique on essai de faire correspondre le code de FJ reçu avec un @@ -396,23 +407,30 @@ class ResPartner(models.Model): if not inpi_data.formality.content.personneMorale: return current_period - inpi_forme_juridique = inpi_data.formality.content.personneMorale.identite.entreprise.formeJuridique + inpi_forme_juridique = ( + inpi_data.formality.content.personneMorale.identite.entreprise.formeJuridique + ) # check if full code in base - cj_id = self.env["res.partner.company.type"].search([("code_forme_juridique", "=", inpi_forme_juridique)]) + cj_id = self.env["res.partner.company.type"].search( + [("code_forme_juridique", "=", inpi_forme_juridique)] + ) # if not check if there is a "niveau 2" code in base, CG use only a few CJ code if not cj_id: - cj_id = self.env["res.partner.company.type"].search([ - ("code_forme_juridique", "=", inpi_forme_juridique[:2])]) + cj_id = self.env["res.partner.company.type"].search( + [("code_forme_juridique", "=", inpi_forme_juridique[:2])] + ) if cj_id and cj_id.id != self.partner_company_type_id.id: self.partner_company_type_id = cj_id.id period_values = self._get_values_from_period(current_period) if new_period: - current_period.write( - {"end": datetime.datetime.now().date(), "end_reason": "adr"} - ) - period_values["start"] = fields.Date.today() + if date_parution: + period_date = date_parution + else: + period_date = fields.Date.today() + current_period.write({"end": period_date, "end_reason": "adr"}) + period_values["start"] = period_date period_values["partner_id"] = self.id period_values["res_partner_company_type"] = cj_id.id @@ -423,7 +441,6 @@ class ResPartner(models.Model): return self._get_current_period() - # -------------------------------------------------- # DIRIGEANTS # -------------------------------------------------- @@ -434,7 +451,10 @@ class ResPartner(models.Model): Les dirigants sont créées via le modele cgscop.inpi.director """ logger.info(_(f"Update dirigeants for {self.name}: {self.siren}")) - if inpi_data.formality.content.personneMorale and inpi_data.formality.content.personneMorale.composition: + if ( + inpi_data.formality.content.personneMorale + and inpi_data.formality.content.personneMorale.composition + ): inpi_pouvoirs = ( inpi_data.formality.content.personneMorale.composition.pouvoirs ) @@ -466,7 +486,7 @@ class ResPartner(models.Model): # ADRESSE # -------------------------------------------------- - def _update_address_from_inpi(self, inpi_data, new_period=True): + def _update_address_from_inpi(self, inpi_data, new_period=True, date_parution=None): """ MAJ de l adresse du siege """ @@ -497,10 +517,12 @@ class ResPartner(models.Model): if changing_period_values: if new_period: - period.write( - {"end": datetime.datetime.now().date(), "end_reason": "adr"} - ) - period_values["start"] = fields.Date.today() + if date_parution: + period_date = date_parution + else: + period_date = fields.Date.today() + period.write({"end": period_date, "end_reason": "adr"}) + period_values["start"] = period_date period_values["partner_id"] = self.id for value in changing_period_values: @@ -522,13 +544,22 @@ class ResPartner(models.Model): """ MAJ de la date de premiere cloture des comptes """ - logger.info(_(f"Update company first closeout date for {self.name}: {self.siren}")) - if inpi_data.formality.content.personneMorale and inpi_data.formality.content.personneMorale.identite: - description = inpi_data.formality.content.personneMorale.identite.description + logger.info( + _(f"Update company first closeout date for {self.name}: {self.siren}") + ) + if ( + inpi_data.formality.content.personneMorale + and inpi_data.formality.content.personneMorale.identite + ): + description = ( + inpi_data.formality.content.personneMorale.identite.description + ) if description.datePremiereCloture: self.first_company_closeout = description.datePremiereCloture else: - logger.info(_(f"No company first closeout date found for {self.name}: {self.siren}")) + logger.info( + _(f"No company first closeout date found for {self.name}: {self.siren}") + ) # -------------------------------------------------- # UPDATE -- GitLab