diff --git a/golem_activity_registration_state/__init__.py b/golem_activity_registration_state/__init__.py
index 2fca3d2..30c0720 100644
--- a/golem_activity_registration_state/__init__.py
+++ b/golem_activity_registration_state/__init__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2016 Fabien Bourgeois
+# Copyright 2017 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
@@ -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 models
+from . import models, wizard
diff --git a/golem_activity_registration_state/__manifest__.py b/golem_activity_registration_state/__manifest__.py
index 8d9802f..e8f02db 100644
--- a/golem_activity_registration_state/__manifest__.py
+++ b/golem_activity_registration_state/__manifest__.py
@@ -24,7 +24,8 @@
'license': 'AGPL-3',
'application': False,
'installable': True,
- 'depends': ['golem_activity_registration'],
+ 'depends': ['golem_activity_registration', 'golem_payment'],
'data': ['views/golem_activity_registration_views.xml',
- 'views/golem_member_views.xml', 'views/golem_activity_views.xml']
+ 'views/golem_member_views.xml', 'views/golem_activity_views.xml',
+ 'wizard/golem_activity_registration_invoicing.xml']
}
diff --git a/golem_activity_registration_state/models/golem_activity_registration.py b/golem_activity_registration_state/models/golem_activity_registration.py
index 3b6fac3..c0b0205 100644
--- a/golem_activity_registration_state/models/golem_activity_registration.py
+++ b/golem_activity_registration_state/models/golem_activity_registration.py
@@ -17,7 +17,7 @@
""" GOLEM Activity Registration State """
-from odoo import models, fields, api
+from odoo import models, fields, api, _
class GolemMember(models.Model):
""" GOLEM Member adaptations """
@@ -40,10 +40,26 @@ class GolemMember(models.Model):
@api.multi
def do_validate_registrations(self):
""" Validate all draft registrations """
- for member in self:
- draft_registrations = member.activity_registration_ids.filtered(
- lambda r: r.state == 'draft')
- draft_registrations.write({'state': 'confirmed'})
+ self.ensure_one()
+ member = self[0]
+ draft_registrations = member.activity_registration_ids.filtered(
+ lambda r: r.state == 'draft')
+ if draft_registrations:
+ invoicing = self.env['golem.activity.registration.invoicing'].create({
+ 'member_id' : member.id,
+ 'season_id': draft_registrations[0].activity_id.season_id.id
+ })
+ line_obj = self.env['golem.activity.registration.invoicing.line']
+ for reg in draft_registrations:
+ line_obj.create({'invoicing_id': invoicing.id,
+ 'activity_id': reg.activity_id.id,
+ 'price': reg.activity_id.list_price})
+ return {'name': _('Registration invoicing'),
+ 'type': 'ir.actions.act_window',
+ 'res_model': 'golem.activity.registration.invoicing',
+ 'view_mode': 'form',
+ 'res_id': invoicing.id,
+ 'target': 'new'}
@api.multi
def write(self, values):
diff --git a/golem_activity_registration_state/views/golem_member_views.xml b/golem_activity_registration_state/views/golem_member_views.xml
index b750c75..3be0eaa 100644
--- a/golem_activity_registration_state/views/golem_member_views.xml
+++ b/golem_activity_registration_state/views/golem_member_views.xml
@@ -25,19 +25,20 @@ along with this program. If not, see .
-
-
- Note that you can't register activities if the member is new and not yet saved into the database.
-
-
-
-
-
-
+
+
+ Note that you can't register activities if the member is new and not yet saved into the database.
+
+
+
+
+
+
@@ -46,9 +47,6 @@ along with this program. If not, see .
-
-
-
diff --git a/golem_activity_registration_state/wizard/__init__.py b/golem_activity_registration_state/wizard/__init__.py
new file mode 100644
index 0000000..d93c70a
--- /dev/null
+++ b/golem_activity_registration_state/wizard/__init__.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2017 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_state/wizard/golem_activity_registration_invoicing.py b/golem_activity_registration_state/wizard/golem_activity_registration_invoicing.py
new file mode 100644
index 0000000..751b63a
--- /dev/null
+++ b/golem_activity_registration_state/wizard/golem_activity_registration_invoicing.py
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+
+# copyright 2017 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 Registration Invoicing Wizard """
+
+from odoo import models, fields, api
+
+class GolemActivityRegistrationInvoicingLine(models.TransientModel):
+ """ GOLEM Activity Registration Invoicing Lines """
+ _name = 'golem.activity.registration.invoicing.line'
+ description = 'GOLEM Activity Registration Invoicing Lines'
+
+ invoicing_id = fields.Many2one('golem.activity.registration.invoicing',
+ required=True)
+ activity_id = fields.Many2one('golem.activity', required=True, readonly=True)
+ price = fields.Float('Price')
+
+class GolemActivityRegistrationInvoicing(models.TransientModel):
+ """ GOLEM Activity Registration Invoicing Wizard """
+ _name = 'golem.activity.registration.invoicing'
+ _description = 'GOLEM Activity Registration Invoicing Wizard'
+
+ season_id = fields.Many2one('golem.season', 'Season', required=True)
+ member_id = fields.Many2one('golem.member', 'Member', required=True)
+ line_ids = fields.One2many('golem.activity.registration.invoicing.line',
+ 'invoicing_id', string='Activities')
+ schedule_id = fields.Many2one('golem.payment.schedule', 'Payment schedule',
+ domain='[("season_id", "=", season_id)]',
+ help='If no schedule is selected, only the '
+ 'invoice will be create. Otherwise, draft '
+ 'payments will be generated.')
+
+ @api.multi
+ def validate(self):
+ """ Validate and create invoice and payments """
+ self.ensure_one()
+ draft_registrations = self.member_id.activity_registration_ids.filtered(
+ lambda r: r.state == 'draft')
+ draft_registrations.write({'state': 'confirmed'})
diff --git a/golem_activity_registration_state/wizard/golem_activity_registration_invoicing.xml b/golem_activity_registration_state/wizard/golem_activity_registration_invoicing.xml
new file mode 100644
index 0000000..edef458
--- /dev/null
+++ b/golem_activity_registration_state/wizard/golem_activity_registration_invoicing.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+ GOLEM Activity Registration Invoicing Form
+ golem.activity.registration.invoicing
+
+
+
+
+
+
+