Skip to content
Extraits de code Groupes Projets
Valider 8b5b9dda rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

Merge branch '12.0-RV-Radiation-globale' into '12.0-evo-202003'

Radiation globale

See merge request !7
parents 10251d61 4e6e0863
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!7Radiation globale
...@@ -15,10 +15,13 @@ class ScopMembershipOutWizard(models.TransientModel): ...@@ -15,10 +15,13 @@ class ScopMembershipOutWizard(models.TransientModel):
return self.env.context.get('active_id') return self.env.context.get('active_id')
partner_id = fields.Integer('Partner', default=_default_partner_id) partner_id = fields.Integer('Partner', default=_default_partner_id)
type_all = fields.Boolean(
string="Tous types d'adhésion",
default=True)
type_id = fields.Many2one( type_id = fields.Many2one(
'scop.membership.type', 'scop.membership.type',
string="Type d'adhésion", string="Type d'adhésion",
ondelete='restrict', required=True) ondelete='restrict')
end = fields.Date( end = fields.Date(
"Fin d'adhésion", required=True, default=fields.Date.today()) "Fin d'adhésion", required=True, default=fields.Date.today())
end_reason_id = fields.Many2one( end_reason_id = fields.Many2one(
...@@ -28,20 +31,46 @@ class ScopMembershipOutWizard(models.TransientModel): ...@@ -28,20 +31,46 @@ class ScopMembershipOutWizard(models.TransientModel):
required=True) required=True)
note = fields.Text('Commentaires') note = fields.Text('Commentaires')
#............................................................
# Fermeture des périodes
#............................................................
@api.multi @api.multi
def member_out(self): def member_out(self):
# Close previous period
for period in self: for period in self:
# On veut cloture toute les périodes
if (period.type_all):
last_periods = self.env['scop.membership.period'].search(
[('partner_id', '=', period.partner_id),('end', '=', False)])
for lp in last_periods:
period_type_id = lp.type_id.id
period.member_out_period(period.partner_id, period_type_id, period.end, period.end_reason_id.id, period.note)
# On ne veut cloturer qu'une seule période
else:
period_type_id = period.type_id.id
period.member_out_period(period.partner_id, period_type_id, period.end, period.end_reason_id.id, period.note)
return
#............................................................
# Fermeture d'une période
#............................................................
def member_out_period(self, partner_id, period_type_id, end, end_reason_id, note):
# Lecture de la dernière période active
last_period = self.env['scop.membership.period'].search( last_period = self.env['scop.membership.period'].search(
[('partner_id', '=', period.partner_id), [('partner_id', '=', partner_id),
('end', '=', False), ('type_id', '=', period.type_id.id)], ('end', '=', False), ('type_id', '=', period_type_id)],
limit=1) limit=1)
if last_period: if last_period:
if period.end >= last_period.start: if end >= last_period.start:
last_period.write({ last_period.write({
'end': period.end, 'end': end,
'end_reason_id': period.end_reason_id.id, 'end_reason_id': end_reason_id,
'note': period.note, 'note': note,
}) })
else: else:
raise ValidationError( raise ValidationError(
...@@ -51,3 +80,6 @@ class ScopMembershipOutWizard(models.TransientModel): ...@@ -51,3 +80,6 @@ class ScopMembershipOutWizard(models.TransientModel):
else: else:
raise ValidationError( raise ValidationError(
"Il n'existe pas de période avec ce type à fermer.") "Il n'existe pas de période avec ce type à fermer.")
return
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Radiation"> <form string="Radiation">
<group name="period" string="Radiation"> <group name="period" string="Radiation">
<field name="type_id" options="{'no_open': True, 'no_create': True}"/> <field name="type_all"/>
<field name="type_id" options="{'no_open': True, 'no_create': True}" attrs="{'required' : [('type_all','=', False)] ,'invisible': [('type_all','=', True)]}"/>
<field name="end"/> <field name="end"/>
<field name="end_reason_id" options="{'no_open': True, 'no_create': True}"/> <field name="end_reason_id" options="{'no_open': True, 'no_create': True}"/>
<field name="note"/> <field name="note"/>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter