From 9c2a0924232adeef86bb0045ab425115c1f6a132 Mon Sep 17 00:00:00 2001 From: Julien Ortet <julien@le-filament.com> Date: Wed, 9 Apr 2025 12:04:40 +0200 Subject: [PATCH] [UPD] add directors --- __manifest__.py | 1 + models/__init__.py | 2 +- models/cgscop_inpi_director.py | 32 +++++++++++++++++-- models/res_partner.py | 23 +++++++++----- security/ir.model.access.csv | 1 + views/cgscop_inpi_director_views.xml | 47 ++++++++++++++++++++++++++++ views/res_partner.xml | 10 ++++-- wizard/inpi_update_wizard.py | 3 +- 8 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 views/cgscop_inpi_director_views.xml diff --git a/__manifest__.py b/__manifest__.py index a4d8668..14ff5b7 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -21,6 +21,7 @@ # views "views/menus.xml", "views/res_partner.xml", + "views/cgscop_inpi_director_views.xml", # templates # wizards "wizard/inpi_update_wizard_views.xml", diff --git a/models/__init__.py b/models/__init__.py index 35b34ad..ff3ac7d 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -2,4 +2,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import res_partner - +from . import cgscop_inpi_director diff --git a/models/cgscop_inpi_director.py b/models/cgscop_inpi_director.py index 15c4230..294b307 100644 --- a/models/cgscop_inpi_director.py +++ b/models/cgscop_inpi_director.py @@ -4,18 +4,46 @@ import datetime import logging from odoo import _, fields, models +import odoo.addons.api_inpi.models.inpi_models as inpi_models logger = logging.getLogger(__name__) class CgScopInpiDirector(models.Model): + _name = "cgscop.inpi.director" _description = "Dirigeant" partner_id = fields.Many2one( comodel_name="res.partner", - string="Dirigeant", + string="Société", ondelete="restrict", ) - name = fields.Char() + + name = fields.Char("Nom") + surname = fields.Char("Prénom") + 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) + ] + ) + + 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 c75f87b..8850e67 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -15,11 +15,11 @@ class ResPartner(models.Model): wizard_id = fields.Char() - # director_ids = fields.One2many( - # comodel_name="cgscop.inpi.director", - # inverse_name="partner_id", - # string="Dirigeants", - # ) + inpi_director_ids = fields.One2many( + comodel_name="cgscop.inpi.director", + inverse_name="partner_id", + string="Dirigeants", + ) # -------------------------------------------------- # Fonctions utiles traiement reponse INPI @@ -323,8 +323,15 @@ class ResPartner(models.Model): # DIRIGEANTS # -------------------------------------------------- - def _update_dirigeant_from_inpi(self, inpi_data, new_period=True): - pass + 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) + + + # -------------------------------------------------- # ADRESSE @@ -372,7 +379,7 @@ class ResPartner(models.Model): self._update_forme_juridique_from_inpi(inpi_data=inpi_data, new_period=False) self._update_naf_from_inpi(inpi_data=inpi_data, new_period=False) self._update_address_from_inpi(inpi_data=inpi_data, new_period=False) - self._update_dirigeant_from_inpi(inpi_data=inpi_data, new_period=False) + self._update_dirigeant_from_inpi(inpi_data=inpi_data) self._update_etablissement_from_inpi(inpi_data=inpi_data) period = self._get_current_period() diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 8043782..30c35e2 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_inpi_wizard,access_inpi_wizard,model_inpi_update_wizard,base.group_user,1,1,1,1 +access_cgscop_inpi_director,access_cgscop_inpi_director,model_cgscop_inpi_director,base.group_user,1,1,1,1 diff --git a/views/cgscop_inpi_director_views.xml b/views/cgscop_inpi_director_views.xml new file mode 100644 index 0000000..95864fc --- /dev/null +++ b/views/cgscop_inpi_director_views.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <data> + <!-- Form --> + <record id="cgscop_inpi_director_form_view" model="ir.ui.view"> + <field name="name">cgscop.inpi.director.form</field> + <field name="model">cgscop.inpi.director</field> + <field name="arch" type="xml"> + <form> + <group> + <field name="name" /> + <field name="surname" /> + <field name="partner_id" /> + <field name="role" /> + <field name="birthday" /> + </group> + </form> + </field> + </record> + + <!-- List --> + <record id="cgscop_inpi_director_tree_view" model="ir.ui.view"> + <field name="name">cgscop.inpi.director.tree</field> + <field name="model">cgscop.inpi.director</field> + <field name="arch" type="xml"> + <tree string="Modifications" editable="bottom"> + <field name="name" /> + <field name="surname" /> + <field name="partner_id" /> + <field name="role" /> + </tree> + </field> + </record> + + <!-- Search view --> + + + <!-- Actions --> + <record id="cgscop_inpi_director_act_window" model="ir.actions.act_window"> + <field name="name">Greffe</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">cgscop.inpi.director</field> + <field name="view_mode">tree,form</field> + </record> + + </data> +</odoo> diff --git a/views/res_partner.xml b/views/res_partner.xml index c8945b8..2daa7fe 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -6,9 +6,9 @@ <!-- Form --> <record model="ir.ui.view" - id="scop_greffe_inherit_res_partner_view" + id="cgscop_inpi_inherit_res_partner_view" > - <field name="name">scop.greffe.partner.view</field> + <field name="name">cgscop.inpi.partner.view</field> <field name="model">res.partner</field> <field name="inherit_id" @@ -24,6 +24,12 @@ string="Mettre à jours depuis INPI" /> </xpath> + <xpath expr="//notebook" position="inside"> + <page name="director_page" string="Dirigeants"> + <field name="inpi_director_ids" /> + </page> + + </xpath> </field> </record> </data> diff --git a/wizard/inpi_update_wizard.py b/wizard/inpi_update_wizard.py index 03f6b0f..da17a43 100644 --- a/wizard/inpi_update_wizard.py +++ b/wizard/inpi_update_wizard.py @@ -41,7 +41,6 @@ class InpiUpdateWizard(models.TransientModel): scop_to_update = self.partner_ids for scop in scop_to_update: - #TODO put in queue job - scop.delay().update_from_inpi(update_type="all") + scop.sudo().update_from_inpi(update_type="all") -- GitLab