From 02427eb7c0d21e66ea914a16a4437a8af95bc35b Mon Sep 17 00:00:00 2001
From: Julien Ortet <julien@le-filament.com>
Date: Thu, 22 May 2025 14:22:47 +0200
Subject: [PATCH] [UPD] add first closeout

---
 models/res_partner.py | 24 ++++++++++++++++++++++++
 views/res_partner.xml |  4 ++++
 2 files changed, 28 insertions(+)

diff --git a/models/res_partner.py b/models/res_partner.py
index 72671d0..a086d8c 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -20,6 +20,11 @@ class ResPartner(models.Model):
         inverse_name="partner_id",
         string="Dirigeants",
     )
+    last_inpi_update_date = fields.Datetime(
+        string="Dernière mise à jours INPI",
+        tracking=True
+    )
+    first_company_closeout = fields.Date(string="Date de première cloture")
 
     # --------------------------------------------------
     # Fonctions utiles traiement reponse INPI
@@ -476,6 +481,22 @@ class ResPartner(models.Model):
         else:
             logger.info(_(f"No siege found for {self.name}: {self.siren}"))
 
+    # --------------------------------------------------
+    # date de premiere cloture
+    # --------------------------------------------------
+
+    def _update_companie_first_closeout(self, inpi_data):
+        """
+        MAJ de la date de premiere cloture des comptes
+        """
+        logger.info(_(f"Update company first closeout date for {self.name}: {self.siren}"))
+        if inpi_data.formality.content.personneMorale and inpi_data.formality.content.personneMorale.identite:
+            description = inpi_data.formality.content.personneMorale.identite.description
+            if description.datePremiereCloture:
+                self.first_company_closeout = description.datePremiereCloture
+        else:
+            logger.info(_(f"No company first closeout date found for {self.name}: {self.siren}"))
+
     # --------------------------------------------------
     # UPDATE
     # --------------------------------------------------
@@ -486,6 +507,7 @@ class ResPartner(models.Model):
         Une periode est créee à la fin
         """
         logger.info(_(f"Update all for {self.name}: {self.siren}"))
+        self._update_companie_first_closeout(inpi_data=inpi_data)
         self._update_denomination_from_inpi(inpi_data=inpi_data, new_period=False)
         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)
@@ -498,3 +520,5 @@ class ResPartner(models.Model):
             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)
+
+        self.last_inpi_update_date = datetime.datetime.now()
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 4fcfe9c..daa94bf 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -17,6 +17,10 @@
                         <field name="inpi_director_ids" />
                     </page>
                 </xpath>
+                <xpath expr="//field[@name='closeout_month']" position="after">
+                    <field name="first_company_closeout" />
+                    <field name="last_inpi_update_date" />
+                </xpath>
             </field>
         </record>
     </data>
-- 
GitLab