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