Skip to content

Commit 0e0fa7e

Browse files
committed
[16.0][MIG] delivery_schenker
1 parent 5264884 commit 0e0fa7e

10 files changed

+73
-42
lines changed

delivery_schenker/README.rst

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Delivery Schenker
2323
:target: https://runboat.odoo-community.org/webui/builds.html?repo=OCA/delivery-carrier&target_branch=14.0
2424
:alt: Try me on Runboat
2525

26-
|badge1| |badge2| |badge3| |badge4| |badge5|
26+
|badge1| |badge2| |badge3| |badge4| |badge5|
2727

2828
This module links the `DB Schenker <https://www.dbschenker.com>`_ booking and tracking
2929
APIs with Odoo delivery system.
@@ -156,6 +156,7 @@ Contributors
156156
* `Studio73 <https://www.studio73.es>`_:
157157

158158
* Ethan Hildick
159+
* Ferran Mora
159160

160161
* Michael Tietz (MT Software) <mtietz@mt-software.de>
161162

delivery_schenker/__manifest__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# Copyright 2021 Tecnativa - David Vidal
22
# Copyright 2021 Studio73 - Ethan Hildick <ethan@studio73.es>
3+
# Copyright 2023 Studio73 - Ferran Mora <ferran@studio73.es>
34
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
45
{
56
"name": "Delivery Schenker",
67
"summary": "Delivery Carrier implementation for DB Schenker API",
7-
"version": "14.0.1.0.1",
8+
"version": "16.0.1.0.0",
89
"category": "Stock",
910
"website": "https://github.com/OCA/delivery-carrier",
1011
"author": "Tecnativa, Studio73, Odoo Community Association (OCA)",

delivery_schenker/data/delivery_schenker_data.xml

+23-23
Original file line numberDiff line numberDiff line change
@@ -1,117 +1,117 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<odoo noupdate="1">
33
<!-- Schenker Product Packagings. It'd be nice to have proper measures -->
4-
<record id="schenker_packaging_01" model="product.packaging">
4+
<record id="schenker_package_type_01" model="stock.package.type">
55
<field name="shipper_package_code">CI</field>
66
<field name="name">(Schenker) Canister</field>
77
<field name="package_carrier_type">schenker</field>
88
</record>
9-
<record id="schenker_packaging_02" model="product.packaging">
9+
<record id="schenker_package_type_02" model="stock.package.type">
1010
<field name="shipper_package_code">CT</field>
1111
<field name="name">(Schenker) Carton</field>
1212
<field name="package_carrier_type">schenker</field>
1313
</record>
14-
<record id="schenker_packaging_03" model="product.packaging">
14+
<record id="schenker_package_type_03" model="stock.package.type">
1515
<field name="shipper_package_code">CS</field>
1616
<field name="name">(Schenker) Case</field>
1717
<field name="package_carrier_type">schenker</field>
1818
</record>
19-
<record id="schenker_packaging_04" model="product.packaging">
19+
<record id="schenker_package_type_04" model="stock.package.type">
2020
<field name="shipper_package_code">CO</field>
2121
<field name="name">(Schenker) Colli</field>
2222
<field name="package_carrier_type">schenker</field>
2323
</record>
24-
<record id="schenker_packaging_05" model="product.packaging">
24+
<record id="schenker_package_type_05" model="stock.package.type">
2525
<field name="shipper_package_code">CH</field>
2626
<field name="name">(Schenker) Crate</field>
2727
<field name="package_carrier_type">schenker</field>
2828
</record>
29-
<record id="schenker_packaging_06" model="product.packaging">
29+
<record id="schenker_package_type_06" model="stock.package.type">
3030
<field name="shipper_package_code">GP</field>
3131
<field name="name">(Schenker) Skeleton box pallet</field>
3232
<field name="package_carrier_type">schenker</field>
3333
</record>
34-
<record id="schenker_packaging_07" model="product.packaging">
34+
<record id="schenker_package_type_07" model="stock.package.type">
3535
<field name="shipper_package_code">NE</field>
3636
<field name="name">(Schenker) Unpacked Skid</field>
3737
<field name="package_carrier_type">schenker</field>
3838
</record>
39-
<record id="schenker_packaging_08" model="product.packaging">
39+
<record id="schenker_package_type_08" model="stock.package.type">
4040
<field name="shipper_package_code">BG</field>
4141
<field name="name">(Schenker) Bag</field>
4242
<field name="package_carrier_type">schenker</field>
4343
</record>
44-
<record id="schenker_packaging_09" model="product.packaging">
44+
<record id="schenker_package_type_09" model="stock.package.type">
4545
<field name="shipper_package_code">BL</field>
4646
<field name="name">(Schenker) Bale</field>
4747
<field name="package_carrier_type">schenker</field>
4848
</record>
49-
<record id="schenker_packaging_10" model="product.packaging">
49+
<record id="schenker_package_type_10" model="stock.package.type">
5050
<field name="shipper_package_code">DR</field>
5151
<field name="name">(Schenker) Barrel</field>
5252
<field name="package_carrier_type">schenker</field>
5353
</record>
54-
<record id="schenker_packaging_11" model="product.packaging">
54+
<record id="schenker_package_type_11" model="stock.package.type">
5555
<field name="shipper_package_code">BX</field>
5656
<field name="name">(Schenker) Box</field>
5757
<field name="package_carrier_type">schenker</field>
5858
</record>
59-
<record id="schenker_packaging_12" model="product.packaging">
59+
<record id="schenker_package_type_12" model="stock.package.type">
6060
<field name="shipper_package_code">BY</field>
6161
<field name="name">(Schenker) Bundle</field>
6262
<field name="package_carrier_type">schenker</field>
6363
</record>
64-
<record id="schenker_packaging_13" model="product.packaging">
64+
<record id="schenker_package_type_13" model="stock.package.type">
6565
<field name="shipper_package_code">TR</field>
6666
<field name="name">(Schenker) Drum</field>
6767
<field name="package_carrier_type">schenker</field>
6868
</record>
69-
<record id="schenker_packaging_14" model="product.packaging">
69+
<record id="schenker_package_type_14" model="stock.package.type">
7070
<field name="shipper_package_code">EP</field>
7171
<field name="name">(Schenker) Europallet</field>
7272
<field name="package_carrier_type">schenker</field>
7373
</record>
74-
<record id="schenker_packaging_15" model="product.packaging">
74+
<record id="schenker_package_type_15" model="stock.package.type">
7575
<field name="shipper_package_code">FR</field>
7676
<field name="name">(Schenker) Frame</field>
7777
<field name="package_carrier_type">schenker</field>
7878
</record>
79-
<record id="schenker_packaging_16" model="product.packaging">
79+
<record id="schenker_package_type_16" model="stock.package.type">
8080
<field name="shipper_package_code">HO</field>
8181
<field name="name">(Schenker) Hobbock</field>
8282
<field name="package_carrier_type">schenker</field>
8383
</record>
84-
<record id="schenker_packaging_17" model="product.packaging">
84+
<record id="schenker_package_type_17" model="stock.package.type">
8585
<field name="shipper_package_code">OP</field>
8686
<field name="name">(Schenker) One-way pallet</field>
8787
<field name="package_carrier_type">schenker</field>
8888
</record>
89-
<record id="schenker_packaging_18" model="product.packaging">
89+
<record id="schenker_package_type_18" model="stock.package.type">
9090
<field name="shipper_package_code">PK</field>
9191
<field name="name">(Schenker) Package</field>
9292
<field name="package_carrier_type">schenker</field>
9393
</record>
94-
<record id="schenker_packaging_19" model="product.packaging">
94+
<record id="schenker_package_type_19" model="stock.package.type">
9595
<field name="shipper_package_code">XP</field>
9696
<field name="name">(Schenker) Pallet</field>
9797
<field name="package_carrier_type">schenker</field>
9898
</record>
99-
<record id="schenker_packaging_20" model="product.packaging">
99+
<record id="schenker_package_type_20" model="stock.package.type">
100100
<field name="shipper_package_code">PZ</field>
101101
<field name="name">(Schenker) Pipe</field>
102102
<field name="package_carrier_type">schenker</field>
103103
</record>
104-
<record id="schenker_packaging_21" model="product.packaging">
104+
<record id="schenker_package_type_21" model="stock.package.type">
105105
<field name="shipper_package_code">RO</field>
106106
<field name="name">(Schenker) Roll</field>
107107
<field name="package_carrier_type">schenker</field>
108108
</record>
109-
<record id="schenker_packaging_22" model="product.packaging">
109+
<record id="schenker_package_type_22" model="stock.package.type">
110110
<field name="shipper_package_code">SK</field>
111111
<field name="name">(Schenker) Sack</field>
112112
<field name="package_carrier_type">schenker</field>
113113
</record>
114-
<record id="schenker_packaging_23" model="product.packaging">
114+
<record id="schenker_package_type_23" model="stock.package.type">
115115
<field name="shipper_package_code">ZZ</field>
116116
<field name="name">(Schenker) Other</field>
117117
<field name="package_carrier_type">schenker</field>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright 2023 Studio73 - Ferran Mora
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from openupgradelib import openupgrade
5+
6+
7+
@openupgrade.migrate()
8+
def migrate(env, version):
9+
for i in range(1, 23):
10+
xml_id = "delivery_schenker.schenker_packaging_{}".format(str(i).zfill(2))
11+
pack = env.ref(xml_id, raise_if_not_found=False)
12+
if pack:
13+
xml_id = "delivery_schenker.schenker_package_type_{}".format(
14+
str(i).zfill(2)
15+
)
16+
package_type = env.ref(xml_id, raise_if_not_found=False)
17+
if package_type:
18+
env.cr.execute(
19+
"SELECT schenker_stackable FROM product_packaging WHERE id=%s",
20+
(pack.id,),
21+
)
22+
schenker_stackable = env.cr.fetchone()
23+
package_type.write({"schenker_stackable": schenker_stackable})

delivery_schenker/models/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from . import delivery_carrier
2-
from . import product_packaging
32
from . import schenker_request
3+
from . import stock_package_type
44
from . import stock_picking

delivery_schenker/models/delivery_carrier.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,12 @@ class DeliveryCarrier(models.Model):
158158
],
159159
default="VOLUME",
160160
)
161-
schenker_default_packaging_id = fields.Many2one(
162-
comodel_name="product.packaging",
161+
schenker_default_package_type_id = fields.Many2one(
162+
comodel_name="stock.package.type",
163163
string="Default Package Type",
164164
domain=[("package_carrier_type", "=", "schenker")],
165165
help="If not delivery package or the package doesn't have defined the packaging"
166-
"it will default to this type",
166+
" it will default to this type",
167167
)
168168

169169
def _get_schenker_credentials(self):
@@ -323,12 +323,12 @@ def _schenker_shipping_information_package(self, picking, package):
323323
# Default to 1 if no volume informed
324324
"volume": volume or 0.01,
325325
"packageType": (
326-
package.packaging_id.shipper_package_code
327-
or self.schenker_default_packaging_id.shipper_package_code
326+
package.package_type_id.shipper_package_code
327+
or self.schenker_default_package_type_id.shipper_package_code
328328
),
329329
"stackable": (
330-
package.packaging_id.schenker_stackable
331-
or self.schenker_default_packaging_id.schenker_stackable
330+
package.package_type_id.schenker_stackable
331+
or self.schenker_default_package_type_id.schenker_stackable
332332
),
333333
"pieces": 1,
334334
}
@@ -361,8 +361,8 @@ def _schenker_shipping_information(self, picking):
361361
# For a more complex solution use packaging properly
362362
"grossWeight": round(weight / picking.number_of_packages, 2),
363363
"volume": round(volume, 2) or 0.01,
364-
"packageType": self.schenker_default_packaging_id.shipper_package_code,
365-
"stackable": self.schenker_default_packaging_id.schenker_stackable,
364+
"packageType": self.schenker_default_package_type_id.shipper_package_code,
365+
"stackable": self.schenker_default_package_type_id.schenker_stackable,
366366
"pieces": picking.number_of_packages,
367367
}
368368
]
@@ -404,7 +404,7 @@ def _prepare_schenker_shipping(self, picking):
404404
"shippingInformation": {
405405
"shipmentPosition": shipping_information,
406406
"grossWeight": round(picking.shipping_weight, 2),
407-
"volume": shipping_information["volume"],
407+
"volume": shipping_information[0]["volume"],
408408
},
409409
"measureUnit": self.schenker_measure_unit,
410410
# Customs Clearance not supported for now as it needs a full customs

delivery_schenker/models/schenker_request.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,14 @@ def _process_reply(self, service, vals=None, send_as_kw=False):
7171
_(
7272
"Error in the request to the Schenker API. This is the "
7373
"thrown message:\n\n"
74-
"[%s]\n"
75-
"%s - %s" % (error_text, error_code, error_message)
74+
"[%(error_text)s]\n"
75+
"%(error_code)s - %(error_message)s"
7676
)
77+
% {
78+
"error_text": error_text,
79+
"error_code": error_code,
80+
"error_message": error_message,
81+
}
7782
) from e
7883
except ValidationError:
7984
raise

delivery_schenker/models/product_packaging.py delivery_schenker/models/stock_package_type.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# Copyright 2021 Tecnativa - David Vidal
2+
# Copyright 2023 Studio73 - Ferran Mora
23
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
34
from odoo import fields, models
45

56

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

910
package_carrier_type = fields.Selection(selection_add=[("schenker", "DB Schenker")])
1011
schenker_stackable = fields.Boolean(

delivery_schenker/views/delivery_schenker_view.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
</group>
6363
<group string="Logistics">
6464
<field
65-
name="schenker_default_packaging_id"
65+
name="schenker_default_package_type_id"
6666
attrs="{'required': [('delivery_type', '=', 'schenker')]}"
6767
/>
6868
<field

delivery_schenker/views/stock_picking_views.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
<record id="view_picking_withcarrier_out_form" model="ir.ui.view">
44
<field name="model">stock.picking</field>
55
<field name="inherit_id" ref="delivery.view_picking_withcarrier_out_form" />
6-
<field name="groups_id" eval="[(4, ref('base.group_no_one'))]" />
76
<field name="arch" type="xml">
87
<xpath expr="//header" position='inside'>
98
<button
109
name="schenker_get_label"
1110
string="Schenker Label"
1211
type="object"
12+
groups="base.group_no_one"
1313
attrs="{
1414
'invisible':[
1515
'|',

0 commit comments

Comments
 (0)