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
+
+
+

+
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
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
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.
+
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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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 @@
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 @@
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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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 @@
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 @@
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
+
+
+
+
+
+
+
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 can be searched by selecting the
@@ -382,44 +387,51 @@
Sale Delivery Split Date
Credits
-
+
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.
-
+
+
+
+
The migration of this module from 18.0 to 19.0 was financially supported
+by SprintIT Ltd.
+
+
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