From 6d9ba93d187e70b23972d76dbda10dbc86d68703 Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Sat, 14 Apr 2018 00:32:19 +0200 Subject: [PATCH 01/24] [8.0][ADD] sale_delivery_split_date module (#620) * [ADD] sale_delivery_split_date module * [ADD] sale_delivery_split_date: add computed min_dt to allow deliveries to be searchable by the scheduled date --- sale_delivery_split_date/README.rst | 62 ++++++++++ sale_delivery_split_date/__init__.py | 1 + sale_delivery_split_date/__openerp__.py | 21 ++++ sale_delivery_split_date/i18n/it.po | 43 +++++++ sale_delivery_split_date/models/__init__.py | 3 + sale_delivery_split_date/models/sale_order.py | 18 +++ .../models/sale_order_line.py | 24 ++++ .../models/stock_picking.py | 21 ++++ .../static/description/icon.png | Bin 0 -> 9455 bytes sale_delivery_split_date/tests/__init__.py | 1 + .../tests/test_sale_delivery.py | 115 ++++++++++++++++++ .../views/stock_picking.xml | 30 +++++ 12 files changed, 339 insertions(+) create mode 100644 sale_delivery_split_date/README.rst create mode 100644 sale_delivery_split_date/__init__.py create mode 100644 sale_delivery_split_date/__openerp__.py create mode 100644 sale_delivery_split_date/i18n/it.po create mode 100644 sale_delivery_split_date/models/__init__.py create mode 100644 sale_delivery_split_date/models/sale_order.py create mode 100644 sale_delivery_split_date/models/sale_order_line.py create mode 100644 sale_delivery_split_date/models/stock_picking.py create mode 100644 sale_delivery_split_date/static/description/icon.png create mode 100644 sale_delivery_split_date/tests/__init__.py create mode 100644 sale_delivery_split_date/tests/test_sale_delivery.py create mode 100644 sale_delivery_split_date/views/stock_picking.xml diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst new file mode 100644 index 00000000000..d0b01f90a5a --- /dev/null +++ b/sale_delivery_split_date/README.rst @@ -0,0 +1,62 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +======================== +Sale Delivery Split Date +======================== + +When this module is installed, each sale order you confirm will generate one delivery order +per requested date indicated in the sale order lines. + +Furthermore, the delivery orders could may be searched by selecting the scheduled date, which is now displayed in the tree delivery tree view. + +Usage +===== + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/167/8.0 + +Known issues / Roadmap +====================== + +* Incompatible with `sale_sourced_by_line `_ and `sale_quotation_sourcing `_ + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Alex Comba (https://www.agilebg.com/) + +Do not contact contributors directly about support or help with technical issues. + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/sale_delivery_split_date/__init__.py b/sale_delivery_split_date/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/sale_delivery_split_date/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_delivery_split_date/__openerp__.py b/sale_delivery_split_date/__openerp__.py new file mode 100644 index 00000000000..20dc39742f3 --- /dev/null +++ b/sale_delivery_split_date/__openerp__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Alex Comba - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Sale Delivery Split Date', + 'version': '8.0.1.0.0', + 'summary': 'Sale Deliveries split by date', + 'category': 'Sales Management', + 'license': 'AGPL-3', + 'author': 'Agile Business Group, Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/sale-workflow', + 'depends': [ + 'sale_order_line_date', + 'sale_procurement_group_by_line', + ], + 'data': [ + 'views/stock_picking.xml', + ], + 'installable': True, +} diff --git a/sale_delivery_split_date/i18n/it.po b/sale_delivery_split_date/i18n/it.po new file mode 100644 index 00000000000..ed32d177603 --- /dev/null +++ b/sale_delivery_split_date/i18n/it.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_delivery_split_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-30 10:17+0000\n" +"PO-Revision-Date: 2018-03-30 12:19+0200\n" +"Last-Translator: Alex Comba \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"Language: it\n" +"X-Generator: Poedit 2.0.4\n" + +#. module: sale_delivery_split_date +#: field:stock.picking,min_dt:0 +msgid "Min dt" +msgstr "Min dt" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_stock_picking +msgid "Picking List" +msgstr "Lista Picking" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order +msgid "Sales Order" +msgstr "Ordine di vendita" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga Ordine di Vendita" + +#. module: sale_delivery_split_date +#: view:stock.picking:sale_delivery_split_date.view_picking_internal_search +msgid "Scheduled Date" +msgstr "Data pianificata" diff --git a/sale_delivery_split_date/models/__init__.py b/sale_delivery_split_date/models/__init__.py new file mode 100644 index 00000000000..bce7c9390a1 --- /dev/null +++ b/sale_delivery_split_date/models/__init__.py @@ -0,0 +1,3 @@ +from . import sale_order +from . import sale_order_line +from . import stock_picking diff --git a/sale_delivery_split_date/models/sale_order.py b/sale_delivery_split_date/models/sale_order.py new file mode 100644 index 00000000000..36be2207c00 --- /dev/null +++ b/sale_delivery_split_date/models/sale_order.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Alex Comba - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, models + + +class SaleOrder(models.Model): + + _inherit = 'sale.order' + + @api.model + def _prepare_procurement_group_by_line(self, line): + vals = super(SaleOrder, self)._prepare_procurement_group_by_line(line) + if line._get_procurement_group_key()[0] == 24: + if line.requested_date: + vals['name'] += '/' + line.requested_date[:10] + return vals diff --git a/sale_delivery_split_date/models/sale_order_line.py b/sale_delivery_split_date/models/sale_order_line.py new file mode 100644 index 00000000000..61b0e2c7a07 --- /dev/null +++ b/sale_delivery_split_date/models/sale_order_line.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Alex Comba - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, models + + +class SaleOrderLine(models.Model): + + _inherit = 'sale.order.line' + + @api.multi + def _get_procurement_group_key(self): + """ Return a key with priority to be used to regroup lines in multiple + procurement groups + """ + priority = 24 + key = super(SaleOrderLine, self)._get_procurement_group_key() + # Check priority + if key[0] < priority: + if self.requested_date: + # group by date instead of datetime + return (priority, self.requested_date[:10]) + return key diff --git a/sale_delivery_split_date/models/stock_picking.py b/sale_delivery_split_date/models/stock_picking.py new file mode 100644 index 00000000000..b500cd50615 --- /dev/null +++ b/sale_delivery_split_date/models/stock_picking.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Alex Comba - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, fields, models + + +class StockPicking(models.Model): + + _inherit = 'stock.picking' + + min_dt = fields.Date( + strint='Scheduled Date (for filter purpose only)', + compute='_compute_min_dt', store=True) + + @api.multi + @api.depends('min_date') + def _compute_min_dt(self): + for picking in self: + min_dt = fields.Date.from_string(picking.min_date) + picking.min_dt = min_dt diff --git a/sale_delivery_split_date/static/description/icon.png b/sale_delivery_split_date/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_delivery_split_date/tests/__init__.py b/sale_delivery_split_date/tests/__init__.py new file mode 100644 index 00000000000..1413e0d9f1a --- /dev/null +++ b/sale_delivery_split_date/tests/__init__.py @@ -0,0 +1 @@ +from . import test_sale_delivery diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py new file mode 100644 index 00000000000..9b9b22c8326 --- /dev/null +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Alex Comba - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp.tests.common import TransactionCase +from odoo import fields +import datetime + + +class TestSaleDelivery(TransactionCase): + + def setUp(self): + super(TestSaleDelivery, self).setUp() + customer = self.env.ref('base.res_partner_3') + p1 = self.env.ref('product.product_product_15') + p2 = self.env.ref('product.product_product_25') + today = datetime.datetime.now() + self.dt1 = today + datetime.timedelta(days=9) + self.dt2 = today + datetime.timedelta(days=10) + self.date_sooner = fields.Datetime.to_string(self.dt1) + self.date_later = fields.Datetime.to_string(self.dt2) + self.so = self._create_sale_order(customer) + self.so_line1 = self._create_sale_order_line( + self.so, p1, 10, 100.0, self.dt1) + self.so_line2 = self._create_sale_order_line( + self.so, p2, 10, 200.0, self.dt1) + + def _create_sale_order(self, customer): + return self.env['sale.order'].create({'partner_id': customer.id}) + + def _create_sale_order_line(self, sale, product, qty, price, date): + return self.env['sale.order.line'].create({ + 'product_id': product.id, + 'name': 'cool product', + 'order_id': sale.id, + 'price_unit': price, + 'product_uom_qty': qty, + 'requested_date': date}) + + def test_check_single_date(self): + self.assertEqual( + len(self.so.picking_ids), 0, + "There must not be pickings for the SO when draft") + self.so.action_button_confirm() + self.assertEqual( + len(self.so.picking_ids), 1, + "There must be 1 picking for the SO when confirmed") + self.assertEqual( + self.so.picking_ids[0].min_date[:10], + self.so.picking_ids[0].min_dt) + self.assertEqual( + self.so.picking_ids[0].min_date, self.date_sooner, + "The picking must be planned at the expected date") + self.assertEqual( + self.so_line1.procurement_group_id, + self.so_line2.procurement_group_id, + "The procurement group must be the same") + self.assertIn( + self.date_sooner[:10], self.so_line1.procurement_group_id.name) + + def test_check_multiple_dates(self): + # Change the date of the second line + self.so_line2.requested_date = self.dt2 + self.assertEqual( + len(self.so.picking_ids), 0, + "There must not be pickings for the SO when draft") + self.so.action_button_confirm() + self.assertEqual( + len(self.so.picking_ids), 2, + "There must be 2 pickings for the SO when confirmed") + sorted_pickings = self.so.picking_ids.sorted(lambda x: x.min_date) + self.assertEqual( + self.so.picking_ids[0].min_date[:10], + self.so.picking_ids[0].min_dt) + self.assertEqual( + sorted_pickings[0].min_date, self.date_sooner, + "The first picking must be planned at the soonest date") + self.assertEqual( + self.so.picking_ids[1].min_date[:10], + self.so.picking_ids[1].min_dt) + self.assertEqual( + sorted_pickings[1].min_date, self.date_later, + "The second picking must be planned at the latest date") + self.assertNotEqual( + self.so_line1.procurement_group_id, + self.so_line2.procurement_group_id, + "The procurement group must be different") + self.assertIn( + self.date_sooner[:10], self.so_line1.procurement_group_id.name) + self.assertIn( + self.date_later[:10], self.so_line2.procurement_group_id.name) + + def test_check_same_dates(self): + # Change the date of the second line by just adding 1 hour + same_date = self.dt1 + datetime.timedelta(hours=1) + self.so_line2.requested_date = same_date + self.assertEqual( + len(self.so.picking_ids), 0, + "There must not be pickings for the SO when draft") + self.so.action_button_confirm() + self.assertEqual( + len(self.so.picking_ids), 1, + "There must be only one picking for the SO when confirmed") + self.assertEqual( + self.so.picking_ids[0].min_date[:10], + self.so.picking_ids[0].min_dt) + self.assertEqual( + self.so.picking_ids.min_date, self.date_sooner, + "The picking must be planned at the expected date") + self.assertEqual( + self.so_line1.procurement_group_id, + self.so_line2.procurement_group_id, + "The procurement group must be the same") + self.assertIn( + self.date_sooner[:10], self.so_line1.procurement_group_id.name) diff --git a/sale_delivery_split_date/views/stock_picking.xml b/sale_delivery_split_date/views/stock_picking.xml new file mode 100644 index 00000000000..59af25ea194 --- /dev/null +++ b/sale_delivery_split_date/views/stock_picking.xml @@ -0,0 +1,30 @@ + + + + + + + stock.picking.tree + stock.picking + + + + 0 + + + + + + stock.picking.internal.search + stock.picking + + + + + + + + + + From 8b8e428f57f04f5517fab3bc3dedfee59448a93a Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Tue, 22 May 2018 12:03:09 +0200 Subject: [PATCH 02/24] [MIG] sale_delivery_split_date: Migration to 10.0 --- sale_delivery_split_date/README.rst | 2 +- .../{__openerp__.py => __manifest__.py} | 2 +- sale_delivery_split_date/models/sale_order.py | 2 +- .../models/sale_order_line.py | 2 +- .../models/stock_picking.py | 4 +- .../tests/test_sale_delivery.py | 10 ++--- .../views/stock_picking.xml | 42 +++++++++---------- 7 files changed, 31 insertions(+), 33 deletions(-) rename sale_delivery_split_date/{__openerp__.py => __manifest__.py} (95%) diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst index d0b01f90a5a..ba231e19534 100644 --- a/sale_delivery_split_date/README.rst +++ b/sale_delivery_split_date/README.rst @@ -16,7 +16,7 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/167/8.0 + :target: https://runbot.odoo-community.org/runbot/167/10.0 Known issues / Roadmap ====================== diff --git a/sale_delivery_split_date/__openerp__.py b/sale_delivery_split_date/__manifest__.py similarity index 95% rename from sale_delivery_split_date/__openerp__.py rename to sale_delivery_split_date/__manifest__.py index 20dc39742f3..6be9444a7f2 100644 --- a/sale_delivery_split_date/__openerp__.py +++ b/sale_delivery_split_date/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Sale Delivery Split Date', - 'version': '8.0.1.0.0', + 'version': '10.0.1.0.0', 'summary': 'Sale Deliveries split by date', 'category': 'Sales Management', 'license': 'AGPL-3', diff --git a/sale_delivery_split_date/models/sale_order.py b/sale_delivery_split_date/models/sale_order.py index 36be2207c00..1e380f5e9af 100644 --- a/sale_delivery_split_date/models/sale_order.py +++ b/sale_delivery_split_date/models/sale_order.py @@ -2,7 +2,7 @@ # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import api, models +from odoo import api, models class SaleOrder(models.Model): diff --git a/sale_delivery_split_date/models/sale_order_line.py b/sale_delivery_split_date/models/sale_order_line.py index 61b0e2c7a07..e88079c573f 100644 --- a/sale_delivery_split_date/models/sale_order_line.py +++ b/sale_delivery_split_date/models/sale_order_line.py @@ -2,7 +2,7 @@ # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import api, models +from odoo import api, models class SaleOrderLine(models.Model): diff --git a/sale_delivery_split_date/models/stock_picking.py b/sale_delivery_split_date/models/stock_picking.py index b500cd50615..a4259810db7 100644 --- a/sale_delivery_split_date/models/stock_picking.py +++ b/sale_delivery_split_date/models/stock_picking.py @@ -2,7 +2,7 @@ # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import api, fields, models +from odoo import api, fields, models class StockPicking(models.Model): @@ -10,7 +10,7 @@ class StockPicking(models.Model): _inherit = 'stock.picking' min_dt = fields.Date( - strint='Scheduled Date (for filter purpose only)', + string='Scheduled Date (for filter purpose only)', compute='_compute_min_dt', store=True) @api.multi diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py index 9b9b22c8326..111e4c350d1 100644 --- a/sale_delivery_split_date/tests/test_sale_delivery.py +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -2,7 +2,7 @@ # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp.tests.common import TransactionCase +from odoo.tests.common import TransactionCase from odoo import fields import datetime @@ -12,7 +12,7 @@ class TestSaleDelivery(TransactionCase): def setUp(self): super(TestSaleDelivery, self).setUp() customer = self.env.ref('base.res_partner_3') - p1 = self.env.ref('product.product_product_15') + p1 = self.env.ref('product.product_product_16') p2 = self.env.ref('product.product_product_25') today = datetime.datetime.now() self.dt1 = today + datetime.timedelta(days=9) @@ -41,7 +41,7 @@ def test_check_single_date(self): self.assertEqual( len(self.so.picking_ids), 0, "There must not be pickings for the SO when draft") - self.so.action_button_confirm() + self.so.action_confirm() self.assertEqual( len(self.so.picking_ids), 1, "There must be 1 picking for the SO when confirmed") @@ -64,7 +64,7 @@ def test_check_multiple_dates(self): self.assertEqual( len(self.so.picking_ids), 0, "There must not be pickings for the SO when draft") - self.so.action_button_confirm() + self.so.action_confirm() self.assertEqual( len(self.so.picking_ids), 2, "There must be 2 pickings for the SO when confirmed") @@ -97,7 +97,7 @@ def test_check_same_dates(self): self.assertEqual( len(self.so.picking_ids), 0, "There must not be pickings for the SO when draft") - self.so.action_button_confirm() + self.so.action_confirm() self.assertEqual( len(self.so.picking_ids), 1, "There must be only one picking for the SO when confirmed") diff --git a/sale_delivery_split_date/views/stock_picking.xml b/sale_delivery_split_date/views/stock_picking.xml index 59af25ea194..83944144678 100644 --- a/sale_delivery_split_date/views/stock_picking.xml +++ b/sale_delivery_split_date/views/stock_picking.xml @@ -1,30 +1,28 @@ - - + - - stock.picking.tree - stock.picking - - - - 0 - + + stock.picking.tree + stock.picking + + + + 0 - + + - - stock.picking.internal.search - stock.picking - - - - - + + stock.picking.internal.search + stock.picking + + + + - + + - - + From dce3cb38a4dd6deb0eca4ab3213fc4d3eb94d098 Mon Sep 17 00:00:00 2001 From: tafaRU Date: Tue, 19 Jun 2018 15:37:30 +0200 Subject: [PATCH 03/24] [FIX] sale_delivery_split_date: fix incompatible modules urls in README file --- sale_delivery_split_date/README.rst | 2 +- sale_delivery_split_date/i18n/it.po | 30 ++++++++------ .../i18n/sale_delivery_split_date.pot | 40 +++++++++++++++++++ 3 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 sale_delivery_split_date/i18n/sale_delivery_split_date.pot diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst index ba231e19534..451c960f0df 100644 --- a/sale_delivery_split_date/README.rst +++ b/sale_delivery_split_date/README.rst @@ -21,7 +21,7 @@ Usage Known issues / Roadmap ====================== -* Incompatible with `sale_sourced_by_line `_ and `sale_quotation_sourcing `_ +* Incompatible with `sale_sourced_by_line `_ and `sale_quotation_sourcing `_ Bug Tracker =========== diff --git a/sale_delivery_split_date/i18n/it.po b/sale_delivery_split_date/i18n/it.po index ed32d177603..17af958f72c 100644 --- a/sale_delivery_split_date/i18n/it.po +++ b/sale_delivery_split_date/i18n/it.po @@ -10,23 +10,13 @@ msgstr "" "PO-Revision-Date: 2018-03-30 12:19+0200\n" "Last-Translator: Alex Comba \n" "Language-Team: \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: \n" -"Language: it\n" "X-Generator: Poedit 2.0.4\n" -#. module: sale_delivery_split_date -#: field:stock.picking,min_dt:0 -msgid "Min dt" -msgstr "Min dt" - -#. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_stock_picking -msgid "Picking List" -msgstr "Lista Picking" - #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order msgid "Sales Order" @@ -38,6 +28,22 @@ msgid "Sales Order Line" msgstr "Riga Ordine di Vendita" #. module: sale_delivery_split_date -#: view:stock.picking:sale_delivery_split_date.view_picking_internal_search +#: model:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search msgid "Scheduled Date" msgstr "Data pianificata" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking_min_dt +msgid "Scheduled Date (for filter purpose only)" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_stock_picking +msgid "Transfer" +msgstr "" + +#~ msgid "Min dt" +#~ msgstr "Min dt" + +#~ msgid "Picking List" +#~ msgstr "Lista Picking" diff --git a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot new file mode 100644 index 00000000000..3af495dba02 --- /dev/null +++ b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot @@ -0,0 +1,40 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_delivery_split_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +msgid "Scheduled Date" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking_min_dt +msgid "Scheduled Date (for filter purpose only)" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_stock_picking +msgid "Transfer" +msgstr "" + From 90521a0c5bb4df31aa18502e15270b81772cd8d7 Mon Sep 17 00:00:00 2001 From: SimoRubi Date: Mon, 31 Aug 2020 16:59:03 +0200 Subject: [PATCH 04/24] [MIG] sale_delivery_split_date: Migration to 12.0 Note that sale_delivery_split_date is not compatible with sale_procurement_group_by_commitment_date --- sale_delivery_split_date/README.rst | 69 ++- sale_delivery_split_date/__init__.py | 2 + sale_delivery_split_date/__manifest__.py | 3 +- sale_delivery_split_date/i18n/it.po | 31 +- .../i18n/sale_delivery_split_date.pot | 8 +- sale_delivery_split_date/models/__init__.py | 2 + sale_delivery_split_date/models/sale_order.py | 6 +- .../models/sale_order_line.py | 5 +- .../models/stock_picking.py | 5 +- .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 4 + sale_delivery_split_date/readme/ROADMAP.rst | 1 + .../static/description/index.html | 428 ++++++++++++++++++ sale_delivery_split_date/tests/__init__.py | 2 + .../tests/test_sale_delivery.py | 45 +- .../views/stock_picking.xml | 2 +- 16 files changed, 533 insertions(+), 81 deletions(-) create mode 100644 sale_delivery_split_date/readme/CONTRIBUTORS.rst create mode 100644 sale_delivery_split_date/readme/DESCRIPTION.rst create mode 100644 sale_delivery_split_date/readme/ROADMAP.rst create mode 100644 sale_delivery_split_date/static/description/index.html diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst index 451c960f0df..0ba4d9cb76d 100644 --- a/sale_delivery_split_date/README.rst +++ b/sale_delivery_split_date/README.rst @@ -1,62 +1,81 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl - :alt: License: AGPL-3 - ======================== Sale Delivery Split Date ======================== +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/sale-workflow/tree/12.0/sale_delivery_split_date + :alt: OCA/sale-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/sale-workflow-12-0/sale-workflow-12-0-sale_delivery_split_date + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/167/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + When this module is installed, each sale order you confirm will generate one delivery order per requested date indicated in the sale order lines. -Furthermore, the delivery orders could may be searched by selecting the scheduled date, which is now displayed in the tree delivery tree view. +Furthermore, the delivery orders can be searched by selecting the scheduled date, which is now displayed in the delivery tree view. -Usage -===== +**Table of contents** -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/167/10.0 +.. contents:: + :local: Known issues / Roadmap ====================== -* Incompatible with `sale_sourced_by_line `_ and `sale_quotation_sourcing `_ +* Incompatible with `sale_procurement_group_by_commitment_date `_ Bug Tracker =========== -Bugs are tracked on `GitHub Issues -`_. In case of trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smash it by providing detailed and welcomed feedback. +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Agile Business Group Contributors ------------- +~~~~~~~~~~~~ * Alex Comba (https://www.agilebg.com/) -Do not contact contributors directly about support or help with technical issues. +Maintainers +~~~~~~~~~~~ -Maintainer ----------- +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/sale-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_delivery_split_date/__init__.py b/sale_delivery_split_date/__init__.py index 0650744f6bc..31660d6a965 100644 --- a/sale_delivery_split_date/__init__.py +++ b/sale_delivery_split_date/__init__.py @@ -1 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import models diff --git a/sale_delivery_split_date/__manifest__.py b/sale_delivery_split_date/__manifest__.py index 6be9444a7f2..5627710074e 100644 --- a/sale_delivery_split_date/__manifest__.py +++ b/sale_delivery_split_date/__manifest__.py @@ -1,10 +1,9 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Sale Delivery Split Date', - 'version': '10.0.1.0.0', + 'version': '12.0.1.0.1', 'summary': 'Sale Deliveries split by date', 'category': 'Sales Management', 'license': 'AGPL-3', diff --git a/sale_delivery_split_date/i18n/it.po b/sale_delivery_split_date/i18n/it.po index 17af958f72c..69e4c8700ae 100644 --- a/sale_delivery_split_date/i18n/it.po +++ b/sale_delivery_split_date/i18n/it.po @@ -4,46 +4,39 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-03-30 10:17+0000\n" -"PO-Revision-Date: 2018-03-30 12:19+0200\n" -"Last-Translator: Alex Comba \n" +"POT-Creation-Date: 2020-08-31 14:57+0000\n" +"PO-Revision-Date: 2020-08-31 14:57+0000\n" +"Last-Translator: Simone Rubino \n" "Language-Team: \n" -"Language: it\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Transfer-Encoding: \n" "Plural-Forms: \n" -"X-Generator: Poedit 2.0.4\n" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sales Order" +msgid "Sale Order" msgstr "Ordine di vendita" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order_line msgid "Sales Order Line" -msgstr "Riga Ordine di Vendita" +msgstr "Riga ordine di vendita" #. module: sale_delivery_split_date -#: model:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search msgid "Scheduled Date" msgstr "Data pianificata" #. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking_min_dt +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt msgid "Scheduled Date (for filter purpose only)" -msgstr "" +msgstr "Data pianificata (solo per i filtri)" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_stock_picking msgid "Transfer" -msgstr "" - -#~ msgid "Min dt" -#~ msgstr "Min dt" - -#~ msgid "Picking List" -#~ msgstr "Lista Picking" +msgstr "Trasferimento" diff --git a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot index 3af495dba02..4e804df6cea 100644 --- a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot +++ b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -15,7 +15,7 @@ msgstr "" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sales Order" +msgid "Sale Order" msgstr "" #. module: sale_delivery_split_date @@ -24,12 +24,12 @@ msgid "Sales Order Line" msgstr "" #. module: sale_delivery_split_date -#: model:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search msgid "Scheduled Date" msgstr "" #. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking_min_dt +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt msgid "Scheduled Date (for filter purpose only)" msgstr "" diff --git a/sale_delivery_split_date/models/__init__.py b/sale_delivery_split_date/models/__init__.py index bce7c9390a1..8e32d7c7c22 100644 --- a/sale_delivery_split_date/models/__init__.py +++ b/sale_delivery_split_date/models/__init__.py @@ -1,3 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import sale_order from . import sale_order_line from . import stock_picking diff --git a/sale_delivery_split_date/models/sale_order.py b/sale_delivery_split_date/models/sale_order.py index 1e380f5e9af..d53e524e82c 100644 --- a/sale_delivery_split_date/models/sale_order.py +++ b/sale_delivery_split_date/models/sale_order.py @@ -1,8 +1,8 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, models +from odoo.tools import format_date class SaleOrder(models.Model): @@ -13,6 +13,6 @@ class SaleOrder(models.Model): def _prepare_procurement_group_by_line(self, line): vals = super(SaleOrder, self)._prepare_procurement_group_by_line(line) if line._get_procurement_group_key()[0] == 24: - if line.requested_date: - vals['name'] += '/' + line.requested_date[:10] + if line.commitment_date: + vals['name'] += '/' + format_date(line.env, line.commitment_date.date()) return vals diff --git a/sale_delivery_split_date/models/sale_order_line.py b/sale_delivery_split_date/models/sale_order_line.py index e88079c573f..d95d1a8fb3a 100644 --- a/sale_delivery_split_date/models/sale_order_line.py +++ b/sale_delivery_split_date/models/sale_order_line.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -18,7 +17,7 @@ def _get_procurement_group_key(self): key = super(SaleOrderLine, self)._get_procurement_group_key() # Check priority if key[0] < priority: - if self.requested_date: + if self.commitment_date: # group by date instead of datetime - return (priority, self.requested_date[:10]) + return (priority, self.commitment_date.date()) return key diff --git a/sale_delivery_split_date/models/stock_picking.py b/sale_delivery_split_date/models/stock_picking.py index a4259810db7..9b1d3994339 100644 --- a/sale_delivery_split_date/models/stock_picking.py +++ b/sale_delivery_split_date/models/stock_picking.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -14,8 +13,8 @@ class StockPicking(models.Model): compute='_compute_min_dt', store=True) @api.multi - @api.depends('min_date') + @api.depends('scheduled_date') def _compute_min_dt(self): for picking in self: - min_dt = fields.Date.from_string(picking.min_date) + min_dt = fields.Date.from_string(picking.scheduled_date) picking.min_dt = min_dt diff --git a/sale_delivery_split_date/readme/CONTRIBUTORS.rst b/sale_delivery_split_date/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..a1fa3a9866f --- /dev/null +++ b/sale_delivery_split_date/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Alex Comba (https://www.agilebg.com/) diff --git a/sale_delivery_split_date/readme/DESCRIPTION.rst b/sale_delivery_split_date/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..37251e789c0 --- /dev/null +++ b/sale_delivery_split_date/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +When this module is installed, each sale order you confirm will generate one delivery order +per requested date indicated in the sale order lines. + +Furthermore, the delivery orders can be searched by selecting the scheduled date, which is now displayed in the delivery tree view. diff --git a/sale_delivery_split_date/readme/ROADMAP.rst b/sale_delivery_split_date/readme/ROADMAP.rst new file mode 100644 index 00000000000..4945cde7dd7 --- /dev/null +++ b/sale_delivery_split_date/readme/ROADMAP.rst @@ -0,0 +1 @@ +* Incompatible with `sale_procurement_group_by_commitment_date `_ diff --git a/sale_delivery_split_date/static/description/index.html b/sale_delivery_split_date/static/description/index.html new file mode 100644 index 00000000000..15ab34542df --- /dev/null +++ b/sale_delivery_split_date/static/description/index.html @@ -0,0 +1,428 @@ + + + + + + +Sale Delivery Split Date + + + +
+

Sale Delivery Split Date

+ + +

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runbot

+

When this module is installed, each sale order you confirm will generate one delivery order +per requested date indicated in the sale order lines.

+

Furthermore, the delivery orders can be searched by selecting the scheduled date, which is now displayed in the delivery tree view.

+

Table of contents

+ + +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Agile Business Group
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/sale-workflow project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/sale_delivery_split_date/tests/__init__.py b/sale_delivery_split_date/tests/__init__.py index 1413e0d9f1a..d4fe79507a5 100644 --- a/sale_delivery_split_date/tests/__init__.py +++ b/sale_delivery_split_date/tests/__init__.py @@ -1 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import test_sale_delivery diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py index 111e4c350d1..c908e5c23ea 100644 --- a/sale_delivery_split_date/tests/test_sale_delivery.py +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -1,9 +1,8 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.tools import format_date from odoo.tests.common import TransactionCase -from odoo import fields import datetime @@ -14,11 +13,11 @@ def setUp(self): customer = self.env.ref('base.res_partner_3') p1 = self.env.ref('product.product_product_16') p2 = self.env.ref('product.product_product_25') - today = datetime.datetime.now() + today = datetime.datetime(2020, 1, 1) self.dt1 = today + datetime.timedelta(days=9) self.dt2 = today + datetime.timedelta(days=10) - self.date_sooner = fields.Datetime.to_string(self.dt1) - self.date_later = fields.Datetime.to_string(self.dt2) + self.date_sooner = self.dt1 + self.date_later = self.dt2 self.so = self._create_sale_order(customer) self.so_line1 = self._create_sale_order_line( self.so, p1, 10, 100.0, self.dt1) @@ -35,7 +34,7 @@ def _create_sale_order_line(self, sale, product, qty, price, date): 'order_id': sale.id, 'price_unit': price, 'product_uom_qty': qty, - 'requested_date': date}) + 'commitment_date': date}) def test_check_single_date(self): self.assertEqual( @@ -46,21 +45,22 @@ def test_check_single_date(self): len(self.so.picking_ids), 1, "There must be 1 picking for the SO when confirmed") self.assertEqual( - self.so.picking_ids[0].min_date[:10], + self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt) self.assertEqual( - self.so.picking_ids[0].min_date, self.date_sooner, + self.so.picking_ids[0].scheduled_date, self.date_sooner, "The picking must be planned at the expected date") self.assertEqual( self.so_line1.procurement_group_id, self.so_line2.procurement_group_id, "The procurement group must be the same") self.assertIn( - self.date_sooner[:10], self.so_line1.procurement_group_id.name) + format_date(self.env, self.date_sooner.date()), + self.so_line1.procurement_group_id.name) def test_check_multiple_dates(self): # Change the date of the second line - self.so_line2.requested_date = self.dt2 + self.so_line2.commitment_date = self.dt2 self.assertEqual( len(self.so.picking_ids), 0, "There must not be pickings for the SO when draft") @@ -68,32 +68,34 @@ def test_check_multiple_dates(self): self.assertEqual( len(self.so.picking_ids), 2, "There must be 2 pickings for the SO when confirmed") - sorted_pickings = self.so.picking_ids.sorted(lambda x: x.min_date) + sorted_pickings = self.so.picking_ids.sorted(lambda x: x.scheduled_date) self.assertEqual( - self.so.picking_ids[0].min_date[:10], + self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt) self.assertEqual( - sorted_pickings[0].min_date, self.date_sooner, + sorted_pickings[0].scheduled_date, self.date_sooner, "The first picking must be planned at the soonest date") self.assertEqual( - self.so.picking_ids[1].min_date[:10], + self.so.picking_ids[1].scheduled_date.date(), self.so.picking_ids[1].min_dt) self.assertEqual( - sorted_pickings[1].min_date, self.date_later, + sorted_pickings[1].scheduled_date, self.date_later, "The second picking must be planned at the latest date") self.assertNotEqual( self.so_line1.procurement_group_id, self.so_line2.procurement_group_id, "The procurement group must be different") self.assertIn( - self.date_sooner[:10], self.so_line1.procurement_group_id.name) + format_date(self.env, self.date_sooner.date()), + self.so_line1.procurement_group_id.name) self.assertIn( - self.date_later[:10], self.so_line2.procurement_group_id.name) + format_date(self.env, self.date_later.date()), + self.so_line2.procurement_group_id.name) def test_check_same_dates(self): # Change the date of the second line by just adding 1 hour same_date = self.dt1 + datetime.timedelta(hours=1) - self.so_line2.requested_date = same_date + self.so_line2.commitment_date = same_date self.assertEqual( len(self.so.picking_ids), 0, "There must not be pickings for the SO when draft") @@ -102,14 +104,15 @@ def test_check_same_dates(self): len(self.so.picking_ids), 1, "There must be only one picking for the SO when confirmed") self.assertEqual( - self.so.picking_ids[0].min_date[:10], + self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt) self.assertEqual( - self.so.picking_ids.min_date, self.date_sooner, + self.so.picking_ids.scheduled_date, self.date_sooner, "The picking must be planned at the expected date") self.assertEqual( self.so_line1.procurement_group_id, self.so_line2.procurement_group_id, "The procurement group must be the same") self.assertIn( - self.date_sooner[:10], self.so_line1.procurement_group_id.name) + format_date(self.env, self.date_sooner.date()), + self.so_line1.procurement_group_id.name) diff --git a/sale_delivery_split_date/views/stock_picking.xml b/sale_delivery_split_date/views/stock_picking.xml index 83944144678..c7dc54dd894 100644 --- a/sale_delivery_split_date/views/stock_picking.xml +++ b/sale_delivery_split_date/views/stock_picking.xml @@ -8,7 +8,7 @@ stock.picking - + 0 From e3248b1c23e68b85529899100894c026405f05ec Mon Sep 17 00:00:00 2001 From: Daniel Martinez Vila Date: Wed, 10 Mar 2021 09:24:34 +0000 Subject: [PATCH 05/24] Added translation using Weblate (Catalan) --- sale_delivery_split_date/i18n/ca.po | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sale_delivery_split_date/i18n/ca.po diff --git a/sale_delivery_split_date/i18n/ca.po b/sale_delivery_split_date/i18n/ca.po new file mode 100644 index 00000000000..cb0fa52fbe3 --- /dev/null +++ b/sale_delivery_split_date/i18n/ca.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_delivery_split_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-03-10 10:45+0000\n" +"Last-Translator: Daniel Martinez Vila \n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order +msgid "Sale Order" +msgstr "Comanda de venda" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línia de comandes de vendes" + +#. module: sale_delivery_split_date +#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +msgid "Scheduled Date" +msgstr "Data prevista" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt +msgid "Scheduled Date (for filter purpose only)" +msgstr "Data programada (només per al filtre)" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_stock_picking +msgid "Transfer" +msgstr "Transferència" From 8d42671af2733ef7393ff340198f7cb1588ef859 Mon Sep 17 00:00:00 2001 From: Daniel Martinez Vila Date: Wed, 10 Mar 2021 09:25:25 +0000 Subject: [PATCH 06/24] Added translation using Weblate (Spanish) --- sale_delivery_split_date/i18n/es.po | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sale_delivery_split_date/i18n/es.po diff --git a/sale_delivery_split_date/i18n/es.po b/sale_delivery_split_date/i18n/es.po new file mode 100644 index 00000000000..60e90db84dc --- /dev/null +++ b/sale_delivery_split_date/i18n/es.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_delivery_split_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-03-10 10:45+0000\n" +"Last-Translator: Daniel Martinez Vila \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order +msgid "Sale Order" +msgstr "Pedido de venta" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de pedido de venta" + +#. module: sale_delivery_split_date +#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +msgid "Scheduled Date" +msgstr "Fecha prevista" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt +msgid "Scheduled Date (for filter purpose only)" +msgstr "Fecha programada (solo para fines de filtrado)" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_stock_picking +msgid "Transfer" +msgstr "Transferir" From 970c42db392f7371c8e11dc503e104140a7ed71d Mon Sep 17 00:00:00 2001 From: educasilva Date: Wed, 21 Apr 2021 18:26:18 +0000 Subject: [PATCH 07/24] Added translation using Weblate (Portuguese (Portugal)) --- sale_delivery_split_date/i18n/pt_PT.po | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sale_delivery_split_date/i18n/pt_PT.po diff --git a/sale_delivery_split_date/i18n/pt_PT.po b/sale_delivery_split_date/i18n/pt_PT.po new file mode 100644 index 00000000000..554765b3636 --- /dev/null +++ b/sale_delivery_split_date/i18n/pt_PT.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_delivery_split_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-04-21 20:47+0000\n" +"Last-Translator: educasilva \n" +"Language-Team: none\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order +msgid "Sale Order" +msgstr "Ordem de venda" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linha de encomendas de venda" + +#. module: sale_delivery_split_date +#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +msgid "Scheduled Date" +msgstr "Data programada" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt +msgid "Scheduled Date (for filter purpose only)" +msgstr "Data programada (apenas para fins de filtragem)" + +#. module: sale_delivery_split_date +#: model:ir.model,name:sale_delivery_split_date.model_stock_picking +msgid "Transfer" +msgstr "Transferir" From 1f9db350834d34eeb17e0b5a6e36122d746ae0c1 Mon Sep 17 00:00:00 2001 From: Alfredo Zamora Date: Thu, 5 Aug 2021 15:29:49 +0200 Subject: [PATCH 08/24] [IMP] sale_delivery_split_date: black, isort, prettier --- sale_delivery_split_date/__manifest__.py | 26 ++-- sale_delivery_split_date/models/sale_order.py | 4 +- .../models/sale_order_line.py | 4 +- .../models/stock_picking.py | 10 +- .../tests/test_sale_delivery.py | 134 +++++++++++------- .../views/stock_picking.xml | 8 +- 6 files changed, 108 insertions(+), 78 deletions(-) diff --git a/sale_delivery_split_date/__manifest__.py b/sale_delivery_split_date/__manifest__.py index 5627710074e..4e829a8a5e6 100644 --- a/sale_delivery_split_date/__manifest__.py +++ b/sale_delivery_split_date/__manifest__.py @@ -2,19 +2,19 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Sale Delivery Split Date', - 'version': '12.0.1.0.1', - 'summary': 'Sale Deliveries split by date', - 'category': 'Sales Management', - 'license': 'AGPL-3', - 'author': 'Agile Business Group, Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/sale-workflow', - 'depends': [ - 'sale_order_line_date', - 'sale_procurement_group_by_line', + "name": "Sale Delivery Split Date", + "version": "12.0.1.0.1", + "summary": "Sale Deliveries split by date", + "category": "Sales Management", + "license": "AGPL-3", + "author": "Agile Business Group, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/sale-workflow", + "depends": [ + "sale_order_line_date", + "sale_procurement_group_by_line", ], - 'data': [ - 'views/stock_picking.xml', + "data": [ + "views/stock_picking.xml", ], - 'installable': True, + "installable": True, } diff --git a/sale_delivery_split_date/models/sale_order.py b/sale_delivery_split_date/models/sale_order.py index d53e524e82c..85922da7bbd 100644 --- a/sale_delivery_split_date/models/sale_order.py +++ b/sale_delivery_split_date/models/sale_order.py @@ -7,12 +7,12 @@ class SaleOrder(models.Model): - _inherit = 'sale.order' + _inherit = "sale.order" @api.model def _prepare_procurement_group_by_line(self, line): vals = super(SaleOrder, self)._prepare_procurement_group_by_line(line) if line._get_procurement_group_key()[0] == 24: if line.commitment_date: - vals['name'] += '/' + format_date(line.env, line.commitment_date.date()) + vals["name"] += "/" + format_date(line.env, line.commitment_date.date()) return vals diff --git a/sale_delivery_split_date/models/sale_order_line.py b/sale_delivery_split_date/models/sale_order_line.py index d95d1a8fb3a..180b1a1bba9 100644 --- a/sale_delivery_split_date/models/sale_order_line.py +++ b/sale_delivery_split_date/models/sale_order_line.py @@ -6,11 +6,11 @@ class SaleOrderLine(models.Model): - _inherit = 'sale.order.line' + _inherit = "sale.order.line" @api.multi def _get_procurement_group_key(self): - """ Return a key with priority to be used to regroup lines in multiple + """Return a key with priority to be used to regroup lines in multiple procurement groups """ priority = 24 diff --git a/sale_delivery_split_date/models/stock_picking.py b/sale_delivery_split_date/models/stock_picking.py index 9b1d3994339..ede26133eb5 100644 --- a/sale_delivery_split_date/models/stock_picking.py +++ b/sale_delivery_split_date/models/stock_picking.py @@ -6,14 +6,16 @@ class StockPicking(models.Model): - _inherit = 'stock.picking' + _inherit = "stock.picking" min_dt = fields.Date( - string='Scheduled Date (for filter purpose only)', - compute='_compute_min_dt', store=True) + string="Scheduled Date (for filter purpose only)", + compute="_compute_min_dt", + store=True, + ) @api.multi - @api.depends('scheduled_date') + @api.depends("scheduled_date") def _compute_min_dt(self): for picking in self: min_dt = fields.Date.from_string(picking.scheduled_date) diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py index c908e5c23ea..cb33b1b67da 100644 --- a/sale_delivery_split_date/tests/test_sale_delivery.py +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -1,118 +1,146 @@ # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tools import format_date -from odoo.tests.common import TransactionCase import datetime +from odoo.tests.common import TransactionCase +from odoo.tools import format_date + class TestSaleDelivery(TransactionCase): - def setUp(self): super(TestSaleDelivery, self).setUp() - customer = self.env.ref('base.res_partner_3') - p1 = self.env.ref('product.product_product_16') - p2 = self.env.ref('product.product_product_25') + customer = self.env.ref("base.res_partner_3") + p1 = self.env.ref("product.product_product_16") + p2 = self.env.ref("product.product_product_25") today = datetime.datetime(2020, 1, 1) self.dt1 = today + datetime.timedelta(days=9) self.dt2 = today + datetime.timedelta(days=10) self.date_sooner = self.dt1 self.date_later = self.dt2 self.so = self._create_sale_order(customer) - self.so_line1 = self._create_sale_order_line( - self.so, p1, 10, 100.0, self.dt1) - self.so_line2 = self._create_sale_order_line( - self.so, p2, 10, 200.0, self.dt1) + self.so_line1 = self._create_sale_order_line(self.so, p1, 10, 100.0, self.dt1) + self.so_line2 = self._create_sale_order_line(self.so, p2, 10, 200.0, self.dt1) def _create_sale_order(self, customer): - return self.env['sale.order'].create({'partner_id': customer.id}) + return self.env["sale.order"].create({"partner_id": customer.id}) def _create_sale_order_line(self, sale, product, qty, price, date): - return self.env['sale.order.line'].create({ - 'product_id': product.id, - 'name': 'cool product', - 'order_id': sale.id, - 'price_unit': price, - 'product_uom_qty': qty, - 'commitment_date': date}) + return self.env["sale.order.line"].create( + { + "product_id": product.id, + "name": "cool product", + "order_id": sale.id, + "price_unit": price, + "product_uom_qty": qty, + "commitment_date": date, + } + ) def test_check_single_date(self): self.assertEqual( - len(self.so.picking_ids), 0, - "There must not be pickings for the SO when draft") + len(self.so.picking_ids), + 0, + "There must not be pickings for the SO when draft", + ) self.so.action_confirm() self.assertEqual( - len(self.so.picking_ids), 1, - "There must be 1 picking for the SO when confirmed") + len(self.so.picking_ids), + 1, + "There must be 1 picking for the SO when confirmed", + ) self.assertEqual( - self.so.picking_ids[0].scheduled_date.date(), - self.so.picking_ids[0].min_dt) + self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt + ) self.assertEqual( - self.so.picking_ids[0].scheduled_date, self.date_sooner, - "The picking must be planned at the expected date") + self.so.picking_ids[0].scheduled_date, + self.date_sooner, + "The picking must be planned at the expected date", + ) self.assertEqual( self.so_line1.procurement_group_id, self.so_line2.procurement_group_id, - "The procurement group must be the same") + "The procurement group must be the same", + ) self.assertIn( format_date(self.env, self.date_sooner.date()), - self.so_line1.procurement_group_id.name) + self.so_line1.procurement_group_id.name, + ) def test_check_multiple_dates(self): # Change the date of the second line self.so_line2.commitment_date = self.dt2 self.assertEqual( - len(self.so.picking_ids), 0, - "There must not be pickings for the SO when draft") + len(self.so.picking_ids), + 0, + "There must not be pickings for the SO when draft", + ) self.so.action_confirm() self.assertEqual( - len(self.so.picking_ids), 2, - "There must be 2 pickings for the SO when confirmed") + len(self.so.picking_ids), + 2, + "There must be 2 pickings for the SO when confirmed", + ) sorted_pickings = self.so.picking_ids.sorted(lambda x: x.scheduled_date) self.assertEqual( - self.so.picking_ids[0].scheduled_date.date(), - self.so.picking_ids[0].min_dt) + self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt + ) self.assertEqual( - sorted_pickings[0].scheduled_date, self.date_sooner, - "The first picking must be planned at the soonest date") + sorted_pickings[0].scheduled_date, + self.date_sooner, + "The first picking must be planned at the soonest date", + ) self.assertEqual( - self.so.picking_ids[1].scheduled_date.date(), - self.so.picking_ids[1].min_dt) + self.so.picking_ids[1].scheduled_date.date(), self.so.picking_ids[1].min_dt + ) self.assertEqual( - sorted_pickings[1].scheduled_date, self.date_later, - "The second picking must be planned at the latest date") + sorted_pickings[1].scheduled_date, + self.date_later, + "The second picking must be planned at the latest date", + ) self.assertNotEqual( self.so_line1.procurement_group_id, self.so_line2.procurement_group_id, - "The procurement group must be different") + "The procurement group must be different", + ) self.assertIn( format_date(self.env, self.date_sooner.date()), - self.so_line1.procurement_group_id.name) + self.so_line1.procurement_group_id.name, + ) self.assertIn( format_date(self.env, self.date_later.date()), - self.so_line2.procurement_group_id.name) + self.so_line2.procurement_group_id.name, + ) def test_check_same_dates(self): # Change the date of the second line by just adding 1 hour same_date = self.dt1 + datetime.timedelta(hours=1) self.so_line2.commitment_date = same_date self.assertEqual( - len(self.so.picking_ids), 0, - "There must not be pickings for the SO when draft") + len(self.so.picking_ids), + 0, + "There must not be pickings for the SO when draft", + ) self.so.action_confirm() self.assertEqual( - len(self.so.picking_ids), 1, - "There must be only one picking for the SO when confirmed") + len(self.so.picking_ids), + 1, + "There must be only one picking for the SO when confirmed", + ) self.assertEqual( - self.so.picking_ids[0].scheduled_date.date(), - self.so.picking_ids[0].min_dt) + self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt + ) self.assertEqual( - self.so.picking_ids.scheduled_date, self.date_sooner, - "The picking must be planned at the expected date") + self.so.picking_ids.scheduled_date, + self.date_sooner, + "The picking must be planned at the expected date", + ) self.assertEqual( self.so_line1.procurement_group_id, self.so_line2.procurement_group_id, - "The procurement group must be the same") + "The procurement group must be the same", + ) self.assertIn( format_date(self.env, self.date_sooner.date()), - self.so_line1.procurement_group_id.name) + self.so_line1.procurement_group_id.name, + ) diff --git a/sale_delivery_split_date/views/stock_picking.xml b/sale_delivery_split_date/views/stock_picking.xml index c7dc54dd894..49de0824b61 100644 --- a/sale_delivery_split_date/views/stock_picking.xml +++ b/sale_delivery_split_date/views/stock_picking.xml @@ -1,4 +1,4 @@ - + @@ -6,7 +6,7 @@ stock.picking.tree stock.picking - + 0 @@ -17,10 +17,10 @@ stock.picking.internal.search stock.picking - + - + From e5c768277635bd2560c0c200763297c0a506d05f Mon Sep 17 00:00:00 2001 From: Alfredo Zamora Date: Tue, 18 Jan 2022 08:48:57 +0100 Subject: [PATCH 09/24] [MIG] sale_delivery_split_date: Migration to 14.0 --- sale_delivery_split_date/README.rst | 10 +++---- sale_delivery_split_date/__manifest__.py | 2 +- .../i18n/sale_delivery_split_date.pot | 27 +++++++++---------- sale_delivery_split_date/models/__init__.py | 2 -- sale_delivery_split_date/models/sale_order.py | 18 ------------- .../models/sale_order_line.py | 18 ++++++++++--- .../models/stock_picking.py | 22 --------------- .../static/description/index.html | 6 ++--- .../tests/test_sale_delivery.py | 12 --------- .../views/stock_picking.xml | 4 +-- 10 files changed, 39 insertions(+), 82 deletions(-) delete mode 100644 sale_delivery_split_date/models/sale_order.py delete mode 100644 sale_delivery_split_date/models/stock_picking.py diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst index 0ba4d9cb76d..740e3834fbd 100644 --- a/sale_delivery_split_date/README.rst +++ b/sale_delivery_split_date/README.rst @@ -14,13 +14,13 @@ Sale Delivery Split Date :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/sale-workflow/tree/12.0/sale_delivery_split_date + :target: https://github.com/OCA/sale-workflow/tree/14.0/sale_delivery_split_date :alt: OCA/sale-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/sale-workflow-12-0/sale-workflow-12-0-sale_delivery_split_date + :target: https://translation.odoo-community.org/projects/sale-workflow-14-0/sale-workflow-14-0-sale_delivery_split_date :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/167/12.0 + :target: https://runbot.odoo-community.org/runbot/167/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -46,7 +46,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -76,6 +76,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/sale-workflow `_ project on GitHub. +This module is part of the `OCA/sale-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_delivery_split_date/__manifest__.py b/sale_delivery_split_date/__manifest__.py index 4e829a8a5e6..a26be89b5fd 100644 --- a/sale_delivery_split_date/__manifest__.py +++ b/sale_delivery_split_date/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Delivery Split Date", - "version": "12.0.1.0.1", + "version": "14.0.1.0.1", "summary": "Sale Deliveries split by date", "category": "Sales Management", "license": "AGPL-3", diff --git a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot index 4e804df6cea..3fe43124fef 100644 --- a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot +++ b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_delivery_split_date +# * sale_delivery_split_date # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,27 +14,26 @@ msgstr "" "Plural-Forms: \n" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sale Order" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__display_name +msgid "Display Name" msgstr "" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line -msgid "Sales Order Line" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__id +msgid "ID" msgstr "" #. module: sale_delivery_split_date -#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search -msgid "Scheduled Date" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line____last_update +msgid "Last Modified on" msgstr "" #. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt -msgid "Scheduled Date (for filter purpose only)" +#: model:ir.model,name:sale_delivery_split_date.model_sale_order_line +msgid "Sales Order Line" msgstr "" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_stock_picking -msgid "Transfer" +#: model_terms:ir.ui.view,arch_db:sale_delivery_split_date.view_picking_internal_search +msgid "Scheduled Date" msgstr "" - diff --git a/sale_delivery_split_date/models/__init__.py b/sale_delivery_split_date/models/__init__.py index 8e32d7c7c22..15e7252a511 100644 --- a/sale_delivery_split_date/models/__init__.py +++ b/sale_delivery_split_date/models/__init__.py @@ -1,5 +1,3 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from . import sale_order from . import sale_order_line -from . import stock_picking diff --git a/sale_delivery_split_date/models/sale_order.py b/sale_delivery_split_date/models/sale_order.py deleted file mode 100644 index 85922da7bbd..00000000000 --- a/sale_delivery_split_date/models/sale_order.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2018 Alex Comba - Agile Business Group -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import api, models -from odoo.tools import format_date - - -class SaleOrder(models.Model): - - _inherit = "sale.order" - - @api.model - def _prepare_procurement_group_by_line(self, line): - vals = super(SaleOrder, self)._prepare_procurement_group_by_line(line) - if line._get_procurement_group_key()[0] == 24: - if line.commitment_date: - vals["name"] += "/" + format_date(line.env, line.commitment_date.date()) - return vals diff --git a/sale_delivery_split_date/models/sale_order_line.py b/sale_delivery_split_date/models/sale_order_line.py index 180b1a1bba9..778ef87d3af 100644 --- a/sale_delivery_split_date/models/sale_order_line.py +++ b/sale_delivery_split_date/models/sale_order_line.py @@ -1,14 +1,20 @@ # Copyright 2018 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, models +from odoo import models +from odoo.tools import format_date class SaleOrderLine(models.Model): - _inherit = "sale.order.line" - @api.multi + def _prepare_procurement_group_vals(self): + vals = super(SaleOrderLine, self)._prepare_procurement_group_vals() + if self._get_procurement_group_key()[0] == 24: + if self.commitment_date: + vals["name"] += "/" + format_date(self.env, self.commitment_date.date()) + return vals + def _get_procurement_group_key(self): """Return a key with priority to be used to regroup lines in multiple procurement groups @@ -21,3 +27,9 @@ def _get_procurement_group_key(self): # group by date instead of datetime return (priority, self.commitment_date.date()) return key + + def _prepare_procurement_values(self, group_id=False): + vals = super(SaleOrderLine, self)._prepare_procurement_values(group_id=group_id) + if self.commitment_date: + vals.update({"date_planned": self.commitment_date}) + return vals diff --git a/sale_delivery_split_date/models/stock_picking.py b/sale_delivery_split_date/models/stock_picking.py deleted file mode 100644 index ede26133eb5..00000000000 --- a/sale_delivery_split_date/models/stock_picking.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2018 Alex Comba - Agile Business Group -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import api, fields, models - - -class StockPicking(models.Model): - - _inherit = "stock.picking" - - min_dt = fields.Date( - string="Scheduled Date (for filter purpose only)", - compute="_compute_min_dt", - store=True, - ) - - @api.multi - @api.depends("scheduled_date") - def _compute_min_dt(self): - for picking in self: - min_dt = fields.Date.from_string(picking.scheduled_date) - picking.min_dt = min_dt diff --git a/sale_delivery_split_date/static/description/index.html b/sale_delivery_split_date/static/description/index.html index 15ab34542df..1095e185736 100644 --- a/sale_delivery_split_date/static/description/index.html +++ b/sale_delivery_split_date/static/description/index.html @@ -367,7 +367,7 @@

Sale Delivery Split Date

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runbot

When this module is installed, each sale order you confirm will generate one delivery order per requested date indicated in the sale order lines.

Furthermore, the delivery orders can be searched by selecting the scheduled date, which is now displayed in the delivery tree view.

@@ -395,7 +395,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -419,7 +419,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/sale-workflow project on GitHub.

+

This module is part of the OCA/sale-workflow project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py index cb33b1b67da..b2f4def3cce 100644 --- a/sale_delivery_split_date/tests/test_sale_delivery.py +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -49,9 +49,6 @@ def test_check_single_date(self): 1, "There must be 1 picking for the SO when confirmed", ) - self.assertEqual( - self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt - ) self.assertEqual( self.so.picking_ids[0].scheduled_date, self.date_sooner, @@ -82,17 +79,11 @@ def test_check_multiple_dates(self): "There must be 2 pickings for the SO when confirmed", ) sorted_pickings = self.so.picking_ids.sorted(lambda x: x.scheduled_date) - self.assertEqual( - self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt - ) self.assertEqual( sorted_pickings[0].scheduled_date, self.date_sooner, "The first picking must be planned at the soonest date", ) - self.assertEqual( - self.so.picking_ids[1].scheduled_date.date(), self.so.picking_ids[1].min_dt - ) self.assertEqual( sorted_pickings[1].scheduled_date, self.date_later, @@ -127,9 +118,6 @@ def test_check_same_dates(self): 1, "There must be only one picking for the SO when confirmed", ) - self.assertEqual( - self.so.picking_ids[0].scheduled_date.date(), self.so.picking_ids[0].min_dt - ) self.assertEqual( self.so.picking_ids.scheduled_date, self.date_sooner, diff --git a/sale_delivery_split_date/views/stock_picking.xml b/sale_delivery_split_date/views/stock_picking.xml index 49de0824b61..7335cabe21f 100644 --- a/sale_delivery_split_date/views/stock_picking.xml +++ b/sale_delivery_split_date/views/stock_picking.xml @@ -19,8 +19,8 @@ stock.picking - - + +
From a87dd541b0787de3d5e737136662b3d01c25dd61 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 28 Dec 2022 10:11:22 +0000 Subject: [PATCH 10/24] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: sale-workflow-14.0/sale-workflow-14.0-sale_delivery_split_date Translate-URL: https://translation.odoo-community.org/projects/sale-workflow-14-0/sale-workflow-14-0-sale_delivery_split_date/ --- sale_delivery_split_date/i18n/ca.po | 33 ++++++++++++++++---------- sale_delivery_split_date/i18n/es.po | 33 ++++++++++++++++---------- sale_delivery_split_date/i18n/it.po | 31 +++++++++++++++--------- sale_delivery_split_date/i18n/pt_PT.po | 33 ++++++++++++++++---------- 4 files changed, 83 insertions(+), 47 deletions(-) diff --git a/sale_delivery_split_date/i18n/ca.po b/sale_delivery_split_date/i18n/ca.po index cb0fa52fbe3..821248ed68d 100644 --- a/sale_delivery_split_date/i18n/ca.po +++ b/sale_delivery_split_date/i18n/ca.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_delivery_split_date +# * sale_delivery_split_date # msgid "" msgstr "" @@ -17,9 +17,19 @@ msgstr "" "X-Generator: Weblate 4.3.2\n" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sale Order" -msgstr "Comanda de venda" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__id +msgid "ID" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line____last_update +msgid "Last Modified on" +msgstr "" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order_line @@ -31,12 +41,11 @@ msgstr "Línia de comandes de vendes" msgid "Scheduled Date" msgstr "Data prevista" -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt -msgid "Scheduled Date (for filter purpose only)" -msgstr "Data programada (només per al filtre)" +#~ msgid "Sale Order" +#~ msgstr "Comanda de venda" -#. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_stock_picking -msgid "Transfer" -msgstr "Transferència" +#~ msgid "Scheduled Date (for filter purpose only)" +#~ msgstr "Data programada (només per al filtre)" + +#~ msgid "Transfer" +#~ msgstr "Transferència" diff --git a/sale_delivery_split_date/i18n/es.po b/sale_delivery_split_date/i18n/es.po index 60e90db84dc..1c2dc6f9912 100644 --- a/sale_delivery_split_date/i18n/es.po +++ b/sale_delivery_split_date/i18n/es.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_delivery_split_date +# * sale_delivery_split_date # msgid "" msgstr "" @@ -17,9 +17,19 @@ msgstr "" "X-Generator: Weblate 4.3.2\n" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sale Order" -msgstr "Pedido de venta" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__id +msgid "ID" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line____last_update +msgid "Last Modified on" +msgstr "" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order_line @@ -31,12 +41,11 @@ msgstr "Línea de pedido de venta" msgid "Scheduled Date" msgstr "Fecha prevista" -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt -msgid "Scheduled Date (for filter purpose only)" -msgstr "Fecha programada (solo para fines de filtrado)" +#~ msgid "Sale Order" +#~ msgstr "Pedido de venta" -#. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_stock_picking -msgid "Transfer" -msgstr "Transferir" +#~ msgid "Scheduled Date (for filter purpose only)" +#~ msgstr "Fecha programada (solo para fines de filtrado)" + +#~ msgid "Transfer" +#~ msgstr "Transferir" diff --git a/sale_delivery_split_date/i18n/it.po b/sale_delivery_split_date/i18n/it.po index 69e4c8700ae..b4791d24e4a 100644 --- a/sale_delivery_split_date/i18n/it.po +++ b/sale_delivery_split_date/i18n/it.po @@ -17,9 +17,19 @@ msgstr "" "Plural-Forms: \n" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sale Order" -msgstr "Ordine di vendita" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__id +msgid "ID" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line____last_update +msgid "Last Modified on" +msgstr "" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order_line @@ -31,12 +41,11 @@ msgstr "Riga ordine di vendita" msgid "Scheduled Date" msgstr "Data pianificata" -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt -msgid "Scheduled Date (for filter purpose only)" -msgstr "Data pianificata (solo per i filtri)" +#~ msgid "Sale Order" +#~ msgstr "Ordine di vendita" -#. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_stock_picking -msgid "Transfer" -msgstr "Trasferimento" +#~ msgid "Scheduled Date (for filter purpose only)" +#~ msgstr "Data pianificata (solo per i filtri)" + +#~ msgid "Transfer" +#~ msgstr "Trasferimento" diff --git a/sale_delivery_split_date/i18n/pt_PT.po b/sale_delivery_split_date/i18n/pt_PT.po index 554765b3636..8eceed2194a 100644 --- a/sale_delivery_split_date/i18n/pt_PT.po +++ b/sale_delivery_split_date/i18n/pt_PT.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_delivery_split_date +# * sale_delivery_split_date # msgid "" msgstr "" @@ -17,9 +17,19 @@ msgstr "" "X-Generator: Weblate 4.3.2\n" #. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_sale_order -msgid "Sale Order" -msgstr "Ordem de venda" +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__id +msgid "ID" +msgstr "" + +#. module: sale_delivery_split_date +#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line____last_update +msgid "Last Modified on" +msgstr "" #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order_line @@ -31,12 +41,11 @@ msgstr "Linha de encomendas de venda" msgid "Scheduled Date" msgstr "Data programada" -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_stock_picking__min_dt -msgid "Scheduled Date (for filter purpose only)" -msgstr "Data programada (apenas para fins de filtragem)" +#~ msgid "Sale Order" +#~ msgstr "Ordem de venda" -#. module: sale_delivery_split_date -#: model:ir.model,name:sale_delivery_split_date.model_stock_picking -msgid "Transfer" -msgstr "Transferir" +#~ msgid "Scheduled Date (for filter purpose only)" +#~ msgstr "Data programada (apenas para fins de filtragem)" + +#~ msgid "Transfer" +#~ msgstr "Transferir" From 7867afeb21cf34bde8e46d7c39e1985fff8abf70 Mon Sep 17 00:00:00 2001 From: Maksym Yankin Date: Thu, 2 Mar 2023 14:42:34 +0200 Subject: [PATCH 11/24] [MIG] sale_delivery_split_date: Migration to 15.0 --- sale_delivery_split_date/README.rst | 10 +++--- sale_delivery_split_date/__manifest__.py | 2 +- .../i18n/sale_delivery_split_date.pot | 17 +-------- .../models/sale_order_line.py | 6 ++-- .../static/description/index.html | 6 ++-- .../tests/test_sale_delivery.py | 36 ++++++++++--------- 6 files changed, 33 insertions(+), 44 deletions(-) diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst index 740e3834fbd..8a8a4214297 100644 --- a/sale_delivery_split_date/README.rst +++ b/sale_delivery_split_date/README.rst @@ -14,13 +14,13 @@ Sale Delivery Split Date :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/sale-workflow/tree/14.0/sale_delivery_split_date + :target: https://github.com/OCA/sale-workflow/tree/15.0/sale_delivery_split_date :alt: OCA/sale-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/sale-workflow-14-0/sale-workflow-14-0-sale_delivery_split_date + :target: https://translation.odoo-community.org/projects/sale-workflow-15-0/sale-workflow-15-0-sale_delivery_split_date :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/167/14.0 + :target: https://runbot.odoo-community.org/runbot/167/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -46,7 +46,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -76,6 +76,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/sale-workflow `_ project on GitHub. +This module is part of the `OCA/sale-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_delivery_split_date/__manifest__.py b/sale_delivery_split_date/__manifest__.py index a26be89b5fd..61805f08cba 100644 --- a/sale_delivery_split_date/__manifest__.py +++ b/sale_delivery_split_date/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Delivery Split Date", - "version": "14.0.1.0.1", + "version": "15.0.1.0.0", "summary": "Sale Deliveries split by date", "category": "Sales Management", "license": "AGPL-3", diff --git a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot index 3fe43124fef..2833694b113 100644 --- a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot +++ b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,21 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__display_name -msgid "Display Name" -msgstr "" - -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line__id -msgid "ID" -msgstr "" - -#. module: sale_delivery_split_date -#: model:ir.model.fields,field_description:sale_delivery_split_date.field_sale_order_line____last_update -msgid "Last Modified on" -msgstr "" - #. module: sale_delivery_split_date #: model:ir.model,name:sale_delivery_split_date.model_sale_order_line msgid "Sales Order Line" diff --git a/sale_delivery_split_date/models/sale_order_line.py b/sale_delivery_split_date/models/sale_order_line.py index 778ef87d3af..c4df4b86264 100644 --- a/sale_delivery_split_date/models/sale_order_line.py +++ b/sale_delivery_split_date/models/sale_order_line.py @@ -9,7 +9,7 @@ class SaleOrderLine(models.Model): _inherit = "sale.order.line" def _prepare_procurement_group_vals(self): - vals = super(SaleOrderLine, self)._prepare_procurement_group_vals() + vals = super()._prepare_procurement_group_vals() if self._get_procurement_group_key()[0] == 24: if self.commitment_date: vals["name"] += "/" + format_date(self.env, self.commitment_date.date()) @@ -20,7 +20,7 @@ def _get_procurement_group_key(self): procurement groups """ priority = 24 - key = super(SaleOrderLine, self)._get_procurement_group_key() + key = super()._get_procurement_group_key() # Check priority if key[0] < priority: if self.commitment_date: @@ -29,7 +29,7 @@ def _get_procurement_group_key(self): return key def _prepare_procurement_values(self, group_id=False): - vals = super(SaleOrderLine, self)._prepare_procurement_values(group_id=group_id) + vals = super()._prepare_procurement_values(group_id=group_id) if self.commitment_date: vals.update({"date_planned": self.commitment_date}) return vals diff --git a/sale_delivery_split_date/static/description/index.html b/sale_delivery_split_date/static/description/index.html index 1095e185736..25d42211c2b 100644 --- a/sale_delivery_split_date/static/description/index.html +++ b/sale_delivery_split_date/static/description/index.html @@ -367,7 +367,7 @@

Sale Delivery Split Date

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runbot

When this module is installed, each sale order you confirm will generate one delivery order per requested date indicated in the sale order lines.

Furthermore, the delivery orders can be searched by selecting the scheduled date, which is now displayed in the delivery tree view.

@@ -395,7 +395,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -419,7 +419,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/sale-workflow project on GitHub.

+

This module is part of the OCA/sale-workflow project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py index b2f4def3cce..61cb7ca8183 100644 --- a/sale_delivery_split_date/tests/test_sale_delivery.py +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -8,25 +8,29 @@ class TestSaleDelivery(TransactionCase): - def setUp(self): - super(TestSaleDelivery, self).setUp() - customer = self.env.ref("base.res_partner_3") - p1 = self.env.ref("product.product_product_16") - p2 = self.env.ref("product.product_product_25") + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + customer = cls.env.ref("base.res_partner_3") + p1 = cls.env.ref("product.product_product_16") + p2 = cls.env.ref("product.product_product_25") today = datetime.datetime(2020, 1, 1) - self.dt1 = today + datetime.timedelta(days=9) - self.dt2 = today + datetime.timedelta(days=10) - self.date_sooner = self.dt1 - self.date_later = self.dt2 - self.so = self._create_sale_order(customer) - self.so_line1 = self._create_sale_order_line(self.so, p1, 10, 100.0, self.dt1) - self.so_line2 = self._create_sale_order_line(self.so, p2, 10, 200.0, self.dt1) + cls.dt1 = today + datetime.timedelta(days=9) + cls.dt2 = today + datetime.timedelta(days=10) + cls.date_sooner = cls.dt1 + cls.date_later = cls.dt2 + cls.so = cls._create_sale_order(customer) + cls.so_line1 = cls._create_sale_order_line(cls.so, p1, 10, 100.0, cls.dt1) + cls.so_line2 = cls._create_sale_order_line(cls.so, p2, 10, 200.0, cls.dt1) - def _create_sale_order(self, customer): - return self.env["sale.order"].create({"partner_id": customer.id}) + @classmethod + def _create_sale_order(cls, customer): + return cls.env["sale.order"].create({"partner_id": customer.id}) - def _create_sale_order_line(self, sale, product, qty, price, date): - return self.env["sale.order.line"].create( + @classmethod + def _create_sale_order_line(cls, sale, product, qty, price, date): + return cls.env["sale.order.line"].create( { "product_id": product.id, "name": "cool product", From 4ae8b45f0e38f1ef5196ab80ddb773d4dece7f45 Mon Sep 17 00:00:00 2001 From: Carmen Rondon Regalado Date: Tue, 7 Mar 2023 15:56:48 -0500 Subject: [PATCH 12/24] [MIG] sale_delivery_split_date: Migration to 16.0 --- sale_delivery_split_date/README.rst | 24 ++++++----- sale_delivery_split_date/__manifest__.py | 2 +- .../i18n/sale_delivery_split_date.pot | 2 +- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 43 ++++++++++--------- 5 files changed, 40 insertions(+), 32 deletions(-) diff --git a/sale_delivery_split_date/README.rst b/sale_delivery_split_date/README.rst index 8a8a4214297..ca39db94b25 100644 --- a/sale_delivery_split_date/README.rst +++ b/sale_delivery_split_date/README.rst @@ -2,10 +2,13 @@ Sale Delivery Split Date ======================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b177da4efebc5cee7d82aa98078c1d5c167de9192785fc0eb2b5d787673b22c9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -14,16 +17,16 @@ Sale Delivery Split Date :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/sale-workflow/tree/15.0/sale_delivery_split_date + :target: https://github.com/OCA/sale-workflow/tree/16.0/sale_delivery_split_date :alt: OCA/sale-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/sale-workflow-15-0/sale-workflow-15-0-sale_delivery_split_date + :target: https://translation.odoo-community.org/projects/sale-workflow-16-0/sale-workflow-16-0-sale_delivery_split_date :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/167/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| When this module is installed, each sale order you confirm will generate one delivery order per requested date indicated in the sale order lines. @@ -45,8 +48,8 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -62,6 +65,7 @@ Contributors ~~~~~~~~~~~~ * Alex Comba (https://www.agilebg.com/) +* Carmen Rondon Regalado (https://odoo.archeti.com/) Maintainers ~~~~~~~~~~~ @@ -76,6 +80,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/sale-workflow `_ project on GitHub. +This module is part of the `OCA/sale-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_delivery_split_date/__manifest__.py b/sale_delivery_split_date/__manifest__.py index 61805f08cba..96dc40780d9 100644 --- a/sale_delivery_split_date/__manifest__.py +++ b/sale_delivery_split_date/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Delivery Split Date", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "summary": "Sale Deliveries split by date", "category": "Sales Management", "license": "AGPL-3", diff --git a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot index 2833694b113..82bbd120ff6 100644 --- a/sale_delivery_split_date/i18n/sale_delivery_split_date.pot +++ b/sale_delivery_split_date/i18n/sale_delivery_split_date.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/sale_delivery_split_date/readme/CONTRIBUTORS.rst b/sale_delivery_split_date/readme/CONTRIBUTORS.rst index a1fa3a9866f..4bac6e4df53 100644 --- a/sale_delivery_split_date/readme/CONTRIBUTORS.rst +++ b/sale_delivery_split_date/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ * Alex Comba (https://www.agilebg.com/) +* Carmen Rondon Regalado (https://odoo.archeti.com/) diff --git a/sale_delivery_split_date/static/description/index.html b/sale_delivery_split_date/static/description/index.html index 25d42211c2b..82bd705f86a 100644 --- a/sale_delivery_split_date/static/description/index.html +++ b/sale_delivery_split_date/static/description/index.html @@ -1,20 +1,20 @@ - + - + Sale Delivery Split Date -
-

Sale Delivery Split Date

+
+ + +Odoo Community Association + +
+

Sale Delivery Split Date

-

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runboat

When this module is installed, each sale order you confirm will generate one delivery order per requested date indicated in the sale order lines.

Furthermore, the delivery orders can be searched by selecting the @@ -382,44 +387,51 @@

Sale Delivery Split Date

  • Credits
  • -

    Bug Tracker

    +

    Bug Tracker

    Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

    +feedback.

    Do not contact contributors directly about support or help with technical issues.

    -

    Credits

    +

    Credits

    -

    Authors

    +

    Authors

    • Agile Business Group
    +
    +

    Other credits

    +

    The migration of this module from 18.0 to 19.0 was financially supported +by SprintIT Ltd.

    +
    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association @@ -427,10 +439,11 @@

    Maintainers

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/sale-workflow project on GitHub.

    +

    This module is part of the OCA/sale-workflow project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    +
    diff --git a/sale_delivery_split_date/tests/test_sale_delivery.py b/sale_delivery_split_date/tests/test_sale_delivery.py index 72cbc9c99ff..8c0e84839b4 100644 --- a/sale_delivery_split_date/tests/test_sale_delivery.py +++ b/sale_delivery_split_date/tests/test_sale_delivery.py @@ -3,18 +3,25 @@ import datetime -from odoo.tests.common import TransactionCase from odoo.tools import format_date +from odoo.addons.sale_stock.tests.common import TestSaleStockCommon -class TestSaleDelivery(TransactionCase): + +class TestSaleDelivery(TestSaleStockCommon): @classmethod def setUpClass(cls): super().setUpClass() cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) - customer = cls.env.ref("base.res_partner_3") - p1 = cls.env.ref("product.product_product_16") - p2 = cls.env.ref("product.product_product_25") + customer = cls.partner_a + p1 = cls._create_product( + name="test_product1", + is_storable=True, + ) + p2 = cls._create_product( + name="test_product2", + is_storable=True, + ) today = datetime.datetime(2020, 1, 1) cls.dt1 = today + datetime.timedelta(days=9) cls.dt2 = today + datetime.timedelta(days=10) @@ -59,13 +66,13 @@ def test_check_single_date(self): "The picking must be planned at the expected date", ) self.assertEqual( - self.so_line1.procurement_group_id, - self.so_line2.procurement_group_id, + self.so_line1.stock_reference_id, + self.so_line2.stock_reference_id, "The procurement group must be the same", ) self.assertIn( format_date(self.env, self.date_sooner.date()), - self.so_line1.procurement_group_id.name, + self.so_line1.stock_reference_id.name, ) def test_check_multiple_dates(self): @@ -94,17 +101,17 @@ def test_check_multiple_dates(self): "The second picking must be planned at the latest date", ) self.assertNotEqual( - self.so_line1.procurement_group_id, - self.so_line2.procurement_group_id, + self.so_line1.stock_reference_id, + self.so_line2.stock_reference_id, "The procurement group must be different", ) self.assertIn( format_date(self.env, self.date_sooner.date()), - self.so_line1.procurement_group_id.name, + self.so_line1.stock_reference_id.name, ) self.assertIn( format_date(self.env, self.date_later.date()), - self.so_line2.procurement_group_id.name, + self.so_line2.stock_reference_id.name, ) def test_check_same_dates(self): @@ -128,13 +135,24 @@ def test_check_same_dates(self): "The picking must be planned at the expected date", ) self.assertEqual( - self.so_line1.procurement_group_id, - self.so_line2.procurement_group_id, + self.so_line1.move_ids.date_deadline, + self.so_line1.commitment_date, + "First SO Line move deadline must be equal to commitment date", + ) + self.assertEqual( + self.so_line2.move_ids.date_deadline, + self.so_line2.commitment_date, + "Second SO Line move deadline must be equal to commitment date", + ) + + self.assertEqual( + self.so_line1.stock_reference_id, + self.so_line2.stock_reference_id, "The procurement group must be the same", ) self.assertIn( format_date(self.env, self.date_sooner.date()), - self.so_line1.procurement_group_id.name, + self.so_line1.stock_reference_id.name, ) def test_security_lead_time_same_dates(self): @@ -160,13 +178,23 @@ def test_security_lead_time_same_dates(self): "(with security lead time)", ) self.assertEqual( - self.so_line1.procurement_group_id, - self.so_line2.procurement_group_id, + self.so_line1.move_ids.date_deadline, + self.so_line1.commitment_date, + "First SO Line move deadline must be equal to commitment date", + ) + self.assertEqual( + self.so_line2.move_ids.date_deadline, + self.so_line2.commitment_date, + "Second SO Line move deadline must be equal to commitment date", + ) + self.assertEqual( + self.so_line1.stock_reference_id, + self.so_line2.stock_reference_id, "The procurement group must be the same", ) self.assertIn( format_date(self.env, security_date.date()), - self.so_line1.procurement_group_id.name, + self.so_line1.stock_reference_id.name, ) def test_security_lead_time_multiple_dates(self): @@ -192,22 +220,32 @@ def test_security_lead_time_multiple_dates(self): "The first picking must be planned at the soonest date " "(with security lead time)", ) + self.assertEqual( + sorted_pickings[0].date_deadline, + self.so_line1.commitment_date, + "The picking deadline must be equal to commitment date", + ) self.assertEqual( sorted_pickings[1].scheduled_date, security_date_later, "The second picking must be planned at the latest date " "(with security lead time)", ) + self.assertEqual( + sorted_pickings[1].date_deadline, + self.so_line2.commitment_date, + "The picking deadline must be equal to commitment date", + ) self.assertNotEqual( - self.so_line1.procurement_group_id, - self.so_line2.procurement_group_id, + self.so_line1.stock_reference_id, + self.so_line2.stock_reference_id, "The procurement group must be different", ) self.assertIn( format_date(self.env, security_date_sooner.date()), - self.so_line1.procurement_group_id.name, + self.so_line1.stock_reference_id.name, ) self.assertIn( format_date(self.env, security_date_later.date()), - self.so_line2.procurement_group_id.name, + self.so_line2.stock_reference_id.name, ) diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000000..02346340860 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,2 @@ +odoo-addon-sale_stock_reference_by_line @ git+https://github.com/OCA/sale-workflow.git@refs/pull/3947/head#subdirectory=sale_stock_reference_by_line +odoo-addon-sale_order_line_date @ git+https://github.com/OCA/sale-workflow.git@refs/pull/3946/head#subdirectory=sale_order_line_date