|
5 | 5 |
|
6 | 6 | from odoo import _, api, fields, models
|
7 | 7 | 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 |
9 | 9 |
|
10 | 10 | from .schenker_request import SchenkerRequest
|
11 | 11 |
|
@@ -366,12 +366,22 @@ def _schenker_shipping_information_package_volume(self, picking, package):
|
366 | 366 | ]
|
367 | 367 | )
|
368 | 368 |
|
| 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 | + |
369 | 379 | 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) |
371 | 381 |
|
372 | 382 | def _schenker_shipping_information_round_volume(self, volume, precision_digits=2):
|
373 | 383 | """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) |
375 | 385 |
|
376 | 386 | def _schenker_shipping_information_package(self, picking, package):
|
377 | 387 | weight = package.shipping_weight or package.weight
|
@@ -456,20 +466,16 @@ def _schenker_measures(self, picking, vals):
|
456 | 466 | :returns dict values for the proper unit key and value
|
457 | 467 | """
|
458 | 468 | 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"]} |
464 | 470 | return {}
|
465 | 471 |
|
466 | 472 | 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) |
468 | 474 | if float_compare(volume, 0, 3) <= 0:
|
469 | 475 | raise UserError(
|
470 | 476 | _("There is no volume set on the shipping package information")
|
471 | 477 | )
|
472 |
| - return volume |
| 478 | + return self._schenker_shipping_information_round_volume(volume) |
473 | 479 |
|
474 | 480 | def _prepare_schenker_shipping(self, picking):
|
475 | 481 | """Convert picking values for schenker api
|
|
0 commit comments