From 03c0bd7b28c4497211012887a625937d4d51d996 Mon Sep 17 00:00:00 2001 From: Yu Weng Date: Thu, 15 Dec 2022 09:16:03 +0100 Subject: [PATCH] [IMP] add data product uom week. --- rental_base/data/product_uom_data.xml | 6 ++++++ rental_base/i18n/de.po | 9 +++++++-- rental_base/i18n/rental_base.pot | 5 +++++ rental_base/models/sale.py | 5 +++++ rental_base/tests/stock_common.py | 1 + rental_base/tests/test_update_time_rental_order.py | 14 ++++++++++++++ 6 files changed, 38 insertions(+), 2 deletions(-) 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)