From e2b913dcc9f774a43288b2bf282aa02e755b5248 Mon Sep 17 00:00:00 2001 From: tslai Date: Tue, 13 Oct 2020 17:56:44 +0800 Subject: [PATCH 01/13] [12.0][ADD] mrp_subcontracting_purchase_link --- mrp_subcontracting_purchase_link/README.rst | 79 ++++ mrp_subcontracting_purchase_link/__init__.py | 1 + .../__manifest__.py | 13 + mrp_subcontracting_purchase_link/i18n/ja.po | 47 ++ .../i18n/mrp_subcontracting_purchase_link.pot | 50 ++ .../models/__init__.py | 3 + .../models/mrp_production.py | 12 + .../models/purchase_order.py | 38 ++ .../models/stock_picking.py | 14 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 4 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 427 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_mrp_subcontracting_purchase_link.py | 71 +++ .../views/mrp_production_views.xml | 13 + .../views/purchase_order_views.xml | 27 ++ 17 files changed, 804 insertions(+) create mode 100644 mrp_subcontracting_purchase_link/README.rst create mode 100644 mrp_subcontracting_purchase_link/__init__.py create mode 100644 mrp_subcontracting_purchase_link/__manifest__.py create mode 100644 mrp_subcontracting_purchase_link/i18n/ja.po create mode 100644 mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot create mode 100644 mrp_subcontracting_purchase_link/models/__init__.py create mode 100644 mrp_subcontracting_purchase_link/models/mrp_production.py create mode 100644 mrp_subcontracting_purchase_link/models/purchase_order.py create mode 100644 mrp_subcontracting_purchase_link/models/stock_picking.py create mode 100644 mrp_subcontracting_purchase_link/readme/CONTRIBUTORS.rst create mode 100644 mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst create mode 100644 mrp_subcontracting_purchase_link/static/description/icon.png create mode 100644 mrp_subcontracting_purchase_link/static/description/index.html create mode 100644 mrp_subcontracting_purchase_link/tests/__init__.py create mode 100644 mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py create mode 100644 mrp_subcontracting_purchase_link/views/mrp_production_views.xml create mode 100644 mrp_subcontracting_purchase_link/views/purchase_order_views.xml diff --git a/mrp_subcontracting_purchase_link/README.rst b/mrp_subcontracting_purchase_link/README.rst new file mode 100644 index 00000000000..22c5ff1fa55 --- /dev/null +++ b/mrp_subcontracting_purchase_link/README.rst @@ -0,0 +1,79 @@ +============================================== +Link Purchase Order to Subcontract Productions +============================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fmanufacture-lightgray.png?logo=github + :target: https://github.com/OCA/manufacture/tree/12.0/mrp_subcontracting_purchase_link + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-mrp_subcontracting_purchase_link + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/129/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module does the following: + +- Extends _prepare_subcontract_mo_vals() and adds the purchase order reference to the subcontracted manufacturing orders. +- Adds an action button in the purchase order form view to open related subcontracted manufacturing orders. + +**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 +~~~~~~~ + +* Quartile Limited + +Contributors +~~~~~~~~~~~~ + +* `Quartile Limited `__: + + * Yoshi Tashiro + * Tim Lai + +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_subcontracting_purchase_link/__init__.py b/mrp_subcontracting_purchase_link/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/mrp_subcontracting_purchase_link/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/mrp_subcontracting_purchase_link/__manifest__.py b/mrp_subcontracting_purchase_link/__manifest__.py new file mode 100644 index 00000000000..b3eb1817bc3 --- /dev/null +++ b/mrp_subcontracting_purchase_link/__manifest__.py @@ -0,0 +1,13 @@ +# Copyright 2020 Quartile Limited +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +{ + "name": "Link Purchase Order to Subcontract Productions", + "version": "12.0.1.0.0", + "category": "Manufacturing", + "license": "LGPL-3", + "author": "Quartile Limited, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/manufacture", + "depends": ["purchase", "mrp_subcontracting"], + "data": ["views/purchase_order_views.xml", "views/mrp_production_views.xml"], + "installable": True, +} diff --git a/mrp_subcontracting_purchase_link/i18n/ja.po b/mrp_subcontracting_purchase_link/i18n/ja.po new file mode 100644 index 00000000000..d8db6b389cb --- /dev/null +++ b/mrp_subcontracting_purchase_link/i18n/ja.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_subcontracting_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-13 08:00+0000\n" +"PO-Revision-Date: 2020-10-13 08:00+0000\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_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_mrp_production +msgid "Production Order" +msgstr "製造" + +#. module: mrp_subcontracting_purchase_link +#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_purchase_link.purchase_order_form +msgid "Productions" +msgstr "製造" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_purchase_order +msgid "Purchase Order" +msgstr "購買オーダ" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__subcontract_production_ids +msgid "Subcontract Production Orders" +msgstr "製造" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__purchase_order_id +msgid "Subcontract Purchase Order" +msgstr "外注加工購買オーダ" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_stock_picking +msgid "Transfer" +msgstr "運送" + diff --git a/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot b/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot new file mode 100644 index 00000000000..ffcf6a32ded --- /dev/null +++ b/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_subcontracting_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_mrp_production +msgid "Production Order" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_purchase_link.purchase_order_form +msgid "Productions" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__subcontract_production_count +msgid "Subcontract Production Count" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__subcontract_production_ids +msgid "Subcontract Production Orders" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__purchase_order_id +msgid "Subcontract Purchase Order" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_stock_picking +msgid "Transfer" +msgstr "" + diff --git a/mrp_subcontracting_purchase_link/models/__init__.py b/mrp_subcontracting_purchase_link/models/__init__.py new file mode 100644 index 00000000000..5a805a40f5e --- /dev/null +++ b/mrp_subcontracting_purchase_link/models/__init__.py @@ -0,0 +1,3 @@ +from . import mrp_production +from . import purchase_order +from . import stock_picking diff --git a/mrp_subcontracting_purchase_link/models/mrp_production.py b/mrp_subcontracting_purchase_link/models/mrp_production.py new file mode 100644 index 00000000000..60883d41120 --- /dev/null +++ b/mrp_subcontracting_purchase_link/models/mrp_production.py @@ -0,0 +1,12 @@ +# Copyright 2020 Quartile Limited +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields, models + + +class MrpProduction(models.Model): + _inherit = "mrp.production" + + purchase_order_id = fields.Many2one( + "purchase.order", "Subcontract Purchase Order", readonly=True + ) diff --git a/mrp_subcontracting_purchase_link/models/purchase_order.py b/mrp_subcontracting_purchase_link/models/purchase_order.py new file mode 100644 index 00000000000..1d07e2d8df3 --- /dev/null +++ b/mrp_subcontracting_purchase_link/models/purchase_order.py @@ -0,0 +1,38 @@ +# Copyright 2020 Quartile Limited +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import api, fields, models + + +class PurchaseOrder(models.Model): + _inherit = "purchase.order" + + subcontract_production_ids = fields.One2many( + "mrp.production", + "purchase_order_id", + "Subcontract Production Orders", + readonly=True, + ) + subcontract_production_count = fields.Integer( + compute="_compute_subcontract_production_count" + ) + + @api.multi + def action_view_mrp(self): + productions = self.subcontract_production_ids + action = self.env.ref("mrp.mrp_production_action").read()[0] + if len(productions) > 1: + action["domain"] = [("id", "in", productions.ids)] + elif len(productions) == 1: + action["views"] = [ + (self.env.ref("mrp.mrp_production_form_view").id, "form") + ] + action["res_id"] = productions.ids[0] + else: + action = {"type": "ir.actions.act_window_close"} + return action + + @api.multi + def _compute_subcontract_production_count(self): + for order in self: + order.subcontract_production_count = len(order.subcontract_production_ids) diff --git a/mrp_subcontracting_purchase_link/models/stock_picking.py b/mrp_subcontracting_purchase_link/models/stock_picking.py new file mode 100644 index 00000000000..805b6a49fb8 --- /dev/null +++ b/mrp_subcontracting_purchase_link/models/stock_picking.py @@ -0,0 +1,14 @@ +# Copyright 2020 Quartile Limited +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import models + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + def _prepare_subcontract_mo_vals(self, subcontract_move, bom): + vals = super()._prepare_subcontract_mo_vals(subcontract_move, bom) + if subcontract_move.purchase_line_id: + vals["purchase_order_id"] = subcontract_move.purchase_line_id.order_id.id + return vals diff --git a/mrp_subcontracting_purchase_link/readme/CONTRIBUTORS.rst b/mrp_subcontracting_purchase_link/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..8fdf2f2c332 --- /dev/null +++ b/mrp_subcontracting_purchase_link/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Quartile Limited `__: + + * Yoshi Tashiro + * Tim Lai diff --git a/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst b/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..64ce6d2f37b --- /dev/null +++ b/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This module does the following: + +- Extends _prepare_subcontract_mo_vals() and adds the purchase order reference to the subcontracted manufacturing orders. +- Adds an action button in the purchase order form view to open related subcontracted manufacturing orders. diff --git a/mrp_subcontracting_purchase_link/static/description/icon.png b/mrp_subcontracting_purchase_link/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_subcontracting_purchase_link/static/description/index.html b/mrp_subcontracting_purchase_link/static/description/index.html new file mode 100644 index 00000000000..b1e6c42b430 --- /dev/null +++ b/mrp_subcontracting_purchase_link/static/description/index.html @@ -0,0 +1,427 @@ + + + + + + +Link Purchase Order to Subcontract Productions + + + + + + diff --git a/mrp_subcontracting_purchase_link/tests/__init__.py b/mrp_subcontracting_purchase_link/tests/__init__.py new file mode 100644 index 00000000000..34dc8cc6e2c --- /dev/null +++ b/mrp_subcontracting_purchase_link/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mrp_subcontracting_purchase_link diff --git a/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py b/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py new file mode 100644 index 00000000000..014a9350c74 --- /dev/null +++ b/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py @@ -0,0 +1,71 @@ +# Copyright 2020 Quartile Limited +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import fields +from odoo.tests import tagged + +from ...mrp_subcontracting.tests.common import TestMrpSubcontractingCommon + + +@tagged("post_install", "-at_install") +class TestMrpSubcontractingPurchaseLink(TestMrpSubcontractingCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + + def _create_sub_po(self, products): + po = self.env["purchase.order"].create( + { + "partner_id": self.subcontractor_partner1.id, + "order_line": [ + ( + 0, + 0, + { + "name": product.name, + "product_id": product.id, + "product_qty": 5.0, + "product_uom": product.uom_id.id, + "price_unit": 10, + "date_planned": fields.Datetime.now(), + }, + ) + for product in products + ], + } + ) + po.button_confirm() + return po + + def test_01_prepare_subcontract_mo_vals(self): + purchase_order = self._create_sub_po(self.finished) + for picking in purchase_order.picking_ids: + for move in picking.move_lines: + self.assertEqual( + picking._prepare_subcontract_mo_vals( + move, move._get_subcontract_bom() + )["purchase_order_id"], + purchase_order.id, + ) + + def test_02_compute_subcontract_production_count(self): + purchase_order1 = self._create_sub_po(self.finished) + purchase_order2 = self._create_sub_po(self.finished + self.finished) + self.assertEqual(purchase_order1.subcontract_production_count, 1) + self.assertEqual(purchase_order2.subcontract_production_count, 2) + + def test_03_action_view_mrp(self): + purchase_order1 = self._create_sub_po(self.finished) + purchase_order2 = self._create_sub_po(self.finished + self.finished) + action = purchase_order1.action_view_mrp() + self.assertEqual( + action["views"], [(self.env.ref("mrp.mrp_production_form_view").id, "form")] + ) + self.assertEqual( + action["res_id"], purchase_order1.subcontract_production_ids[0].id + ) + action = purchase_order2.action_view_mrp() + self.assertEqual( + action["domain"], + [("id", "in", purchase_order2.subcontract_production_ids.ids)], + ) diff --git a/mrp_subcontracting_purchase_link/views/mrp_production_views.xml b/mrp_subcontracting_purchase_link/views/mrp_production_views.xml new file mode 100644 index 00000000000..6edf033e054 --- /dev/null +++ b/mrp_subcontracting_purchase_link/views/mrp_production_views.xml @@ -0,0 +1,13 @@ + + + + mrp.production.form + mrp.production + + + + + + + + diff --git a/mrp_subcontracting_purchase_link/views/purchase_order_views.xml b/mrp_subcontracting_purchase_link/views/purchase_order_views.xml new file mode 100644 index 00000000000..dc52596e294 --- /dev/null +++ b/mrp_subcontracting_purchase_link/views/purchase_order_views.xml @@ -0,0 +1,27 @@ + + + + purchase.order.form + purchase.order + + + + + + + + From ecf169639638a4d926af597f427631ce63f1c926 Mon Sep 17 00:00:00 2001 From: clementmbr Date: Fri, 19 Feb 2021 09:38:16 -0300 Subject: [PATCH 02/13] [MIG] mrp_subcontracting_purchase_link: Migration from 12.0 to 14.0 --- mrp_subcontracting_purchase_link/README.rst | 10 +++---- .../__manifest__.py | 2 +- .../i18n/mrp_subcontracting_purchase_link.pot | 28 ++++++++++++++++--- .../models/purchase_order.py | 4 +-- .../static/description/index.html | 6 ++-- .../views/mrp_production_views.xml | 4 +-- 6 files changed, 36 insertions(+), 18 deletions(-) diff --git a/mrp_subcontracting_purchase_link/README.rst b/mrp_subcontracting_purchase_link/README.rst index 22c5ff1fa55..dadafe2cb13 100644 --- a/mrp_subcontracting_purchase_link/README.rst +++ b/mrp_subcontracting_purchase_link/README.rst @@ -14,13 +14,13 @@ Link Purchase Order to Subcontract Productions :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github - :target: https://github.com/OCA/manufacture/tree/12.0/mrp_subcontracting_purchase_link + :target: https://github.com/OCA/manufacture/tree/14.0/mrp_subcontracting_purchase_link :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-mrp_subcontracting_purchase_link + :target: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-mrp_subcontracting_purchase_link :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/129/12.0 + :target: https://runbot.odoo-community.org/runbot/129/14.0 :alt: Try me on Runbot |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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -74,6 +74,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_subcontracting_purchase_link/__manifest__.py b/mrp_subcontracting_purchase_link/__manifest__.py index b3eb1817bc3..ee03e5ed94f 100644 --- a/mrp_subcontracting_purchase_link/__manifest__.py +++ b/mrp_subcontracting_purchase_link/__manifest__.py @@ -2,7 +2,7 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). { "name": "Link Purchase Order to Subcontract Productions", - "version": "12.0.1.0.0", + "version": "14.0.1.0.0", "category": "Manufacturing", "license": "LGPL-3", "author": "Quartile Limited, Odoo Community Association (OCA)", diff --git a/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot b/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot index ffcf6a32ded..0c6de9cd60b 100644 --- a/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot +++ b/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot @@ -1,18 +1,39 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * mrp_subcontracting_purchase_link +# * mrp_subcontracting_purchase_link # 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" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__display_name +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__display_name +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_stock_picking__display_name +msgid "Display Name" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__id +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__id +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_stock_picking__id +msgid "ID" +msgstr "" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production____last_update +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order____last_update +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_stock_picking____last_update +msgid "Last Modified on" +msgstr "" + #. module: mrp_subcontracting_purchase_link #: model:ir.model,name:mrp_subcontracting_purchase_link.model_mrp_production msgid "Production Order" @@ -47,4 +68,3 @@ msgstr "" #: model:ir.model,name:mrp_subcontracting_purchase_link.model_stock_picking msgid "Transfer" msgstr "" - diff --git a/mrp_subcontracting_purchase_link/models/purchase_order.py b/mrp_subcontracting_purchase_link/models/purchase_order.py index 1d07e2d8df3..e7e9e4e81fa 100644 --- a/mrp_subcontracting_purchase_link/models/purchase_order.py +++ b/mrp_subcontracting_purchase_link/models/purchase_order.py @@ -1,7 +1,7 @@ # Copyright 2020 Quartile Limited # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -from odoo import api, fields, models +from odoo import fields, models class PurchaseOrder(models.Model): @@ -17,7 +17,6 @@ class PurchaseOrder(models.Model): compute="_compute_subcontract_production_count" ) - @api.multi def action_view_mrp(self): productions = self.subcontract_production_ids action = self.env.ref("mrp.mrp_production_action").read()[0] @@ -32,7 +31,6 @@ def action_view_mrp(self): action = {"type": "ir.actions.act_window_close"} return action - @api.multi def _compute_subcontract_production_count(self): for order in self: order.subcontract_production_count = len(order.subcontract_production_ids) diff --git a/mrp_subcontracting_purchase_link/static/description/index.html b/mrp_subcontracting_purchase_link/static/description/index.html index b1e6c42b430..9c24ef7a463 100644 --- a/mrp_subcontracting_purchase_link/static/description/index.html +++ b/mrp_subcontracting_purchase_link/static/description/index.html @@ -367,7 +367,7 @@

Link Purchase Order to Subcontract Productions

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

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

+

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

This module does the following:

  • Extends _prepare_subcontract_mo_vals() and adds the purchase order reference to the subcontracted manufacturing orders.
  • @@ -390,7 +390,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.

    @@ -418,7 +418,7 @@

    Maintainers

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

    -

    This module is part of the OCA/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_subcontracting_purchase_link/views/mrp_production_views.xml b/mrp_subcontracting_purchase_link/views/mrp_production_views.xml index 6edf033e054..4e4761a3a72 100644 --- a/mrp_subcontracting_purchase_link/views/mrp_production_views.xml +++ b/mrp_subcontracting_purchase_link/views/mrp_production_views.xml @@ -5,9 +5,9 @@ mrp.production - + - + From 64c66e791c29f849c3b61a839efe041cb7e204a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Alix?= Date: Sat, 29 Jan 2022 08:29:11 +0100 Subject: [PATCH 03/13] [FIX] Fix access right issues when using actions --- mrp_subcontracting_purchase_link/__manifest__.py | 2 +- mrp_subcontracting_purchase_link/models/purchase_order.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mrp_subcontracting_purchase_link/__manifest__.py b/mrp_subcontracting_purchase_link/__manifest__.py index ee03e5ed94f..ec7ee60da68 100644 --- a/mrp_subcontracting_purchase_link/__manifest__.py +++ b/mrp_subcontracting_purchase_link/__manifest__.py @@ -2,7 +2,7 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). { "name": "Link Purchase Order to Subcontract Productions", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "category": "Manufacturing", "license": "LGPL-3", "author": "Quartile Limited, Odoo Community Association (OCA)", diff --git a/mrp_subcontracting_purchase_link/models/purchase_order.py b/mrp_subcontracting_purchase_link/models/purchase_order.py index e7e9e4e81fa..cf7f4f8d8a3 100644 --- a/mrp_subcontracting_purchase_link/models/purchase_order.py +++ b/mrp_subcontracting_purchase_link/models/purchase_order.py @@ -19,7 +19,8 @@ class PurchaseOrder(models.Model): def action_view_mrp(self): productions = self.subcontract_production_ids - action = self.env.ref("mrp.mrp_production_action").read()[0] + xmlid = "mrp.mrp_production_action" + action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) if len(productions) > 1: action["domain"] = [("id", "in", productions.ids)] elif len(productions) == 1: From 44872ff494fcfa487b27f9fd454f3abfbd4b8d17 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 21 Dec 2022 16:16:38 +0000 Subject: [PATCH 04/13] Added translation using Weblate (Italian) --- mrp_subcontracting_purchase_link/i18n/it.po | 73 +++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 mrp_subcontracting_purchase_link/i18n/it.po diff --git a/mrp_subcontracting_purchase_link/i18n/it.po b/mrp_subcontracting_purchase_link/i18n/it.po new file mode 100644 index 00000000000..9fe474c2835 --- /dev/null +++ b/mrp_subcontracting_purchase_link/i18n/it.po @@ -0,0 +1,73 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_subcontracting_purchase_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-12-21 17:44+0000\n" +"Last-Translator: mymage \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" +"X-Generator: Weblate 4.14.1\n" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__display_name +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__display_name +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_stock_picking__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__id +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__id +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_stock_picking__id +msgid "ID" +msgstr "ID" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production____last_update +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order____last_update +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_stock_picking____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_mrp_production +msgid "Production Order" +msgstr "Ordine di produzione" + +#. module: mrp_subcontracting_purchase_link +#: model_terms:ir.ui.view,arch_db:mrp_subcontracting_purchase_link.purchase_order_form +msgid "Productions" +msgstr "Produzioni" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine di acquisto" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__subcontract_production_count +msgid "Subcontract Production Count" +msgstr "Conteggio produzione terzisti" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_purchase_order__subcontract_production_ids +msgid "Subcontract Production Orders" +msgstr "Ordini produzione terzisti" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__purchase_order_id +msgid "Subcontract Purchase Order" +msgstr "Ordine produzione terzisti" + +#. module: mrp_subcontracting_purchase_link +#: model:ir.model,name:mrp_subcontracting_purchase_link.model_stock_picking +msgid "Transfer" +msgstr "trasferimento" From fd2faeaf0d08c5c2778aeccec876c0681e1306e8 Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Wed, 18 Jan 2023 09:28:54 +0000 Subject: [PATCH 05/13] Translated using Weblate (Italian) Currently translated at 100.0% (10 of 10 strings) Translation: manufacture-14.0/manufacture-14.0-mrp_subcontracting_purchase_link Translate-URL: https://translation.odoo-community.org/projects/manufacture-14-0/manufacture-14-0-mrp_subcontracting_purchase_link/it/ --- mrp_subcontracting_purchase_link/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mrp_subcontracting_purchase_link/i18n/it.po b/mrp_subcontracting_purchase_link/i18n/it.po index 9fe474c2835..ddf45826250 100644 --- a/mrp_subcontracting_purchase_link/i18n/it.po +++ b/mrp_subcontracting_purchase_link/i18n/it.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2022-12-21 17:44+0000\n" -"Last-Translator: mymage \n" +"PO-Revision-Date: 2023-01-18 12:05+0000\n" +"Last-Translator: Francesco Foresti \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" @@ -70,4 +70,4 @@ msgstr "Ordine produzione terzisti" #. module: mrp_subcontracting_purchase_link #: model:ir.model,name:mrp_subcontracting_purchase_link.model_stock_picking msgid "Transfer" -msgstr "trasferimento" +msgstr "Trasferimento" From 028d513a8562e025b9b48c9fca91c005e8c78fb1 Mon Sep 17 00:00:00 2001 From: ThiagoMForgeFlow Date: Thu, 23 Feb 2023 12:29:32 +0100 Subject: [PATCH 06/13] [14.0][FIX] mrp_subcontracting_purchase_link: link to PO line, not PO --- mrp_subcontracting_purchase_link/__manifest__.py | 2 +- .../models/mrp_production.py | 10 +++++++++- .../models/purchase_order.py | 7 ++++--- .../models/stock_picking.py | 2 +- .../readme/DESCRIPTION.rst | 2 +- .../tests/test_mrp_subcontracting_purchase_link.py | 7 ++++--- .../views/mrp_production_views.xml | 1 + 7 files changed, 21 insertions(+), 10 deletions(-) diff --git a/mrp_subcontracting_purchase_link/__manifest__.py b/mrp_subcontracting_purchase_link/__manifest__.py index ec7ee60da68..2be2c429ced 100644 --- a/mrp_subcontracting_purchase_link/__manifest__.py +++ b/mrp_subcontracting_purchase_link/__manifest__.py @@ -1,7 +1,7 @@ # Copyright 2020 Quartile Limited # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). { - "name": "Link Purchase Order to Subcontract Productions", + "name": "Link Purchase Order Line to Subcontract Productions", "version": "14.0.1.0.1", "category": "Manufacturing", "license": "LGPL-3", diff --git a/mrp_subcontracting_purchase_link/models/mrp_production.py b/mrp_subcontracting_purchase_link/models/mrp_production.py index 60883d41120..7b7be5851af 100644 --- a/mrp_subcontracting_purchase_link/models/mrp_production.py +++ b/mrp_subcontracting_purchase_link/models/mrp_production.py @@ -8,5 +8,13 @@ class MrpProduction(models.Model): _inherit = "mrp.production" purchase_order_id = fields.Many2one( - "purchase.order", "Subcontract Purchase Order", readonly=True + "purchase.order", + "Subcontract Purchase Order", + readonly=True, + related="purchase_line_id.order_id", + store=True, + ) + + purchase_line_id = fields.Many2one( + "purchase.order.line", "Subcontract Purchase Order Line", readonly=True ) diff --git a/mrp_subcontracting_purchase_link/models/purchase_order.py b/mrp_subcontracting_purchase_link/models/purchase_order.py index cf7f4f8d8a3..f3ff3c41f93 100644 --- a/mrp_subcontracting_purchase_link/models/purchase_order.py +++ b/mrp_subcontracting_purchase_link/models/purchase_order.py @@ -7,15 +7,16 @@ class PurchaseOrder(models.Model): _inherit = "purchase.order" + subcontract_production_count = fields.Integer( + compute="_compute_subcontract_production_count" + ) + subcontract_production_ids = fields.One2many( "mrp.production", "purchase_order_id", "Subcontract Production Orders", readonly=True, ) - subcontract_production_count = fields.Integer( - compute="_compute_subcontract_production_count" - ) def action_view_mrp(self): productions = self.subcontract_production_ids diff --git a/mrp_subcontracting_purchase_link/models/stock_picking.py b/mrp_subcontracting_purchase_link/models/stock_picking.py index 805b6a49fb8..46c3738ed86 100644 --- a/mrp_subcontracting_purchase_link/models/stock_picking.py +++ b/mrp_subcontracting_purchase_link/models/stock_picking.py @@ -10,5 +10,5 @@ class StockPicking(models.Model): def _prepare_subcontract_mo_vals(self, subcontract_move, bom): vals = super()._prepare_subcontract_mo_vals(subcontract_move, bom) if subcontract_move.purchase_line_id: - vals["purchase_order_id"] = subcontract_move.purchase_line_id.order_id.id + vals["purchase_line_id"] = subcontract_move.purchase_line_id.id return vals diff --git a/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst b/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst index 64ce6d2f37b..8e40f40d075 100644 --- a/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst +++ b/mrp_subcontracting_purchase_link/readme/DESCRIPTION.rst @@ -1,4 +1,4 @@ This module does the following: -- Extends _prepare_subcontract_mo_vals() and adds the purchase order reference to the subcontracted manufacturing orders. +- Extends _prepare_subcontract_mo_vals() and adds the purchase order line reference to the subcontracted manufacturing orders. - Adds an action button in the purchase order form view to open related subcontracted manufacturing orders. diff --git a/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py b/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py index 014a9350c74..ea2929a4cd1 100644 --- a/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py +++ b/mrp_subcontracting_purchase_link/tests/test_mrp_subcontracting_purchase_link.py @@ -44,8 +44,8 @@ def test_01_prepare_subcontract_mo_vals(self): self.assertEqual( picking._prepare_subcontract_mo_vals( move, move._get_subcontract_bom() - )["purchase_order_id"], - purchase_order.id, + )["purchase_line_id"], + purchase_order.order_line.id, ) def test_02_compute_subcontract_production_count(self): @@ -62,7 +62,8 @@ def test_03_action_view_mrp(self): action["views"], [(self.env.ref("mrp.mrp_production_form_view").id, "form")] ) self.assertEqual( - action["res_id"], purchase_order1.subcontract_production_ids[0].id + action["res_id"], + purchase_order1.subcontract_production_ids[0].id, ) action = purchase_order2.action_view_mrp() self.assertEqual( diff --git a/mrp_subcontracting_purchase_link/views/mrp_production_views.xml b/mrp_subcontracting_purchase_link/views/mrp_production_views.xml index 4e4761a3a72..04467c1b1c1 100644 --- a/mrp_subcontracting_purchase_link/views/mrp_production_views.xml +++ b/mrp_subcontracting_purchase_link/views/mrp_production_views.xml @@ -7,6 +7,7 @@ + From 6fff7b0c137a12f6efe5e4333ef0dc12e1fda877 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Fri, 24 Feb 2023 16:45:10 +0100 Subject: [PATCH 07/13] [IMP] add migration script --- mrp_subcontracting_purchase_link/README.rst | 8 ++-- .../__manifest__.py | 2 +- .../i18n/mrp_subcontracting_purchase_link.pot | 5 +++ .../migrations/14.0.2.0.0/post-migration.py | 38 +++++++++++++++++++ .../static/description/index.html | 8 ++-- 5 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 mrp_subcontracting_purchase_link/migrations/14.0.2.0.0/post-migration.py diff --git a/mrp_subcontracting_purchase_link/README.rst b/mrp_subcontracting_purchase_link/README.rst index dadafe2cb13..548ea602d8f 100644 --- a/mrp_subcontracting_purchase_link/README.rst +++ b/mrp_subcontracting_purchase_link/README.rst @@ -1,6 +1,6 @@ -============================================== -Link Purchase Order to Subcontract Productions -============================================== +=================================================== +Link Purchase Order Line to Subcontract Productions +=================================================== .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! @@ -27,7 +27,7 @@ Link Purchase Order to Subcontract Productions This module does the following: -- Extends _prepare_subcontract_mo_vals() and adds the purchase order reference to the subcontracted manufacturing orders. +- Extends _prepare_subcontract_mo_vals() and adds the purchase order line reference to the subcontracted manufacturing orders. - Adds an action button in the purchase order form view to open related subcontracted manufacturing orders. **Table of contents** diff --git a/mrp_subcontracting_purchase_link/__manifest__.py b/mrp_subcontracting_purchase_link/__manifest__.py index 2be2c429ced..6ba26351f59 100644 --- a/mrp_subcontracting_purchase_link/__manifest__.py +++ b/mrp_subcontracting_purchase_link/__manifest__.py @@ -2,7 +2,7 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). { "name": "Link Purchase Order Line to Subcontract Productions", - "version": "14.0.1.0.1", + "version": "14.0.2.0.0", "category": "Manufacturing", "license": "LGPL-3", "author": "Quartile Limited, Odoo Community Association (OCA)", diff --git a/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot b/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot index 0c6de9cd60b..8dbfce0db94 100644 --- a/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot +++ b/mrp_subcontracting_purchase_link/i18n/mrp_subcontracting_purchase_link.pot @@ -64,6 +64,11 @@ msgstr "" msgid "Subcontract Purchase Order" msgstr "" +#. module: mrp_subcontracting_purchase_link +#: model:ir.model.fields,field_description:mrp_subcontracting_purchase_link.field_mrp_production__purchase_line_id +msgid "Subcontract Purchase Order Line" +msgstr "" + #. module: mrp_subcontracting_purchase_link #: model:ir.model,name:mrp_subcontracting_purchase_link.model_stock_picking msgid "Transfer" diff --git a/mrp_subcontracting_purchase_link/migrations/14.0.2.0.0/post-migration.py b/mrp_subcontracting_purchase_link/migrations/14.0.2.0.0/post-migration.py new file mode 100644 index 00000000000..12c705777c3 --- /dev/null +++ b/mrp_subcontracting_purchase_link/migrations/14.0.2.0.0/post-migration.py @@ -0,0 +1,38 @@ +import logging + +_logger = logging.getLogger(__name__) + + +def update_po_line_in_mrp_production(cr): + """ """ + _logger.info("Updating PO line in MRP production") + cr.execute( + """ + UPDATE mrp_production + SET + purchase_line_id = Q.purchase_line_id, + purchase_order_id = Q.purchase_id + FROM ( + SELECT po_sm.purchase_line_id, mo_sm.production_id, po.id as purchase_id + FROM stock_move as po_sm + INNER JOIN stock_move_move_rel as rel + ON rel.move_dest_id = po_sm.id + INNER JOIN stock_move as mo_sm + ON mo_sm.id = rel.move_orig_id + INNER JOIN purchase_order_line as pol + ON pol.id = po_sm.purchase_line_id + INNER JOIN purchase_order as po + ON po.id = pol.order_id + where po_sm.is_subcontract = true + AND po_sm.purchase_line_id is not null + AND mo_sm.production_id is not null + ) AS Q + WHERE mrp_production.id = Q.production_id + """ + ) + + +def migrate(cr, version=None): + if not version: + return + update_po_line_in_mrp_production(cr) diff --git a/mrp_subcontracting_purchase_link/static/description/index.html b/mrp_subcontracting_purchase_link/static/description/index.html index 9c24ef7a463..a07d5137fd3 100644 --- a/mrp_subcontracting_purchase_link/static/description/index.html +++ b/mrp_subcontracting_purchase_link/static/description/index.html @@ -4,7 +4,7 @@ -Link Purchase Order to Subcontract Productions +Link Purchase Order Line to Subcontract Productions -