diff --git a/rental_base/data/product_uom_data.xml b/rental_base/data/product_uom_data.xml
index 7e130fe9..761a1bc0 100644
--- a/rental_base/data/product_uom_data.xml
+++ b/rental_base/data/product_uom_data.xml
@@ -7,5 +7,11 @@
+
+ Week(s)
+ bigger
+
+
+
diff --git a/rental_base/i18n/de.po b/rental_base/i18n/de.po
index da18e57d..f59dad7d 100644
--- a/rental_base/i18n/de.po
+++ b/rental_base/i18n/de.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-27 07:37+0000\n"
-"PO-Revision-Date: 2022-06-27 07:37+0000\n"
+"POT-Creation-Date: 2022-12-14 14:28+0000\n"
+"PO-Revision-Date: 2022-12-14 14:28+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: \n"
@@ -597,6 +597,11 @@ msgstr "Lieferantengutschriften"
msgid "Vendors"
msgstr "Lieferanten"
+#. module: rental_base
+#: model:uom.uom,name:rental_base.product_uom_week
+msgid "Week(s)"
+msgstr "Woche(n)"
+
#. module: rental_base
#: model:ir.model.fields,field_description:rental_base.field_update_sale_line_date_line__wizard_id
msgid "Wizard"
diff --git a/rental_base/i18n/rental_base.pot b/rental_base/i18n/rental_base.pot
index 496179ce..b1b123a0 100644
--- a/rental_base/i18n/rental_base.pot
+++ b/rental_base/i18n/rental_base.pot
@@ -544,6 +544,11 @@ msgstr ""
msgid "Vendors"
msgstr ""
+#. module: rental_base
+#: model:uom.uom,name:rental_base.product_uom_week
+msgid "Week(s)"
+msgstr ""
+
#. module: rental_base
#: model:ir.model.fields,field_description:rental_base.field_update_sale_line_date_line__wizard_id
msgid "Wizard"
diff --git a/rental_base/models/sale.py b/rental_base/models/sale.py
index 12926ba8..3e50a53b 100644
--- a/rental_base/models/sale.py
+++ b/rental_base/models/sale.py
@@ -1,6 +1,7 @@
# Part of rental-vertical See LICENSE file for full copyright and licensing details.
import datetime
+from math import ceil
from odoo import _, api, exceptions, fields, models
from odoo.exceptions import ValidationError
@@ -204,10 +205,12 @@ def _prepare_invoice_line(self, qty):
@api.model
def _get_time_uom(self):
uom_month = self.env.ref("rental_base.product_uom_month")
+ uom_week = self.env.ref("rental_base.product_uom_week")
uom_day = self.env.ref("uom.product_uom_day")
uom_hour = self.env.ref("uom.product_uom_hour")
return {
"month": uom_month,
+ "week": uom_week,
"day": uom_day,
"hour": uom_hour,
}
@@ -226,6 +229,8 @@ def _get_number_of_time_unit(self):
# https://www.checkyourmath.com/convert/time/days_months.php
number = ((self.end_date - self.start_date).days + 1) / 30.4167
number = float_round(number, precision_rounding=1)
+ elif self.product_uom.id == time_uoms["week"].id:
+ number = ceil(((self.end_date - self.start_date).days + 1) / 7)
return number
@api.multi
diff --git a/rental_base/tests/stock_common.py b/rental_base/tests/stock_common.py
index 58a160f3..70936e29 100644
--- a/rental_base/tests/stock_common.py
+++ b/rental_base/tests/stock_common.py
@@ -18,6 +18,7 @@ def setUp(self):
self.uom_hour = self.env.ref("uom.product_uom_hour")
self.uom_day = self.env.ref("uom.product_uom_day")
self.uom_month = self.env.ref("rental_base.product_uom_month")
+ self.uom_week = self.env.ref("rental_base.product_uom_week")
self.uom_unit = self.env.ref("uom.product_uom_unit")
self.uom_kgm = self.env.ref("uom.product_uom_kgm")
self.warehouse0 = self.env.ref("stock.warehouse0")
diff --git a/rental_base/tests/test_update_time_rental_order.py b/rental_base/tests/test_update_time_rental_order.py
index ed694ec6..d5296142 100644
--- a/rental_base/tests/test_update_time_rental_order.py
+++ b/rental_base/tests/test_update_time_rental_order.py
@@ -25,6 +25,7 @@ def setUp(self):
self.date_0111 = fields.Date.from_string("2021-01-11")
self.date_0103 = fields.Date.from_string("2021-01-03")
self.date_0112 = fields.Date.from_string("2021-01-12")
+ self.date_0131 = fields.Date.from_string("2021-01-31")
def test_00_update_time_rental_order(self):
# rental order
@@ -166,3 +167,16 @@ def test_00_update_time_rental_order(self):
rental_2.in_move_id.date_expected,
fields.Datetime.to_datetime(self.date_0112),
)
+
+ def test_00_get_time_unit(self):
+ rental_order = self._create_rental_order(
+ self.partnerA.id, self.date_0101, self.date_0131
+ )
+ days = rental_order.order_line._get_number_of_time_unit()
+ rental_order.order_line.product_uom = self.uom_week
+ weeks = rental_order.order_line._get_number_of_time_unit()
+ rental_order.order_line.product_uom = self.uom_month
+ months = rental_order.order_line._get_number_of_time_unit()
+ self.assertEqual(days, 31)
+ self.assertEqual(weeks, 5)
+ self.assertEqual(months, 1)