From 72739a2df64f59420ec842c72ef1a9f80a35f5ac Mon Sep 17 00:00:00 2001
From: eloyoussef
Date: Thu, 15 Mar 2018 17:28:21 +0100
Subject: [PATCH 01/46] Facturation individuel depuis reservation_form
---
golem_resource_account/__init__.py | 19 ++++
golem_resource_account/__manifest__.py | 32 +++++++
golem_resource_account/models/__init__.py | 20 ++++
.../models/golem_resource_reservation.py | 66 +++++++++++++
golem_resource_account/tests/__init__.py | 17 ++++
.../golem_resource_reservation_views.xml | 96 +++++++++++++++++++
6 files changed, 250 insertions(+)
create mode 100644 golem_resource_account/__init__.py
create mode 100644 golem_resource_account/__manifest__.py
create mode 100644 golem_resource_account/models/__init__.py
create mode 100644 golem_resource_account/models/golem_resource_reservation.py
create mode 100644 golem_resource_account/tests/__init__.py
create mode 100644 golem_resource_account/views/golem_resource_reservation_views.xml
diff --git a/golem_resource_account/__init__.py b/golem_resource_account/__init__.py
new file mode 100644
index 0000000..1fced20
--- /dev/null
+++ b/golem_resource_account/__init__.py
@@ -0,0 +1,19 @@
+# -*- 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 .
+
+from . import models
diff --git a/golem_resource_account/__manifest__.py b/golem_resource_account/__manifest__.py
new file mode 100644
index 0000000..d35b402
--- /dev/null
+++ b/golem_resource_account/__manifest__.py
@@ -0,0 +1,32 @@
+# -*- 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 .
+
+{
+ 'name': 'GOLEM resources invoicing',
+ 'summary': 'GOLEM resources invoicing',
+ 'description': ''' GOLEM resources invoicing ''',
+ 'version': '10.0.0.0.0',
+ 'category': 'GOLEM',
+ 'author': 'Youssef El Ouahby, Fabien Bourgeois',
+ 'license': 'AGPL-3',
+ 'application': True,
+ 'installable': True,
+ 'depends': ['golem_resource',
+ 'account'],
+ 'data': ['views/golem_resource_reservation_views.xml']
+}
diff --git a/golem_resource_account/models/__init__.py b/golem_resource_account/models/__init__.py
new file mode 100644
index 0000000..15dcb5c
--- /dev/null
+++ b/golem_resource_account/models/__init__.py
@@ -0,0 +1,20 @@
+# -*- 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 .
+
+
+from . import golem_resource_reservation
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
new file mode 100644
index 0000000..848b99b
--- /dev/null
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -0,0 +1,66 @@
+# -*- 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 Resource Reservation Adaptation"""
+
+from math import modf
+from odoo import models, fields, api, _
+from odoo.exceptions import ValidationError, UserError
+
+
+class GolemResourceReservation(models.Model):
+ """ GOLEM Resource Reservation Adaptation """
+ _inherit = 'golem.resource.reservation'
+
+
+ @api.multi
+ def create_invoice(self):
+ for reservation in self:
+ inv_obj = self.env['account.invoice']
+ partner_id = reservation.partner_id
+ product = reservation.resource_id.product_tmpl_id
+ amount = product.standard_price
+
+ if product.id:
+ account_id = product.property_account_income_id.id
+ if not account_id:
+ account_id = product.categ_id.property_account_income_categ_id.id
+ if not account_id:
+ raise UserError(
+ _('There is no income account defined for this product: "%s". \
+ You may have to install a chart of account from Accounting \
+ app, settings menu.') % (product.name,))
+
+ invoice = inv_obj.create({
+ 'name': reservation.name,
+ #'origin': self.application_number,
+ 'type': 'out_invoice',
+ 'reference': False,
+ 'account_id': partner_id.property_account_receivable_id.id,
+ 'partner_id': partner_id.id,
+ 'invoice_line_ids': [(0, 0, {
+ 'name': reservation.resource_id.name,
+ #'origin': ,
+ 'account_id': account_id,
+ 'price_unit': amount,
+ 'quantity': 1.0,
+ 'discount': 0.0,
+ 'uom_id': product.uom_id.id,
+ 'product_id': product.id,
+ })],
+ })
diff --git a/golem_resource_account/tests/__init__.py b/golem_resource_account/tests/__init__.py
new file mode 100644
index 0000000..7d004f8
--- /dev/null
+++ b/golem_resource_account/tests/__init__.py
@@ -0,0 +1,17 @@
+# -*- 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 .
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
new file mode 100644
index 0000000..1f4af8a
--- /dev/null
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ GOLEM Resource Reservation Form Adaptations to invoicing
+ golem.resource.reservation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From c3f7ee1bb434f94dc4f8b7672bf18b94795b6735 Mon Sep 17 00:00:00 2001
From: eloyoussef
Date: Fri, 16 Mar 2018 16:04:33 +0100
Subject: [PATCH 02/46] Ajout du Facturation multi ligne depuis action
---
golem_resource_account/__init__.py | 2 +-
golem_resource_account/__manifest__.py | 5 +-
.../models/golem_resource_reservation.py | 5 +-
.../golem_resource_reservation_views.xml | 19 +++++
golem_resource_account/wizard/__init__.py | 20 +++++
.../wizard/golem_reservation_invoice.py | 78 ++++++++++++++++++
.../wizard/golem_reservation_invoice.xml | 79 +++++++++++++++++++
7 files changed, 204 insertions(+), 4 deletions(-)
create mode 100644 golem_resource_account/wizard/__init__.py
create mode 100644 golem_resource_account/wizard/golem_reservation_invoice.py
create mode 100644 golem_resource_account/wizard/golem_reservation_invoice.xml
diff --git a/golem_resource_account/__init__.py b/golem_resource_account/__init__.py
index 1fced20..f95e908 100644
--- a/golem_resource_account/__init__.py
+++ b/golem_resource_account/__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 models
+from . import models, wizard
diff --git a/golem_resource_account/__manifest__.py b/golem_resource_account/__manifest__.py
index d35b402..7451bd4 100644
--- a/golem_resource_account/__manifest__.py
+++ b/golem_resource_account/__manifest__.py
@@ -20,7 +20,7 @@
'name': 'GOLEM resources invoicing',
'summary': 'GOLEM resources invoicing',
'description': ''' GOLEM resources invoicing ''',
- 'version': '10.0.0.0.0',
+ 'version': '10.0.0.0.2',
'category': 'GOLEM',
'author': 'Youssef El Ouahby, Fabien Bourgeois',
'license': 'AGPL-3',
@@ -28,5 +28,6 @@
'installable': True,
'depends': ['golem_resource',
'account'],
- 'data': ['views/golem_resource_reservation_views.xml']
+ 'data': ['views/golem_resource_reservation_views.xml',
+ 'wizard/golem_reservation_invoice.xml']
}
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
index 848b99b..ca8baa5 100644
--- a/golem_resource_account/models/golem_resource_reservation.py
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -27,7 +27,7 @@ class GolemResourceReservation(models.Model):
""" GOLEM Resource Reservation Adaptation """
_inherit = 'golem.resource.reservation'
-
+
@api.multi
def create_invoice(self):
for reservation in self:
@@ -38,13 +38,16 @@ class GolemResourceReservation(models.Model):
if product.id:
account_id = product.property_account_income_id.id
+
if not account_id:
account_id = product.categ_id.property_account_income_categ_id.id
+
if not account_id:
raise UserError(
_('There is no income account defined for this product: "%s". \
You may have to install a chart of account from Accounting \
app, settings menu.') % (product.name,))
+
invoice = inv_obj.create({
'name': reservation.name,
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
index 1f4af8a..809edbf 100644
--- a/golem_resource_account/views/golem_resource_reservation_views.xml
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -82,6 +82,25 @@ along with this program. If not, see .
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GOLEM Reservation Invoice Wizard Form Editable
+ golem.reservation.invoice.wizard
+
+
+
+
+
+
+ GOLEM Reservation Invoice Wizard Form
+ golem.reservation.invoice.wizard
+
+
+
+
+
+
+
+
+
+
From 5b7627f667de96e96bbd7f5b1536e0b867999ef8 Mon Sep 17 00:00:00 2001
From: eloyoussef
Date: Fri, 16 Mar 2018 16:13:18 +0100
Subject: [PATCH 03/46] =?UTF-8?q?quelque=20modification=20non=20termin?=
=?UTF-8?q?=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
golem_resource_account/models/golem_resource_reservation.py | 5 ++++-
.../views/golem_resource_reservation_views.xml | 4 ++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
index ca8baa5..bb6cef7 100644
--- a/golem_resource_account/models/golem_resource_reservation.py
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -27,6 +27,9 @@ class GolemResourceReservation(models.Model):
""" GOLEM Resource Reservation Adaptation """
_inherit = 'golem.resource.reservation'
+ invoice_id = fields.Many2one('account.invoice')
+ invoice_state = fields.Selection(related="invoice_id.state")
+
@api.multi
def create_invoice(self):
@@ -47,7 +50,7 @@ class GolemResourceReservation(models.Model):
_('There is no income account defined for this product: "%s". \
You may have to install a chart of account from Accounting \
app, settings menu.') % (product.name,))
-
+
invoice = inv_obj.create({
'name': reservation.name,
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
index 809edbf..a1add3a 100644
--- a/golem_resource_account/views/golem_resource_reservation_views.xml
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -22,8 +22,8 @@ along with this program. If not, see .
-
+
Date: Sat, 17 Mar 2018 16:23:39 +0100
Subject: [PATCH 05/46] =?UTF-8?q?filtrage=20du=20statut=20de=20facturation?=
=?UTF-8?q?=20et=20fonction=20de=20search=20sur=20le=20champs=20calcul?=
=?UTF-8?q?=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../models/golem_resource_reservation.py | 43 +++++++++++++++++--
.../golem_resource_reservation_views.xml | 30 ++++++-------
.../wizard/golem_reservation_invoice.py | 3 +-
3 files changed, 57 insertions(+), 19 deletions(-)
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
index 0b774a7..393e14b 100644
--- a/golem_resource_account/models/golem_resource_reservation.py
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -28,7 +28,44 @@ class GolemResourceReservation(models.Model):
_inherit = 'golem.resource.reservation'
invoice_id = fields.Many2one('account.invoice')
- invoicing_state = fields.Selection(related="invoice_id.state", string="Invoicing Status", default="None")
+ invoicing_state = fields.Char(compute="_compute_invoicing_state",
+ search='_search_invoicing_state',
+ string="Invoicing Status",
+ default="None")
+
+ def _search_invoicing_state(self, operator, value):
+ if value == "None":
+ reservation = self.env['golem.resource.reservation'].search([('invoice_id', '=', False)])
+ return [('id', 'in', reservation.mapped('id'))]
+ else:
+ return [('invoice_id.state', operator, value)]
+
+
+ """
+ print '________________________________'
+ print("kelri")
+
+ if self.invoice_id:
+ invoicing_state = self.invoice_id.state
+ print "_____________________1"
+ print invoicing_state
+ return [('invoicing_state', operator, value)]
+ else:
+ invoicing_state = "None"
+ print '_____________________2'
+ print invoicing_state
+ return [('invoicing_state', operator, value)]
+ print invoicing_state
+ """
+ @api.multi
+ @api.depends('invoice_id')
+ def _compute_invoicing_state(self):
+ """ Compute invoicing_state """
+ for reservation in self:
+ if reservation.invoice_id:
+ reservation.invoicing_state = reservation.invoice_id.state
+ else:
+ reservation.invoicing_state = "None"
@api.multi
@@ -38,7 +75,7 @@ class GolemResourceReservation(models.Model):
partner_id = reservation.partner_id
product = reservation.resource_id.product_tmpl_id
amount = product.standard_price
-
+ quantity = reservation.hour_stop - reservation.hour_start
if product.id:
account_id = product.property_account_income_id.id
@@ -64,7 +101,7 @@ class GolemResourceReservation(models.Model):
#'origin': ,
'account_id': account_id,
'price_unit': amount,
- 'quantity': 1.0,
+ 'quantity': quantity,
'discount': 0.0,
'uom_id': product.uom_id.id,
'product_id': product.id,
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
index 8741857..4999ede 100644
--- a/golem_resource_account/views/golem_resource_reservation_views.xml
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -48,20 +48,22 @@ along with this program. If not, see .
-
-->
@@ -84,7 +86,6 @@ along with this program. If not, see .
res_model="golem.reservation.invoice.wizard"
src_model="golem.resource.reservation"
view_mode="form"
- view_id="golem_reservation_invoice_wizard_form"
multi="True"
target="new"
/>
@@ -93,7 +94,6 @@ along with this program. If not, see .
res_model="golem.reservation.invoice.wizard"
src_model="golem.resource.reservation"
view_mode="form"
- view_id="golem_reservation_invoice_wizard_form_editable"
multi="True"
target="new"
/>
diff --git a/golem_resource_account/wizard/golem_reservation_invoice.py b/golem_resource_account/wizard/golem_reservation_invoice.py
index 51269eb..8afb0ec 100644
--- a/golem_resource_account/wizard/golem_reservation_invoice.py
+++ b/golem_resource_account/wizard/golem_reservation_invoice.py
@@ -57,12 +57,13 @@ class GolemReservationInvoiceWizard(models.TransientModel):
for reservation in self.reservation_ids:
product = reservation.resource_id.product_tmpl_id
amount = product.standard_price
+ quantity = reservation.hour_stop - reservation.hour_start
lines.append((0, 0, {
'name': reservation.resource_id.name,
#'origin': ,
'account_id': account_id,
'price_unit': amount,
- 'quantity': 1.0,
+ 'quantity': quantity,
'discount': 0.0,
'uom_id': product.uom_id.id,
'product_id': product.id,
From d620fb18b8e72d5ccce67908145e99cffcdbf0ec Mon Sep 17 00:00:00 2001
From: eloyoussef
Date: Sun, 18 Mar 2018 01:18:22 +0100
Subject: [PATCH 06/46] =?UTF-8?q?Affichage=20du=20facture=20apres=20sa=20c?=
=?UTF-8?q?r=C3=A9ation,=20automatiquemet=20et=20via=20bouton?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../models/golem_resource_reservation.py | 30 +++++++------------
.../golem_resource_reservation_views.xml | 10 +++++--
.../wizard/golem_reservation_invoice.py | 8 +++++
.../wizard/golem_reservation_invoice.xml | 4 +++
4 files changed, 31 insertions(+), 21 deletions(-)
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
index 393e14b..a91c4c7 100644
--- a/golem_resource_account/models/golem_resource_reservation.py
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -39,24 +39,7 @@ class GolemResourceReservation(models.Model):
return [('id', 'in', reservation.mapped('id'))]
else:
return [('invoice_id.state', operator, value)]
-
- """
- print '________________________________'
- print("kelri")
-
- if self.invoice_id:
- invoicing_state = self.invoice_id.state
- print "_____________________1"
- print invoicing_state
- return [('invoicing_state', operator, value)]
- else:
- invoicing_state = "None"
- print '_____________________2'
- print invoicing_state
- return [('invoicing_state', operator, value)]
- print invoicing_state
- """
@api.multi
@api.depends('invoice_id')
def _compute_invoicing_state(self):
@@ -67,6 +50,17 @@ class GolemResourceReservation(models.Model):
else:
reservation.invoicing_state = "None"
+ @api.multi
+ def voir_invoice(self):
+ for reservation in self:
+ if reservation.invoice_id:
+ return {'name' : _('Reservation Invoice'),
+ 'type' : 'ir.actions.act_window',
+ 'res_model' : 'account.invoice',
+ 'res_id' : reservation.invoice_id.id,
+ 'view_mode': 'form',
+ 'target': 'current'}
+
@api.multi
def create_invoice(self):
@@ -87,8 +81,6 @@ class GolemResourceReservation(models.Model):
_('There is no income account defined for this product: "%s". \
You may have to install a chart of account from Accounting \
app, settings menu.') % (product.name,))
-
-
reservation.invoice_id = inv_obj.create({
'name': reservation.name,
#'origin': self.application_number,
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
index 4999ede..a4e742e 100644
--- a/golem_resource_account/views/golem_resource_reservation_views.xml
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -41,9 +41,15 @@ along with this program. If not, see .
-
+
+
+
+
+
diff --git a/golem_resource_account/wizard/golem_reservation_invoice.py b/golem_resource_account/wizard/golem_reservation_invoice.py
index 8afb0ec..27a02e8 100644
--- a/golem_resource_account/wizard/golem_reservation_invoice.py
+++ b/golem_resource_account/wizard/golem_reservation_invoice.py
@@ -78,3 +78,11 @@ class GolemReservationInvoiceWizard(models.TransientModel):
'invoice_line_ids': lines,
})
self.reservation_ids.write({'invoice_id': invoice.id})
+ if self._context.get('open_invoices', False):
+ return {'name' : _('Reservation Invoice'),
+ 'type' : 'ir.actions.act_window',
+ 'res_model' : 'account.invoice',
+ 'res_id' : invoice.id,
+ 'view_mode': 'form',
+ 'target': 'current'}
+ return {'type': 'ir.actions.act_window_close'}
diff --git a/golem_resource_account/wizard/golem_reservation_invoice.xml b/golem_resource_account/wizard/golem_reservation_invoice.xml
index 2b724a0..365746f 100644
--- a/golem_resource_account/wizard/golem_reservation_invoice.xml
+++ b/golem_resource_account/wizard/golem_reservation_invoice.xml
@@ -48,6 +48,8 @@ along with this program. If not, see .
From 2eb4845dfabfdad28641dc109589a2e9a565ebaf Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Mon, 26 Mar 2018 18:28:44 +0200
Subject: [PATCH 39/46] [FIX]GOLEM Resource Account : post merge rename
---
golem_resource_account/tests/test_golem_reservation_invoice.py | 2 +-
.../views/golem_resource_reservation_views.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/golem_resource_account/tests/test_golem_reservation_invoice.py b/golem_resource_account/tests/test_golem_reservation_invoice.py
index 8ecc5ad..6a99335 100644
--- a/golem_resource_account/tests/test_golem_reservation_invoice.py
+++ b/golem_resource_account/tests/test_golem_reservation_invoice.py
@@ -78,7 +78,7 @@ class TestGolemResourceReservation(TransactionCase):
'product_tmpl_id': self.env.ref('product.product_product_5').id})
reservation.create_invoice()
self.assertTrue(reservation.invoice_id)
- self.assertEqual(reservation.invoicing_state, "draft")
+ self.assertEqual(reservation.invoice_state, "draft")
def test_multiple_reservation_in(self):
""" Test Multiple Reservation Invoices """
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
index df7c05e..48d4f68 100644
--- a/golem_resource_account/views/golem_resource_reservation_views.xml
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -25,7 +25,7 @@ along with this program. If not, see .
- red : invoicing_state=='open'; green : invoicing_state=='paid'; black: state=='draft'; blue : state=='validated'; grey : state=='canceled'; orange : state=='rejected'
+ red : invoice_state=='open'; green : invoice_state=='paid'; black: state=='draft'; blue : state=='validated'; grey : state=='canceled'; orange : state=='rejected'
From 3e583beb546b53c20b969dea7f97e28de0b2ab7c Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Mon, 26 Mar 2018 18:34:04 +0200
Subject: [PATCH 40/46] [I18N]GOLEM Resource Account : updated translations
---
golem_resource_account/i18n/fr.po | 27 ++++++++++++++-----
.../i18n/golem_resource_account.pot | 27 ++++++++++++++-----
2 files changed, 42 insertions(+), 12 deletions(-)
diff --git a/golem_resource_account/i18n/fr.po b/golem_resource_account/i18n/fr.po
index 9265b41..08735fe 100644
--- a/golem_resource_account/i18n/fr.po
+++ b/golem_resource_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-03-26 15:14+0000\n"
-"PO-Revision-Date: 2018-03-26 15:14+0000\n"
+"POT-Creation-Date: 2018-03-26 16:32+0000\n"
+"PO-Revision-Date: 2018-03-26 16:32+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -55,11 +55,20 @@ msgid "Cancel"
msgstr "Annuler"
#. module: golem_resource_account
-#: model:ir.ui.view,arch_db:golem_resource_account.golem_reservation_invoice_wizard_form
#: model:ir.ui.view,arch_db:golem_resource_account.golem_resource_reservation_form_inherit_golem_resource_account
msgid "Create Invoice"
msgstr "Créer une facture"
+#. module: golem_resource_account
+#: model:ir.ui.view,arch_db:golem_resource_account.golem_reservation_invoice_wizard_form
+msgid "Create and view invoice"
+msgstr "Créer et afficher la facture"
+
+#. module: golem_resource_account
+#: model:ir.ui.view,arch_db:golem_resource_account.golem_reservation_invoice_wizard_form
+msgid "Create invoice and Close"
+msgstr "Créer la facture et fermer"
+
#. module: golem_resource_account
#: model:ir.model.fields,field_description:golem_resource_account.field_golem_reservation_invoice_wizard_create_uid
msgid "Created by"
@@ -164,7 +173,13 @@ msgid "Status"
msgstr "État"
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:57
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:46
+#, python-format
+msgid "The reservation \"{}\" is not validated, please validate it before creating invoice"
+msgstr "La réservation \"{}\" n'est pas validée, merci de la valider avant de créer une facture"
+
+#. module: golem_resource_account
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:62
#, python-format
msgid "There is no income account defined for this product: \"{}\". You have to configure it on the product form."
msgstr "Il n'y a pas de compte de revenus défini pour cet article: \"{}\". Vous devez en configurer un sur la fiche article."
@@ -175,13 +190,13 @@ msgid "Total"
msgstr "Total"
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:43
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:48
#, python-format
msgid "You can not create an invoice as there is already one."
msgstr "Vous ne pouvez pa créer une facture s'il y en a déjà une existante."
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:48
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:53
#, python-format
msgid "You can not create an invoice without linked product on the resource reserved."
msgstr "Vous ne pouvez pas créer de facture sans article liée à la ressource réservée."
diff --git a/golem_resource_account/i18n/golem_resource_account.pot b/golem_resource_account/i18n/golem_resource_account.pot
index 1ec74ce..292a71a 100644
--- a/golem_resource_account/i18n/golem_resource_account.pot
+++ b/golem_resource_account/i18n/golem_resource_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-03-26 15:13+0000\n"
-"PO-Revision-Date: 2018-03-26 15:13+0000\n"
+"POT-Creation-Date: 2018-03-26 16:31+0000\n"
+"PO-Revision-Date: 2018-03-26 16:31+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -48,11 +48,20 @@ msgid "Cancel"
msgstr ""
#. module: golem_resource_account
-#: model:ir.ui.view,arch_db:golem_resource_account.golem_reservation_invoice_wizard_form
#: model:ir.ui.view,arch_db:golem_resource_account.golem_resource_reservation_form_inherit_golem_resource_account
msgid "Create Invoice"
msgstr ""
+#. module: golem_resource_account
+#: model:ir.ui.view,arch_db:golem_resource_account.golem_reservation_invoice_wizard_form
+msgid "Create and view invoice"
+msgstr ""
+
+#. module: golem_resource_account
+#: model:ir.ui.view,arch_db:golem_resource_account.golem_reservation_invoice_wizard_form
+msgid "Create invoice and Close"
+msgstr ""
+
#. module: golem_resource_account
#: model:ir.model.fields,field_description:golem_resource_account.field_golem_reservation_invoice_wizard_create_uid
msgid "Created by"
@@ -157,7 +166,13 @@ msgid "Status"
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:57
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:46
+#, python-format
+msgid "The reservation \"{}\" is not validated, please validate it before creating invoice"
+msgstr ""
+
+#. module: golem_resource_account
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:62
#, python-format
msgid "There is no income account defined for this product: \"{}\". You have to configure it on the product form."
msgstr ""
@@ -168,13 +183,13 @@ msgid "Total"
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:43
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:48
#, python-format
msgid "You can not create an invoice as there is already one."
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:48
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:53
#, python-format
msgid "You can not create an invoice without linked product on the resource reserved."
msgstr ""
From cdf468786ea72c2bcc3c22c463e9280923940319 Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Mon, 26 Mar 2018 19:04:53 +0200
Subject: [PATCH 41/46] [IMP]GOLEM Resource : better colors for reservation
tree
---
golem_resource/views/golem_resource_reservation_views.xml | 3 +--
.../views/golem_resource_reservation_views.xml | 3 ---
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/golem_resource/views/golem_resource_reservation_views.xml b/golem_resource/views/golem_resource_reservation_views.xml
index 3c15a71..03f05e3 100644
--- a/golem_resource/views/golem_resource_reservation_views.xml
+++ b/golem_resource/views/golem_resource_reservation_views.xml
@@ -39,8 +39,7 @@ along with this program. If not, see .
GOLEM Resource Reservation Treegolem.resource.reservation
-
+
diff --git a/golem_resource_account/views/golem_resource_reservation_views.xml b/golem_resource_account/views/golem_resource_reservation_views.xml
index 48d4f68..a17150c 100644
--- a/golem_resource_account/views/golem_resource_reservation_views.xml
+++ b/golem_resource_account/views/golem_resource_reservation_views.xml
@@ -24,9 +24,6 @@ along with this program. If not, see .
golem.resource.reservation
-
- red : invoice_state=='open'; green : invoice_state=='paid'; black: state=='draft'; blue : state=='validated'; grey : state=='canceled'; orange : state=='rejected'
-
From 1d19c17f4a74ec08dcb8ed23fcec9709b007cb98 Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Mon, 26 Mar 2018 19:05:04 +0200
Subject: [PATCH 42/46] [REL]Bump versions for GOLEM Resources modules
---
golem_resource/__manifest__.py | 2 +-
golem_resource_account/__manifest__.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/golem_resource/__manifest__.py b/golem_resource/__manifest__.py
index 5a846dd..155cd46 100644
--- a/golem_resource/__manifest__.py
+++ b/golem_resource/__manifest__.py
@@ -20,7 +20,7 @@
'name': 'GOLEM non-profit resources',
'summary': 'GOLEM resources management',
'description': ''' GOLEM resources management ''',
- 'version': '10.0.1.12.0',
+ 'version': '10.0.1.13.0',
'category': 'GOLEM',
'author': 'Youssef El Ouahby, Fabien Bourgeois',
'license': 'AGPL-3',
diff --git a/golem_resource_account/__manifest__.py b/golem_resource_account/__manifest__.py
index 2ebd21b..b584e33 100644
--- a/golem_resource_account/__manifest__.py
+++ b/golem_resource_account/__manifest__.py
@@ -20,7 +20,7 @@
'name': 'GOLEM resources invoicing',
'summary': 'GOLEM resources invoicing',
'description': ''' GOLEM resources invoicing ''',
- 'version': '10.0.0.0.2',
+ 'version': '10.0.0.1.1',
'category': 'GOLEM',
'author': 'Youssef El Ouahby, Fabien Bourgeois',
'license': 'AGPL-3',
From 66601c03b9a857d51118e374456cc65fc5423b89 Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Tue, 27 Mar 2018 11:31:54 +0200
Subject: [PATCH 43/46] [FIX]GOLEM Resource Account : should use
product.product on invoice line, not product.template
---
golem_resource_account/__manifest__.py | 2 +-
golem_resource_account/models/golem_resource_reservation.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/golem_resource_account/__manifest__.py b/golem_resource_account/__manifest__.py
index b584e33..b6b0cf7 100644
--- a/golem_resource_account/__manifest__.py
+++ b/golem_resource_account/__manifest__.py
@@ -20,7 +20,7 @@
'name': 'GOLEM resources invoicing',
'summary': 'GOLEM resources invoicing',
'description': ''' GOLEM resources invoicing ''',
- 'version': '10.0.0.1.1',
+ 'version': '10.0.0.1.2',
'category': 'GOLEM',
'author': 'Youssef El Ouahby, Fabien Bourgeois',
'license': 'AGPL-3',
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
index 7c99e60..51b8727 100644
--- a/golem_resource_account/models/golem_resource_reservation.py
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -81,7 +81,7 @@ class GolemResourceReservation(models.Model):
'quantity': quantity,
'uom_id': product.uom_id.id,
'account_id': account_id,
- 'product_id': product.id,
+ 'product_id': product.product_variant_id.id,
})
reservation.invoice_line_id = line_id
From 3050e554b91f7aade3f8b19a46a457533c15fb27 Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Tue, 27 Mar 2018 11:32:42 +0200
Subject: [PATCH 44/46] [IMP][FIX]GOLEM Resource Account : should not group
reservations on a single invoice if parters are not the same (thanks Youssef)
---
golem_resource_account/__manifest__.py | 2 +-
golem_resource_account/models/golem_resource_reservation.py | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/golem_resource_account/__manifest__.py b/golem_resource_account/__manifest__.py
index b6b0cf7..fb647c3 100644
--- a/golem_resource_account/__manifest__.py
+++ b/golem_resource_account/__manifest__.py
@@ -20,7 +20,7 @@
'name': 'GOLEM resources invoicing',
'summary': 'GOLEM resources invoicing',
'description': ''' GOLEM resources invoicing ''',
- 'version': '10.0.0.1.2',
+ 'version': '10.0.0.1.3',
'category': 'GOLEM',
'author': 'Youssef El Ouahby, Fabien Bourgeois',
'license': 'AGPL-3',
diff --git a/golem_resource_account/models/golem_resource_reservation.py b/golem_resource_account/models/golem_resource_reservation.py
index 51b8727..a18ad91 100644
--- a/golem_resource_account/models/golem_resource_reservation.py
+++ b/golem_resource_account/models/golem_resource_reservation.py
@@ -39,6 +39,10 @@ class GolemResourceReservation(models.Model):
@api.multi
def check_before_invoicing(self):
""" Checks data coherence before invoicing """
+ if len(self.mapped('partner_id')) > 1:
+ raise ValidationError(_('You can\'t group reservations of multiple '
+ 'clients in the same invoice, please remove '
+ 'inadequate reservations'))
for reservation in self:
if reservation.state != "validated":
raise ValidationError(
From 068cb73c9454cbacbb6ce10fa7741344ee3f3562 Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Tue, 27 Mar 2018 11:37:22 +0200
Subject: [PATCH 45/46] [QUA][REF]GOLEM Resource Account : updated tests
---
.../tests/test_golem_reservation_invoice.py | 47 ++++++++++++-------
1 file changed, 29 insertions(+), 18 deletions(-)
diff --git a/golem_resource_account/tests/test_golem_reservation_invoice.py b/golem_resource_account/tests/test_golem_reservation_invoice.py
index 6a99335..79c5119 100644
--- a/golem_resource_account/tests/test_golem_reservation_invoice.py
+++ b/golem_resource_account/tests/test_golem_reservation_invoice.py
@@ -20,7 +20,7 @@
import logging
from odoo.tests.common import TransactionCase
-from odoo.exceptions import ValidationError, UserError
+from odoo.exceptions import ValidationError
_LOGGER = logging.getLogger(__name__)
@@ -30,6 +30,15 @@ class TestGolemResourceReservation(TransactionCase):
def setUp(self, *args, **kwargs):
""" Bootstrap Resource Reservation """
super(TestGolemResourceReservation, self).setUp(*args, **kwargs)
+ self.product = self.env['product.template'].create({
+ 'name': 'Product',
+ 'categ_id': self.env.ref('product.product_category_all').id,
+ 'list_price': 7.0,
+ 'type': 'service',
+ 'uom_id': self.env.ref('product.product_uom_hour').id,
+ 'uom_po_id': self.env.ref('product.product_uom_hour').id,
+ 'property_account_income_id': self.env.ref('l10n_fr.pcg_706').id
+ })
self.resource = self.env['golem.resource'].create({
'name': 'Resource',
'avaibility_start': '2018-01-01',
@@ -63,47 +72,49 @@ class TestGolemResourceReservation(TransactionCase):
reservation = self.res_obj.create(self.data)
self.assertEqual(reservation.state, 'draft')
self.assertFalse(reservation.invoice_id)
+
#try to create invoice withoud validating reservation
- with self.assertRaises(UserError) as err:
+ with self.assertRaises(ValidationError) as err:
reservation.create_invoice()
self.assertIn(u'is not validated, please validate it', err.exception.args[0])
reservation.state_confirm()
#try to create invoice with no product linked
- with self.assertRaises(UserError) as err:
+ with self.assertRaises(ValidationError) as err:
reservation.create_invoice()
- self.assertIn(u'no product linked to resource', err.exception.args[0])
+ self.assertIn(u'without linked product', err.exception.args[0])
- reservation.resource_id.write({
- 'product_tmpl_id': self.env.ref('product.product_product_5').id})
+ reservation.resource_id.write({'product_tmpl_id': self.product.id})
reservation.create_invoice()
self.assertTrue(reservation.invoice_id)
- self.assertEqual(reservation.invoice_state, "draft")
+ self.assertEqual(reservation.invoice_id.state, 'draft')
def test_multiple_reservation_in(self):
""" Test Multiple Reservation Invoices """
reservation_1 = self.res_obj.create(self.data)
reservation_2 = self.res_obj.create(self.data2)
- #reservations = [reservation_1, reservation_2]
reservation_1.state_confirm()
reservation_2.state_confirm()
- self.assertEqual(reservation_1.state, "validated")
- self.assertEqual(reservation_2.state, "validated")
- reservation_1.resource_id.write({
- 'product_tmpl_id': self.env.ref('product.product_product_5').id})
- reservation_2.resource_id.write({
- 'product_tmpl_id': self.env.ref('product.product_product_5').id})
+ self.assertEqual(reservation_1.state, 'validated')
+ self.assertEqual(reservation_2.state, 'validated')
+
+ reservation_1.resource_id.product_tmpl_id = self.product.id
+ reservation_2.resource_id.product_tmpl_id = self.product.id
+
wizard = self.env['golem.reservation.invoice.wizard'].create({
'reservation_ids': [(4, reservation_1.id, 0), (4, reservation_2.id, 0)]})
self.assertTrue(wizard.reservation_ids)
self.assertEqual(wizard.reservation_ids[0], reservation_2)
self.assertEqual(wizard.reservation_ids[1], reservation_1)
+
#try to create invoice for to different client
- with self.assertRaises(UserError) as err:
- wizard.create_invoices()
- self.assertIn(u'group reservations of multiple clients in the same', err.exception.args[0])
+ with self.assertRaises(ValidationError) as err:
+ wizard.create_invoice()
+ self.assertIn(u'group reservations of multiple clients in the same',
+ err.exception.args[0])
+
#fixing the same client for both reservation
reservation_2.write({'partner_id': self.partner.id})
- wizard.create_invoices()
+ wizard.create_invoice()
self.assertTrue(reservation_1.invoice_id)
self.assertTrue(reservation_2.invoice_id)
From 24f403f84e9845170d6e9ca226cde4e2c7291147 Mon Sep 17 00:00:00 2001
From: Fabien BOURGEOIS
Date: Tue, 27 Mar 2018 11:42:57 +0200
Subject: [PATCH 46/46] [I18N]Updated french translations
---
golem_resource_account/i18n/fr.po | 18 ++++++++++++------
.../i18n/golem_resource_account.pot | 18 ++++++++++++------
2 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/golem_resource_account/i18n/fr.po b/golem_resource_account/i18n/fr.po
index 08735fe..7ab3f0b 100644
--- a/golem_resource_account/i18n/fr.po
+++ b/golem_resource_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-03-26 16:32+0000\n"
-"PO-Revision-Date: 2018-03-26 16:32+0000\n"
+"POT-Creation-Date: 2018-03-27 09:41+0000\n"
+"PO-Revision-Date: 2018-03-27 09:41+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -173,13 +173,13 @@ msgid "Status"
msgstr "État"
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:46
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:50
#, python-format
msgid "The reservation \"{}\" is not validated, please validate it before creating invoice"
msgstr "La réservation \"{}\" n'est pas validée, merci de la valider avant de créer une facture"
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:62
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:66
#, python-format
msgid "There is no income account defined for this product: \"{}\". You have to configure it on the product form."
msgstr "Il n'y a pas de compte de revenus défini pour cet article: \"{}\". Vous devez en configurer un sur la fiche article."
@@ -190,17 +190,23 @@ msgid "Total"
msgstr "Total"
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:48
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:52
#, python-format
msgid "You can not create an invoice as there is already one."
msgstr "Vous ne pouvez pa créer une facture s'il y en a déjà une existante."
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:53
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:57
#, python-format
msgid "You can not create an invoice without linked product on the resource reserved."
msgstr "Vous ne pouvez pas créer de facture sans article liée à la ressource réservée."
+#. module: golem_resource_account
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:43
+#, python-format
+msgid "You can't group reservations of multiple clients in the same invoice, please remove inadequate reservations"
+msgstr "Vous ne pouvez pas regrouper des réservations pour plusieurs partenaires. Merci de sélectionner seulement des réservations ayant trait à un même partenaire."
+
#. module: golem_resource_account
#: model:ir.model,name:golem_resource_account.model_golem_reservation_invoice_wizard
msgid "golem.reservation.invoice.wizard"
diff --git a/golem_resource_account/i18n/golem_resource_account.pot b/golem_resource_account/i18n/golem_resource_account.pot
index 292a71a..a9df4dc 100644
--- a/golem_resource_account/i18n/golem_resource_account.pot
+++ b/golem_resource_account/i18n/golem_resource_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-03-26 16:31+0000\n"
-"PO-Revision-Date: 2018-03-26 16:31+0000\n"
+"POT-Creation-Date: 2018-03-27 09:39+0000\n"
+"PO-Revision-Date: 2018-03-27 09:39+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -166,13 +166,13 @@ msgid "Status"
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:46
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:50
#, python-format
msgid "The reservation \"{}\" is not validated, please validate it before creating invoice"
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:62
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:66
#, python-format
msgid "There is no income account defined for this product: \"{}\". You have to configure it on the product form."
msgstr ""
@@ -183,17 +183,23 @@ msgid "Total"
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:48
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:52
#, python-format
msgid "You can not create an invoice as there is already one."
msgstr ""
#. module: golem_resource_account
-#: code:addons/golem_resource_account/models/golem_resource_reservation.py:53
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:57
#, python-format
msgid "You can not create an invoice without linked product on the resource reserved."
msgstr ""
+#. module: golem_resource_account
+#: code:addons/golem_resource_account/models/golem_resource_reservation.py:43
+#, python-format
+msgid "You can't group reservations of multiple clients in the same invoice, please remove inadequate reservations"
+msgstr ""
+
#. module: golem_resource_account
#: model:ir.model,name:golem_resource_account.model_golem_reservation_invoice_wizard
msgid "golem.reservation.invoice.wizard"