diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml index 44c223847c867dee5773590d35693f75f2c8b221..ec0b31de598b09416cb3ad3869068a7d72f0d96b 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 a738c8ac7763dc6797af213e7bbd962b041c0302..f82b085c5d999aa00dd4988cc37d0013115cbeab 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 3e3527620917259bab0d8904f1184c51b0a9b7f6..3c287ec549ebdb5d4a25bc2bb51815f2bdd7aa4a 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 ?"/>