From 199406a5ab8f90b807ae268d8d585f854959b821 Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Thu, 22 May 2025 17:30:55 +0200
Subject: [PATCH] [UPD] add forme juridique

---
 __manifest__.py                         |  1 +
 datas/res_partner_company_type_data.xml | 56 +++++++++++++++++++++++++
 models/__init__.py                      |  1 +
 models/res_partner.py                   | 18 +++++++-
 models/res_partner_company_type.py      | 12 ++++++
 5 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 datas/res_partner_company_type_data.xml
 create mode 100644 models/res_partner_company_type.py

diff --git a/__manifest__.py b/__manifest__.py
index 058cd13..15bb4d8 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -16,6 +16,7 @@
         # security
         "security/ir.model.access.csv",
         # datas
+        "datas/res_partner_company_type_data.xml",
         # wizards
         "wizard/inpi_update_wizard_views.xml",
         # views
diff --git a/datas/res_partner_company_type_data.xml b/datas/res_partner_company_type_data.xml
new file mode 100644
index 0000000..01d18f1
--- /dev/null
+++ b/datas/res_partner_company_type_data.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" ?>
+<odoo>
+    <data>
+        <record id="cgscop_partner.riga_14675" model="res.partner.company.type">
+            <field name="code_forme_juridique">10</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14672" model="res.partner.company.type">
+            <field name="code_forme_juridique">92</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14673" model="res.partner.company.type">
+            <field name="code_forme_juridique">72</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14674" model="res.partner.company.type">
+            <field name="code_forme_juridique">23</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14669" model="res.partner.company.type">
+            <field name="code_forme_juridique">54</field>
+        </record>
+
+        <record id="cgscop_partner.riga_16496" model="res.partner.company.type">
+            <field name="code_forme_juridique">5498</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14668" model="res.partner.company.type">
+            <field name="code_forme_juridique">5599</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14670" model="res.partner.company.type">
+            <field name="code_forme_juridique">56</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14677" model="res.partner.company.type">
+            <field name="code_forme_juridique">65</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14860" model="res.partner.company.type">
+            <field name="code_forme_juridique">6540</field>
+        </record>
+
+        <record id="cgscop_partner.riga_16771" model="res.partner.company.type">
+            <field name="code_forme_juridique">5785</field>
+        </record>
+
+        <record id="cgscop_partner.riga_14671" model="res.partner.company.type">
+            <field name="code_forme_juridique">5710</field>
+        </record>
+
+        <record id="cgscop_partner.riga_16399" model="res.partner.company.type">
+            <field name="code_forme_juridique">5720</field>
+        </record>
+    </data>
+</odoo>
diff --git a/models/__init__.py b/models/__init__.py
index 9cd61eb..2afe710 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -4,3 +4,4 @@
 from . import res_partner
 from . import cgscop_inpi_director
 from . import scop_period
+from . import res_partner_company_type
diff --git a/models/res_partner.py b/models/res_partner.py
index a086d8c..ab0e6e4 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -386,9 +386,25 @@ class ResPartner(models.Model):
     def _update_forme_juridique_from_inpi(self, inpi_data, new_period=True):
         """
         MAJ forme juridique
-        En attente reponse CGSCOP
+        on essai de faire correspondre le code de FJ reçu avec un
+        de ceux utilisé par la CGSCOP
         """
+
         logger.info(_(f"Update forme juridique for {self.name}: {self.siren}"))
+        if not inpi_data.formality.content.personneMorale:
+            return self._get_current_period()
+        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)])
+        if not cj_id:
+            cj_id = self.env["res.partner.company.type"].search([
+                ("code_forme_juridique", "=", inpi_forme_juridique[:3])])
+
+        if cj_id:
+            self.partner_company_type_id = cj_id.id
+        return self._get_current_period()
+
 
     # --------------------------------------------------
     # DIRIGEANTS
diff --git a/models/res_partner_company_type.py b/models/res_partner_company_type.py
new file mode 100644
index 0000000..d6e7b9e
--- /dev/null
+++ b/models/res_partner_company_type.py
@@ -0,0 +1,12 @@
+# Copyright 2017-2018 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import fields, models
+
+
+class ResPartnerCompanyType(models.Model):
+
+    _inherit = "res.partner.company.type"
+
+
+    code_forme_juridique = fields.Char(string="Code forme juridique", required=False, translate=True)
-- 
GitLab