diff --git a/models/res_partner.py b/models/res_partner.py index 81ee4f8777348c5c7f0a52ef9b69f943a853bfe5..af8438b306ebd2006716a19787aa88dfd54d3ce6 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -54,8 +54,11 @@ class ScopPartner(models.Model): [('member', 'Adhérent'), ('not_member', 'Non Adhérent'), ('out', 'Radié')], - string="Statut d'adhésion", default="not_member") - member_number = fields.Char("No adhérent") + string="Statut d'adhésion", + compute='_compute_membership', store=True) + member_number = fields.Char( + "No adhérent", + compute='_compute_membership', store=True) cae = fields.Boolean("CAE", track_visibility='onchange') dissolution_date = fields.Date('Date de Décès', @@ -532,6 +535,27 @@ class ScopPartner(models.Model): and parent.cooperative_form_id.name == "SCIC"): partner.contact_legality = 'customer' + @api.depends('membership_period_ids') + def _compute_membership(self): + for partner in self: + type_cg = self.env['scop.membership.type'].search([ + ('name', '=', 'Confédération générale des SCOP')], limit=1).id + last_membership_period = self.env['scop.membership.period'].search( + [('partner_id', '=', partner.id), + ('type_id', '=', type_cg)], + limit=1) + if (last_membership_period + and not last_membership_period.end_reason_id + and last_membership_period.state == 'done'): + partner.membership_status = "member" + partner.member_number = last_membership_period.number + elif (last_membership_period + and last_membership_period.end_reason_id): + partner.membership_status = "out" + partner.member_number = last_membership_period.number + else: + partner.membership_status = "not_member" + class ResPartneCertification(models.Model): _name = "res.partner.certification"