diff --git a/wizard/scop_deces_wizard.py b/wizard/scop_deces_wizard.py index f82b085c5d999aa00dd4988cc37d0013115cbeab..9927c04566121ec785a345dd9f70506abc4af4e2 100644 --- a/wizard/scop_deces_wizard.py +++ b/wizard/scop_deces_wizard.py @@ -38,21 +38,27 @@ class ScopDecesWizard(models.TransientModel): @api.multi def deces_action(self): # Close previous period - last_period_id = self.env['scop.period'].browse( - 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.") + for period in self: + last_period = self.env['scop.period'].browse( + period.last_period_id) + if last_period: + if period.end >= last_period.start: + last_period.write({ + 'end': period.end, + 'end_reason': 'autr', + 'comments': period.comments, + }) + else: + raise ValidationError( + "La date de fin doit être postèrieure à la date de " + + "début : " + str(last_period.start)) + + # Update partner + partner = self.env['res.partner'].browse(period.partner_id) + partner.write({ + 'dissolution_date': period.end, + 'dissolution_reason_id': period.dissolution_reason_id.id + }) + else: + raise ValidationError( + "Il n'existe pas de période à fermer.") diff --git a/wizard/scop_period_wizard.py b/wizard/scop_period_wizard.py index 75720da6167905d30bf724651be3680ea41aab99..616d7481d6a39c41d4a88e2b4fe84dcdf978d896 100644 --- a/wizard/scop_period_wizard.py +++ b/wizard/scop_period_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 ScopPeiodWizard(models.TransientModel): @@ -162,53 +163,64 @@ class ScopPeiodWizard(models.TransientModel): @api.multi def create_period(self): - # Create new period - self.env['scop.period'].create({ - 'partner_id': self.partner_id, - 'start': self.start, - 'name': self.name, - 'cooperative_form_id': self.cooperative_form_id.id, - 'partner_company_type_id': self.partner_company_type_id.id, - 'siret': self.siret, - 'street': self.street, - 'street2': self.street2, - 'street3': self.street3, - 'zip': self.zip, - 'zip_id': self.zip_id.id, - 'city': self.city, - 'cedex': self.cedex, - 'state_id': self.state_id.id, - 'country_id': self.country_id.id, - 'naf_id': self.naf_id.id, - 'cae': self.cae - }) - - # Close previous period - previous_period = self.env['scop.period'].browse( - self.previous_period_id) - if previous_period: - previous_period.write({ - 'end': self.start, - 'end_reason': self.end_reason, - 'comments': self.comments, - }) - - # Update partner - partner = self.env['res.partner'].browse(self.partner_id) - partner.write({ - 'name': self.name, - 'cooperative_form_id': self.cooperative_form_id.id, - 'partner_company_type_id': self.partner_company_type_id.id, - 'siret': self.siret, - 'street': self.street, - 'street2': self.street2, - 'street3': self.street3, - 'zip': self.zip, - 'zip_id': self.zip_id.id, - 'city': self.city, - 'cedex': self.cedex, - 'state_id': self.state_id.id, - 'country_id': self.country_id.id, - 'naf_id': self.naf_id.id, - 'cae': self.cae - }) + for period in self: + partner_values = {} + # Close previous period + previous_period = self.env['scop.period'].search( + [('partner_id', '=', self.env.context.get('active_id'))], + limit=1) + if previous_period: + if (previous_period.end and + period.start >= previous_period.end): + partner_values = { + 'dissolution_date': False, + 'dissolution_reason_id': False, + } + else: + raise ValidationError( + "La nouvelle période ne peut commencer avant la " + + "fin de la période précédente : " + + str(previous_period.end)) + if period.start >= previous_period.start: + if not previous_period.end_reason: + previous_period.write({ + 'end': period.start, + 'end_reason': period.end_reason, + 'comments': period.comments, + }) + else: + raise ValidationError( + "La nouvelle période ne peut commencer avant la " + + "période précédente : " + + str(previous_period.start)) + + # Create new period + period_values = { + 'start': period.start, + 'partner_id': period.partner_id + } + + values = { + 'name': period.name, + 'cooperative_form_id': period.cooperative_form_id.id, + 'partner_company_type_id': period.partner_company_type_id.id, + 'siret': period.siret, + 'street': period.street, + 'street2': period.street2, + 'street3': period.street3, + 'zip': period.zip, + 'zip_id': period.zip_id.id, + 'city': period.city, + 'cedex': period.cedex, + 'state_id': period.state_id.id, + 'country_id': period.country_id.id, + 'naf_id': period.naf_id.id, + 'cae': period.cae + } + period_values.update(values) + self.env['scop.period'].create(period_values) + + # Update partner + partner_values.update(values) + partner = self.env['res.partner'].browse(period.partner_id) + partner.write(partner_values)