diff --git a/golem_family_membership/__manifest__.py b/golem_family_membership/__manifest__.py
index 00bc1ff..50ba7d7 100644
--- a/golem_family_membership/__manifest__.py
+++ b/golem_family_membership/__manifest__.py
@@ -27,6 +27,7 @@
'application': False,
'installable': True,
'depends': ['golem_family', 'membership'],
- 'data': ['views/golem_family_views.xml',
+ 'data': ['views/membership_views.xml',
+ 'views/golem_family_views.xml',
'wizard/golem_membership_invoice_views.xml']
}
diff --git a/golem_family_membership/models/__init__.py b/golem_family_membership/models/__init__.py
index 49bfba1..0435468 100644
--- a/golem_family_membership/models/__init__.py
+++ b/golem_family_membership/models/__init__.py
@@ -16,4 +16,4 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from . import golem_family
+from . import product_template, membership, golem_family
diff --git a/golem_family_membership/models/golem_family.py b/golem_family_membership/models/golem_family.py
index 7ea0b30..824deca 100644
--- a/golem_family_membership/models/golem_family.py
+++ b/golem_family_membership/models/golem_family.py
@@ -18,13 +18,16 @@
""" GOLEM Families Adaptations"""
-from odoo import models, api, _
+from odoo import models, fields, api, _
class GolemFamily(models.Model):
""" GOLEM Family Adaptations """
_inherit = 'golem.family'
+ member_line_ids = fields.One2many('membership.membership_line',
+ 'family_id', string='Membership lines')
+
@api.multi
def family_membership(self):
""" Wizard call for family membership """
diff --git a/golem_family_membership/models/membership.py b/golem_family_membership/models/membership.py
new file mode 100644
index 0000000..a15f1e7
--- /dev/null
+++ b/golem_family_membership/models/membership.py
@@ -0,0 +1,29 @@
+# -*- 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 Families Adaptations"""
+
+from odoo import models, fields
+
+
+class MembershipLine(models.Model):
+ """ Membership Line Adaptations """
+ _inherit = 'membership.membership_line'
+
+ family_id = fields.Many2one('golem.family', string='Family',
+ ondelete='cascade', index=True)
diff --git a/golem_family_membership/models/product_template.py b/golem_family_membership/models/product_template.py
new file mode 100644
index 0000000..cc8aa0d
--- /dev/null
+++ b/golem_family_membership/models/product_template.py
@@ -0,0 +1,27 @@
+# -*- 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 .
+
+""" Product adaptations """
+
+from odoo import models, fields
+
+
+class ProductTemplate(models.Model):
+ """ Product Template adaptations """
+ _inherit = 'product.template'
+
+ family_membership = fields.Boolean(default=False)
diff --git a/golem_family_membership/views/golem_family_views.xml b/golem_family_membership/views/golem_family_views.xml
index 218047e..2a624f3 100644
--- a/golem_family_membership/views/golem_family_views.xml
+++ b/golem_family_membership/views/golem_family_views.xml
@@ -20,22 +20,33 @@ along with this program. If not, see .
+
Golem Family form adaptations
golem.family
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/golem_family_membership/views/membership_views.xml b/golem_family_membership/views/membership_views.xml
new file mode 100644
index 0000000..439d931
--- /dev/null
+++ b/golem_family_membership/views/membership_views.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+ Membership Product Form adaptations
+ product.template
+
+
+
+
+
+
+
+
+
+
+ Membership Product Search adaptations
+ product.template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/golem_family_membership/wizard/golem_membership_invoice.py b/golem_family_membership/wizard/golem_membership_invoice.py
index 9ae904c..6db2ac2 100644
--- a/golem_family_membership/wizard/golem_membership_invoice.py
+++ b/golem_family_membership/wizard/golem_membership_invoice.py
@@ -24,15 +24,29 @@ class GolemMembershipInvoice(models.TransientModel):
""" GOLEM Membership Invoice adaptations """
_inherit = 'golem.membership.invoice'
- family_id = fields.Many2one('golem.family', required=True)
- members_ids = fields.Many2many('res.partner')
- on_the_name_of = fields.Many2one('res.partner', domain="[('id', '=', members_ids[0][2])]")
+ family_id = fields.Many2one('golem.family', string='Family',
+ required=True, ondelete='cascade')
+ member_ids = fields.Many2many('res.partner', string='Concerned members')
+ on_the_name_of = fields.Many2one('res.partner', ondelete='cascade',
+ required=True)
@api.onchange('family_id')
def onchange_family(self):
- """ Fill members_ids """
+ """ Fill member_ids """
for record in self:
- record.members_ids = [(6, False, record.family_id.members_ids.ids)]
+ if record.family_id and record.family_id.member_ids:
+ record.member_ids = [(6, False,
+ record.family_id.member_ids.ids)]
+
+ @api.onchange('member_ids')
+ def onchange_members(self):
+ """ On change members : custom domain for on the name of """
+ record = self[0]
+ if record.member_ids:
+ return {
+ 'domain': {'on_the_name_of': [('id', 'in', record.member_ids.ids)]}
+ }
+ return {'domain': {'on_the_name_of': []}}
@api.multi
def membership_family_invoice(self):
@@ -42,13 +56,13 @@ class GolemMembershipInvoice(models.TransientModel):
datas = {'membership_product_id': record.product_id.id,
'amount': record.member_price}
invoice_list = record.on_the_name_of.create_membership_invoice(datas=datas)
- datas = {'membership_product_id': record.product_id.id,
- 'amount': 0.0}
- gen = (member for member in record.members_ids if member != record.on_the_name_of)
- for member in gen:
- id_membership = member.create_membership_invoice(datas=datas)
- self.env['account.invoice'].browse(id_membership).action_invoice_open()
- invoice_list += id_membership
+ # Link membership lines to family and targetted members
+ membership_line = record.on_the_name_of.member_lines[0] # Last one
+ membership_line.family_id = record.family_id
+ # Add membership lines for other family members
+ for member in record.member_ids:
+ if member != record.on_the_name_of:
+ membership_line.copy({'partner': member.id})
search_view_id = self.env.ref('account.view_account_invoice_filter')
form_view_id = self.env.ref('account.invoice_form')
diff --git a/golem_family_membership/wizard/golem_membership_invoice_views.xml b/golem_family_membership/wizard/golem_membership_invoice_views.xml
index e10d9b2..78bf637 100644
--- a/golem_family_membership/wizard/golem_membership_invoice_views.xml
+++ b/golem_family_membership/wizard/golem_membership_invoice_views.xml
@@ -28,9 +28,11 @@ along with this program. If not, see .