Skip to content

Commit c2d36c1

Browse files
committed
[MIG] delivery_carrier_package_measure_required: Migration to 16.0"
1 parent 3e2cf02 commit c2d36c1

11 files changed

+97
-58
lines changed

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

+18
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,21 @@ 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+
31+
res.write(
32+
{
33+
"pack_length": package_length,
34+
"width": package_width,
35+
"height": package_height,
36+
}
37+
)
38+
39+
return res

delivery_carrier_package_measure_required/models/stock_quant_package.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
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.

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/tests/test_delivery_carrier_package_measure_require.py

+3-3
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(
@@ -58,7 +58,7 @@ def setUpClass(cls):
5858
)
5959
pack_wiz.action_put_in_pack()
6060
cls.package = cls.pick.move_line_ids.mapped("result_package_id")
61-
cls.package.packaging_id = cls.packaging
61+
cls.package.package_type_id = cls.packaging
6262

6363
def test_force_check_required_measurement(self):
6464
self.packaging.package_length_required = True

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,56 @@
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+
)
56+
return super().action_put_in_pack()

delivery_carrier_package_measure_required/wizard/choose_delivery_package.xml

+6-6
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@
1313
<field name="package_width_required" invisible="1" />
1414
<label
1515
for="package_length"
16-
attrs="{'invisible': ['|', ('delivery_packaging_id', '=', False), ('package_length_required', '=', False)]}"
16+
attrs="{'invisible': ['|', ('delivery_package_type_id', '=', False), ('package_length_required', '=', False)]}"
1717
/>
1818
<div
1919
class="o_row"
20-
attrs="{'invisible': ['|', ('delivery_packaging_id', '=', False), ('package_length_required', '=', False)]}"
20+
attrs="{'invisible': ['|', ('delivery_package_type_id', '=', False), ('package_length_required', '=', False)]}"
2121
name="package_length"
2222
>
2323
<field name="package_length" />
2424
<field name="dimension_uom_name" />
2525
</div>
2626
<label
2727
for="package_width"
28-
attrs="{'invisible': ['|', ('delivery_packaging_id', '=', False), ('package_width_required', '=', False)]}"
28+
attrs="{'invisible': ['|', ('delivery_package_type_id', '=', False), ('package_width_required', '=', False)]}"
2929
/>
3030
<div
3131
class="o_row"
32-
attrs="{'invisible': ['|', ('delivery_packaging_id', '=', False), ('package_width_required', '=', False)]}"
32+
attrs="{'invisible': ['|', ('delivery_package_type_id', '=', False), ('package_width_required', '=', False)]}"
3333
name="package_width"
3434
>
3535
<field name="package_width" />
3636
<field name="dimension_uom_name" />
3737
</div>
3838
<label
3939
for="package_height"
40-
attrs="{'invisible': ['|', ('delivery_packaging_id', '=', False), ('package_height_required', '=', False)]}"
40+
attrs="{'invisible': ['|', ('delivery_package_type_id', '=', False), ('package_height_required', '=', False)]}"
4141
/>
4242
<div
4343
class="o_row"
44-
attrs="{'invisible': ['|', ('delivery_packaging_id', '=', False), ('package_height_required', '=', False)]}"
44+
attrs="{'invisible': ['|', ('delivery_package_type_id', '=', False), ('package_height_required', '=', False)]}"
4545
name="package_height"
4646
>
4747
<field name="package_height" />

0 commit comments

Comments
 (0)