From d187c45b271002361bed385f4bf89f28d84bff8b 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 000000000..0650744f6 --- /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 000000000..b56d55293 --- /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 000000000..6aacb7531 --- /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 000000000..3e5b70b1f --- /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 000000000..b31cef321 --- /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 000000000..e2013009c --- /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 000000000..71fa3fc06 --- /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 000000000..e8d23af43 --- /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 000000000..d29f19910 --- /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 a7995dc5657a2f404d4d5169b9db8b2c5612e4e9 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 000000000..3a7a339f2 --- /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 a2ebe248d078dc64832da7e12a60be12c1bd421c 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 000000000..7474954fb --- /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 000000000..d3b967144 --- /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 5fd6e0557832f7a48ab9a4c25783a133abd8480e 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 36ef97e7c1ff3a129e311a56c7ea3541fc6b6532 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 3e5b70b1f..70d23ba7d 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 a34266f4f25d5a49cf34e05502f0f81eec39df08 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 b56d55293..bdf6b7ea6 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 47acc9f1f0095bdf9b52286e0199552a3736dc09 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 bdf6b7ea6..44937dc1e 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 b1cfe8100cfec02182c0bb9e39659aceb2f17581 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 44937dc1e..88e4f67ac 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 5c3bbd1626558af4250127568bd5ed782355b651 Mon Sep 17 00:00:00 2001 From: nicolas Date: Wed, 28 Dec 2022 15:49:58 -0300 Subject: [PATCH 09/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 88e4f67ac..25ebdf43e 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 70d23ba7d..02df5ff1b 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 d29f19910..886cb4e18 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 31a40d23b0fba1210c20b0a3e6c03c655cdd8226 Mon Sep 17 00:00:00 2001 From: Bruno Zanotti Date: Fri, 17 May 2024 16:30:50 -0300 Subject: [PATCH 10/11] [IMP] sale_stock_product_pack: pre-commit execution --- sale_stock_product_pack/README.rst | 46 ++++++++-------- sale_stock_product_pack/pyproject.toml | 3 ++ .../readme/CONTRIBUTORS.md | 3 ++ .../readme/CONTRIBUTORS.rst | 4 -- .../{DESCRIPTION.rst => DESCRIPTION.md} | 7 +-- sale_stock_product_pack/readme/ROADMAP.md | 2 + sale_stock_product_pack/readme/ROADMAP.rst | 2 - .../static/description/index.html | 54 ++++++++++--------- 8 files changed, 65 insertions(+), 56 deletions(-) create mode 100644 sale_stock_product_pack/pyproject.toml create mode 100644 sale_stock_product_pack/readme/CONTRIBUTORS.md delete mode 100644 sale_stock_product_pack/readme/CONTRIBUTORS.rst rename sale_stock_product_pack/readme/{DESCRIPTION.rst => DESCRIPTION.md} (58%) create mode 100644 sale_stock_product_pack/readme/ROADMAP.md delete mode 100644 sale_stock_product_pack/readme/ROADMAP.rst diff --git a/sale_stock_product_pack/README.rst b/sale_stock_product_pack/README.rst index 7474954fb..b68cb52a6 100644 --- a/sale_stock_product_pack/README.rst +++ b/sale_stock_product_pack/README.rst @@ -2,10 +2,13 @@ Sale Stock Product Pack ======================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:c81e7b28f443c2245ae020a601f05690394a2d93dbdcd6da083db3bc63784d4e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -14,21 +17,22 @@ Sale Stock Product Pack :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 + :target: https://github.com/OCA/product-pack/tree/17.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 + :target: https://translation.odoo-community.org/projects/product-pack-17-0/product-pack-17-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 +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-pack&target_branch=17.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| -This modules adds compatibility of product packs with sales and stock altogether: +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. +- Correctly compute delivered quantities for the different types of + packs so they can be properly invoiced when the pack is storable. **Table of contents** @@ -38,16 +42,16 @@ This modules adds compatibility of product packs with sales and stock altogether Known issues / Roadmap ====================== -* Non detailed packs aren't yet supported by stock_product_pack, so no support for them - either in this module. +- 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 `_. +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. @@ -55,20 +59,20 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* `Tecnativa `_: +- `Tecnativa `__: - * Ernesto Tejeda - * Pedro M. Baeza + - Ernesto Tejeda + - Pedro M. Baeza Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -88,6 +92,6 @@ Current `maintainer `__: |maintainer-chienandalu| -This module is part of the `OCA/product-pack `_ project on GitHub. +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/pyproject.toml b/sale_stock_product_pack/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/sale_stock_product_pack/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/sale_stock_product_pack/readme/CONTRIBUTORS.md b/sale_stock_product_pack/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..dc534b9df --- /dev/null +++ b/sale_stock_product_pack/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Tecnativa](https://www.tecnativa.com): + - Ernesto Tejeda + - Pedro M. Baeza diff --git a/sale_stock_product_pack/readme/CONTRIBUTORS.rst b/sale_stock_product_pack/readme/CONTRIBUTORS.rst deleted file mode 100644 index b31cef321..000000000 --- a/sale_stock_product_pack/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,4 +0,0 @@ -* `Tecnativa `_: - - * Ernesto Tejeda - * Pedro M. Baeza diff --git a/sale_stock_product_pack/readme/DESCRIPTION.rst b/sale_stock_product_pack/readme/DESCRIPTION.md similarity index 58% rename from sale_stock_product_pack/readme/DESCRIPTION.rst rename to sale_stock_product_pack/readme/DESCRIPTION.md index e2013009c..114678ae3 100644 --- a/sale_stock_product_pack/readme/DESCRIPTION.rst +++ b/sale_stock_product_pack/readme/DESCRIPTION.md @@ -1,4 +1,5 @@ -This modules adds compatibility of product packs with sales and stock altogether: +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. +- 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.md b/sale_stock_product_pack/readme/ROADMAP.md new file mode 100644 index 000000000..82508c0b5 --- /dev/null +++ b/sale_stock_product_pack/readme/ROADMAP.md @@ -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/readme/ROADMAP.rst b/sale_stock_product_pack/readme/ROADMAP.rst deleted file mode 100644 index 71fa3fc06..000000000 --- a/sale_stock_product_pack/readme/ROADMAP.rst +++ /dev/null @@ -1,2 +0,0 @@ -* 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/static/description/index.html b/sale_stock_product_pack/static/description/index.html index d3b967144..c9ea2c306 100644 --- a/sale_stock_product_pack/static/description/index.html +++ b/sale_stock_product_pack/static/description/index.html @@ -1,20 +1,19 @@ - - + Sale Stock Product Pack