diff --git a/golem_activity_registration_payment/__manifest__.py b/golem_activity_registration_payment/__manifest__.py index 3261587..1e44ec3 100644 --- a/golem_activity_registration_payment/__manifest__.py +++ b/golem_activity_registration_payment/__manifest__.py @@ -20,7 +20,7 @@ 'name': 'GOLEM Activity Member Registration Payments', 'summary': 'GOLEM Activities Member Registration Payments', 'description': 'GOLEM Activities Member Registration Payments', - 'version': '10.0.0.6.0', + 'version': '10.0.0.6.1', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_activity_registration_payment/i18n/fr.po b/golem_activity_registration_payment/i18n/fr.po index b1e93d7..202edba 100644 --- a/golem_activity_registration_payment/i18n/fr.po +++ b/golem_activity_registration_payment/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-09-26 09:44+0000\n" -"PO-Revision-Date: 2018-09-26 11:58+0200\n" +"POT-Creation-Date: 2018-11-01 17:43+0000\n" +"PO-Revision-Date: 2018-11-01 18:45+0100\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -157,14 +157,14 @@ msgid "GOLEM Member" msgstr "Adhérent" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:153 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:161 #: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_invoice_id #, python-format msgid "Generated invoice" msgstr "Facture générée" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:168 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:176 #: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids #, python-format msgid "Generated payments" @@ -351,13 +351,13 @@ msgid "Status" msgstr "État" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:149 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:157 #, python-format msgid "There is no generated invoice." msgstr "Il n'y a pas de facture générée." #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:164 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:172 #, python-format msgid "There is no generated payments." msgstr "Il n'y a pas de paiement généré." diff --git a/golem_activity_registration_payment/i18n/golem_activity_registration_payment.pot b/golem_activity_registration_payment/i18n/golem_activity_registration_payment.pot index b483cc8..939a8f8 100644 --- a/golem_activity_registration_payment/i18n/golem_activity_registration_payment.pot +++ b/golem_activity_registration_payment/i18n/golem_activity_registration_payment.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-09-26 09:44+0000\n" -"PO-Revision-Date: 2018-09-26 09:44+0000\n" +"POT-Creation-Date: 2018-11-01 17:43+0000\n" +"PO-Revision-Date: 2018-11-01 17:43+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -153,14 +153,14 @@ msgid "GOLEM Member" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:153 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:161 #: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_invoice_id #, python-format msgid "Generated invoice" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:168 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:176 #: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids #, python-format msgid "Generated payments" @@ -347,13 +347,13 @@ msgid "Status" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:149 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:157 #, python-format msgid "There is no generated invoice." msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:164 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:172 #, python-format msgid "There is no generated payments." msgstr "" diff --git a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py index f2eab93..726529a 100644 --- a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py +++ b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py @@ -21,7 +21,6 @@ import logging from math import ceil from odoo import models, fields, api, _ -from odoo.exceptions import ValidationError from odoo.exceptions import UserError _LOGGER = logging.getLogger(__name__) @@ -51,10 +50,6 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): ondelete='cascade') member_id = fields.Many2one('golem.member', 'Member', required=True, ondelete='cascade') - guardian_ids = fields.Many2many('res.partner', compute='_compute_guardian_ids') - on_the_name_of = fields.Many2one('res.partner', 'On the Name of', - ondelete='cascade') - is_minor = fields.Boolean(related='member_id.is_minor') line_ids = fields.One2many('golem.activity.registration.invoicing.line', 'invoicing_id', string='Activities') schedule_id = fields.Many2one('golem.payment.schedule', 'Payment schedule', @@ -70,15 +65,6 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): ondelete='cascade') payment_ids = fields.Many2many('account.payment', string='Generated payments') - @api.depends('member_id') - def _compute_guardian_ids(self): - for rec in self: - partner_ids = rec.member_id.legal_guardian_ids.mapped('legal_guardian_id').ids - if hasattr(rec.member_id, 'family_member_ids'): - partner_ids += rec.member_id.family_member_ids.filtered( - lambda r: r.id != self.member_id.partner_id.id).ids - rec.guardian_ids = [(6, 0, partner_ids)] - def _create_invoice_line(self, product, price, invoice): """ Create invoice line : needs cache record for onchange, then real writing... """ @@ -97,10 +83,7 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): def _create_invoice(self): """ Create invoice and lines """ self.ensure_one() - if self[0].is_minor: - partner = self[0].on_the_name_of - else: - partner = self[0].member_id.partner_id + partner = self[0].member_id.partner_id #check if there is a draft invoice for the current customer member_line = partner.member_lines.filtered( lambda ml: (ml.membership_id.membership_season_id == self.season_id @@ -114,10 +97,6 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): 'account_id': partner.property_account_receivable_id.id, 'fiscal_position_id': partner.property_account_position_id.id }) - if self[0].is_minor: - invoice.write({'is_minor_invoice': True, - 'partner_ids': [(6, 0, [self[0].on_the_name_of.id, - self[0].member_id.partner_id.id])]}) for line in self.line_ids: product = line.activity_id.product_id.product_variant_id invoice_line = self._create_invoice_line(product, line.price, invoice) @@ -156,10 +135,6 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): def validate(self): """ Validate and create invoice and payments """ self.ensure_one() - if self.is_minor and not self.on_the_name_of: - err = _('This member is a minor, please fill on the name of so you ' - 'invoice this registration') - raise ValidationError(err) self[0].line_ids.mapped('registration_id').write({'state': 'confirmed'}) invoice = self._create_invoice() self.invoice_id = invoice diff --git a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.xml b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.xml index 283c490..c011f68 100644 --- a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.xml +++ b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.xml @@ -2,6 +2,7 @@ + + + + + + + GOLEM Activity Registration Invoicing Form + golem.activity.registration.invoicing + + + + + + + + + + + + diff --git a/golem_activity_registration_payment_member_minor/wizard/__init__.py b/golem_activity_registration_payment_member_minor/wizard/__init__.py new file mode 100644 index 0000000..bcc8d2a --- /dev/null +++ b/golem_activity_registration_payment_member_minor/wizard/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from . import golem_activity_registration_invoicing diff --git a/golem_activity_registration_payment_member_minor/wizard/golem_activity_registration_invoicing.py b/golem_activity_registration_payment_member_minor/wizard/golem_activity_registration_invoicing.py new file mode 100644 index 0000000..4549c82 --- /dev/null +++ b/golem_activity_registration_payment_member_minor/wizard/golem_activity_registration_invoicing.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- + +# Copyright 2017-2018 Fabien Bourgeois +# Copyright 2018 Youssef El Ouahby +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +""" GOLEM Activity Registration Invoicing Wizard """ + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError + + +class GolemActivityRegistrationInvoicing(models.TransientModel): + """ GOLEM Activity Registration Invoicing Wizard """ + _inherit = 'golem.activity.registration.invoicing' + + guardian_ids = fields.Many2many('res.partner', compute='_compute_guardian_ids') + on_the_name_of = fields.Many2one('res.partner', 'On the Name of', + ondelete='cascade') + is_minor = fields.Boolean(related='member_id.is_minor') + + @api.depends('member_id') + def _compute_guardian_ids(self): + for rec in self: + guardian_ids = rec.member_id.legal_guardian_ids.mapped('legal_guardian_id').ids + rec.guardian_ids = [(6, 0, guardian_ids)] + + @api.multi + def _create_invoice(self): + """ Create invoice and lines """ + self.ensure_one() + invoice = super(GolemActivityRegistrationInvoicing, self)._create_invoice() + if self[0].is_minor: + invoice.write({'': self[0].on_the_name_of.id, + 'is_minor_invoice': True, + 'partner_ids': [(6, 0, [self[0].on_the_name_of.id, + self[0].member_id.partner_id.id])]}) + return invoice + + @api.multi + def validate(self): + """ Validate and create invoice and payments """ + self.ensure_one() + action = super(GolemActivityRegistrationInvoicing, self).validate() + if self.is_minor and not self.on_the_name_of: + err = _('This member is a minor, please fill on the name of so you ' + 'invoice this registration') + raise ValidationError(err) + return action +