diff --git a/sale_order_secondary_unit/README.rst b/sale_order_secondary_unit/README.rst index c0da61d8b61e..e26e77906191 100644 --- a/sale_order_secondary_unit/README.rst +++ b/sale_order_secondary_unit/README.rst @@ -17,19 +17,19 @@ Sale Order Secondary Unit :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/sale-workflow/tree/15.0/sale_order_secondary_unit + :target: https://github.com/OCA/sale-workflow/tree/17.0/sale_order_secondary_unit :alt: OCA/sale-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/sale-workflow-15-0/sale-workflow-15-0-sale_order_secondary_unit + :target: https://translation.odoo-community.org/projects/sale-workflow-17-0/sale-workflow-17-0-sale_order_secondary_unit :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module extends the functionality of sale orders to allow sale products in -secondary unit of distinct category. +This module extends the functionality of sale orders to allow sale +products in secondary unit of distinct category. **Table of contents** @@ -41,7 +41,7 @@ Configuration To configure this module, you need to: -#. Go to *Sales > Configuration > Products > Secondary Units of Measure* +1. Go to *Sales > Configuration > Products > Secondary Units of Measure* to manage all the 'Secondary Units of Measure' in the system. Usage @@ -49,11 +49,12 @@ Usage To use this module you need to: -#. Go to a *Product > General Information tab*. -#. Create any record in "Secondary unit of measure". -#. Set the conversion factor. -#. Go to *Sales > Quotation > Create*. -#. Change quantities in line and secondary unit (produc_qty will be change). +1. Go to a *Product > General Information tab*. +2. Create any record in "Secondary unit of measure". +3. Set the conversion factor. +4. Go to *Sales > Quotation > Create*. +5. Change quantities in line and secondary unit (produc_qty will be + change). Bug Tracker =========== @@ -61,7 +62,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -69,25 +70,25 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* Tony Gu -* Alexei Rivera -* Kevin Roche -* `Tecnativa `_: +- Tony Gu +- Alexei Rivera +- Kevin Roche +- `Tecnativa `__: - * Carlos Dauden - * Sergio Teruel - * Ernesto Tejeda - * Pedro M. Baeza + - Carlos Dauden + - Sergio Teruel + - Ernesto Tejeda + - Pedro M. Baeza Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -99,6 +100,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/sale-workflow `_ project on GitHub. +This module is part of the `OCA/sale-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_order_secondary_unit/__manifest__.py b/sale_order_secondary_unit/__manifest__.py index e3d32b0d9b60..c960737da8bf 100644 --- a/sale_order_secondary_unit/__manifest__.py +++ b/sale_order_secondary_unit/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Order Secondary Unit", "summary": "Sale product in a secondary unit", - "version": "15.0.2.1.0", + "version": "17.0.1.0.0", "development_status": "Production/Stable", "category": "Sale", "website": "https://github.com/OCA/sale-workflow", diff --git a/sale_order_secondary_unit/models/product_template.py b/sale_order_secondary_unit/models/product_template.py index 03e8b85f0c5d..7f893238112a 100644 --- a/sale_order_secondary_unit/models/product_template.py +++ b/sale_order_secondary_unit/models/product_template.py @@ -61,9 +61,9 @@ def onchange_sale_secondary_uom_id(self): @api.model_create_multi def create(self, vals_list): - templates = super(ProductTemplate, self).create(vals_list) + templates = super().create(vals_list) # This is needed to set given values to first variant after creation - for template, vals in zip(templates, vals_list): + for template, vals in zip(templates, vals_list, strict=True): related_vals = {} if vals.get("sale_secondary_uom_id"): related_vals["sale_secondary_uom_id"] = vals["sale_secondary_uom_id"] diff --git a/sale_order_secondary_unit/models/sale_order.py b/sale_order_secondary_unit/models/sale_order.py index 935dd50cf6a3..8fc1bd4fc51b 100644 --- a/sale_order_secondary_unit/models/sale_order.py +++ b/sale_order_secondary_unit/models/sale_order.py @@ -17,35 +17,37 @@ class SaleOrderLine(models.Model): compute="_compute_secondary_uom_unit_price", ) - product_uom_qty = fields.Float( - store=True, readonly=False, compute="_compute_product_uom_qty", copy=True - ) + product_uom_qty = fields.Float(copy=True) - @api.depends("secondary_uom_qty", "secondary_uom_id", "product_uom_qty") + @api.depends( + "display_type", + "product_id", + "product_packaging_qty", + "secondary_uom_qty", + "secondary_uom_id", + "product_uom_qty", + ) def _compute_product_uom_qty(self): - self._compute_helper_target_field_qty() + res = super()._compute_product_uom_qty() + for line in self: + line._compute_helper_target_field_qty() + return res - @api.onchange("product_uom") - def onchange_product_uom_for_secondary(self): - self._onchange_helper_product_uom_for_secondary() + @api.depends("product_id") + def _compute_product_uom(self): + res = super()._compute_product_uom() + for line in self: + line._onchange_helper_product_uom_for_secondary() + return res @api.onchange("product_id") - def product_id_change(self): - """ - If default sales secondary unit set on product, put on secondary - quantity 1 for being the default quantity. We override this method, - that is the one that sets by default 1 on the other quantity with that - purpose. - """ - res = super().product_id_change() - line_uom_qty = self.product_uom_qty - self.secondary_uom_id = self.product_id.sale_secondary_uom_id - if self.product_id.sale_secondary_uom_id: - if line_uom_qty == 1.0: + def _onchange_product_id_warning(self): + res = super()._onchange_product_id_warning() + if self.product_id: + self.secondary_uom_id = self.product_id.sale_secondary_uom_id + if self.product_uom_qty == 1.0: self.secondary_uom_qty = 1.0 - self.onchange_product_uom_for_secondary() - else: - self.product_uom_qty = line_uom_qty + self._onchange_helper_product_uom_for_secondary() return res @api.depends("secondary_uom_qty", "product_uom_qty", "price_unit") diff --git a/sale_order_secondary_unit/pyproject.toml b/sale_order_secondary_unit/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/sale_order_secondary_unit/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/sale_order_secondary_unit/readme/CONFIGURE.md b/sale_order_secondary_unit/readme/CONFIGURE.md new file mode 100644 index 000000000000..4a98897fec3a --- /dev/null +++ b/sale_order_secondary_unit/readme/CONFIGURE.md @@ -0,0 +1,5 @@ +To configure this module, you need to: + +1. Go to *Sales \> Configuration \> Products \> Secondary Units of + Measure* to manage all the 'Secondary Units of Measure' in the + system. diff --git a/sale_order_secondary_unit/readme/CONFIGURE.rst b/sale_order_secondary_unit/readme/CONFIGURE.rst deleted file mode 100644 index 4a94840f4dbb..000000000000 --- a/sale_order_secondary_unit/readme/CONFIGURE.rst +++ /dev/null @@ -1,4 +0,0 @@ -To configure this module, you need to: - -#. Go to *Sales > Configuration > Products > Secondary Units of Measure* - to manage all the 'Secondary Units of Measure' in the system. diff --git a/sale_order_secondary_unit/readme/CONTRIBUTORS.md b/sale_order_secondary_unit/readme/CONTRIBUTORS.md new file mode 100644 index 000000000000..2092c8e64b44 --- /dev/null +++ b/sale_order_secondary_unit/readme/CONTRIBUTORS.md @@ -0,0 +1,8 @@ +- Tony Gu \<\> +- Alexei Rivera \<\> +- Kevin Roche \<\> +- [Tecnativa](https://www.tecnativa.com): + - Carlos Dauden + - Sergio Teruel + - Ernesto Tejeda + - Pedro M. Baeza diff --git a/sale_order_secondary_unit/readme/CONTRIBUTORS.rst b/sale_order_secondary_unit/readme/CONTRIBUTORS.rst deleted file mode 100644 index cb9aa25b4339..000000000000 --- a/sale_order_secondary_unit/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,9 +0,0 @@ -* Tony Gu -* Alexei Rivera -* Kevin Roche -* `Tecnativa `_: - - * Carlos Dauden - * Sergio Teruel - * Ernesto Tejeda - * Pedro M. Baeza diff --git a/sale_order_secondary_unit/readme/DESCRIPTION.rst b/sale_order_secondary_unit/readme/DESCRIPTION.md similarity index 55% rename from sale_order_secondary_unit/readme/DESCRIPTION.rst rename to sale_order_secondary_unit/readme/DESCRIPTION.md index e7ffecea1422..a83fc08e94b9 100644 --- a/sale_order_secondary_unit/readme/DESCRIPTION.rst +++ b/sale_order_secondary_unit/readme/DESCRIPTION.md @@ -1,2 +1,2 @@ -This module extends the functionality of sale orders to allow sale products in -secondary unit of distinct category. +This module extends the functionality of sale orders to allow sale +products in secondary unit of distinct category. diff --git a/sale_order_secondary_unit/readme/USAGE.md b/sale_order_secondary_unit/readme/USAGE.md new file mode 100644 index 000000000000..086ac4843a94 --- /dev/null +++ b/sale_order_secondary_unit/readme/USAGE.md @@ -0,0 +1,8 @@ +To use this module you need to: + +1. Go to a *Product \> General Information tab*. +2. Create any record in "Secondary unit of measure". +3. Set the conversion factor. +4. Go to *Sales \> Quotation \> Create*. +5. Change quantities in line and secondary unit (produc_qty will be + change). diff --git a/sale_order_secondary_unit/readme/USAGE.rst b/sale_order_secondary_unit/readme/USAGE.rst deleted file mode 100644 index bd5f56e47841..000000000000 --- a/sale_order_secondary_unit/readme/USAGE.rst +++ /dev/null @@ -1,7 +0,0 @@ -To use this module you need to: - -#. Go to a *Product > General Information tab*. -#. Create any record in "Secondary unit of measure". -#. Set the conversion factor. -#. Go to *Sales > Quotation > Create*. -#. Change quantities in line and secondary unit (produc_qty will be change). diff --git a/sale_order_secondary_unit/static/description/index.html b/sale_order_secondary_unit/static/description/index.html index bd08c7fa09d6..10b1ec27cc45 100644 --- a/sale_order_secondary_unit/static/description/index.html +++ b/sale_order_secondary_unit/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -368,9 +369,9 @@

Sale Order Secondary Unit

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:d870b4aa2365687416065e0cd5aef2754fc39659c2bef870bbf907d7d5b0cd6c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Production/Stable License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runboat

-

This module extends the functionality of sale orders to allow sale products in -secondary unit of distinct category.

+

Production/Stable License: AGPL-3 OCA/sale-workflow Translate me on Weblate Try me on Runboat

+

This module extends the functionality of sale orders to allow sale +products in secondary unit of distinct category.

Table of contents

    @@ -401,7 +402,8 @@

    Usage

  • Create any record in “Secondary unit of measure”.
  • Set the conversion factor.
  • Go to Sales > Quotation > Create.
  • -
  • Change quantities in line and secondary unit (produc_qty will be change).
  • +
  • Change quantities in line and secondary unit (produc_qty will be +change).
@@ -409,7 +411,7 @@

Bug Tracker

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

+feedback.

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

@@ -438,11 +440,13 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

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

-

This module is part of the OCA/sale-workflow project on GitHub.

+

This module is part of the OCA/sale-workflow project on GitHub.

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

diff --git a/sale_order_secondary_unit/tests/test_sale_order_secondary_unit.py b/sale_order_secondary_unit/tests/test_sale_order_secondary_unit.py index 5cf4076f3b40..d839a0cd9deb 100644 --- a/sale_order_secondary_unit/tests/test_sale_order_secondary_unit.py +++ b/sale_order_secondary_unit/tests/test_sale_order_secondary_unit.py @@ -21,9 +21,6 @@ def setUpClass(cls): cls.product_uom_kg = cls.env.ref("uom.product_uom_kgm") cls.product_uom_gram = cls.env.ref("uom.product_uom_gram") cls.product_uom_unit = cls.env.ref("uom.product_uom_unit") - cls.price_list = cls.env["product.pricelist"].create( - {"name": "price list for test"} - ) cls.product = cls.env["product.product"].create( { "name": "test", @@ -54,7 +51,6 @@ def setUpClass(cls): cls.partner = cls.env["res.partner"].create({"name": "test - partner"}) with Form(cls.env["sale.order"]) as order_form: order_form.partner_id = cls.partner - order_form.pricelist_id = cls.price_list with order_form.order_line.new() as line_form: line_form.product_id = cls.product line_form.product_uom_qty = 1 @@ -75,7 +71,7 @@ def test_onchange_secondary_unit_product_uom_qty(self): self.assertEqual(self.order.order_line.secondary_uom_qty, 7.0) def test_default_secondary_unit(self): - self.order.order_line.product_id_change() + self.order.order_line._onchange_product_id_warning() self.assertEqual(self.order.order_line.secondary_uom_id, self.secondary_unit) def test_onchange_order_product_uom(self): diff --git a/sale_order_secondary_unit/views/product_views.xml b/sale_order_secondary_unit/views/product_views.xml index 960783fd6eeb..db179bce37bd 100644 --- a/sale_order_secondary_unit/views/product_views.xml +++ b/sale_order_secondary_unit/views/product_views.xml @@ -6,10 +6,13 @@ Product template Secondary Unit product.template - - + diff --git a/sale_order_secondary_unit/views/sale_order_views.xml b/sale_order_secondary_unit/views/sale_order_views.xml index 69136384ac6b..2f8f3d4b562c 100644 --- a/sale_order_secondary_unit/views/sale_order_views.xml +++ b/sale_order_secondary_unit/views/sale_order_views.xml @@ -6,21 +6,21 @@ Sale Order Secondary Unit sale.order - -