diff --git a/golem_activity_registration/__manifest__.py b/golem_activity_registration/__manifest__.py index d2ce101..04c3107 100644 --- a/golem_activity_registration/__manifest__.py +++ b/golem_activity_registration/__manifest__.py @@ -18,7 +18,7 @@ { 'name': 'GOLEM Activity Member Registrations', 'summary': 'GOLEM Activities Member Registrations management', - 'version': '10.0.1.4.5', + 'version': '10.0.1.5.1', 'category': 'GOLEM', 'author': 'Fabien Bourgeois, Michel Dessenne', 'license': 'AGPL-3', diff --git a/golem_activity_registration/i18n/fr.po b/golem_activity_registration/i18n/fr.po index 4c5b9c7..bddeb50 100644 --- a/golem_activity_registration/i18n/fr.po +++ b/golem_activity_registration/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-08-09 14:23+0000\n" -"PO-Revision-Date: 2018-08-09 16:38+0200\n" +"POT-Creation-Date: 2018-09-26 08:25+0000\n" +"PO-Revision-Date: 2018-09-26 10:28+0200\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -204,6 +204,13 @@ msgstr "Le nombre de places ne peut pas être négatif" msgid "On default season, there is no activity for this member." msgstr "Sur la saison par défaut, il n'y a pas d'activité pour cet usager." +#. module: golem_activity_registration +#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_only_for_subscriber +#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_only_for_subscriber +#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration +msgid "Only for subscriber" +msgstr "Réservé aux adhérents" + #. module: golem_activity_registration #: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places msgid "Places" @@ -245,7 +252,7 @@ msgid "Service user" msgstr "Usager" #. module: golem_activity_registration -#: code:addons/golem_activity_registration/models/golem_activity_registration.py:70 +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:71 #, python-format msgid "Sorry, there is no more place !" msgstr "Désolé, il n'y a plus de place disponible !" @@ -256,13 +263,19 @@ msgid "Subscription" msgstr "Inscription" #. module: golem_activity_registration -#: code:addons/golem_activity_registration/models/golem_activity_registration.py:100 +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:130 +#, python-format +msgid "Subscription can not be executed : the targeted activity is only for subscriber." +msgstr "L'inscription n'a pas pu être faite : l'activité choisie est réservée aux adhérents." + +#. module: golem_activity_registration +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:134 #, python-format msgid "Subscription can not be executed : the targeted member is not on the same season as the activity." msgstr "L'inscription n'a pas pu être enregistrée : l'usager visé n'est pas ahdérant pour la même saison que celle pendant laquelle se déroule l'activité." #. module: golem_activity_registration -#: code:addons/golem_activity_registration/models/golem_activity_registration.py:92 +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:104 #: sql_constraint:golem.activity.registration:0 #, python-format msgid "This member has already been registered for this activity." diff --git a/golem_activity_registration/i18n/golem_activity_registration.pot b/golem_activity_registration/i18n/golem_activity_registration.pot index b56cd83..4bc0b2b 100644 --- a/golem_activity_registration/i18n/golem_activity_registration.pot +++ b/golem_activity_registration/i18n/golem_activity_registration.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-09 14:23+0000\n" -"PO-Revision-Date: 2018-08-09 14:23+0000\n" +"POT-Creation-Date: 2018-09-26 08:25+0000\n" +"PO-Revision-Date: 2018-09-26 08:25+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -204,6 +204,13 @@ msgstr "" msgid "On default season, there is no activity for this member." msgstr "" +#. module: golem_activity_registration +#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_only_for_subscriber +#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_only_for_subscriber +#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration +msgid "Only for subscriber" +msgstr "" + #. module: golem_activity_registration #: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places msgid "Places" @@ -245,7 +252,7 @@ msgid "Service user" msgstr "" #. module: golem_activity_registration -#: code:addons/golem_activity_registration/models/golem_activity_registration.py:70 +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:71 #, python-format msgid "Sorry, there is no more place !" msgstr "" @@ -256,13 +263,19 @@ msgid "Subscription" msgstr "" #. module: golem_activity_registration -#: code:addons/golem_activity_registration/models/golem_activity_registration.py:100 +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:130 +#, python-format +msgid "Subscription can not be executed : the targeted activity is only for subscriber." +msgstr "" + +#. module: golem_activity_registration +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:134 #, python-format msgid "Subscription can not be executed : the targeted member is not on the same season as the activity." msgstr "" #. module: golem_activity_registration -#: code:addons/golem_activity_registration/models/golem_activity_registration.py:92 +#: code:addons/golem_activity_registration/models/golem_activity_registration.py:104 #: sql_constraint:golem.activity.registration:0 #, python-format msgid "This member has already been registered for this activity." diff --git a/golem_activity_registration/models/golem_activity_registration.py b/golem_activity_registration/models/golem_activity_registration.py index 4a69f08..e6d6025 100644 --- a/golem_activity_registration/models/golem_activity_registration.py +++ b/golem_activity_registration/models/golem_activity_registration.py @@ -43,6 +43,7 @@ class GolemActivity(models.Model): index=True) places_used = fields.Integer('Places used', compute='compute_places_used', store=True) + only_for_subscriber = fields.Boolean(default=False) @api.multi @api.depends('activity_registration_ids') @@ -75,7 +76,7 @@ class GolemActivityRegistration(models.Model): """ GOLEM Activity Registration """ _name = 'golem.activity.registration' _description = 'GOLEM Activity Registration' - _rec_name ='activity_id' + _rec_name = 'activity_id' member_id = fields.Many2one('golem.member', string='Service user', required=True, ondelete='cascade', index=True) @@ -91,11 +92,33 @@ class GolemActivityRegistration(models.Model): ('registration_uniq', 'UNIQUE (member_id, activity_id)', _('This member has already been registered for this activity.'))] + @api.onchange('activity_id', 'activity_id.only_for_subscriber') + def onchange_activity_subcrib(self): + """ If activity only for subscribers : do not allow non subscribers """ + domain = [] + if self.activity_id.only_for_subscriber: + domain.append(('membership_state', 'not in', ('none', 'canceled', 'old'))) + return {'domain': {'member_id': domain}} + + @api.onchange('member_id') + def onchange_member_subcrib(self): + """ If not subscriber : do not show subscribers only activities """ + domain = [] + if self.member_id and self.member_id.membership_state in ('none', 'canceled', 'old'): + domain.append(('only_for_subscriber', '=', False)) + return {'domain': {'activity_id': domain}} + + @api.constrains('member_id', 'activity_id') def _check_season_reliability(self): """ Forbid registration when member season if not coherent with activity season or are duplicates """ for reg in self: + if (reg.activity_id.only_for_subscriber and \ + reg.member_id.membership_state in ['none', 'canceled', 'old']): + emsg = _('Subscription can not be executed : the targeted ' + 'activity is only for subscriber.') + raise models.ValidationError(emsg) if reg.activity_id.season_id not in reg.member_id.season_ids: emsg = _('Subscription can not be executed : the targeted ' 'member is not on the same season as the activity.') diff --git a/golem_activity_registration/views/golem_activity_views.xml b/golem_activity_registration/views/golem_activity_views.xml index fde9b43..265455e 100644 --- a/golem_activity_registration/views/golem_activity_views.xml +++ b/golem_activity_registration/views/golem_activity_views.xml @@ -38,6 +38,9 @@ along with this program. If not, see . + + + @@ -66,6 +69,8 @@ along with this program. If not, see . + diff --git a/golem_activity_registration_custom_price/__manifest__.py b/golem_activity_registration_custom_price/__manifest__.py index c84a32e..59853a3 100644 --- a/golem_activity_registration_custom_price/__manifest__.py +++ b/golem_activity_registration_custom_price/__manifest__.py @@ -20,11 +20,11 @@ 'summary': 'GOLEM Activity Registration Custom Price', 'description': '''GOLEM Activity Registration Custom Price : - allow set of 1:n slices based on family quotient ; - - allow set 1:n area data ; + - allow set 1:n root area data ; - allow set price per area and slice ; - computes automatically applicable price ; - anticipate ruleset to be implemented for computing.''', - 'version': '10.0.0.1.2', + 'version': '10.0.0.2.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_activity_registration_custom_price/models/golem_activity.py b/golem_activity_registration_custom_price/models/golem_activity.py index f2cd473..5d451b5 100644 --- a/golem_activity_registration_custom_price/models/golem_activity.py +++ b/golem_activity_registration_custom_price/models/golem_activity.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Copyright 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 @@ -43,7 +44,7 @@ class GolemActivity(models.Model): existing_combinations = [u'%s-%s' % (line.area_id.id, line.slice_id.id) for line in activity.price_line_ids] slice_ids = self.env['golem.payment.rule.familyquotient.slice'].search([]) - for area_id in self.env['golem.partner.area'].search([]): + for area_id in self.env['golem.partner.area'].search([('parent_id', '=', False)]): for slice_id in slice_ids: combination = u'%s-%s' % (area_id.id, slice_id.id) if combination not in existing_combinations: diff --git a/golem_activity_registration_custom_price/models/golem_member.py b/golem_activity_registration_custom_price/models/golem_member.py index 1ce0130..e131fd2 100644 --- a/golem_activity_registration_custom_price/models/golem_member.py +++ b/golem_activity_registration_custom_price/models/golem_member.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Copyright 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 @@ -40,7 +41,7 @@ class GolemMember(models.Model): area_ids = self.env['golem.partner.area'].search([]) if member.area_id: applicable_areas += area_ids.filtered( - lambda r: r == member.area_id + lambda r: r == member.area_id.root_id ) if not applicable_areas and area_ids: applicable_areas += area_ids[0] diff --git a/golem_activity_registration_payment/__manifest__.py b/golem_activity_registration_payment/__manifest__.py index 10a4df5..cfb8e4a 100644 --- a/golem_activity_registration_payment/__manifest__.py +++ b/golem_activity_registration_payment/__manifest__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Copyright 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 @@ -19,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.3.6', + 'version': '10.0.0.5.0', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', @@ -29,5 +30,6 @@ 'data': ['views/golem_member_views.xml', 'views/golem_activity_registration_views.xml', 'report/golem_member_card_templates.xml', - 'wizard/golem_activity_registration_invoicing.xml'] + 'wizard/golem_activity_registration_invoicing.xml', + 'views/golem_activity_views.xml'] } diff --git a/golem_activity_registration_payment/i18n/fr.po b/golem_activity_registration_payment/i18n/fr.po index 21eb07c..b1e93d7 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-08-27 10:09+0000\n" -"PO-Revision-Date: 2018-08-27 12:10+0200\n" +"POT-Creation-Date: 2018-09-26 09:44+0000\n" +"PO-Revision-Date: 2018-09-26 11:58+0200\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -49,7 +49,7 @@ msgid "Activity id" msgstr "Activité liée" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/models/golem_member.py:76 +#: code:addons/golem_activity_registration_payment/models/golem_member.py:78 #, python-format msgid "All confirmed registrations had already been invoiced." msgstr "Toutes les inscriptions confirmées ont déjà été facturées." @@ -124,6 +124,18 @@ msgstr "Afficher les paiements" msgid "Draft Invoice" msgstr "Facture en brouillon" +#. module: golem_activity_registration_payment +#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_free_activity +#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_free_activity +#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_search_inherit_activity_registration_payment +msgid "Free activity" +msgstr "Gratuit" + +#. module: golem_activity_registration_payment +#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity +msgid "GOLEM Activity" +msgstr "Activité" + #. module: golem_activity_registration_payment #: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration msgid "GOLEM Activity Registration" @@ -145,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:151 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:153 #: 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:166 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:168 #: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids #, python-format msgid "Generated payments" @@ -311,7 +323,7 @@ msgid "Registration id" msgstr "Inscription" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/models/golem_member.py:69 +#: code:addons/golem_activity_registration_payment/models/golem_member.py:71 #: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form #, python-format msgid "Registration invoicing" @@ -339,13 +351,13 @@ msgid "Status" msgstr "État" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:147 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:149 #, 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:162 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:164 #, 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 bc717f8..b483cc8 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-08-27 10:09+0000\n" -"PO-Revision-Date: 2018-08-27 10:09+0000\n" +"POT-Creation-Date: 2018-09-26 09:44+0000\n" +"PO-Revision-Date: 2018-09-26 09:44+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -45,7 +45,7 @@ msgid "Activity id" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/models/golem_member.py:76 +#: code:addons/golem_activity_registration_payment/models/golem_member.py:78 #, python-format msgid "All confirmed registrations had already been invoiced." msgstr "" @@ -120,6 +120,18 @@ msgstr "" msgid "Draft Invoice" msgstr "" +#. module: golem_activity_registration_payment +#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_free_activity +#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_free_activity +#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_search_inherit_activity_registration_payment +msgid "Free activity" +msgstr "" + +#. module: golem_activity_registration_payment +#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity +msgid "GOLEM Activity" +msgstr "" + #. module: golem_activity_registration_payment #: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration msgid "GOLEM Activity Registration" @@ -141,14 +153,14 @@ msgid "GOLEM Member" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:151 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:153 #: 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:166 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:168 #: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids #, python-format msgid "Generated payments" @@ -307,7 +319,7 @@ msgid "Registration id" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/models/golem_member.py:69 +#: code:addons/golem_activity_registration_payment/models/golem_member.py:71 #: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form #, python-format msgid "Registration invoicing" @@ -335,13 +347,13 @@ msgid "Status" msgstr "" #. module: golem_activity_registration_payment -#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:147 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:149 #, 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:162 +#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:164 #, python-format msgid "There is no generated payments." msgstr "" diff --git a/golem_activity_registration_payment/models/__init__.py b/golem_activity_registration_payment/models/__init__.py index 461a002..8a33eed 100644 --- a/golem_activity_registration_payment/models/__init__.py +++ b/golem_activity_registration_payment/models/__init__.py @@ -15,4 +15,4 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from . import golem_member, golem_activity_registration +from . import golem_member, golem_activity_registration, golem_activity diff --git a/golem_activity_registration_payment/models/golem_activity.py b/golem_activity_registration_payment/models/golem_activity.py new file mode 100644 index 0000000..9dcd94b --- /dev/null +++ b/golem_activity_registration_payment/models/golem_activity.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Youssef El Ouahby +# 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 . + +""" GOLEM Activity adaptations """ + +from odoo import models, fields, api + +class GolemActivity(models.Model): + """ GOLEM Activity adaptations """ + _inherit = 'golem.activity' + + free_activity = fields.Boolean(default=False) + + @api.onchange('free_activity') + def onchange_free_activity(self): + """ If free activity, price should be 0.0 """ + for activity in self: + if activity.free_activity: + activity.list_price = 0.0 diff --git a/golem_activity_registration_payment/models/golem_activity_registration.py b/golem_activity_registration_payment/models/golem_activity_registration.py index b3d5361..9e8b475 100644 --- a/golem_activity_registration_payment/models/golem_activity_registration.py +++ b/golem_activity_registration_payment/models/golem_activity_registration.py @@ -31,3 +31,4 @@ class GolemActivityRegistration(models.Model): invoice_id = fields.Many2one(related='invoice_line_id.invoice_id') invoice_state = fields.Selection(related='invoice_line_id.invoice_id.state', store=True) + free_activity = fields.Boolean(related='activity_id.free_activity') diff --git a/golem_activity_registration_payment/models/golem_member.py b/golem_activity_registration_payment/models/golem_member.py index b5fc6ab..30aa5b2 100644 --- a/golem_activity_registration_payment/models/golem_member.py +++ b/golem_activity_registration_payment/models/golem_member.py @@ -35,6 +35,7 @@ class GolemMember(models.Model): regis = member.activity_registration_ids regis = regis.filtered( lambda r: (r.state == 'confirmed' and + not r.activity_id.free_activity and (not r.invoice_line_id or r.invoice_line_id.invoice_id.state == 'cancel')) ) @@ -52,9 +53,10 @@ class GolemMember(models.Model): self.ensure_one() member = self[0] registrations = member.activity_registration_ids.filtered( - lambda r: r.state == 'confirmed' and - (not r.invoice_line_id or - r.invoice_line_id.invoice_id.state == 'cancel') + lambda r: (r.state == 'confirmed' and + not r.activity_id.free_activity and + (not r.invoice_line_id or + r.invoice_line_id.invoice_id.state == 'cancel')) ) if registrations: invoicing = self.env['golem.activity.registration.invoicing'].create({ diff --git a/golem_activity_registration_payment/views/golem_activity_registration_views.xml b/golem_activity_registration_payment/views/golem_activity_registration_views.xml index 86fb72c..3bae912 100644 --- a/golem_activity_registration_payment/views/golem_activity_registration_views.xml +++ b/golem_activity_registration_payment/views/golem_activity_registration_views.xml @@ -45,6 +45,12 @@ along with this program. If not, see . + + + + + {'readonly': [('free_activity', '=', True)]} + diff --git a/golem_activity_registration_payment/views/golem_activity_views.xml b/golem_activity_registration_payment/views/golem_activity_views.xml new file mode 100644 index 0000000..08ba1be --- /dev/null +++ b/golem_activity_registration_payment/views/golem_activity_views.xml @@ -0,0 +1,52 @@ + + + + + + + + Golem activity form adaptations + golem.activity + + + + {'invisible': [('free_activity', '=', True)]} + + + + + + + + + + Golem Activity Search adaptations + golem.activity + + + + + + + + + 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 d21b3b4..96fd434 100644 --- a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py +++ b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py @@ -1,6 +1,7 @@ # -*- 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 @@ -29,9 +30,11 @@ class GolemActivityRegistrationInvoicingLine(models.TransientModel): _description = 'GOLEM Activity Registration Invoicing Lines' invoicing_id = fields.Many2one('golem.activity.registration.invoicing', - required=True) - registration_id = fields.Many2one('golem.activity.registration', required=True) - activity_id = fields.Many2one('golem.activity', required=True, readonly=True) + required=True, ondelete='cascade') + registration_id = fields.Many2one('golem.activity.registration', required=True, + ondelete='cascade') + activity_id = fields.Many2one('golem.activity', required=True, readonly=True, + ondelete='cascade') price = fields.Monetary() currency_id = fields.Many2one(related='activity_id.currency_id') @@ -82,13 +85,21 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): """ Create invoice and lines """ self.ensure_one() partner = self.member_id.partner_id - invoice = self.env['account.invoice'].create({ - 'partner_id': partner.id, - 'account_id': partner.property_account_receivable_id.id, - 'fiscal_position_id': partner.property_account_position_id.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 + and ml.account_invoice_id.state == 'draft') + ) + if member_line: + invoice = member_line[0].account_invoice_id + else: + invoice = self.env['account.invoice'].create({ + 'partner_id': partner.id, + 'account_id': partner.property_account_receivable_id.id, + 'fiscal_position_id': partner.property_account_position_id.id + }) for line in self.line_ids: - product = line.activity_id.product_id + product = line.activity_id.product_id.product_variant_id invoice_line = self._create_invoice_line(product, line.price, invoice) line.registration_id.invoice_line_id = invoice_line.id return invoice diff --git a/golem_activity_registration_state/__manifest__.py b/golem_activity_registration_state/__manifest__.py index 87d50aa..c8bc7bf 100644 --- a/golem_activity_registration_state/__manifest__.py +++ b/golem_activity_registration_state/__manifest__.py @@ -19,7 +19,7 @@ 'name': 'GOLEM Activity Session Member Registrations States', 'summary': 'GOLEM Activities Session Member Registration states', 'description': 'GOLEM Activities Session Member Registration states', - 'version': '10.0.2.2.0', + 'version': '10.0.2.2.1', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_activity_registration_state/models/golem_activity_registration.py b/golem_activity_registration_state/models/golem_activity_registration.py index fde5a1d..2b20d5d 100644 --- a/golem_activity_registration_state/models/golem_activity_registration.py +++ b/golem_activity_registration_state/models/golem_activity_registration.py @@ -18,7 +18,7 @@ """ GOLEM Activity Registration State """ from odoo import models, fields, api, _ -from odoo.exceptions import UserError +from odoo.exceptions import UserError, ValidationError class GolemMember(models.Model): """ GOLEM Member adaptations """ @@ -89,9 +89,10 @@ class GolemActivityRegistration(models.Model): def state_remove(self): """ Remove registrations, only if canceled """ if self.filtered(lambda r: r.state != 'canceled'): - uerr = _('You can not confirm a canceled registration.') + uerr = _('You can not remove a uncanceled registration.') raise UserError(uerr) self.unlink() + return {'type': 'ir.actions.client', 'tag': 'reload'} @api.multi def write(self, values): diff --git a/golem_activity_registration_state/views/golem_activity_registration_views.xml b/golem_activity_registration_state/views/golem_activity_registration_views.xml index e7305ed..694ef92 100644 --- a/golem_activity_registration_state/views/golem_activity_registration_views.xml +++ b/golem_activity_registration_state/views/golem_activity_registration_views.xml @@ -45,20 +45,21 @@ along with this program. If not, see . 0 +