From 74c48d05d633f685242b58f13f8aee95dcb94186 Mon Sep 17 00:00:00 2001 From: Julien Ortet <julien@le-filament.com> Date: Wed, 16 Apr 2025 16:12:59 +0200 Subject: [PATCH] [UPD] precommit and some debug --- __manifest__.py | 1 - models/cgscop_inpi_director.py | 46 ++++++++++++++++++---------------- models/res_partner.py | 44 +++++++++++++++++++++----------- models/scop_period.py | 2 +- wizard/inpi_update_wizard.py | 2 +- 5 files changed, 55 insertions(+), 40 deletions(-) diff --git a/__manifest__.py b/__manifest__.py index de22563..3b8d6ba 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -5,7 +5,6 @@ "author": "Le Filament", "license": "AGPL-3", "application": False, - "installable": True, "depends": [ "base", "cgscop_partner", diff --git a/models/cgscop_inpi_director.py b/models/cgscop_inpi_director.py index a63ef05..2b80552 100644 --- a/models/cgscop_inpi_director.py +++ b/models/cgscop_inpi_director.py @@ -1,9 +1,8 @@ # Copyright 2020 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -import datetime import logging -from odoo import _, fields, models +from odoo import fields, models import odoo.addons.api_inpi.models.inpi_models as inpi_models @@ -28,23 +27,26 @@ class CgScopInpiDirector(models.Model): def maj_from_inpi(self, scop_id, inpi_pouvoir): - # check if director exist - director = self.env["cgscop.inpi.director"].search( - [ - ("partner_id", "=", scop_id.id), - ("name", "=", inpi_pouvoir.individu.descriptionPersonne.nom), - ] - ) - - if not director: - director_data = { - "partner_id": scop_id.id, - "name": inpi_pouvoir.individu.descriptionPersonne.nom, - "surname": " ".join(inpi_pouvoir.individu.descriptionPersonne.prenoms), - "role": inpi_models.get_role_from_code(inpi_pouvoir.roleEntreprise), - } - if inpi_pouvoir.individu.descriptionPersonne.dateDeNaissancePresent: - director_data[ - "birthday" - ] = inpi_pouvoir.individu.descriptionPersonne.dateDeNaissance - self.create(director_data) + # check if this "pouvoir" is an human + if inpi_pouvoir.typeDePersonne == "INDIVIDU": + # check if director exist + director = self.env["cgscop.inpi.director"].search( + [ + ("partner_id", "=", scop_id.id), + ("name", "=", inpi_pouvoir.individu.descriptionPersonne.nom), + ] + ) + if not director: + director_data = { + "partner_id": scop_id.id, + "name": inpi_pouvoir.individu.descriptionPersonne.nom, + "surname": " ".join( + inpi_pouvoir.individu.descriptionPersonne.prenoms + ), + "role": inpi_models.get_role_from_code(inpi_pouvoir.roleEntreprise), + } + if inpi_pouvoir.individu.descriptionPersonne.dateDeNaissancePresent: + director_data[ + "birthday" + ] = inpi_pouvoir.individu.descriptionPersonne.dateDeNaissance + self.create(director_data) diff --git a/models/res_partner.py b/models/res_partner.py index f033d65..581a40c 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -64,7 +64,7 @@ class ResPartner(models.Model): def _get_current_period(self): return self.env["scop.period"].search( - [("partner_id", "=", self.id), ("end", "=", False)], + [("partner_id", "=", self.id), ("end", "=", False)], limit=1 ) def _get_values_from_period(self, period): @@ -125,6 +125,7 @@ class ResPartner(models.Model): == inpi_models.RolePourEntreprise.SIEGE_FERME.value ): return ets + return None # -------------------------------------------------- # Fonctions update générale @@ -157,8 +158,10 @@ class ResPartner(models.Model): inpi_data = self.env["api.inpi"].get_rne_data_object( sirens=[self.siren.replace(" ", "")] ) - - update_methods.get(update_type)(inpi_data=inpi_data) + if inpi_data: + update_methods.get(update_type)(inpi_data=inpi_data) + else: + logger.error(_(f"No INPI response for {self.siren}")) # -------------------------------------------------- # Denomination @@ -301,18 +304,21 @@ class ResPartner(models.Model): inpi_facilities = ( inpi_data.formality.content.personneMorale.autresEtablissements ) + facilities_not_in_inpi = [] if inpi_facilities: facilities = self.facility_ids # mise a jours de etablissements en base for facility in facilities: - self._update_facility( - inpi_facility=self._get_inpi_facility_from_siret( - facility.siret, inpi_data - ), - facility=facility, + inpi_facily = self._get_inpi_facility_from_siret( + facility.siret, inpi_data ) + if not inpi_facily: + facilities_not_in_inpi.append(facility) + else: + self._update_facility(inpi_facility=inpi_facily, facility=facility) + # creation des eventuels nouveaux établissements secondaire for inpi_facility in inpi_facilities: role = inpi_facility.descriptionEtablissement.rolePourEntreprise @@ -322,13 +328,18 @@ class ResPartner(models.Model): ): self._create_ets_secondaire(inpi_facility) + # suppression des ets secondaire non present dans inpi + for old_facility in facilities_not_in_inpi: + logger.info( + f"Etablissement secondaire non present dans INPI {old_facility.name}" + ) + # -------------------------------------------------- # FORME JURIDIQUE # -------------------------------------------------- def _update_forme_juridique_from_inpi(self, inpi_data, new_period=True): - inpi_forme_juridique = inpi_data.formality.content.natureCreation.formeJuridique - pass + inpi_data.formality.content.natureCreation.formeJuridique # -------------------------------------------------- # DIRIGEANTS @@ -336,13 +347,16 @@ class ResPartner(models.Model): def _update_dirigeant_from_inpi(self, inpi_data): - inpi_pouvoirs = inpi_data.formality.content.personneMorale.composition.pouvoirs - - for pouvoir in inpi_pouvoirs: - self.env["cgscop.inpi.director"].maj_from_inpi( - scop_id=self, inpi_pouvoir=pouvoir + if inpi_data.formality.content.personneMorale.composition: + inpi_pouvoirs = ( + inpi_data.formality.content.personneMorale.composition.pouvoirs ) + for pouvoir in inpi_pouvoirs: + self.env["cgscop.inpi.director"].maj_from_inpi( + scop_id=self, inpi_pouvoir=pouvoir + ) + # -------------------------------------------------- # ADRESSE # -------------------------------------------------- diff --git a/models/scop_period.py b/models/scop_period.py index 4d6bd96..3757799 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 api, fields, models +from odoo import fields, models class ScopPeriod(models.Model): diff --git a/wizard/inpi_update_wizard.py b/wizard/inpi_update_wizard.py index 40fa9ab..4ea8ce9 100644 --- a/wizard/inpi_update_wizard.py +++ b/wizard/inpi_update_wizard.py @@ -1,7 +1,7 @@ # © 2020 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import api, fields, models +from odoo import fields, models class InpiUpdateWizard(models.TransientModel): -- GitLab