From 3100674ba46127c82ed2845af727559445a0b89b Mon Sep 17 00:00:00 2001
From: Remi <remi@le-filament.com>
Date: Mon, 7 Oct 2019 23:59:53 +0200
Subject: [PATCH] =?UTF-8?q?Fix=20d=C3=A9c=C3=A8s=20action?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 views/res_partner_cooperative.xml |  2 +-
 wizard/scop_deces_wizard.py       | 52 +++++++++++++------------------
 wizard/scop_deces_wizard.xml      |  1 -
 3 files changed, 23 insertions(+), 32 deletions(-)

diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml
index 44c2238..ec0b31d 100644
--- a/views/res_partner_cooperative.xml
+++ b/views/res_partner_cooperative.xml
@@ -74,7 +74,7 @@
                 <form string="Cooperatives">
                     <header>
                         <button string="Nouvelle période" type="action" name="%(cgscop_partner.scop_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '5_suivi')]}"/>
-                        <button string="Décés/Mise en sommeil" type="action" name="%(cgscop_partner.scop_deces_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': [('project_status', '!=', '5_suivi')]}"/>
+                        <button string="Décés/Mise en sommeil" type="action" name="%(cgscop_partner.scop_deces_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '5_suivi')]}"/>
                         <field name="project_status" widget="statusbar" clickable="True" statusbar_visible="1_information,2_pre-diagnostic,3_accompagnement,4_adhesion,5_suivi"/>
                     </header>
                     <sheet>
diff --git a/wizard/scop_deces_wizard.py b/wizard/scop_deces_wizard.py
index a738c8a..f82b085 100644
--- a/wizard/scop_deces_wizard.py
+++ b/wizard/scop_deces_wizard.py
@@ -2,6 +2,7 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from odoo import api, fields, models
+from odoo.exceptions import ValidationError
 
 
 class ScopDecesWizard(models.TransientModel):
@@ -16,30 +17,17 @@ class ScopDecesWizard(models.TransientModel):
     @api.model
     def _default_last_period_id(self):
         return self.env['scop.period'].search(
-            [('partner_id', '=', self.env.context.get('active_id'))],
-            order='create_date desc',
-            limit=1)
+            [('partner_id', '=', self.env.context.get('active_id')),
+             ('end_reason', '=', False)],
+            limit=1).id
 
     # Fields common
     partner_id = fields.Integer('Partner', default=_default_partner_id)
 
     # Fields previous period
-    last_period_id = fields.One2many(
-        comodel_name='scop.period',
-        inverse_name='partner_id',
-        string="Dernière période",
-        default=_default_last_period_id)
+    last_period_id = fields.Integer(default=_default_last_period_id)
     end = fields.Date(
         'Fin de validité', required=True, default=fields.Date.today())
-    end_reason = fields.Selection(
-        [('juri', "Modification de la forme juridique"),
-         ('form', "Changement de forme coopérative"),
-         ('acti', "Changement d'activité (NAF)"),
-         ('adr', "Changement d'adresse"),
-         ('nom', "Changement de dénomination sociale"),
-         ('autr', "Autres")],
-        string='Motif',
-        default='autr')
     dissolution_reason_id = fields.Many2one(
         'res.partner.dissolution.reason',
         string="Motif Décés",
@@ -51,16 +39,20 @@ class ScopDecesWizard(models.TransientModel):
     def deces_action(self):
         # Close previous period
         last_period_id = self.env['scop.period'].browse(
-            self.last_period_id.id)
-        last_period_id.write({
-            'end': self.end,
-            'end_reason': self.end_reason,
-            'comments': self.comments,
-        })
-
-        # Update partner
-        partner = self.env['res.partner'].browse(self.partner_id)
-        partner.write({
-            'dissolution_date': self.end,
-            'dissolution_reason_id': self.dissolution_reason_id.id
-        })
+            self.last_period_id)
+        if last_period_id:
+            last_period_id.write({
+                'end': self.end,
+                'end_reason': 'autr',
+                'comments': self.comments,
+            })
+
+            # Update partner
+            partner = self.env['res.partner'].browse(self.partner_id)
+            partner.write({
+                'dissolution_date': self.end,
+                'dissolution_reason_id': self.dissolution_reason_id.id
+            })
+        else:
+            raise ValidationError(
+                "Il n'existe pas de période à fermer.")
diff --git a/wizard/scop_deces_wizard.xml b/wizard/scop_deces_wizard.xml
index 3e35276..3c287ec 100644
--- a/wizard/scop_deces_wizard.xml
+++ b/wizard/scop_deces_wizard.xml
@@ -10,7 +10,6 @@
                         <field name="end"/>
                         <field name="dissolution_reason_id"/>
                         <field name="comments"/>
-                        <field name="end_reason" invisible="1"/>
                 </group>
                 <footer>
                     <button class="btn btn-sm btn-primary" name="deces_action" string="Créer" type="object" confirm="Êtes-vous sûr de vouloir clôturer la dernière période ?"/>
-- 
GitLab