From e17f2bd9a85d2ecc8fa3e0078e57f19cd34fd8ec Mon Sep 17 00:00:00 2001
From: Guewen Baconnier
Date: Thu, 29 Oct 2020 09:04:43 +0100
Subject: [PATCH 01/34] Add ddmrp_cron_actions_as_job
It makes calls to "cron_actions" run in queue jobs.
The jobs have an identity key with "identity_exact", meaning that only
one occurence of a job for the same buffer with the same arguments
(only_nfp) will be created at a time (e.g. when the state of a
stock.move is changed several times in the same transaction or in
a different transaction in a short timeframe).
It needs https://github.com/OCA/queue/pull/274 and
https://github.com/OCA/queue/pull/275
---
ddmrp_cron_actions_as_job/__init__.py | 1 +
ddmrp_cron_actions_as_job/__manifest__.py | 15 +++++
.../data/queue_job_channel_data.xml | 6 ++
.../data/queue_job_function_data.xml | 7 +++
ddmrp_cron_actions_as_job/models/__init__.py | 2 +
.../models/stock_buffer.py | 51 +++++++++++++++++
.../models/stock_move.py | 13 +++++
.../readme/CONTRIBUTORS.rst | 1 +
.../readme/DESCRIPTION.rst | 14 +++++
ddmrp_cron_actions_as_job/tests/__init__.py | 1 +
.../tests/test_cron_actions_as_job.py | 56 +++++++++++++++++++
11 files changed, 167 insertions(+)
create mode 100644 ddmrp_cron_actions_as_job/__init__.py
create mode 100644 ddmrp_cron_actions_as_job/__manifest__.py
create mode 100644 ddmrp_cron_actions_as_job/data/queue_job_channel_data.xml
create mode 100644 ddmrp_cron_actions_as_job/data/queue_job_function_data.xml
create mode 100644 ddmrp_cron_actions_as_job/models/__init__.py
create mode 100644 ddmrp_cron_actions_as_job/models/stock_buffer.py
create mode 100644 ddmrp_cron_actions_as_job/models/stock_move.py
create mode 100644 ddmrp_cron_actions_as_job/readme/CONTRIBUTORS.rst
create mode 100644 ddmrp_cron_actions_as_job/readme/DESCRIPTION.rst
create mode 100644 ddmrp_cron_actions_as_job/tests/__init__.py
create mode 100644 ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
diff --git a/ddmrp_cron_actions_as_job/__init__.py b/ddmrp_cron_actions_as_job/__init__.py
new file mode 100644
index 000000000..0650744f6
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/ddmrp_cron_actions_as_job/__manifest__.py b/ddmrp_cron_actions_as_job/__manifest__.py
new file mode 100644
index 000000000..b8b121772
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/__manifest__.py
@@ -0,0 +1,15 @@
+# Copyright 2020 Camptocamp (https://www.camptocamp.com)
+# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
+
+{
+ "name": "DDMRP Buffer Calculation as job",
+ "version": "13.0.1.0.0",
+ "summary": "Run DDMRP Buffer Calculation as jobs",
+ "author": "Camptocamp, Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/ddmrp",
+ "category": "Warehouse Management",
+ "depends": ["ddmrp", "queue_job"],
+ "data": ["data/queue_job_channel_data.xml", "data/queue_job_function_data.xml"],
+ "license": "LGPL-3",
+ "installable": True,
+}
diff --git a/ddmrp_cron_actions_as_job/data/queue_job_channel_data.xml b/ddmrp_cron_actions_as_job/data/queue_job_channel_data.xml
new file mode 100644
index 000000000..b3053db8e
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/data/queue_job_channel_data.xml
@@ -0,0 +1,6 @@
+
+
+ ddmrp
+
+
+
diff --git a/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml b/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml
new file mode 100644
index 000000000..eb90f00f3
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml
@@ -0,0 +1,7 @@
+
+
+
+ cron_actions
+
+
+
diff --git a/ddmrp_cron_actions_as_job/models/__init__.py b/ddmrp_cron_actions_as_job/models/__init__.py
new file mode 100644
index 000000000..911aa93ea
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/models/__init__.py
@@ -0,0 +1,2 @@
+from . import stock_buffer
+from . import stock_move
diff --git a/ddmrp_cron_actions_as_job/models/stock_buffer.py b/ddmrp_cron_actions_as_job/models/stock_buffer.py
new file mode 100644
index 000000000..202ea0d99
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/models/stock_buffer.py
@@ -0,0 +1,51 @@
+# Copyright 2020 Camptocamp (https://www.camptocamp.com)
+# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
+
+from odoo import models
+
+from odoo.addons.queue_job.job import identity_exact
+
+
+class Buffer(models.Model):
+ _inherit = "stock.buffer"
+
+ def cron_actions_job_options(self, only_nfp=False):
+ return {
+ "identity_key": identity_exact,
+ "priority": 15,
+ "description": "DDMRP Buffer calculation ({})".format(self.display_name),
+ }
+
+ def _calc_adu_job_options(self):
+ return {
+ "identity_key": identity_exact,
+ "priority": 15,
+ "description": "DDMRP Buffer ADU calculation ({})".format(
+ self.display_name
+ ),
+ }
+
+ def _register_hook(self):
+ self._patch_method(
+ "cron_actions",
+ self._patch_job_auto_delay(
+ "cron_actions", context_key="auto_delay_ddmrp_cron_actions"
+ ),
+ )
+ self._patch_method(
+ "_calc_adu",
+ self._patch_job_auto_delay(
+ "_calc_adu", context_key="auto_delay_ddmrp_calc_adu"
+ ),
+ )
+ return super()._register_hook()
+
+ def cron_ddmrp(self, automatic=False):
+ return super(
+ Buffer, self.with_context(auto_delay_ddmrp_cron_actions=True)
+ ).cron_ddmrp(automatic=automatic)
+
+ def cron_ddmrp_adu(self, automatic=False):
+ return super(
+ Buffer, self.with_context(auto_delay_ddmrp_calc_adu=True)
+ ).cron_ddmrp_adu(automatic=automatic)
diff --git a/ddmrp_cron_actions_as_job/models/stock_move.py b/ddmrp_cron_actions_as_job/models/stock_move.py
new file mode 100644
index 000000000..01abd2455
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/models/stock_move.py
@@ -0,0 +1,13 @@
+# Copyright 2020 Camptocamp
+# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
+
+from odoo import models
+
+
+class StockMove(models.Model):
+ _inherit = "stock.move"
+
+ def _update_ddmrp_nfp(self):
+ return super(
+ StockMove, self.with_context(auto_delay_ddmrp_cron_actions=True)
+ )._update_ddmrp_nfp()
diff --git a/ddmrp_cron_actions_as_job/readme/CONTRIBUTORS.rst b/ddmrp_cron_actions_as_job/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000..48286263c
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
+* Guewen Baconnier
diff --git a/ddmrp_cron_actions_as_job/readme/DESCRIPTION.rst b/ddmrp_cron_actions_as_job/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..8b98240b8
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/readme/DESCRIPTION.rst
@@ -0,0 +1,14 @@
+DDMRP Buffer calculations are now run with Queue Jobs.
+
+When auto-update of NFP is active, each time the state of a stock move changes,
+a new computation is triggered, but thanks to identity keys on jobs, only one
+job at a time is generated for the same buffer.
+
+The ``.cron_actions`` method is automatically delayed when the
+context contains ``auto_delay_ddmrp_cron_actions=True``.
+
+The scheduled action for buffers ADU computation also generates jobs instead
+of recomputing all the buffers at once.
+
+The ``._calc_adu`` method is automatically delayed when the
+context contains ``auto_delay_ddmrp_calc_adu=True``.
diff --git a/ddmrp_cron_actions_as_job/tests/__init__.py b/ddmrp_cron_actions_as_job/tests/__init__.py
new file mode 100644
index 000000000..48aece491
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_cron_actions_as_job
diff --git a/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py b/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
new file mode 100644
index 000000000..1d0397a8c
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
@@ -0,0 +1,56 @@
+# Copyright 2020 Camptocamp (https://www.camptocamp.com)
+# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
+
+
+from odoo.tests import tagged
+
+from odoo.addons.ddmrp.tests.common import TestDdmrpCommon
+from odoo.addons.queue_job.job import identity_exact
+from odoo.addons.queue_job.tests.common import mock_with_delay
+
+
+@tagged("post_install", "-at_install")
+class TestDdmrpCronActionsAsJob(TestDdmrpCommon):
+ def test_cron_actions_delay_job(self):
+ context = dict(self.env.context, auto_delay_ddmrp_cron_actions=True)
+ del context["test_queue_job_no_delay"]
+ buffer_a = self.buffer_a.with_context(context)
+
+ with mock_with_delay() as (delayable_cls, delayable):
+ buffer_a.cron_actions(only_nfp=True)
+
+ # check 'with_delay()' part:
+ self.assertEqual(delayable_cls.call_count, 1)
+ # arguments passed in 'with_delay()'
+ delay_args, delay_kwargs = delayable_cls.call_args
+ self.assertEqual(delay_args, (self.buffer_a,))
+ self.assertEqual(delay_kwargs.get("priority"), 15)
+ self.assertEqual(delay_kwargs.get("identity_key"), identity_exact)
+
+ # check what's passed to the job method 'cron_actions'
+ self.assertEqual(delayable.cron_actions.call_count, 1)
+ delay_args, delay_kwargs = delayable.cron_actions.call_args
+ self.assertEqual(delay_args, ())
+ self.assertDictEqual(delay_kwargs, {"only_nfp": True})
+
+ def test_calc_adu_delay_job(self):
+ context = dict(self.env.context, auto_delay_ddmrp_calc_adu=True)
+ del context["test_queue_job_no_delay"]
+ buffer_a = self.buffer_a.with_context(context)
+
+ with mock_with_delay() as (delayable_cls, delayable):
+ buffer_a._calc_adu()
+
+ # check 'with_delay()' part:
+ self.assertEqual(delayable_cls.call_count, 1)
+ # arguments passed in 'with_delay()'
+ delay_args, delay_kwargs = delayable_cls.call_args
+ self.assertEqual(delay_args, (self.buffer_a,))
+ self.assertEqual(delay_kwargs.get("priority"), 15)
+ self.assertEqual(delay_kwargs.get("identity_key"), identity_exact)
+
+ # check what's passed to the job method '_calc_adu'
+ self.assertEqual(delayable._calc_adu.call_count, 1)
+ delay_args, delay_kwargs = delayable._calc_adu.call_args
+ self.assertEqual(delay_args, ())
+ self.assertDictEqual(delay_kwargs, {})
From 290024fc29bb68d6ea2f84df65c07acd306c8adc Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Wed, 3 Feb 2021 12:06:38 +0000
Subject: [PATCH 02/34] [UPD] Update ddmrp_cron_actions_as_job.pot
---
.../i18n/ddmrp_cron_actions_as_job.pot | 24 +++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
diff --git a/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot b/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
new file mode 100644
index 000000000..4bddb6ff1
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
@@ -0,0 +1,24 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * ddmrp_cron_actions_as_job
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.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: ddmrp_cron_actions_as_job
+#: model:ir.model,name:ddmrp_cron_actions_as_job.model_stock_buffer
+msgid "Stock Buffer"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model,name:ddmrp_cron_actions_as_job.model_stock_move
+msgid "Stock Move"
+msgstr ""
From 7ab04bd716c939d835125feefcd7ea9183c15ad9 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Wed, 3 Feb 2021 12:30:51 +0000
Subject: [PATCH 03/34] [UPD] README.rst
---
ddmrp_cron_actions_as_job/README.rst | 86 ++++
.../static/description/index.html | 428 ++++++++++++++++++
2 files changed, 514 insertions(+)
create mode 100644 ddmrp_cron_actions_as_job/README.rst
create mode 100644 ddmrp_cron_actions_as_job/static/description/index.html
diff --git a/ddmrp_cron_actions_as_job/README.rst b/ddmrp_cron_actions_as_job/README.rst
new file mode 100644
index 000000000..2b14a97ca
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/README.rst
@@ -0,0 +1,86 @@
+===============================
+DDMRP Buffer Calculation as job
+===============================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! 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-LGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github
+ :target: https://github.com/OCA/ddmrp/tree/13.0/ddmrp_cron_actions_as_job
+ :alt: OCA/ddmrp
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/ddmrp-13-0/ddmrp-13-0-ddmrp_cron_actions_as_job
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/255/13.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+DDMRP Buffer calculations are now run with Queue Jobs.
+
+When auto-update of NFP is active, each time the state of a stock move changes,
+a new computation is triggered, but thanks to identity keys on jobs, only one
+job at a time is generated for the same buffer.
+
+The ``.cron_actions`` method is automatically delayed when the
+context contains ``auto_delay_ddmrp_cron_actions=True``.
+
+The scheduled action for buffers ADU computation also generates jobs instead
+of recomputing all the buffers at once.
+
+The ``._calc_adu`` method is automatically delayed when the
+context contains ``auto_delay_ddmrp_calc_adu=True``.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Camptocamp
+
+Contributors
+~~~~~~~~~~~~
+
+* Guewen Baconnier
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+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/ddmrp `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/ddmrp_cron_actions_as_job/static/description/index.html b/ddmrp_cron_actions_as_job/static/description/index.html
new file mode 100644
index 000000000..8154f31e3
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/static/description/index.html
@@ -0,0 +1,428 @@
+
+
+
+
+
+
+DDMRP Buffer Calculation as job
+
+
+
+
+
DDMRP Buffer Calculation as job
+
+
+

+
DDMRP Buffer calculations are now run with Queue Jobs.
+
When auto-update of NFP is active, each time the state of a stock move changes,
+a new computation is triggered, but thanks to identity keys on jobs, only one
+job at a time is generated for the same buffer.
+
The <stock.buffer>.cron_actions method is automatically delayed when the
+context contains auto_delay_ddmrp_cron_actions=True.
+
The scheduled action for buffers ADU computation also generates jobs instead
+of recomputing all the buffers at once.
+
The <stock.buffer>._calc_adu method is automatically delayed when the
+context contains auto_delay_ddmrp_calc_adu=True.
+
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/ddmrp project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
From f606b99cf031811105416b50028dcef0c1849250 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Wed, 3 Feb 2021 12:30:52 +0000
Subject: [PATCH 04/34] [ADD] icon.png
---
.../static/description/icon.png | Bin 0 -> 9455 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 ddmrp_cron_actions_as_job/static/description/icon.png
diff --git a/ddmrp_cron_actions_as_job/static/description/icon.png b/ddmrp_cron_actions_as_job/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
From af5507d3150d57374be75ebd582f40a3134d4cfe Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Wed, 3 Feb 2021 12:30:54 +0000
Subject: [PATCH 05/34] ddmrp_cron_actions_as_job 13.0.1.1.0
---
ddmrp_cron_actions_as_job/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ddmrp_cron_actions_as_job/__manifest__.py b/ddmrp_cron_actions_as_job/__manifest__.py
index b8b121772..ea7860ea4 100644
--- a/ddmrp_cron_actions_as_job/__manifest__.py
+++ b/ddmrp_cron_actions_as_job/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "DDMRP Buffer Calculation as job",
- "version": "13.0.1.0.0",
+ "version": "13.0.1.1.0",
"summary": "Run DDMRP Buffer Calculation as jobs",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/ddmrp",
From ac23aeb3d4dd57c2f4b18910a7a06cc9504698ad Mon Sep 17 00:00:00 2001
From: Guewen Baconnier
Date: Wed, 10 Feb 2021 10:07:05 +0100
Subject: [PATCH 06/34] Add queue.job.function for ddmrp_buffer._calc_adu
With root.ddmrp as default channel.
It was done for "cron_actions" but missing for "_calc_adu".
---
ddmrp_cron_actions_as_job/data/queue_job_function_data.xml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml b/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml
index eb90f00f3..610831645 100644
--- a/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml
+++ b/ddmrp_cron_actions_as_job/data/queue_job_function_data.xml
@@ -4,4 +4,9 @@
cron_actions
+
+
+ _calc_adu
+
+
From 39dcbe49c1cecdcf7fc12de025fd5c146e82f0fe Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Wed, 17 Feb 2021 10:05:16 +0000
Subject: [PATCH 07/34] ddmrp_cron_actions_as_job 13.0.1.2.0
---
ddmrp_cron_actions_as_job/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ddmrp_cron_actions_as_job/__manifest__.py b/ddmrp_cron_actions_as_job/__manifest__.py
index ea7860ea4..9aaa922f1 100644
--- a/ddmrp_cron_actions_as_job/__manifest__.py
+++ b/ddmrp_cron_actions_as_job/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "DDMRP Buffer Calculation as job",
- "version": "13.0.1.1.0",
+ "version": "13.0.1.2.0",
"summary": "Run DDMRP Buffer Calculation as jobs",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/ddmrp",
From b7e4e5c15e22f55c9ca7e31e7a241fd6163e29e9 Mon Sep 17 00:00:00 2001
From: davidborromeo
Date: Thu, 27 May 2021 10:29:10 +0200
Subject: [PATCH 08/34] [MIG] ddmrp_cron_actions_as_job: Migration to 14.0
---
ddmrp_cron_actions_as_job/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ddmrp_cron_actions_as_job/__manifest__.py b/ddmrp_cron_actions_as_job/__manifest__.py
index 9aaa922f1..9ae469637 100644
--- a/ddmrp_cron_actions_as_job/__manifest__.py
+++ b/ddmrp_cron_actions_as_job/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "DDMRP Buffer Calculation as job",
- "version": "13.0.1.2.0",
+ "version": "14.0.1.0.0",
"summary": "Run DDMRP Buffer Calculation as jobs",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/ddmrp",
From 0f99663e44ad75169dcea1035a0290a3765221c8 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Thu, 17 Jun 2021 11:57:40 +0000
Subject: [PATCH 09/34] [UPD] Update ddmrp_cron_actions_as_job.pot
---
.../i18n/ddmrp_cron_actions_as_job.pot | 20 ++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot b/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
index 4bddb6ff1..62120fc98 100644
--- a/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
+++ b/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0\n"
+"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -13,6 +13,24 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer__display_name
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer__id
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move__id
+msgid "ID"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer____last_update
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move____last_update
+msgid "Last Modified on"
+msgstr ""
+
#. module: ddmrp_cron_actions_as_job
#: model:ir.model,name:ddmrp_cron_actions_as_job.model_stock_buffer
msgid "Stock Buffer"
From 77f92f480e454d24ee2463351f7ed20ac8210082 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Thu, 17 Jun 2021 12:06:38 +0000
Subject: [PATCH 10/34] [UPD] README.rst
---
ddmrp_cron_actions_as_job/README.rst | 10 +++++-----
.../static/description/index.html | 6 +++---
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/README.rst b/ddmrp_cron_actions_as_job/README.rst
index 2b14a97ca..0e57d5405 100644
--- a/ddmrp_cron_actions_as_job/README.rst
+++ b/ddmrp_cron_actions_as_job/README.rst
@@ -14,13 +14,13 @@ DDMRP Buffer Calculation as job
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github
- :target: https://github.com/OCA/ddmrp/tree/13.0/ddmrp_cron_actions_as_job
+ :target: https://github.com/OCA/ddmrp/tree/14.0/ddmrp_cron_actions_as_job
:alt: OCA/ddmrp
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/ddmrp-13-0/ddmrp-13-0-ddmrp_cron_actions_as_job
+ :target: https://translation.odoo-community.org/projects/ddmrp-14-0/ddmrp-14-0-ddmrp_cron_actions_as_job
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/255/13.0
+ :target: https://runbot.odoo-community.org/runbot/255/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -51,7 +51,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.
@@ -81,6 +81,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/ddmrp `_ project on GitHub.
+This module is part of the `OCA/ddmrp `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/ddmrp_cron_actions_as_job/static/description/index.html b/ddmrp_cron_actions_as_job/static/description/index.html
index 8154f31e3..c738c0904 100644
--- a/ddmrp_cron_actions_as_job/static/description/index.html
+++ b/ddmrp_cron_actions_as_job/static/description/index.html
@@ -367,7 +367,7 @@ DDMRP Buffer Calculation as job
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

DDMRP Buffer calculations are now run with Queue Jobs.
When auto-update of NFP is active, each time the state of a stock move changes,
a new computation is triggered, but thanks to identity keys on jobs, only one
@@ -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/ddmrp project on GitHub.
+
This module is part of the OCA/ddmrp project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From 2d3baa2536beb3cbf0524fb34fdf9a56a58f7ab6 Mon Sep 17 00:00:00 2001
From: Marcel Savegnago
Date: Sun, 26 Dec 2021 02:15:18 +0000
Subject: [PATCH 11/34] Added translation using Weblate (Portuguese (Brazil))
---
ddmrp_cron_actions_as_job/i18n/pt_BR.po | 43 +++++++++++++++++++++++++
1 file changed, 43 insertions(+)
create mode 100644 ddmrp_cron_actions_as_job/i18n/pt_BR.po
diff --git a/ddmrp_cron_actions_as_job/i18n/pt_BR.po b/ddmrp_cron_actions_as_job/i18n/pt_BR.po
new file mode 100644
index 000000000..f80a1c787
--- /dev/null
+++ b/ddmrp_cron_actions_as_job/i18n/pt_BR.po
@@ -0,0 +1,43 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * ddmrp_cron_actions_as_job
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pt_BR\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"
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer__display_name
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer__id
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move__id
+msgid "ID"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer____last_update
+#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model,name:ddmrp_cron_actions_as_job.model_stock_buffer
+msgid "Stock Buffer"
+msgstr ""
+
+#. module: ddmrp_cron_actions_as_job
+#: model:ir.model,name:ddmrp_cron_actions_as_job.model_stock_move
+msgid "Stock Move"
+msgstr ""
From d3cbe7781206841faed19525d5c222dede142ae6 Mon Sep 17 00:00:00 2001
From: Jordi Ballester
Date: Fri, 18 Feb 2022 20:48:39 +0100
Subject: [PATCH 12/34] [MIG] ddmrp_cron_actions_as_job: Migrate to 15.0
---
ddmrp_cron_actions_as_job/__manifest__.py | 2 +-
ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/__manifest__.py b/ddmrp_cron_actions_as_job/__manifest__.py
index 9ae469637..abb2543f7 100644
--- a/ddmrp_cron_actions_as_job/__manifest__.py
+++ b/ddmrp_cron_actions_as_job/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "DDMRP Buffer Calculation as job",
- "version": "14.0.1.0.0",
+ "version": "15.0.1.0.0",
"summary": "Run DDMRP Buffer Calculation as jobs",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/ddmrp",
diff --git a/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py b/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
index 1d0397a8c..39158b3af 100644
--- a/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
+++ b/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
@@ -14,7 +14,7 @@ class TestDdmrpCronActionsAsJob(TestDdmrpCommon):
def test_cron_actions_delay_job(self):
context = dict(self.env.context, auto_delay_ddmrp_cron_actions=True)
del context["test_queue_job_no_delay"]
- buffer_a = self.buffer_a.with_context(context)
+ buffer_a = self.buffer_a.with_context(**context)
with mock_with_delay() as (delayable_cls, delayable):
buffer_a.cron_actions(only_nfp=True)
@@ -36,7 +36,7 @@ def test_cron_actions_delay_job(self):
def test_calc_adu_delay_job(self):
context = dict(self.env.context, auto_delay_ddmrp_calc_adu=True)
del context["test_queue_job_no_delay"]
- buffer_a = self.buffer_a.with_context(context)
+ buffer_a = self.buffer_a.with_context(**context)
with mock_with_delay() as (delayable_cls, delayable):
buffer_a._calc_adu()
From 2743a6f54dca476cc4e577030cc65313535a0704 Mon Sep 17 00:00:00 2001
From: Christopher Ormaza
Date: Fri, 18 Feb 2022 15:38:10 -0500
Subject: [PATCH 13/34] [FIX] tests
---
.../tests/test_cron_actions_as_job.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py b/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
index 39158b3af..b1e62c885 100644
--- a/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
+++ b/ddmrp_cron_actions_as_job/tests/test_cron_actions_as_job.py
@@ -13,7 +13,11 @@
class TestDdmrpCronActionsAsJob(TestDdmrpCommon):
def test_cron_actions_delay_job(self):
context = dict(self.env.context, auto_delay_ddmrp_cron_actions=True)
- del context["test_queue_job_no_delay"]
+ context.update(
+ {
+ "test_queue_job_no_delay": False,
+ }
+ )
buffer_a = self.buffer_a.with_context(**context)
with mock_with_delay() as (delayable_cls, delayable):
@@ -35,7 +39,11 @@ def test_cron_actions_delay_job(self):
def test_calc_adu_delay_job(self):
context = dict(self.env.context, auto_delay_ddmrp_calc_adu=True)
- del context["test_queue_job_no_delay"]
+ context.update(
+ {
+ "test_queue_job_no_delay": False,
+ }
+ )
buffer_a = self.buffer_a.with_context(**context)
with mock_with_delay() as (delayable_cls, delayable):
From 4c19c041a1ae4931f146526da35570738818de3a Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Mon, 28 Feb 2022 10:22:28 +0000
Subject: [PATCH 14/34] [UPD] Update ddmrp_cron_actions_as_job.pot
---
.../i18n/ddmrp_cron_actions_as_job.pot | 20 +------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot b/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
index 62120fc98..813a74922 100644
--- a/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.pot
+++ b/ddmrp_cron_actions_as_job/i18n/ddmrp_cron_actions_as_job.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,24 +13,6 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: ddmrp_cron_actions_as_job
-#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer__display_name
-#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move__display_name
-msgid "Display Name"
-msgstr ""
-
-#. module: ddmrp_cron_actions_as_job
-#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer__id
-#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move__id
-msgid "ID"
-msgstr ""
-
-#. module: ddmrp_cron_actions_as_job
-#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_buffer____last_update
-#: model:ir.model.fields,field_description:ddmrp_cron_actions_as_job.field_stock_move____last_update
-msgid "Last Modified on"
-msgstr ""
-
#. module: ddmrp_cron_actions_as_job
#: model:ir.model,name:ddmrp_cron_actions_as_job.model_stock_buffer
msgid "Stock Buffer"
From 5c72fb8c4225df7bb651e65f1a12c0dea9b1367b Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Mon, 28 Feb 2022 10:25:36 +0000
Subject: [PATCH 15/34] [UPD] README.rst
---
ddmrp_cron_actions_as_job/README.rst | 10 +++++-----
.../static/description/index.html | 6 +++---
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/README.rst b/ddmrp_cron_actions_as_job/README.rst
index 0e57d5405..b15d63b9f 100644
--- a/ddmrp_cron_actions_as_job/README.rst
+++ b/ddmrp_cron_actions_as_job/README.rst
@@ -14,13 +14,13 @@ DDMRP Buffer Calculation as job
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github
- :target: https://github.com/OCA/ddmrp/tree/14.0/ddmrp_cron_actions_as_job
+ :target: https://github.com/OCA/ddmrp/tree/15.0/ddmrp_cron_actions_as_job
:alt: OCA/ddmrp
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/ddmrp-14-0/ddmrp-14-0-ddmrp_cron_actions_as_job
+ :target: https://translation.odoo-community.org/projects/ddmrp-15-0/ddmrp-15-0-ddmrp_cron_actions_as_job
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/255/14.0
+ :target: https://runbot.odoo-community.org/runbot/255/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -51,7 +51,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.
@@ -81,6 +81,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/ddmrp `_ project on GitHub.
+This module is part of the `OCA/ddmrp `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/ddmrp_cron_actions_as_job/static/description/index.html b/ddmrp_cron_actions_as_job/static/description/index.html
index c738c0904..1e26a546b 100644
--- a/ddmrp_cron_actions_as_job/static/description/index.html
+++ b/ddmrp_cron_actions_as_job/static/description/index.html
@@ -367,7 +367,7 @@ DDMRP Buffer Calculation as job
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

DDMRP Buffer calculations are now run with Queue Jobs.
When auto-update of NFP is active, each time the state of a stock move changes,
a new computation is triggered, but thanks to identity keys on jobs, only one
@@ -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/ddmrp project on GitHub.
+
This module is part of the OCA/ddmrp project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From 3d005a2b4d05abb4b97b22c365839e895011edb4 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Sun, 3 Sep 2023 12:24:16 +0000
Subject: [PATCH 16/34] [UPD] README.rst
---
ddmrp_cron_actions_as_job/README.rst | 15 ++++----
.../static/description/index.html | 34 ++++++++++---------
2 files changed, 27 insertions(+), 22 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/README.rst b/ddmrp_cron_actions_as_job/README.rst
index b15d63b9f..1029237da 100644
--- a/ddmrp_cron_actions_as_job/README.rst
+++ b/ddmrp_cron_actions_as_job/README.rst
@@ -2,10 +2,13 @@
DDMRP Buffer Calculation as job
===============================
-.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:699f1377bb95f901c24e195b82f897918311e40aa3daca11a85e679a680cf850
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
@@ -19,11 +22,11 @@ DDMRP Buffer Calculation as job
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/ddmrp-15-0/ddmrp-15-0-ddmrp_cron_actions_as_job
:alt: Translate me on Weblate
-.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/255/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/ddmrp&target_branch=15.0
+ :alt: Try me on Runboat
-|badge1| |badge2| |badge3| |badge4| |badge5|
+|badge1| |badge2| |badge3| |badge4| |badge5|
DDMRP Buffer calculations are now run with Queue Jobs.
@@ -50,7 +53,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
+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.
diff --git a/ddmrp_cron_actions_as_job/static/description/index.html b/ddmrp_cron_actions_as_job/static/description/index.html
index 1e26a546b..7a3a69891 100644
--- a/ddmrp_cron_actions_as_job/static/description/index.html
+++ b/ddmrp_cron_actions_as_job/static/description/index.html
@@ -1,20 +1,20 @@
-
+
-
+
DDMRP Buffer Calculation as job
-
-
DDMRP Buffer Calculation as job
+
+
+
+
+
+
+
DDMRP Buffer Calculation as job
-

+

DDMRP Buffer calculations are now run with Queue Jobs.
When auto-update of NFP is active, each time the state of a stock move
changes, a new computation is triggered, but thanks to identity keys on
@@ -393,7 +398,7 @@
DDMRP Buffer Calculation as job
-
+
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
@@ -401,21 +406,21 @@
Do not contact contributors directly about support or help with technical issues.
+
From fd81a58352d90b9ab3e906881e000ca9f81e9ce1 Mon Sep 17 00:00:00 2001
From: Don Kendall
Date: Fri, 12 Jun 2026 09:43:32 -0400
Subject: [PATCH 34/34] [MIG] ddmrp_cron_actions_as_job: Migration to 19.0
Signed-off-by: Don Kendall
---
ddmrp_cron_actions_as_job/README.rst | 12 +++++-----
ddmrp_cron_actions_as_job/__manifest__.py | 2 +-
.../models/stock_buffer.py | 24 +++++++++----------
.../static/description/index.html | 8 +++----
4 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/ddmrp_cron_actions_as_job/README.rst b/ddmrp_cron_actions_as_job/README.rst
index d9957865c..2a2fb8a70 100644
--- a/ddmrp_cron_actions_as_job/README.rst
+++ b/ddmrp_cron_actions_as_job/README.rst
@@ -11,7 +11,7 @@ DDMRP Buffer Calculation as job
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !! source digest: sha256:465316112c5bcbfc95ae3763b5148be64485ca35a792ea4a770b891036ae8134
+ !! source digest: sha256:c1e4d832046009f380a8793d981bf80dc795a68afa2458b3de1981eb027c257b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -21,13 +21,13 @@ DDMRP Buffer Calculation as job
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fddmrp-lightgray.png?logo=github
- :target: https://github.com/OCA/ddmrp/tree/18.0/ddmrp_cron_actions_as_job
+ :target: https://github.com/OCA/ddmrp/tree/19.0/ddmrp_cron_actions_as_job
:alt: OCA/ddmrp
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/ddmrp-18-0/ddmrp-18-0-ddmrp_cron_actions_as_job
+ :target: https://translation.odoo-community.org/projects/ddmrp-19-0/ddmrp-19-0-ddmrp_cron_actions_as_job
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/ddmrp&target_branch=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/ddmrp&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -58,7 +58,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 to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -88,6 +88,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/ddmrp `_ project on GitHub.
+This module is part of the `OCA/ddmrp `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/ddmrp_cron_actions_as_job/__manifest__.py b/ddmrp_cron_actions_as_job/__manifest__.py
index f8291438e..98f912401 100644
--- a/ddmrp_cron_actions_as_job/__manifest__.py
+++ b/ddmrp_cron_actions_as_job/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "DDMRP Buffer Calculation as job",
- "version": "18.0.1.0.1",
+ "version": "19.0.1.0.0",
"summary": "Run DDMRP Buffer Calculation as jobs",
"author": "Camptocamp, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/ddmrp",
diff --git a/ddmrp_cron_actions_as_job/models/stock_buffer.py b/ddmrp_cron_actions_as_job/models/stock_buffer.py
index 40f214446..dda34761f 100644
--- a/ddmrp_cron_actions_as_job/models/stock_buffer.py
+++ b/ddmrp_cron_actions_as_job/models/stock_buffer.py
@@ -1,6 +1,8 @@
# Copyright 2020 Camptocamp (https://www.camptocamp.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
+import functools
+
from odoo import models
from odoo.addons.queue_job.job import identity_exact
@@ -24,18 +26,16 @@ def _calc_adu_job_options(self):
}
def _register_hook(self):
- self._patch_method(
- "cron_actions",
- self._patch_job_auto_delay(
- "cron_actions", context_key="auto_delay_ddmrp_cron_actions"
- ),
- )
- self._patch_method(
- "_calc_adu",
- self._patch_job_auto_delay(
- "_calc_adu", context_key="auto_delay_ddmrp_calc_adu"
- ),
- )
+ for method_name, context_key in (
+ ("cron_actions", "auto_delay_ddmrp_cron_actions"),
+ ("_calc_adu", "auto_delay_ddmrp_calc_adu"),
+ ):
+ patched = self._patch_job_auto_delay(method_name, context_key=context_key)
+ setattr(
+ type(self),
+ method_name,
+ functools.update_wrapper(patched, getattr(type(self), method_name)),
+ )
return super()._register_hook()
def cron_ddmrp(self, automatic=False, domain=None):
diff --git a/ddmrp_cron_actions_as_job/static/description/index.html b/ddmrp_cron_actions_as_job/static/description/index.html
index 5f2d3e181..414729ca9 100644
--- a/ddmrp_cron_actions_as_job/static/description/index.html
+++ b/ddmrp_cron_actions_as_job/static/description/index.html
@@ -372,9 +372,9 @@ DDMRP Buffer Calculation as job
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!! source digest: sha256:465316112c5bcbfc95ae3763b5148be64485ca35a792ea4a770b891036ae8134
+!! source digest: sha256:c1e4d832046009f380a8793d981bf80dc795a68afa2458b3de1981eb027c257b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

DDMRP Buffer calculations are now run with Queue Jobs.
When auto-update of NFP is active, each time the state of a stock move
changes, a new computation is triggered, but thanks to identity keys on
@@ -402,7 +402,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 to smash it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -428,7 +428,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/ddmrp project on GitHub.
+
This module is part of the OCA/ddmrp project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.