From f5c8f5a9646a099e376db89aad1dfbf2ee6752ac Mon Sep 17 00:00:00 2001 From: david Date: Fri, 16 Jul 2021 15:08:01 +0200 Subject: [PATCH 01/11] [ADD] sale_stock_product_pack: New glue module TT31038 --- sale_stock_product_pack/__init__.py | 1 + sale_stock_product_pack/__manifest__.py | 15 ++++++++ sale_stock_product_pack/models/__init__.py | 1 + sale_stock_product_pack/models/sale_order.py | 30 +++++++++++++++ .../readme/CONTRIBUTORS.rst | 4 ++ .../readme/DESCRIPTION.rst | 4 ++ sale_stock_product_pack/readme/ROADMAP.rst | 2 + sale_stock_product_pack/tests/__init__.py | 1 + .../tests/test_sale_stock_product_pack.py | 38 +++++++++++++++++++ 9 files changed, 96 insertions(+) create mode 100644 sale_stock_product_pack/__init__.py create mode 100644 sale_stock_product_pack/__manifest__.py create mode 100644 sale_stock_product_pack/models/__init__.py create mode 100644 sale_stock_product_pack/models/sale_order.py create mode 100644 sale_stock_product_pack/readme/CONTRIBUTORS.rst create mode 100644 sale_stock_product_pack/readme/DESCRIPTION.rst create mode 100644 sale_stock_product_pack/readme/ROADMAP.rst create mode 100644 sale_stock_product_pack/tests/__init__.py create mode 100644 sale_stock_product_pack/tests/test_sale_stock_product_pack.py diff --git a/sale_stock_product_pack/__init__.py b/sale_stock_product_pack/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/sale_stock_product_pack/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_stock_product_pack/__manifest__.py b/sale_stock_product_pack/__manifest__.py new file mode 100644 index 00000000..b56d5529 --- /dev/null +++ b/sale_stock_product_pack/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2021 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Sale Stock Product Pack", + "summary": "Compatibility module for packs that are storable products", + "version": "13.0.1.0.0", + "development_status": "Beta", + "category": "Sale", + "website": "https://github.com/OCA/product-pack.git", + "author": "Tecnativa, Odoo Community Association (OCA)", + "maintainers": ["chienandalu"], + "license": "AGPL-3", + "depends": ["sale_product_pack", "stock_product_pack"], + "data": [], +} diff --git a/sale_stock_product_pack/models/__init__.py b/sale_stock_product_pack/models/__init__.py new file mode 100644 index 00000000..6aacb753 --- /dev/null +++ b/sale_stock_product_pack/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order diff --git a/sale_stock_product_pack/models/sale_order.py b/sale_stock_product_pack/models/sale_order.py new file mode 100644 index 00000000..3e5b70b1 --- /dev/null +++ b/sale_stock_product_pack/models/sale_order.py @@ -0,0 +1,30 @@ +# Copyright 2021 Tecnativa - David Vidal +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def _compute_qty_delivered(self): + """Compute pack delivered pack quantites according to its components + deliveries""" + super()._compute_qty_delivered() + main_pack_lines = self.filtered("pack_parent_line_id").mapped( + "pack_parent_line_id" + ) + for line in main_pack_lines.filtered( + lambda x: x.qty_delivered_method == "stock_move" + and x.pack_child_line_ids + and x.product_uom_qty + ): + delivered_packs = [] + # We filter non qty lines of editable packs + for pack_line in line.pack_child_line_ids.filtered("product_uom_qty"): + # If a component isn't delivered, the pack isn't as well + if not pack_line.qty_delivered: + delivered_packs.append(0) + break + qty_per_pack = pack_line.product_uom_qty / line.product_uom_qty + delivered_packs.append(pack_line.qty_delivered / qty_per_pack) + line.qty_delivered = min(delivered_packs) diff --git a/sale_stock_product_pack/readme/CONTRIBUTORS.rst b/sale_stock_product_pack/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..b31cef32 --- /dev/null +++ b/sale_stock_product_pack/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Ernesto Tejeda + * Pedro M. Baeza diff --git a/sale_stock_product_pack/readme/DESCRIPTION.rst b/sale_stock_product_pack/readme/DESCRIPTION.rst new file mode 100644 index 00000000..e2013009 --- /dev/null +++ b/sale_stock_product_pack/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This modules adds compatibility of product packs with sales and stock altogether: + +- Correctly compute delivered quantities for the different types of packs so they + can be properly invoiced when the pack is storable. diff --git a/sale_stock_product_pack/readme/ROADMAP.rst b/sale_stock_product_pack/readme/ROADMAP.rst new file mode 100644 index 00000000..71fa3fc0 --- /dev/null +++ b/sale_stock_product_pack/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +* Non detailed packs aren't yet supported by stock_product_pack, so no support for them + either in this module. diff --git a/sale_stock_product_pack/tests/__init__.py b/sale_stock_product_pack/tests/__init__.py new file mode 100644 index 00000000..e8d23af4 --- /dev/null +++ b/sale_stock_product_pack/tests/__init__.py @@ -0,0 +1 @@ +from . import test_sale_stock_product_pack diff --git a/sale_stock_product_pack/tests/test_sale_stock_product_pack.py b/sale_stock_product_pack/tests/test_sale_stock_product_pack.py new file mode 100644 index 00000000..d29f1991 --- /dev/null +++ b/sale_stock_product_pack/tests/test_sale_stock_product_pack.py @@ -0,0 +1,38 @@ +# Copyright 2021 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.tests import Form, common + + +class TestSaleStockProductPack(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.product_pack = cls.env.ref( + "product_pack.product_pack_cpu_detailed_components" + ) + cls.product_pack.type = "product" + cls.product_pack.invoice_policy = "delivery" + cls.product_pack.pack_line_ids.product_id.invoice_policy = "delivery" + sale_form = Form(cls.env["sale.order"]) + sale_form.partner_id = cls.env["res.partner"].create({"name": "Mr. Odoo"}) + with sale_form.order_line.new() as line: + line.product_id = cls.product_pack + line.product_uom_qty = 9 + cls.sale = sale_form.save() + cls.sale.action_confirm() + + def test_delivered_quantities(self): + pack_line = self.sale.order_line.filtered( + lambda x: x.product_id == self.product_pack + ) + self.assertEqual(0, pack_line.qty_delivered) + # Process the picking + for line in self.sale.picking_ids.move_lines.filtered( + lambda x: x.product_id != self.product_pack + ): + line.quantity_done = line.product_uom_qty + self.sale.picking_ids.action_done() + # All components delivered, all the pack quantities should be so + # TODO: it needs to compute twice. In view it does it fine. + self.sale.order_line.mapped("qty_delivered") + self.assertEqual(9, pack_line.qty_delivered) From 78cd3a8326e679346f9197e48612b3be691d1e53 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 30 Jul 2021 18:01:47 +0000 Subject: [PATCH 02/11] [UPD] Update sale_stock_product_pack.pot --- .../i18n/sale_stock_product_pack.pot | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 sale_stock_product_pack/i18n/sale_stock_product_pack.pot diff --git a/sale_stock_product_pack/i18n/sale_stock_product_pack.pot b/sale_stock_product_pack/i18n/sale_stock_product_pack.pot new file mode 100644 index 00000000..3a7a339f --- /dev/null +++ b/sale_stock_product_pack/i18n/sale_stock_product_pack.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_stock_product_pack +# +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: sale_stock_product_pack +#: model:ir.model,name:sale_stock_product_pack.model_sale_order_line +msgid "Sales Order Line" +msgstr "" From 0293f008fd52f6c8ce2b9b55fe90847d385385fa Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 30 Jul 2021 18:07:36 +0000 Subject: [PATCH 03/11] [UPD] README.rst --- sale_stock_product_pack/README.rst | 93 ++++ .../static/description/index.html | 437 ++++++++++++++++++ 2 files changed, 530 insertions(+) create mode 100644 sale_stock_product_pack/README.rst create mode 100644 sale_stock_product_pack/static/description/index.html diff --git a/sale_stock_product_pack/README.rst b/sale_stock_product_pack/README.rst new file mode 100644 index 00000000..7474954f --- /dev/null +++ b/sale_stock_product_pack/README.rst @@ -0,0 +1,93 @@ +======================= +Sale Stock Product Pack +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--pack-lightgray.png?logo=github + :target: https://github.com/OCA/product-pack/tree/13.0/sale_stock_product_pack + :alt: OCA/product-pack +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-pack-13-0/product-pack-13-0-sale_stock_product_pack + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/286/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This modules adds compatibility of product packs with sales and stock altogether: + +- Correctly compute delivered quantities for the different types of packs so they + can be properly invoiced when the pack is storable. + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +* Non detailed packs aren't yet supported by stock_product_pack, so no support for them + either in this module. + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Ernesto Tejeda + * Pedro M. Baeza + +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. + +.. |maintainer-chienandalu| image:: https://github.com/chienandalu.png?size=40px + :target: https://github.com/chienandalu + :alt: chienandalu + +Current `maintainer `__: + +|maintainer-chienandalu| + +This module is part of the `OCA/product-pack `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_stock_product_pack/static/description/index.html b/sale_stock_product_pack/static/description/index.html new file mode 100644 index 00000000..d3b96714 --- /dev/null +++ b/sale_stock_product_pack/static/description/index.html @@ -0,0 +1,437 @@ + + + + + + +Sale Stock Product Pack + + + +
+

Sale Stock Product Pack

+ + +

Beta License: AGPL-3 OCA/product-pack Translate me on Weblate Try me on Runbot

+

This modules adds compatibility of product packs with sales and stock altogether:

+
    +
  • Correctly compute delivered quantities for the different types of packs so they +can be properly invoiced when the pack is storable.
  • +
+

Table of contents

+ +
+

Known issues / Roadmap

+
    +
  • Non detailed packs aren’t yet supported by stock_product_pack, so no support for them +either in this module.
  • +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Ernesto Tejeda
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

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.

+

Current maintainer:

+

chienandalu

+

This module is part of the OCA/product-pack project on GitHub.

+

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

+
+
+
+ + From 5f58efa4e28dc99c0d2b7b1286e53b4494ba69fe Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 30 Jul 2021 18:07:36 +0000 Subject: [PATCH 04/11] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sale_stock_product_pack/static/description/icon.png diff --git a/sale_stock_product_pack/static/description/icon.png b/sale_stock_product_pack/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 d000d1fbe5eedf31f84aafc6206046075d473e49 Mon Sep 17 00:00:00 2001 From: nicolas Date: Thu, 2 Sep 2021 17:49:52 -0300 Subject: [PATCH 05/11] [13.0] [FIX] sale_stock_product_pack: avoid error when the cancel quantity for all components. In case you cancel the quantity for all components of the pack an error occurred, after this change we set the quantity delivery to zero. --- sale_stock_product_pack/models/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_stock_product_pack/models/sale_order.py b/sale_stock_product_pack/models/sale_order.py index 3e5b70b1..70d23ba7 100644 --- a/sale_stock_product_pack/models/sale_order.py +++ b/sale_stock_product_pack/models/sale_order.py @@ -27,4 +27,4 @@ def _compute_qty_delivered(self): break qty_per_pack = pack_line.product_uom_qty / line.product_uom_qty delivered_packs.append(pack_line.qty_delivered / qty_per_pack) - line.qty_delivered = min(delivered_packs) + line.qty_delivered = delivered_packs and min(delivered_packs) or 0.0 From ad98179e429600e7c17f739cee5cad404e7208eb Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 8 Sep 2021 12:55:33 +0000 Subject: [PATCH 06/11] sale_stock_product_pack 13.0.1.0.1 --- sale_stock_product_pack/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_stock_product_pack/__manifest__.py b/sale_stock_product_pack/__manifest__.py index b56d5529..bdf6b7ea 100644 --- a/sale_stock_product_pack/__manifest__.py +++ b/sale_stock_product_pack/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Stock Product Pack", "summary": "Compatibility module for packs that are storable products", - "version": "13.0.1.0.0", + "version": "13.0.1.0.1", "development_status": "Beta", "category": "Sale", "website": "https://github.com/OCA/product-pack.git", From 2cb6f4b482cff1cd2d2abcb6cde224e96ffbfc69 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 5 Jul 2022 21:02:39 +0200 Subject: [PATCH 07/11] Update dotfiles + switch to GH actions --- sale_stock_product_pack/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_stock_product_pack/__manifest__.py b/sale_stock_product_pack/__manifest__.py index bdf6b7ea..44937dc1 100644 --- a/sale_stock_product_pack/__manifest__.py +++ b/sale_stock_product_pack/__manifest__.py @@ -6,7 +6,7 @@ "version": "13.0.1.0.1", "development_status": "Beta", "category": "Sale", - "website": "https://github.com/OCA/product-pack.git", + "website": "https://github.com/OCA/product-pack", "author": "Tecnativa, Odoo Community Association (OCA)", "maintainers": ["chienandalu"], "license": "AGPL-3", From 43989d59722d6c03be8bc8891f89ee6334067720 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 5 Jul 2022 19:23:27 +0000 Subject: [PATCH 08/11] sale_stock_product_pack 13.0.1.0.2 --- sale_stock_product_pack/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_stock_product_pack/__manifest__.py b/sale_stock_product_pack/__manifest__.py index 44937dc1..88e4f67a 100644 --- a/sale_stock_product_pack/__manifest__.py +++ b/sale_stock_product_pack/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Stock Product Pack", "summary": "Compatibility module for packs that are storable products", - "version": "13.0.1.0.1", + "version": "13.0.1.0.2", "development_status": "Beta", "category": "Sale", "website": "https://github.com/OCA/product-pack", From c1e7af0734d5af8952850d2d226a40f39ccdf584 Mon Sep 17 00:00:00 2001 From: nicolas Date: Wed, 28 Dec 2022 15:49:58 -0300 Subject: [PATCH 09/11] [IMP] sale_stock_product_pack: pre-commit execution --- .../odoo/addons/sale_stock_product_pack | 1 + setup/sale_stock_product_pack/setup.py | 6 ++++++ 2 files changed, 7 insertions(+) create mode 120000 setup/sale_stock_product_pack/odoo/addons/sale_stock_product_pack create mode 100644 setup/sale_stock_product_pack/setup.py diff --git a/setup/sale_stock_product_pack/odoo/addons/sale_stock_product_pack b/setup/sale_stock_product_pack/odoo/addons/sale_stock_product_pack new file mode 120000 index 00000000..a433903f --- /dev/null +++ b/setup/sale_stock_product_pack/odoo/addons/sale_stock_product_pack @@ -0,0 +1 @@ +../../../../sale_stock_product_pack \ No newline at end of file diff --git a/setup/sale_stock_product_pack/setup.py b/setup/sale_stock_product_pack/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/sale_stock_product_pack/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 1b252b726436f3cf4bdb55c0e9c79fa88f488d82 Mon Sep 17 00:00:00 2001 From: nicolas Date: Wed, 28 Dec 2022 15:49:58 -0300 Subject: [PATCH 10/11] [MIG] sale_stock_product_pack: Migration to 16.0 --- sale_stock_product_pack/__manifest__.py | 2 +- sale_stock_product_pack/models/sale_order.py | 1 + sale_stock_product_pack/tests/test_sale_stock_product_pack.py | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sale_stock_product_pack/__manifest__.py b/sale_stock_product_pack/__manifest__.py index 88e4f67a..25ebdf43 100644 --- a/sale_stock_product_pack/__manifest__.py +++ b/sale_stock_product_pack/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Stock Product Pack", "summary": "Compatibility module for packs that are storable products", - "version": "13.0.1.0.2", + "version": "16.0.1.0.0", "development_status": "Beta", "category": "Sale", "website": "https://github.com/OCA/product-pack", diff --git a/sale_stock_product_pack/models/sale_order.py b/sale_stock_product_pack/models/sale_order.py index 70d23ba7..02df5ff1 100644 --- a/sale_stock_product_pack/models/sale_order.py +++ b/sale_stock_product_pack/models/sale_order.py @@ -1,5 +1,6 @@ # Copyright 2021 Tecnativa - David Vidal # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# pylint: disable=W8110 from odoo import models diff --git a/sale_stock_product_pack/tests/test_sale_stock_product_pack.py b/sale_stock_product_pack/tests/test_sale_stock_product_pack.py index d29f1991..886cb4e1 100644 --- a/sale_stock_product_pack/tests/test_sale_stock_product_pack.py +++ b/sale_stock_product_pack/tests/test_sale_stock_product_pack.py @@ -27,11 +27,11 @@ def test_delivered_quantities(self): ) self.assertEqual(0, pack_line.qty_delivered) # Process the picking - for line in self.sale.picking_ids.move_lines.filtered( + for line in self.sale.picking_ids.move_ids.filtered( lambda x: x.product_id != self.product_pack ): line.quantity_done = line.product_uom_qty - self.sale.picking_ids.action_done() + self.sale.picking_ids._action_done() # All components delivered, all the pack quantities should be so # TODO: it needs to compute twice. In view it does it fine. self.sale.order_line.mapped("qty_delivered") From 9732b99459e48d5cae56efc1c69feeafd9d2b8f3 Mon Sep 17 00:00:00 2001 From: nicolas Date: Wed, 28 Dec 2022 15:58:40 -0300 Subject: [PATCH 11/11] [DONT MERGE] test-requirements.txt --- test-requirements.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 test-requirements.txt diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000..586f2371 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,3 @@ +odoo-addon-product_pack @ git+https://github.com/OCA/product-pack.git@refs/pull/104/head#subdirectory=setup/product_pack +odoo-addon-sale_product_pack @ git+https://github.com/OCA/product-pack.git@refs/pull/104/head#subdirectory=setup/sale_product_pack +odoo-addon-stock_product_pack @ git+https://github.com/OCA/product-pack.git@refs/pull/104/head#subdirectory=setup/stock_product_pack