Skip to content

Commit

Permalink
[MIG] sale_order_secondary_unit: Migration to 17.0
Browse files Browse the repository at this point in the history
[MIG] sale_order_secondary_unit: Fix wrong value for secondary_uom_qty

[IMP] sale_order_secondary_unit: pre-commit auto fixes

[DON'T MERGE] test-requirements.txt

[IMP] sale_order_secondary_unit: Fix test

[IMP] sale_order_secondary_unit: pre-commit auto fixes

[IMP] sale_order_secondary_unit: Fix unit test

[IMP] sale_order_secondary_unit: Fix Odoo test
  • Loading branch information
mmrondon committed Sep 17, 2024
1 parent 3fd7ff2 commit e23e245
Show file tree
Hide file tree
Showing 17 changed files with 116 additions and 98 deletions.
49 changes: 25 additions & 24 deletions sale_order_secondary_unit/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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**

Expand All @@ -41,53 +41,54 @@ 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
=====

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
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/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 <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_secondary_unit%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_secondary_unit%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
~~~~~~~
-------

* Tecnativa

Contributors
~~~~~~~~~~~~
------------

* Tony Gu <[email protected]>
* Alexei Rivera <[email protected]>
* Kevin Roche <[email protected]>
* `Tecnativa <https://www.tecnativa.com>`_:
- Tony Gu <[email protected]>
- Alexei Rivera <[email protected]>
- Kevin Roche <[email protected]>
- `Tecnativa <https://www.tecnativa.com>`__:

* 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.

Expand All @@ -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 <https://github.com/OCA/sale-workflow/tree/15.0/sale_order_secondary_unit>`_ project on GitHub.
This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/17.0/sale_order_secondary_unit>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 1 addition & 1 deletion sale_order_secondary_unit/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
4 changes: 2 additions & 2 deletions sale_order_secondary_unit/models/product_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]

Check warning on line 69 in sale_order_secondary_unit/models/product_template.py

View check run for this annotation

Codecov / codecov/patch

sale_order_secondary_unit/models/product_template.py#L69

Added line #L69 was not covered by tests
Expand Down
48 changes: 25 additions & 23 deletions sale_order_secondary_unit/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
3 changes: 3 additions & 0 deletions sale_order_secondary_unit/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
5 changes: 5 additions & 0 deletions sale_order_secondary_unit/readme/CONFIGURE.md
Original file line number Diff line number Diff line change
@@ -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.
4 changes: 0 additions & 4 deletions sale_order_secondary_unit/readme/CONFIGURE.rst

This file was deleted.

8 changes: 8 additions & 0 deletions sale_order_secondary_unit/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- Tony Gu \<<[email protected]>\>
- Alexei Rivera \<<[email protected]>\>
- Kevin Roche \<<[email protected]>\>
- [Tecnativa](https://www.tecnativa.com):
- Carlos Dauden
- Sergio Teruel
- Ernesto Tejeda
- Pedro M. Baeza
9 changes: 0 additions & 9 deletions sale_order_secondary_unit/readme/CONTRIBUTORS.rst

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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.
8 changes: 8 additions & 0 deletions sale_order_secondary_unit/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -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).
7 changes: 0 additions & 7 deletions sale_order_secondary_unit/readme/USAGE.rst

This file was deleted.

24 changes: 14 additions & 10 deletions sale_order_secondary_unit/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@

/*
:Author: David Goodger ([email protected])
: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.
Expand Down Expand Up @@ -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 }
Expand All @@ -300,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -368,9 +369,9 @@ <h1 class="title">Sale Order Secondary Unit</h1>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d870b4aa2365687416065e0cd5aef2754fc39659c2bef870bbf907d7d5b0cd6c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-workflow/tree/15.0/sale_order_secondary_unit"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-15-0/sale-workflow-15-0-sale_order_secondary_unit"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&amp;target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionality of sale orders to allow sale products in
secondary unit of distinct category.</p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-workflow/tree/17.0/sale_order_secondary_unit"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-17-0/sale-workflow-17-0-sale_order_secondary_unit"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionality of sale orders to allow sale
products in secondary unit of distinct category.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
Expand Down Expand Up @@ -401,15 +402,16 @@ <h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<li>Create any record in “Secondary unit of measure”.</li>
<li>Set the conversion factor.</li>
<li>Go to <em>Sales &gt; Quotation &gt; Create</em>.</li>
<li>Change quantities in line and secondary unit (produc_qty will be change).</li>
<li>Change quantities in line and secondary unit (produc_qty will be
change).</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/sale-workflow/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_secondary_unit%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_secondary_unit%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
Expand Down Expand Up @@ -438,11 +440,13 @@ <h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/sale-workflow/tree/15.0/sale_order_secondary_unit">OCA/sale-workflow</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/sale-workflow/tree/17.0/sale_order_secondary_unit">OCA/sale-workflow</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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
Expand All @@ -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):
Expand Down
7 changes: 5 additions & 2 deletions sale_order_secondary_unit/views/product_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@
<field name="name">Product template Secondary Unit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="groups_id" eval="[(4, ref('uom.group_uom'))]" />
<field name="arch" type="xml">
<field name="uom_id" position="after">
<field name="sale_secondary_uom_id" options="{'no_create': True}" />
<field
name="sale_secondary_uom_id"
options="{'no_create': True}"
groups="uom.group_uom"
/>
</field>
</field>
</record>
Expand Down
Loading

0 comments on commit e23e245

Please sign in to comment.