From 22df2eea36617a39dd71f83d01b73c7a0e9e420f Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Fri, 3 Aug 2018 09:46:05 +0200 Subject: [PATCH] [ADD]GOLEM Member Account : add smart button for payments Also improve the method for opening invoices and store whole amount paid. --- golem_member_account/__manifest__.py | 3 +- golem_member_account/i18n/fr.po | 15 ++++++- .../i18n/golem_member_account.pot | 14 ++++++- golem_member_account/models/golem_member.py | 42 +++++++++++++++++-- .../views/golem_member_views.xml | 18 ++++++-- 5 files changed, 79 insertions(+), 13 deletions(-) diff --git a/golem_member_account/__manifest__.py b/golem_member_account/__manifest__.py index 30023c9..459d05e 100644 --- a/golem_member_account/__manifest__.py +++ b/golem_member_account/__manifest__.py @@ -19,7 +19,8 @@ { 'name': 'GOLEM members account', 'summary': 'GOLEM non-profit members account', - 'version': '10.0.1.0.1', + 'description': 'GOLEM non-profit members account', + 'version': '10.0.1.1.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois, Michel Dessenne', 'license': 'AGPL-3', diff --git a/golem_member_account/i18n/fr.po b/golem_member_account/i18n/fr.po index 38144da..45ac939 100644 --- a/golem_member_account/i18n/fr.po +++ b/golem_member_account/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-12 17:49+0000\n" -"PO-Revision-Date: 2018-02-12 17:49+0000\n" +"POT-Creation-Date: 2018-08-03 07:43+0000\n" +"PO-Revision-Date: 2018-08-03 09:44+0200\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -20,6 +20,11 @@ msgstr "" msgid "Invoiced" msgstr "Facturé" +#. module: golem_member_account +#: model:ir.ui.view,arch_db:golem_member_account.golem_member_form_inherit_golem_member_account +msgid "Paid" +msgstr "Payé" + #. module: golem_member_account #: selection:golem.member,last_payment_state:0 msgid "Checked" @@ -49,3 +54,9 @@ msgstr "Comptabilisé" #: selection:golem.member,last_payment_state:0 msgid "Reconciled" msgstr "Lettré" + +#. module: golem_member_account +#: model:ir.model.fields,field_description:golem_member_account.field_golem_member_total_paid +msgid "Total paid" +msgstr "Total payé" + diff --git a/golem_member_account/i18n/golem_member_account.pot b/golem_member_account/i18n/golem_member_account.pot index a8143cc..e3820b9 100644 --- a/golem_member_account/i18n/golem_member_account.pot +++ b/golem_member_account/i18n/golem_member_account.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-12 17:50+0000\n" -"PO-Revision-Date: 2018-02-12 17:50+0000\n" +"POT-Creation-Date: 2018-08-03 07:43+0000\n" +"PO-Revision-Date: 2018-08-03 07:43+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -20,6 +20,11 @@ msgstr "" msgid "Invoiced" msgstr "" +#. module: golem_member_account +#: model:ir.ui.view,arch_db:golem_member_account.golem_member_form_inherit_golem_member_account +msgid "Paid" +msgstr "" + #. module: golem_member_account #: selection:golem.member,last_payment_state:0 msgid "Checked" @@ -50,3 +55,8 @@ msgstr "" msgid "Reconciled" msgstr "" +#. module: golem_member_account +#: model:ir.model.fields,field_description:golem_member_account.field_golem_member_total_paid +msgid "Total paid" +msgstr "" + diff --git a/golem_member_account/models/golem_member.py b/golem_member_account/models/golem_member.py index abe2bfd..5f5c2ee 100644 --- a/golem_member_account/models/golem_member.py +++ b/golem_member_account/models/golem_member.py @@ -25,22 +25,56 @@ class GolemMember(models.Model): """ GOLEM Member adaptations """ _inherit = 'golem.member' + total_paid = fields.Monetary(compute='_compute_total_paid', store=True, + groups='account.group_account_invoice') last_payment_state = fields.Selection([('draft', 'Draft'), ('posted', 'Posted'), ('checked', 'Checked'), ('reconciled', 'Reconciled')], compute='_compute_last_payment_state') + @api.depends('invoice_ids.payment_ids', 'invoice_ids.payment_ids.state', + 'invoice_ids.payment_ids.amount') + def _compute_total_paid(self): + """ Computes total paid """ + for member in self: + payments = member.invoice_ids.mapped('payment_ids') + member.total_paid = sum( + payments.filtered(lambda p: p.state != 'draft').mapped('amount') + ) + @api.multi def open_partner_invoices(self): """ Open member invoices """ self.ensure_one() + action = self.env.ref('account.action_invoice_tree1') + context = {'type':'out_invoice', 'journal_type': 'sale', + 'search_default_partner_id': self[0].partner_id.id, + 'default_partner_id': self[0].partner_id.id} return {'type': 'ir.actions.act_window', - 'name': 'Invoices', + 'name': action.name, 'res_model': 'account.invoice', - 'view_mode': 'tree,form', - 'context': {'search_default_partner_id': self[0].partner_id.id, - 'default_partner_id': self[0].partner_id.id}} + 'view_type': action.view_type, + 'view_mode': action.view_mode, + 'domain': action.domain, + 'context': context} + + @api.multi + def open_partner_payments(self): + """ Open member payments """ + self.ensure_one() + action = self.env.ref('account.action_account_payments') + context = {'default_payment_type': 'inbound', + 'default_partner_type': 'customer', + 'search_default_partner_id': self[0].partner_id.id, + 'default_partner_id': self[0].partner_id.id} + return {'type': 'ir.actions.act_window', + 'name': action.name, + 'res_model': 'account.payment', + 'view_type': action.view_type, + 'view_mode': action.view_mode, + 'domain': action.domain, + 'context': context} @api.depends('invoice_ids') def _compute_last_payment_state(self): diff --git a/golem_member_account/views/golem_member_views.xml b/golem_member_account/views/golem_member_views.xml index 62d68a3..6bf3f42 100644 --- a/golem_member_account/views/golem_member_views.xml +++ b/golem_member_account/views/golem_member_views.xml @@ -27,6 +27,9 @@ along with this program. If not, see . golem.member +
+ +
+ - - - -