Skip to content

Commit 84fae68

Browse files
[FIX] delivery_schenker: correct float_round return
Because float_round as an example returns for 1.88 -> 1.880...01 we have to round it properly by float_repr and then parse it back to float
1 parent 2406552 commit 84fae68

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

delivery_schenker/models/delivery_carrier.py

+16-10
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from odoo import _, api, fields, models
77
from odoo.exceptions import UserError
8-
from odoo.tools import float_compare, float_round
8+
from odoo.tools import float_compare, float_repr, float_round
99

1010
from .schenker_request import SchenkerRequest
1111

@@ -366,12 +366,22 @@ def _schenker_shipping_information_package_volume(self, picking, package):
366366
]
367367
)
368368

369+
def _float_round_repr(self, value, precision_digits, rounding_method="UP"):
370+
return float_repr(
371+
float_round(
372+
value,
373+
precision_digits=precision_digits,
374+
rounding_method=rounding_method,
375+
),
376+
precision_digits=precision_digits,
377+
)
378+
369379
def _schenker_shipping_information_round_weight(self, weight, precision_digits=2):
370-
return float_round(weight, precision_digits=precision_digits)
380+
return self._float_round_repr(weight, precision_digits)
371381

372382
def _schenker_shipping_information_round_volume(self, volume, precision_digits=2):
373383
"""The schenker api requires 2 decimal points"""
374-
return float_round(volume, precision_digits=precision_digits)
384+
return self._float_round_repr(volume, precision_digits)
375385

376386
def _schenker_shipping_information_package(self, picking, package):
377387
weight = package.shipping_weight or package.weight
@@ -456,20 +466,16 @@ def _schenker_measures(self, picking, vals):
456466
:returns dict values for the proper unit key and value
457467
"""
458468
if self.schenker_measure_unit == "VOLUME":
459-
return {
460-
"measureUnitVolume": self._schenker_shipping_information_round_volume(
461-
vals["shippingInformation"]["volume"]
462-
)
463-
}
469+
return {"measureUnitVolume": vals["shippingInformation"]["volume"]}
464470
return {}
465471

466472
def _schenker_get_total_shipping_volume(self, shipping_information):
467-
volume = sum(info["volume"] for info in shipping_information)
473+
volume = sum(float(info["volume"]) for info in shipping_information)
468474
if float_compare(volume, 0, 3) <= 0:
469475
raise UserError(
470476
_("There is no volume set on the shipping package information")
471477
)
472-
return volume
478+
return self._schenker_shipping_information_round_volume(volume)
473479

474480
def _prepare_schenker_shipping(self, picking):
475481
"""Convert picking values for schenker api

delivery_schenker/tests/common.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def setUpClass(cls):
5454
"name": "Test product",
5555
"type": "product",
5656
"weight": 1,
57-
"volume": 1,
57+
"volume": 1.875,
5858
}
5959
)
6060
cls.sale, cls.picking = cls._create_sale_order(cls)
@@ -132,21 +132,21 @@ def _prepare_schenker_shipping(self, picking, vals=None):
132132
"incotermLocation": "Test partner",
133133
"productCode": "CON",
134134
"measurementType": "METRIC",
135-
"grossWeight": 1.0,
135+
"grossWeight": "1.00",
136136
"shippingInformation": {
137137
"shipmentPosition": [
138138
{
139139
"dgr": False,
140140
"cargoDesc": picking.name,
141-
"grossWeight": 1.0,
142-
"volume": 1.0,
141+
"grossWeight": "1.00",
142+
"volume": "1.88",
143143
"packageType": "CI",
144144
"stackable": False,
145145
"pieces": 1,
146146
}
147147
],
148-
"grossWeight": 1.0,
149-
"volume": 1.0,
148+
"grossWeight": "1.00",
149+
"volume": "1.88",
150150
},
151151
"measureUnit": "VOLUME",
152152
"customsClearance": False,
@@ -166,7 +166,7 @@ def _prepare_schenker_shipping(self, picking, vals=None):
166166
"ownPickup": True,
167167
"pharmaceuticals": True,
168168
"submitBooking": True,
169-
"measureUnitVolume": 1.0,
169+
"measureUnitVolume": "1.88",
170170
}
171171
res.update(vals)
172172
return res

0 commit comments

Comments
 (0)