diff --git a/__manifest__.py b/__manifest__.py index a4d8668e5ba18ddd2714be529a88bba8f0f47a06..14ff5b70cd2c4777593d8f04979579a58215cbe2 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 35b34adace4c4ea48b51d794d7fb39d73a1017c9..ff3ac7ddffb56e9cec9421a914e4a7e72bac367a 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 15c4230dbb2228c8010b2010b1e84cfa0904da47..294b3078e5e6c24133d6e13df27cd6c56e452349 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 c75f87bfceb9097b3035c0c004c9d7f02fee2f9e..8850e676df67f6d54323c2558d92d73799153614 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 8043782473646e429f0af858d042c9a57ddef4e8..30c35e2286e4152e4b25e1cccacc35bf06db8b3e 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 0000000000000000000000000000000000000000..95864fc52f6ae6d901f14694ad5c022a66af6666 --- /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 c8945b83e6edad07490ccd59fc716cc6720db5e3..2daa7fe9a8f86589209fa98ca56de162bdb48b55 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 03f6b0f6e9267d9020a435b339823923eb57bdb0..da17a43ef5929574584b4d754aa7ce3624ccdb1d 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")