From 5c1b1f73c44e975f6924ca51ea48f7049a28b42c Mon Sep 17 00:00:00 2001 From: DavidJForgeFlow Date: Wed, 26 Jun 2024 11:51:18 +0200 Subject: [PATCH 1/7] [ADD] mrp_production_back_to_draft Allows to return to draft a confirmed or cancelled MO. --- mrp_production_back_to_draft/README.rst | 76 ++++ mrp_production_back_to_draft/__init__.py | 4 + mrp_production_back_to_draft/__manifest__.py | 17 + .../models/__init__.py | 4 + .../models/mrp_production.py | 24 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 420 ++++++++++++++++++ .../tests/__init__.py | 4 + .../tests/test_mrp_return_to_draft.py | 88 ++++ .../views/mrp_production_views.xml | 24 + 12 files changed, 663 insertions(+) create mode 100644 mrp_production_back_to_draft/README.rst create mode 100644 mrp_production_back_to_draft/__init__.py create mode 100644 mrp_production_back_to_draft/__manifest__.py create mode 100644 mrp_production_back_to_draft/models/__init__.py create mode 100644 mrp_production_back_to_draft/models/mrp_production.py create mode 100644 mrp_production_back_to_draft/readme/CONTRIBUTORS.rst create mode 100644 mrp_production_back_to_draft/readme/DESCRIPTION.rst create mode 100644 mrp_production_back_to_draft/static/description/icon.png create mode 100644 mrp_production_back_to_draft/static/description/index.html create mode 100644 mrp_production_back_to_draft/tests/__init__.py create mode 100644 mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py create mode 100644 mrp_production_back_to_draft/views/mrp_production_views.xml diff --git a/mrp_production_back_to_draft/README.rst b/mrp_production_back_to_draft/README.rst new file mode 100644 index 000000000..f7647d577 --- /dev/null +++ b/mrp_production_back_to_draft/README.rst @@ -0,0 +1,76 @@ +============================ +MRP Production Back to Draft +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:6315dac1650b1261af8b4c3a8071f794337647dad41a31f8bd15dfbe29573a99 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmanufacture-lightgray.png?logo=github + :target: https://github.com/OCA/manufacture/tree/14.0/mrp_production_back_to_draft + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-mrp_production_back_to_draft + :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/manufacture&target_branch=14.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to return to draft a confirmed or cancelled MO. + +**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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* David Jiménez + +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/manufacture `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mrp_production_back_to_draft/__init__.py b/mrp_production_back_to_draft/__init__.py new file mode 100644 index 000000000..638f0c9a4 --- /dev/null +++ b/mrp_production_back_to_draft/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/mrp_production_back_to_draft/__manifest__.py b/mrp_production_back_to_draft/__manifest__.py new file mode 100644 index 000000000..8bb2bc6f2 --- /dev/null +++ b/mrp_production_back_to_draft/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2024 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "MRP Production Back to Draft", + "version": "14.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "summary": "Allows to return to draft a confirmed or cancelled MO.", + "website": "https://github.com/OCA/manufacture", + "category": "Manufacturing/Manufacturing", + "license": "AGPL-3", + "depends": ["mrp"], + "data": [ + "views/mrp_production_views.xml", + ], + "installable": True, +} diff --git a/mrp_production_back_to_draft/models/__init__.py b/mrp_production_back_to_draft/models/__init__.py new file mode 100644 index 000000000..59d2f0e1c --- /dev/null +++ b/mrp_production_back_to_draft/models/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import mrp_production diff --git a/mrp_production_back_to_draft/models/mrp_production.py b/mrp_production_back_to_draft/models/mrp_production.py new file mode 100644 index 000000000..57c18204d --- /dev/null +++ b/mrp_production_back_to_draft/models/mrp_production.py @@ -0,0 +1,24 @@ +# Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, models +from odoo.exceptions import UserError + + +class MrpProduction(models.Model): + _inherit = "mrp.production" + + def action_return_to_draft(self): + self._check_company() + for rec in self: + if rec.state not in ["confirmed", "cancel"]: + raise UserError( + _( + "You cannot return to draft the following MO: %s. " + "Only confirmed or cancelled MO can be returned to draft." + ) + % rec.name + ) + else: + rec.move_raw_ids._action_cancel() + rec.move_raw_ids.write({"state": "draft"}) diff --git a/mrp_production_back_to_draft/readme/CONTRIBUTORS.rst b/mrp_production_back_to_draft/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..fcd081018 --- /dev/null +++ b/mrp_production_back_to_draft/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* David Jiménez diff --git a/mrp_production_back_to_draft/readme/DESCRIPTION.rst b/mrp_production_back_to_draft/readme/DESCRIPTION.rst new file mode 100644 index 000000000..255387560 --- /dev/null +++ b/mrp_production_back_to_draft/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to return to draft a confirmed or cancelled MO. diff --git a/mrp_production_back_to_draft/static/description/icon.png b/mrp_production_back_to_draft/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/mrp_production_back_to_draft/static/description/index.html b/mrp_production_back_to_draft/static/description/index.html new file mode 100644 index 000000000..82c1ba7ed --- /dev/null +++ b/mrp_production_back_to_draft/static/description/index.html @@ -0,0 +1,420 @@ + + + + + +MRP Production Back to Draft + + + +
+

MRP Production Back to Draft

+ + +

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

+

This module allows to return to draft a confirmed or cancelled MO.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

This module is part of the OCA/manufacture project on GitHub.

+

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

+
+
+
+ + diff --git a/mrp_production_back_to_draft/tests/__init__.py b/mrp_production_back_to_draft/tests/__init__.py new file mode 100644 index 000000000..c78046498 --- /dev/null +++ b/mrp_production_back_to_draft/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_mrp_return_to_draft diff --git a/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py b/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py new file mode 100644 index 000000000..98edd0a19 --- /dev/null +++ b/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py @@ -0,0 +1,88 @@ +# Copyright 2024 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api +from odoo.exceptions import UserError +from odoo.tests import common, tagged + + +@tagged("post_install", "-at_install") +class TestMrpProductionAutovalidate(common.SavepointCase): + @classmethod + def setUpClass(cls): + super(TestMrpProductionAutovalidate, cls).setUpClass() + cls.user_admin = cls.env.ref("base.user_admin") + cls.env = api.Environment(cls.cr, cls.user_admin.id, {}) + cls.env.user.tz = False # Make sure there's no timezone in user + cls.warehouse = cls.env.ref("stock.warehouse0") + cls.location = cls.env.ref("stock.stock_location_stock") + cls.env.user.write( + { + "groups_id": [ + (6, 0, cls.env.user.groups_id.ids), + (4, cls.env.ref("stock.group_stock_manager").id), + ], + } + ) + cls.prod_tp1 = cls.env["product.product"].create( + { + "name": "Test Product 1", + "type": "product", + } + ) + cls.prod_ti1 = cls.env["product.product"].create( + { + "name": "Test Product Intermediate 1", + "type": "product", + } + ) + # Create BoMs: + cls.test_bom_1 = cls.env["mrp.bom"].create( + { + "product_id": cls.prod_tp1.id, + "product_tmpl_id": cls.prod_tp1.product_tmpl_id.id, + "product_uom_id": cls.prod_tp1.uom_id.id, + "product_qty": 1.0, + "type": "normal", + } + ) + cls.env["mrp.bom.line"].create( + { + "bom_id": cls.test_bom_1.id, + "product_id": cls.prod_ti1.id, + "product_qty": 1.0, + } + ) + cls.mo_1 = cls.env["mrp.production"].create( + { + "name": "MO ABC", + "product_id": cls.prod_tp1.id, + "product_uom_id": cls.prod_tp1.uom_id.id, + "product_qty": 2, + "bom_id": cls.test_bom_1.id, + } + ) + + def test_01_mrp_return_to_draft(self): + self.env["stock.quant"]._update_available_quantity( + self.prod_ti1, self.location, 2 + ) + self.assertEqual(self.mo_1.state, "draft") + self.mo_1._onchange_move_raw() + self.mo_1.action_confirm() + self.assertEqual(self.mo_1.state, "confirmed") + self.mo_1.action_return_to_draft() + self.assertEqual(self.mo_1.state, "draft") + self.mo_1._onchange_move_raw() + self.mo_1.action_confirm() + self.assertEqual(self.mo_1.state, "confirmed") + self.mo_1.action_cancel() + self.assertEqual(self.mo_1.state, "cancel") + self.mo_1.action_return_to_draft() + self.assertEqual(self.mo_1.state, "draft") + self.mo_1._onchange_move_raw() + self.mo_1.action_confirm() + self.mo_1.qty_producing = 2 + self.assertEqual(self.mo_1.state, "to_close") + with self.assertRaises(UserError): + self.mo_1.action_return_to_draft() diff --git a/mrp_production_back_to_draft/views/mrp_production_views.xml b/mrp_production_back_to_draft/views/mrp_production_views.xml new file mode 100644 index 000000000..27cfe8b8b --- /dev/null +++ b/mrp_production_back_to_draft/views/mrp_production_views.xml @@ -0,0 +1,24 @@ + + + + + mrp.production.form - return_to_draft + mrp.production + + + + + + + From 02ed88be535649646406434721e95d17fc229e36 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 3 Jul 2024 13:23:27 +0000 Subject: [PATCH 2/7] [UPD] Update mrp_production_back_to_draft.pot --- .../i18n/mrp_production_back_to_draft.pot | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 mrp_production_back_to_draft/i18n/mrp_production_back_to_draft.pot diff --git a/mrp_production_back_to_draft/i18n/mrp_production_back_to_draft.pot b/mrp_production_back_to_draft/i18n/mrp_production_back_to_draft.pot new file mode 100644 index 000000000..3afe3eac2 --- /dev/null +++ b/mrp_production_back_to_draft/i18n/mrp_production_back_to_draft.pot @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_production_back_to_draft +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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: mrp_production_back_to_draft +#: model:ir.model.fields,field_description:mrp_production_back_to_draft.field_mrp_production__display_name +msgid "Display Name" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model:ir.model.fields,field_description:mrp_production_back_to_draft.field_mrp_production__id +msgid "ID" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model:ir.model.fields,field_description:mrp_production_back_to_draft.field_mrp_production____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model:ir.model,name:mrp_production_back_to_draft.model_mrp_production +msgid "Production Order" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model_terms:ir.ui.view,arch_db:mrp_production_back_to_draft.mrp_production_form_view_return_to_draft +msgid "Return to Draft" +msgstr "" + +#. module: mrp_production_back_to_draft +#: code:addons/mrp_production_back_to_draft/models/mrp_production.py:0 +#, python-format +msgid "" +"You cannot return to draft the following MO: %s. Only confirmed or cancelled" +" MO can be returned to draft." +msgstr "" From 4431ce4b88e7356a7c27798aeaba6ab1fc687623 Mon Sep 17 00:00:00 2001 From: DavidJForgeFlow Date: Fri, 13 Sep 2024 11:35:52 +0200 Subject: [PATCH 3/7] [FIX] mrp_production_back_to_draft: include finished moves. --- mrp_production_back_to_draft/models/mrp_production.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mrp_production_back_to_draft/models/mrp_production.py b/mrp_production_back_to_draft/models/mrp_production.py index 57c18204d..b78c85354 100644 --- a/mrp_production_back_to_draft/models/mrp_production.py +++ b/mrp_production_back_to_draft/models/mrp_production.py @@ -20,5 +20,5 @@ class MrpProduction(models.Model): % rec.name ) else: - rec.move_raw_ids._action_cancel() - rec.move_raw_ids.write({"state": "draft"}) + (rec.move_raw_ids + rec.move_finished_ids)._action_cancel() + (rec.move_raw_ids + rec.move_finished_ids).write({"state": "draft"}) From d6ffe37c373edaaa0f1da01ce945d3252c7574ef Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 16 Sep 2024 09:50:45 +0000 Subject: [PATCH 4/7] [BOT] post-merge updates --- mrp_production_back_to_draft/README.rst | 2 +- mrp_production_back_to_draft/__manifest__.py | 2 +- .../static/description/index.html | 13 ++++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mrp_production_back_to_draft/README.rst b/mrp_production_back_to_draft/README.rst index f7647d577..42eb81dce 100644 --- a/mrp_production_back_to_draft/README.rst +++ b/mrp_production_back_to_draft/README.rst @@ -7,7 +7,7 @@ MRP Production Back to Draft !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:6315dac1650b1261af8b4c3a8071f794337647dad41a31f8bd15dfbe29573a99 + !! source digest: sha256:759dd0cf5f18855c3a050e5796eda3ee2f65ed6df213e9a88b8991303e53a33b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mrp_production_back_to_draft/__manifest__.py b/mrp_production_back_to_draft/__manifest__.py index 8bb2bc6f2..b9eeff503 100644 --- a/mrp_production_back_to_draft/__manifest__.py +++ b/mrp_production_back_to_draft/__manifest__.py @@ -3,7 +3,7 @@ { "name": "MRP Production Back to Draft", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "author": "ForgeFlow, Odoo Community Association (OCA)", "summary": "Allows to return to draft a confirmed or cancelled MO.", "website": "https://github.com/OCA/manufacture", diff --git a/mrp_production_back_to_draft/static/description/index.html b/mrp_production_back_to_draft/static/description/index.html index 82c1ba7ed..b5f845c7b 100644 --- a/mrp_production_back_to_draft/static/description/index.html +++ b/mrp_production_back_to_draft/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code { margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.option { span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -366,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:6315dac1650b1261af8b4c3a8071f794337647dad41a31f8bd15dfbe29573a99 +!! source digest: sha256:759dd0cf5f18855c3a050e5796eda3ee2f65ed6df213e9a88b8991303e53a33b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module allows to return to draft a confirmed or cancelled MO.

@@ -407,7 +408,9 @@ If you spotted it first, help us to smash it by providing a detailed and welcome

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

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

From 09279cd35a9253ea80cbd2b4fd43b957d7e36617 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 10 Dec 2024 07:52:44 +0000 Subject: [PATCH 5/7] Added translation using Weblate (Italian) --- mrp_production_back_to_draft/i18n/it.po | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mrp_production_back_to_draft/i18n/it.po diff --git a/mrp_production_back_to_draft/i18n/it.po b/mrp_production_back_to_draft/i18n/it.po new file mode 100644 index 000000000..22b3d426b --- /dev/null +++ b/mrp_production_back_to_draft/i18n/it.po @@ -0,0 +1,48 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_production_back_to_draft +# +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: it\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: mrp_production_back_to_draft +#: model:ir.model.fields,field_description:mrp_production_back_to_draft.field_mrp_production__display_name +msgid "Display Name" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model:ir.model.fields,field_description:mrp_production_back_to_draft.field_mrp_production__id +msgid "ID" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model:ir.model.fields,field_description:mrp_production_back_to_draft.field_mrp_production____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model:ir.model,name:mrp_production_back_to_draft.model_mrp_production +msgid "Production Order" +msgstr "" + +#. module: mrp_production_back_to_draft +#: model_terms:ir.ui.view,arch_db:mrp_production_back_to_draft.mrp_production_form_view_return_to_draft +msgid "Return to Draft" +msgstr "" + +#. module: mrp_production_back_to_draft +#: code:addons/mrp_production_back_to_draft/models/mrp_production.py:0 +#, python-format +msgid "" +"You cannot return to draft the following MO: %s. Only confirmed or cancelled" +" MO can be returned to draft." +msgstr "" From 96883500431d19d4e898b43093e5cbe0f40327e3 Mon Sep 17 00:00:00 2001 From: Meritxell Abellan Date: Tue, 17 Dec 2024 09:43:17 +0100 Subject: [PATCH 6/7] [IMP] mrp_production_back_to_draft: pre-commit auto fixes --- mrp_production_back_to_draft/README.rst | 18 +++++++++--------- mrp_production_back_to_draft/pyproject.toml | 3 +++ .../readme/CONTRIBUTORS.md | 1 + .../readme/CONTRIBUTORS.rst | 1 - .../readme/{DESCRIPTION.rst => DESCRIPTION.md} | 0 .../static/description/index.html | 17 +++++++---------- .../tests/test_mrp_return_to_draft.py | 2 +- 7 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 mrp_production_back_to_draft/pyproject.toml create mode 100644 mrp_production_back_to_draft/readme/CONTRIBUTORS.md delete mode 100644 mrp_production_back_to_draft/readme/CONTRIBUTORS.rst rename mrp_production_back_to_draft/readme/{DESCRIPTION.rst => DESCRIPTION.md} (100%) diff --git a/mrp_production_back_to_draft/README.rst b/mrp_production_back_to_draft/README.rst index 42eb81dce..fa3c717f7 100644 --- a/mrp_production_back_to_draft/README.rst +++ b/mrp_production_back_to_draft/README.rst @@ -17,13 +17,13 @@ MRP Production Back to Draft :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github - :target: https://github.com/OCA/manufacture/tree/14.0/mrp_production_back_to_draft + :target: https://github.com/OCA/manufacture/tree/17.0/mrp_production_back_to_draft :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-mrp_production_back_to_draft + :target: https://translation.odoo-community.org/projects/manufacture-17-0/manufacture-17-0-mrp_production_back_to_draft :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/manufacture&target_branch=14.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -41,7 +41,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. @@ -49,17 +49,17 @@ Credits ======= Authors -~~~~~~~ +------- * ForgeFlow Contributors -~~~~~~~~~~~~ +------------ -* David Jiménez +- David Jiménez Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -71,6 +71,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/manufacture `_ project on GitHub. +This module is part of the `OCA/manufacture `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mrp_production_back_to_draft/pyproject.toml b/mrp_production_back_to_draft/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/mrp_production_back_to_draft/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mrp_production_back_to_draft/readme/CONTRIBUTORS.md b/mrp_production_back_to_draft/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..ac18283b8 --- /dev/null +++ b/mrp_production_back_to_draft/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- David Jiménez \<\> diff --git a/mrp_production_back_to_draft/readme/CONTRIBUTORS.rst b/mrp_production_back_to_draft/readme/CONTRIBUTORS.rst deleted file mode 100644 index fcd081018..000000000 --- a/mrp_production_back_to_draft/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1 +0,0 @@ -* David Jiménez diff --git a/mrp_production_back_to_draft/readme/DESCRIPTION.rst b/mrp_production_back_to_draft/readme/DESCRIPTION.md similarity index 100% rename from mrp_production_back_to_draft/readme/DESCRIPTION.rst rename to mrp_production_back_to_draft/readme/DESCRIPTION.md diff --git a/mrp_production_back_to_draft/static/description/index.html b/mrp_production_back_to_draft/static/description/index.html index b5f845c7b..9cd9f74e0 100644 --- a/mrp_production_back_to_draft/static/description/index.html +++ b/mrp_production_back_to_draft/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. -Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +274,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code { margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +300,7 @@ span.option { span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -369,7 +368,7 @@ ul.auto-toc { !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:759dd0cf5f18855c3a050e5796eda3ee2f65ed6df213e9a88b8991303e53a33b !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module allows to return to draft a confirmed or cancelled MO.

Table of contents

@@ -388,7 +387,7 @@ ul.auto-toc {

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.

@@ -408,13 +407,11 @@ If you spotted it first, help us to smash it by providing a detailed and welcome

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +Odoo Community Association

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

-

This module is part of the OCA/manufacture project on GitHub.

+

This module is part of the OCA/manufacture project on GitHub.

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

diff --git a/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py b/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py index 98edd0a19..2a9067af2 100644 --- a/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py +++ b/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py @@ -10,7 +10,7 @@ from odoo.tests import common, tagged class TestMrpProductionAutovalidate(common.SavepointCase): @classmethod def setUpClass(cls): - super(TestMrpProductionAutovalidate, cls).setUpClass() + super().setUpClass() cls.user_admin = cls.env.ref("base.user_admin") cls.env = api.Environment(cls.cr, cls.user_admin.id, {}) cls.env.user.tz = False # Make sure there's no timezone in user From 18fa1a1ff1c18ff7950797025ccc9042f6133279 Mon Sep 17 00:00:00 2001 From: Meritxell Abellan Date: Tue, 17 Dec 2024 13:32:48 +0100 Subject: [PATCH 7/7] [MIG] mrp_production_back_to_draft: Migration to 17.0 --- mrp_production_back_to_draft/__manifest__.py | 2 +- .../models/mrp_production.py | 18 +++++++++++++++++- .../tests/test_mrp_return_to_draft.py | 9 ++++----- .../views/mrp_production_views.xml | 2 +- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/mrp_production_back_to_draft/__manifest__.py b/mrp_production_back_to_draft/__manifest__.py index b9eeff503..56ee943a8 100644 --- a/mrp_production_back_to_draft/__manifest__.py +++ b/mrp_production_back_to_draft/__manifest__.py @@ -3,7 +3,7 @@ { "name": "MRP Production Back to Draft", - "version": "14.0.1.0.1", + "version": "17.0.1.0.0", "author": "ForgeFlow, Odoo Community Association (OCA)", "summary": "Allows to return to draft a confirmed or cancelled MO.", "website": "https://github.com/OCA/manufacture", diff --git a/mrp_production_back_to_draft/models/mrp_production.py b/mrp_production_back_to_draft/models/mrp_production.py index b78c85354..500d6e4a7 100644 --- a/mrp_production_back_to_draft/models/mrp_production.py +++ b/mrp_production_back_to_draft/models/mrp_production.py @@ -1,7 +1,7 @@ # Copyright 2024 ForgeFlow S.L. (http://www.forgeflow.com) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import _, models +from odoo import _, api, models from odoo.exceptions import UserError @@ -22,3 +22,19 @@ class MrpProduction(models.Model): else: (rec.move_raw_ids + rec.move_finished_ids)._action_cancel() (rec.move_raw_ids + rec.move_finished_ids).write({"state": "draft"}) + if rec.state != "draft": + raise UserError( + _("Could not set the production order back to draft") + ) + + @api.depends("move_raw_ids.state", "move_finished_ids.state") + def _compute_state(self): + super()._compute_state() + for production in self: + if ( + production.state == "cancel" + and all(m.state == "draft" for m in production.move_raw_ids) + and all(m.state == "draft" for m in production.move_finished_ids) + ): + production.state = "draft" + return diff --git a/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py b/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py index 2a9067af2..1505b7598 100644 --- a/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py +++ b/mrp_production_back_to_draft/tests/test_mrp_return_to_draft.py @@ -7,13 +7,12 @@ from odoo.tests import common, tagged @tagged("post_install", "-at_install") -class TestMrpProductionAutovalidate(common.SavepointCase): +class TestMrpProductionAutovalidate(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.user_admin = cls.env.ref("base.user_admin") cls.env = api.Environment(cls.cr, cls.user_admin.id, {}) - cls.env.user.tz = False # Make sure there's no timezone in user cls.warehouse = cls.env.ref("stock.warehouse0") cls.location = cls.env.ref("stock.stock_location_stock") cls.env.user.write( @@ -68,19 +67,19 @@ class TestMrpProductionAutovalidate(common.SavepointCase): self.prod_ti1, self.location, 2 ) self.assertEqual(self.mo_1.state, "draft") - self.mo_1._onchange_move_raw() + self.mo_1._compute_move_raw_ids() self.mo_1.action_confirm() self.assertEqual(self.mo_1.state, "confirmed") self.mo_1.action_return_to_draft() self.assertEqual(self.mo_1.state, "draft") - self.mo_1._onchange_move_raw() + self.mo_1._compute_move_raw_ids() self.mo_1.action_confirm() self.assertEqual(self.mo_1.state, "confirmed") self.mo_1.action_cancel() self.assertEqual(self.mo_1.state, "cancel") self.mo_1.action_return_to_draft() self.assertEqual(self.mo_1.state, "draft") - self.mo_1._onchange_move_raw() + self.mo_1._compute_move_raw_ids() self.mo_1.action_confirm() self.mo_1.qty_producing = 2 self.assertEqual(self.mo_1.state, "to_close") diff --git a/mrp_production_back_to_draft/views/mrp_production_views.xml b/mrp_production_back_to_draft/views/mrp_production_views.xml index 27cfe8b8b..9f6dca024 100644 --- a/mrp_production_back_to_draft/views/mrp_production_views.xml +++ b/mrp_production_back_to_draft/views/mrp_production_views.xml @@ -15,7 +15,7 @@ type="object" class="oe_stat_button" string="Return to Draft" - attrs="{'invisible': [('state', 'not in', ['confirmed', 'cancel'])]}" + invisible="state not in ['confirmed', 'cancel']" >