diff --git a/models/__init__.py b/models/__init__.py index ff3ac7ddffb56e9cec9421a914e4a7e72bac367a..9cd61eb020d519d1e39b4b35186296d348fb20a2 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -3,3 +3,4 @@ from . import res_partner from . import cgscop_inpi_director +from . import scop_period diff --git a/models/cgscop_inpi_director.py b/models/cgscop_inpi_director.py index 294b3078e5e6c24133d6e13df27cd6c56e452349..314d4d20a7ab0538b0851e6510c93b3cc72846dc 100644 --- a/models/cgscop_inpi_director.py +++ b/models/cgscop_inpi_director.py @@ -26,24 +26,25 @@ class CgScopInpiDirector(models.Model): birthday = fields.Char("Date de naissance") role = fields.Char("Rôle dans l'entreprise") - 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) + ("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)} + 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 + 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 8850e676df67f6d54323c2558d92d73799153614..92db7d5f75d06d0e2d83202cc0eb27067a67c4f2 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -169,6 +169,7 @@ class ResPartner(models.Model): ) period_values["start"] = fields.Date.today() period_values["name"] = inpi_name + period_values["partner_id"] = self.id if new_period: return self.env["scop.period"].with_context().create(period_values) else: @@ -194,6 +195,7 @@ class ResPartner(models.Model): ) period_values["start"] = fields.Date.today() period_values["naf_id"] = inpi_naf_id + period_values["partner_id"] = self.id if new_period: return self.env["scop.period"].with_context().create(period_values) @@ -328,10 +330,9 @@ class ResPartner(models.Model): 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) - - - + self.env["cgscop.inpi.director"].maj_from_inpi( + scop_id=self, inpi_pouvoir=pouvoir + ) # -------------------------------------------------- # ADRESSE @@ -360,6 +361,7 @@ class ResPartner(models.Model): {"end": datetime.datetime.now().date(), "end_reason": "adr"} ) period_values["start"] = fields.Date.today() + period_values["partner_id"] = self.id for value in changing_values: period_values[value] = inpi_address.get(value) @@ -383,58 +385,6 @@ class ResPartner(models.Model): self._update_etablissement_from_inpi(inpi_data=inpi_data) period = self._get_current_period() - period.write({"end": datetime.datetime.now().date(), "end_reason": "autr"}) + period.write({"end": datetime.datetime.now().date(), "end_reason": "inpi"}) period_values = self._get_values_from_period(period) self.env["scop.period"].with_context().create(period_values) - - # -------------------------------------------------- - # INITIALISATION SCOP - # -------------------------------------------------- - - def init_scop_from_inpi(self): - """ - Init scop data from INPI - """ - scop_data = {} - scop_siren = self.siren.replace(" ", "") - - inpi_data = self.env["api.inpi"].get_rne_data_object(sirens=[scop_siren]) - - personne_morale = inpi_data.formality.content.personneMorale - inpi_social_object = personne_morale.identite.description.objet - inpi_naf_id = self._get_inpi_naf_id( - codeApe=personne_morale.identite.entreprise.codeApe - ) - inpi_siret = ( - personne_morale.etablissementPrincipal.descriptionEtablissement.siret - ) - inpi_denomination = personne_morale.identite.entreprise.denomination - inpi_date_creation = inpi_data.formality.content.natureCreation.dateCreation - - if inpi_social_object: - scop_data["social_object"] = inpi_social_object - if inpi_naf_id: - scop_data["naf_id"] = inpi_naf_id - if inpi_siret: - scop_data["siret"] = inpi_siret - if inpi_denomination: - scop_data["name"] = inpi_denomination - if inpi_date_creation: - scop_data["registration_date"] = inpi_date_creation - - inpi_address = self._get_inpi_address( - personne_morale.etablissementPrincipal.adresse - ) - - if inpi_address.get("street"): - scop_data["street"] = inpi_address.get("street") - if inpi_address.get("cedex"): - scop_data["cedex"] = inpi_address.get("cedex") - if inpi_address.get("street2"): - scop_data["street2"] = inpi_address.get("street2") - if inpi_address.get("zip"): - scop_data["zip"] = inpi_address.get("zip") - if inpi_address.get("city"): - scop_data["city"] = inpi_address.get("city") - - self.write(scop_data) diff --git a/models/scop_period.py b/models/scop_period.py new file mode 100644 index 0000000000000000000000000000000000000000..4d6bd9630515b01f9e1627ee4bf5197aa3967c47 --- /dev/null +++ b/models/scop_period.py @@ -0,0 +1,14 @@ +# © 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 + + +class ScopPeriod(models.Model): + _inherit = "scop.period" + + end_reason = fields.Selection( + selection_add=[ + ("inpi", "MAJ via inpi"), + ] + ) diff --git a/views/res_partner.xml b/views/res_partner.xml index 2daa7fe9a8f86589209fa98ca56de162bdb48b55..6335a811e37a71b911373e545915035e0ddb4d62 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -16,7 +16,6 @@ /> <field name="arch" type="xml"> <xpath expr="//header" position="inside"> - <button name="update_from_inpi" type="object" diff --git a/wizard/inpi_update_wizard.py b/wizard/inpi_update_wizard.py index da17a43ef5929574584b4d754aa7ce3624ccdb1d..5d77b96e15a002faaf045d63811d6401eb0e4096 100644 --- a/wizard/inpi_update_wizard.py +++ b/wizard/inpi_update_wizard.py @@ -1,10 +1,7 @@ # © 2020 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from datetime import datetime -from requests.exceptions import HTTPError from odoo import api, fields, models -from odoo.exceptions import UserError class InpiUpdateWizard(models.TransientModel): @@ -17,13 +14,18 @@ class InpiUpdateWizard(models.TransientModel): ("some", "Sélectionner des coopératives"), ], default="all", - string="Sélection des coopératives" + string="Sélection des coopératives", ) partner_ids = fields.Many2many( string="Coopérative(s)", comodel_name="res.partner", - domain=[("is_cooperative", "=", True),("siret", "!=", False)], + domain=[ + ("is_cooperative", "=", True), + ("siret", "!=", False), + ("project_status", "=", "4_suivi"), + ("is_company", "=", True), + ], ) def update(self): @@ -42,5 +44,3 @@ class InpiUpdateWizard(models.TransientModel): for scop in scop_to_update: scop.sudo().update_from_inpi(update_type="all") - -