From e4ea0a31872995178e4659fec3becf39b2cfd079 Mon Sep 17 00:00:00 2001 From: michel Date: Mon, 12 Feb 2018 16:00:06 +0100 Subject: [PATCH] [TMP] state last payment on member form and tree viwes --- golem_member_account/models/golem_member.py | 33 +++++++++++++------ .../views/golem_member_views.xml | 15 +++++++-- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/golem_member_account/models/golem_member.py b/golem_member_account/models/golem_member.py index d6f3b4a..93ff71d 100644 --- a/golem_member_account/models/golem_member.py +++ b/golem_member_account/models/golem_member.py @@ -39,17 +39,30 @@ class GolemMember(models.Model): 'context': {'search_default_partner_id': self.partner_id.id, 'default_partner_id': self.partner_id.id}} - - state_last_invoice = fields.Integer(compute='_compute_state_of_last_invoice') - # account_payment_ids = fields.One2many('account.payment', 'partner_id') + state_last_invoice = fields.Selection([('draft', 'Draft'), + ('posted', 'Posted'), + ('checked', 'Checked'), + ('reconciled', 'Reconciled')], + compute='_compute_state_of_last_invoice') @api.depends('invoice_ids') def _compute_state_of_last_invoice(self): + """ Computes last invoice payment state : check last invoice, then more + recent payment and retrieve its state """ for member in self: - state_invoice = member.invoice_ids.filtered(lambda inv: inv.state in ('open', 'paid')) - date_state_invoice = state_invoice.sorted(key=lambda r: r.date_invoice, reverse=True) - - # state_payment = payment.payment_ids.filtered(lambda inv: inv.state in ('open', 'paid')) - # date_state_payment = state_payment.sorted(key=lambda r: r.date, reverse=True) - - member.state_last_invoice = date_state_invoice[0] + if member.invoice_ids: + invoice_ids = member.invoice_ids.filtered(lambda inv: inv.state in ('open', 'paid')) + invoice_ids = invoice_ids.sorted(key=lambda r: r.date_invoice, reverse=True) + payment_ids = invoice_ids[0].payment_ids if invoice_ids else False + if payment_ids: + payment_ids = payment_ids.sorted(lambda r: r.payment_date, reverse=True) + today = fields.Date.today() + for payment in payment_ids: + if payment.payment_date < today: + last_payment_id = None + last_payment_id = payment + break + if last_payment_id: + member.state_last_invoice = last_payment_id.state + return + member.state_last_invoice = False diff --git a/golem_member_account/views/golem_member_views.xml b/golem_member_account/views/golem_member_views.xml index 1de2191..bf3fd5f 100644 --- a/golem_member_account/views/golem_member_views.xml +++ b/golem_member_account/views/golem_member_views.xml @@ -35,7 +35,6 @@ along with this program. If not, see . Invoiced - @@ -43,9 +42,21 @@ along with this program. If not, see . - + + + GOLEM Member account tree + golem.member + + + + + + + + +