Skip to content

Commit f05c941

Browse files
committed
[MIG] delivery_carrier_package_measure_required: Migration to 16.0"
1 parent 5f13364 commit f05c941

13 files changed

+122
-75
lines changed

delivery_carrier_package_measure_required/README.rst

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ Delivery Carrier Package Measure Required
1717
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
1818
:alt: License: AGPL-3
1919
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdelivery--carrier-lightgray.png?logo=github
20-
:target: https://github.com/OCA/delivery-carrier/tree/14.0/delivery_carrier_package_measure_required
20+
:target: https://github.com/OCA/delivery-carrier/tree/16.0/delivery_carrier_package_measure_required
2121
:alt: OCA/delivery-carrier
2222
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23-
:target: https://translation.odoo-community.org/projects/delivery-carrier-14-0/delivery-carrier-14-0-delivery_carrier_package_measure_required
23+
:target: https://translation.odoo-community.org/projects/delivery-carrier-16-0/delivery-carrier-16-0-delivery_carrier_package_measure_required
2424
:alt: Translate me on Weblate
2525
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26-
:target: https://runboat.odoo-community.org/builds?repo=OCA/delivery-carrier&target_branch=14.0
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/delivery-carrier&target_branch=16.0
2727
:alt: Try me on Runboat
2828

2929
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -32,7 +32,7 @@ This module adds the possibility to flag some measurements on package to be requ
3232

3333
It depends on the `stock_quant_package_dimension` which adds more dimensions on packages.
3434

35-
The required measurement can be flagged on the product packaging.
35+
The required measurement can be flagged on the package type.
3636

3737
Then the dimension can be set on the wizard displayed by the Put In Pack button.
3838

@@ -49,7 +49,7 @@ Bug Tracker
4949
Bugs are tracked on `GitHub Issues <https://github.com/OCA/delivery-carrier/issues>`_.
5050
In case of trouble, please check there if your issue has already been reported.
5151
If you spotted it first, help us to smash it by providing a detailed and welcomed
52-
`feedback <https://github.com/OCA/delivery-carrier/issues/new?body=module:%20delivery_carrier_package_measure_required%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
52+
`feedback <https://github.com/OCA/delivery-carrier/issues/new?body=module:%20delivery_carrier_package_measure_required%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
5353

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

@@ -79,6 +79,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
7979
mission is to support the collaborative development of Odoo features and
8080
promote its widespread use.
8181

82-
This module is part of the `OCA/delivery-carrier <https://github.com/OCA/delivery-carrier/tree/14.0/delivery_carrier_package_measure_required>`_ project on GitHub.
82+
This module is part of the `OCA/delivery-carrier <https://github.com/OCA/delivery-carrier/tree/16.0/delivery_carrier_package_measure_required>`_ project on GitHub.
8383

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

delivery_carrier_package_measure_required/__manifest__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Allow the configuration of which package measurements are required
55
on a delivery carrier basis.
66
""",
7-
"version": "14.0.1.0.2",
7+
"version": "16.0.1.0.0",
88
"license": "AGPL-3",
99
"author": "Camptocamp, Odoo Community Association (OCA)",
1010
"website": "https://github.com/OCA/delivery-carrier",
@@ -15,7 +15,7 @@
1515
"stock_quant_package_dimension",
1616
],
1717
"data": [
18-
"views/product_packaging.xml",
18+
"views/stock_package_type_views.xml",
1919
"wizard/choose_delivery_package.xml",
2020
],
2121
"installable": True,
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from . import product_packaging
1+
from . import stock_package_type
22
from . import stock_picking
33
from . import stock_quant_package

delivery_carrier_package_measure_required/models/product_packaging.py delivery_carrier_package_measure_required/models/stock_package_type.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
from odoo import fields, models
55

66

7-
class ProductPackaging(models.Model):
8-
_inherit = "product.packaging"
7+
class StockPackageType(models.Model):
8+
_inherit = "stock.package.type"
99

1010
package_height_required = fields.Boolean(string="Height required")
1111
package_length_required = fields.Boolean(string="Length required")

delivery_carrier_package_measure_required/models/stock_picking.py

+20
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,23 @@ def _check_required_package_measurement(self):
1919
def button_validate(self):
2020
self._check_required_package_measurement()
2121
return super().button_validate()
22+
23+
def _put_in_pack(self, move_line_ids, create_package_level=True):
24+
res = super()._put_in_pack(
25+
move_line_ids, create_package_level=create_package_level
26+
)
27+
package_length = self._context.get("choose_delivery_package_length", 0)
28+
package_width = self._context.get("choose_delivery_package_width", 0)
29+
package_height = self._context.get("choose_delivery_package_height", 0)
30+
package_weight = self._context.get("choose_delivery_package_pack_weight", 0)
31+
32+
res.write(
33+
{
34+
"pack_length": package_length,
35+
"width": package_width,
36+
"height": package_height,
37+
"pack_weight": package_weight,
38+
}
39+
)
40+
41+
return res

delivery_carrier_package_measure_required/models/stock_quant_package.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,23 @@
88
class StockQuantPackage(models.Model):
99
_inherit = "stock.quant.package"
1010

11-
length_required = fields.Boolean(related="packaging_id.package_length_required")
12-
width_required = fields.Boolean(related="packaging_id.package_width_required")
13-
height_required = fields.Boolean(related="packaging_id.package_height_required")
14-
weight_required = fields.Boolean(related="packaging_id.package_weight_required")
11+
length_required = fields.Boolean(related="package_type_id.package_length_required")
12+
width_required = fields.Boolean(related="package_type_id.package_width_required")
13+
height_required = fields.Boolean(related="package_type_id.package_height_required")
14+
weight_required = fields.Boolean(related="package_type_id.package_weight_required")
1515

1616
# The boolean field use to check if a dimension is required are intentionally left out.
1717
# To not raise error when changing packaging configuration.
1818
@api.constrains("pack_length", "width", "height", "shipping_weight", "quant_ids")
1919
def _check_required_dimension(self):
2020
ignore_pack_content = self.env.context.get(
21-
"delivery_pkg_measure__ignore_package_content"
21+
"delivery_pkg_measure__ignore_package_content", False
22+
)
23+
force_validation = self.env.context.get(
24+
"delivery_pkg_measure__force_validation_package", False
2225
)
2326
for package in self:
24-
if not ignore_pack_content and not package.quant_ids:
27+
if ignore_pack_content or (not force_validation and not package.quant_ids):
2528
# Only validate a package when it contains goods
2629
continue
2730
required_dimension = []

delivery_carrier_package_measure_required/readme/DESCRIPTION.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ This module adds the possibility to flag some measurements on package to be requ
22

33
It depends on the `stock_quant_package_dimension` which adds more dimensions on packages.
44

5-
The required measurement can be flagged on the product packaging.
5+
The required measurement can be flagged on the package type.
66

77
Then the dimension can be set on the wizard displayed by the Put In Pack button.
88

delivery_carrier_package_measure_required/static/description/index.html

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
<?xml version="1.0" encoding="utf-8"?>
21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
32
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
43
<head>
@@ -369,10 +368,10 @@ <h1 class="title">Delivery Carrier Package Measure Required</h1>
369368
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370369
!! source digest: sha256:f7777a087ca9e2dd463ad3927a690650f61897e30b010b2bfabb71fa72929165
371370
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372-
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.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/delivery-carrier/tree/14.0/delivery_carrier_package_measure_required"><img alt="OCA/delivery-carrier" src="https://img.shields.io/badge/github-OCA%2Fdelivery--carrier-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/delivery-carrier-14-0/delivery-carrier-14-0-delivery_carrier_package_measure_required"><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/delivery-carrier&amp;target_branch=14.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
371+
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.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/delivery-carrier/tree/16.0/delivery_carrier_package_measure_required"><img alt="OCA/delivery-carrier" src="https://img.shields.io/badge/github-OCA%2Fdelivery--carrier-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/delivery-carrier-16-0/delivery-carrier-16-0-delivery_carrier_package_measure_required"><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/delivery-carrier&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373372
<p>This module adds the possibility to flag some measurements on package to be required for delivery.</p>
374373
<p>It depends on the <cite>stock_quant_package_dimension</cite> which adds more dimensions on packages.</p>
375-
<p>The required measurement can be flagged on the product packaging.</p>
374+
<p>The required measurement can be flagged on the package type.</p>
376375
<p>Then the dimension can be set on the wizard displayed by the Put In Pack button.</p>
377376
<p>A check is also done on transfer validation, to ensure that the required measurements are set.</p>
378377
<p><strong>Table of contents</strong></p>
@@ -392,7 +391,7 @@ <h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
392391
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/delivery-carrier/issues">GitHub Issues</a>.
393392
In case of trouble, please check there if your issue has already been reported.
394393
If you spotted it first, help us to smash it by providing a detailed and welcomed
395-
<a class="reference external" href="https://github.com/OCA/delivery-carrier/issues/new?body=module:%20delivery_carrier_package_measure_required%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
394+
<a class="reference external" href="https://github.com/OCA/delivery-carrier/issues/new?body=module:%20delivery_carrier_package_measure_required%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
396395
<p>Do not contact contributors directly about support or help with technical issues.</p>
397396
</div>
398397
<div class="section" id="credits">
@@ -416,7 +415,7 @@ <h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
416415
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
417416
mission is to support the collaborative development of Odoo features and
418417
promote its widespread use.</p>
419-
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/delivery-carrier/tree/14.0/delivery_carrier_package_measure_required">OCA/delivery-carrier</a> project on GitHub.</p>
418+
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/delivery-carrier/tree/16.0/delivery_carrier_package_measure_required">OCA/delivery-carrier</a> project on GitHub.</p>
420419
<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>
421420
</div>
422421
</div>

delivery_carrier_package_measure_required/tests/test_delivery_carrier_package_measure_require.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class TestDeliveryCarrierPackageMeasureRequire(TestPackingCommon):
1212
def setUpClass(cls):
1313
super().setUpClass()
1414
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
15-
cls.normal_carrier = cls.env.ref("delivery.normal_delivery_carrier")
15+
cls.normal_carrier = cls.env.ref("delivery.free_delivery_carrier")
1616
cls.uom_kg = cls.env.ref("uom.product_uom_kgm")
1717
cls.product_aw = cls.env["product.product"].create(
1818
{
@@ -23,7 +23,7 @@ def setUpClass(cls):
2323
"uom_po_id": cls.uom_kg.id,
2424
}
2525
)
26-
cls.packaging = cls.env["product.packaging"].create(
26+
cls.packaging = cls.env["stock.package.type"].create(
2727
{"name": "Test Delivery Packaging"}
2828
)
2929
cls.env["stock.quant"]._update_available_quantity(
@@ -38,12 +38,13 @@ def setUpClass(cls):
3838
"carrier_id": cls.normal_carrier.id,
3939
}
4040
)
41-
cls.env["stock.move.line"].create(
41+
cls.env["stock.move"].create(
4242
{
43+
"name": cls.product_aw.name,
4344
"product_id": cls.product_aw.id,
44-
"product_uom_id": cls.uom_kg.id,
45+
"product_uom_qty": 5,
46+
"product_uom": cls.uom_kg.id,
4547
"picking_id": cls.pick.id,
46-
"qty_done": 5,
4748
"location_id": cls.stock_location.id,
4849
"location_dest_id": cls.customer_location.id,
4950
}
@@ -58,14 +59,16 @@ def setUpClass(cls):
5859
)
5960
pack_wiz.action_put_in_pack()
6061
cls.package = cls.pick.move_line_ids.mapped("result_package_id")
61-
cls.package.packaging_id = cls.packaging
62+
cls.package.package_type_id = cls.packaging
6263

6364
def test_force_check_required_measurement(self):
6465
self.packaging.package_length_required = True
6566
# Picking is not done no validation error
6667
self.pick._check_required_package_measurement()
6768
# Force validation error raised
68-
pick = self.pick.with_context(delivery_pkg_measure__ignore_package_content=True)
69+
pick = self.pick.with_context(
70+
delivery_pkg_measure__force_validation_package=True
71+
)
6972
with self.assertRaises(ValidationError):
7073
pick.button_validate()
7174

delivery_carrier_package_measure_required/views/product_packaging.xml

-21
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<odoo>
3+
<record id="view_stock_package_type_form_delivery_inherit" model="ir.ui.view">
4+
<field name="name">stock.package.type.form.delivery</field>
5+
<field name="model">stock.package.type</field>
6+
<field name="inherit_id" ref="delivery.stock_package_type_form_delivery" />
7+
<field name="arch" type="xml">
8+
<xpath expr="//group[@name='delivery']" position="inside">
9+
<group
10+
name="carrier_required_mesaurement"
11+
string="Carrier Required Measurements"
12+
>
13+
<field name="package_length_required" />
14+
<field name="package_width_required" />
15+
<field name="package_height_required" />
16+
<field name="package_weight_required" />
17+
</group>
18+
</xpath>
19+
</field>
20+
</record>
21+
</odoo>
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,57 @@
11
# Copyright 2022 Camptocamp SA
22
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
33

4-
from odoo import fields, models
4+
from odoo import api, fields, models
55

66

77
class ChooseDeliveryPackage(models.TransientModel):
88
_inherit = "choose.delivery.package"
99

10-
pick_name = fields.Char(related="picking_id.name")
10+
@api.depends("delivery_package_type_id")
11+
def _compute_dimension_uom_name(self):
12+
length_uom_id = self.env[
13+
"product.template"
14+
]._get_length_uom_id_from_ir_config_parameter()
15+
for package in self:
16+
package.dimension_uom_name = length_uom_id.name
1117

12-
def _default_dimension_uom_id(self):
13-
val = self.env["product.template"]._get_length_uom_id_from_ir_config_parameter()
14-
return val
18+
@api.depends("delivery_package_type_id")
19+
def _compute_dimension(self):
20+
for package in self:
21+
package.package_length = (
22+
package.delivery_package_type_id.packaging_length or 0
23+
)
24+
package.package_width = package.delivery_package_type_id.width or 0
25+
package.package_height = package.delivery_package_type_id.height or 0
1526

16-
package_height = fields.Integer()
17-
package_length = fields.Integer()
18-
package_width = fields.Integer()
19-
dimension_uom_id = fields.Many2one(
20-
"uom.uom",
21-
default=lambda self: self._default_dimension_uom_id(),
27+
package_length = fields.Integer(
28+
compute="_compute_dimension", store=True, readonly=False
2229
)
23-
dimension_uom_name = fields.Char(related="dimension_uom_id.name")
30+
package_width = fields.Integer(
31+
compute="_compute_dimension", store=True, readonly=False
32+
)
33+
package_height = fields.Integer(
34+
compute="_compute_dimension", store=True, readonly=False
35+
)
36+
dimension_uom_name = fields.Char(compute="_compute_dimension_uom_name")
2437
package_height_required = fields.Boolean(
25-
related="delivery_packaging_id.package_height_required"
38+
related="delivery_package_type_id.package_height_required"
2639
)
2740
package_length_required = fields.Boolean(
28-
related="delivery_packaging_id.package_length_required"
29-
)
30-
package_weight_required = fields.Boolean(
31-
related="delivery_packaging_id.package_weight_required"
41+
related="delivery_package_type_id.package_length_required"
3242
)
3343
package_width_required = fields.Boolean(
34-
related="delivery_packaging_id.package_width_required"
44+
related="delivery_package_type_id.package_width_required"
3545
)
46+
package_weight_required = fields.Boolean(
47+
related="delivery_package_type_id.package_weight_required"
48+
)
49+
50+
def action_put_in_pack(self):
51+
self = self.with_context(
52+
choose_delivery_package_length=self.package_length,
53+
choose_delivery_package_width=self.package_width,
54+
choose_delivery_package_height=self.package_height,
55+
choose_delivery_package_pack_weight=self.shipping_weight,
56+
)
57+
return super().action_put_in_pack()

0 commit comments

Comments
 (0)