diff --git a/delivery_schenker/models/delivery_carrier.py b/delivery_schenker/models/delivery_carrier.py index 0b38c4dd6e..84340fb28a 100644 --- a/delivery_schenker/models/delivery_carrier.py +++ b/delivery_schenker/models/delivery_carrier.py @@ -353,10 +353,6 @@ def _schenker_shipping_information_product_volume(self, product, qty): return product.volume * qty def _schenker_shipping_information_package_volume(self, picking, package): - # TODO: Refactor this and move this into own auto_install module - # Volume calculations can be unfolded with stock_quant_package_dimension - if hasattr(package, "volume"): - return package.volume return sum( [ self._schenker_shipping_information_product_volume( @@ -366,12 +362,11 @@ def _schenker_shipping_information_package_volume(self, picking, package): ] ) - def _schenker_shipping_information_round_weight(self, weight, precision_digits=2): - return float_round(weight, precision_digits=precision_digits) - - def _schenker_shipping_information_round_volume(self, volume, precision_digits=2): + def _schenker_shipping_information_round_dimension( + self, dimension, precision_digits=2 + ): """The schenker api requires 2 decimal points""" - return float_round(volume, precision_digits=precision_digits) + return float_round(dimension, precision_digits=precision_digits) def _schenker_shipping_information_package(self, picking, package): weight = package.shipping_weight or package.weight @@ -379,8 +374,8 @@ def _schenker_shipping_information_package(self, picking, package): # Dangerous goods is not supported "dgr": False, "cargoDesc": picking.name + " / " + package.name, - "grossWeight": self._schenker_shipping_information_round_weight(weight), - "volume": self._schenker_shipping_information_round_volume( + "grossWeight": self._schenker_shipping_information_round_dimension(weight), + "volume": self._schenker_shipping_information_round_dimension( self._schenker_shipping_information_package_volume(picking, package) ), "packageType": ( @@ -436,10 +431,10 @@ def _schenker_shipping_information_without_packages(self, picking): "dgr": False, "cargoDesc": picking.name, # For a more complex solution use packaging properly - "grossWeight": self._schenker_shipping_information_round_weight( + "grossWeight": self._schenker_shipping_information_round_dimension( weight / picking.number_of_packages ), - "volume": self._schenker_shipping_information_round_volume( + "volume": self._schenker_shipping_information_round_dimension( self._schenker_shipping_information_without_packages_volume(picking) ), "packageType": self.schenker_default_packaging_id.shipper_package_code, @@ -457,7 +452,7 @@ def _schenker_measures(self, picking, vals): """ if self.schenker_measure_unit == "VOLUME": return { - "measureUnitVolume": self._schenker_shipping_information_round_volume( + "measureUnitVolume": self._schenker_shipping_information_round_dimension( vals["shippingInformation"]["volume"] ) } @@ -494,12 +489,12 @@ def _prepare_schenker_shipping(self, picking): "incotermLocation": picking.partner_id.display_name[:35], "productCode": self._schenker_shipping_product(), "measurementType": self._schenker_metric_system(), - "grossWeight": self._schenker_shipping_information_round_weight( + "grossWeight": self._schenker_shipping_information_round_dimension( picking.shipping_weight ), "shippingInformation": { "shipmentPosition": shipping_information, - "grossWeight": self._schenker_shipping_information_round_weight( + "grossWeight": self._schenker_shipping_information_round_dimension( picking.shipping_weight ), "volume": self._schenker_get_total_shipping_volume( diff --git a/delivery_schenker_quant_package_dimension/README.rst b/delivery_schenker_quant_package_dimension/README.rst new file mode 100644 index 0000000000..e2201559e6 --- /dev/null +++ b/delivery_schenker_quant_package_dimension/README.rst @@ -0,0 +1,86 @@ +========================================= +Delivery Schenker Quant Package Dimension +========================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5b2a759af0b0bff78ae71a52e23162f927b472418f8d01cf5be4b87c38ab1fcf + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fdelivery--carrier-lightgray.png?logo=github + :target: https://github.com/OCA/delivery-carrier/tree/14.0/delivery_schenker_quant_package_dimension + :alt: OCA/delivery-carrier +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/delivery-carrier-14-0/delivery-carrier-14-0-delivery_schenker_quant_package_dimension + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/delivery-carrier&target_branch=14.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon is a glue module between delivery_schenker and stock_quant_package_dimension. +It is changing the transmitted package volume, it uses the computed volume from stock_quant_package_dimension. +Also the dimensions length, width and height of a package will be added to the request. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* MT Software + +Contributors +~~~~~~~~~~~~ + +* Michael Tietz (MT Software) + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-mt-software-de| image:: https://github.com/mt-software-de.png?size=40px + :target: https://github.com/mt-software-de + :alt: mt-software-de + +Current `maintainer `__: + +|maintainer-mt-software-de| + +This module is part of the `OCA/delivery-carrier `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/delivery_schenker_quant_package_dimension/__init__.py b/delivery_schenker_quant_package_dimension/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/delivery_schenker_quant_package_dimension/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/delivery_schenker_quant_package_dimension/__manifest__.py b/delivery_schenker_quant_package_dimension/__manifest__.py new file mode 100644 index 0000000000..f135c2dd38 --- /dev/null +++ b/delivery_schenker_quant_package_dimension/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2024 Michael Tietz (MT Software) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Delivery Schenker Quant Package Dimension", + "summary": "Glue module between delivery_schenker and stock_quant_package_dimension" + "With this module the transmitted package volume is changed," + "it uses the computed volume from stock_quant_package_dimension." + "Also the dimensions length, width and height of a package " + "getting added to the request", + "version": "14.0.1.0.0", + "category": "Stock", + "website": "https://github.com/OCA/delivery-carrier", + "author": "MT Software, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["delivery_schenker", "stock_quant_package_dimension"], + "auto_install": True, + "maintainers": ["mt-software-de"], +} diff --git a/delivery_schenker_quant_package_dimension/models/__init__.py b/delivery_schenker_quant_package_dimension/models/__init__.py new file mode 100644 index 0000000000..0a1fe29fbd --- /dev/null +++ b/delivery_schenker_quant_package_dimension/models/__init__.py @@ -0,0 +1 @@ +from . import delivery_carrier diff --git a/delivery_schenker_quant_package_dimension/models/delivery_carrier.py b/delivery_schenker_quant_package_dimension/models/delivery_carrier.py new file mode 100644 index 0000000000..07d473e3ee --- /dev/null +++ b/delivery_schenker_quant_package_dimension/models/delivery_carrier.py @@ -0,0 +1,27 @@ +# Copyright 2024 Michael Tietz (MT Software) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import models + + +class DeliveryCarrier(models.Model): + _inherit = "delivery.carrier" + + def _schenker_shipping_information_package_volume(self, picking, package): + return package.volume + + def _schenker_shipping_information_package(self, picking, package): + res = super()._schenker_shipping_information_package(picking, package) + res.update( + { + "length": self._schenker_shipping_information_round_dimension( + package.pack_length + ), + "width": self._schenker_shipping_information_round_dimension( + package.width + ), + "height": self._schenker_shipping_information_round_dimension( + package.height + ), + } + ) + return res diff --git a/delivery_schenker_quant_package_dimension/readme/CONTRIBUTORS.rst b/delivery_schenker_quant_package_dimension/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..446fd1d576 --- /dev/null +++ b/delivery_schenker_quant_package_dimension/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Michael Tietz (MT Software) diff --git a/delivery_schenker_quant_package_dimension/readme/DESCRIPTION.rst b/delivery_schenker_quant_package_dimension/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..fba1e46b62 --- /dev/null +++ b/delivery_schenker_quant_package_dimension/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This addon is a glue module between delivery_schenker and stock_quant_package_dimension. +It is changing the transmitted package volume, it uses the computed volume from stock_quant_package_dimension. +Also the dimensions length, width and height of a package will be added to the request. diff --git a/delivery_schenker_quant_package_dimension/static/description/index.html b/delivery_schenker_quant_package_dimension/static/description/index.html new file mode 100644 index 0000000000..fd07b9d782 --- /dev/null +++ b/delivery_schenker_quant_package_dimension/static/description/index.html @@ -0,0 +1,425 @@ + + + + + + +Delivery Schenker Quant Package Dimension + + + +
+

Delivery Schenker Quant Package Dimension

+ + +

Beta License: AGPL-3 OCA/delivery-carrier Translate me on Weblate Try me on Runboat

+

This addon is a glue module between delivery_schenker and stock_quant_package_dimension. +It is changing the transmitted package volume, it uses the computed volume from stock_quant_package_dimension. +Also the dimensions length, width and height of a package will be added to the request.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • MT Software
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

mt-software-de

+

This module is part of the OCA/delivery-carrier project on GitHub.

+

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

+
+
+
+ + diff --git a/delivery_schenker_quant_package_dimension/tests/__init__.py b/delivery_schenker_quant_package_dimension/tests/__init__.py new file mode 100644 index 0000000000..085303ca5d --- /dev/null +++ b/delivery_schenker_quant_package_dimension/tests/__init__.py @@ -0,0 +1 @@ +from . import test_delivery_schenker diff --git a/delivery_schenker_quant_package_dimension/tests/test_delivery_schenker.py b/delivery_schenker_quant_package_dimension/tests/test_delivery_schenker.py new file mode 100644 index 0000000000..2ff12b9cca --- /dev/null +++ b/delivery_schenker_quant_package_dimension/tests/test_delivery_schenker.py @@ -0,0 +1,31 @@ +# Copyright 2024 Michael Tietz (MT Software) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.addons.delivery_schenker.tests.common import TestDeliverySchenkerCommon + + +class TestDeliverySchenker(TestDeliverySchenkerCommon): + def test_delivery_schenker(self): + _sale_order, picking = self._create_sale_order() + self._process_picking(picking, with_package=True) + length = 14.0 + width = 13.0 + height = 12.0 + volume = length * width * height + package = picking.package_ids + package.pack_length = length + package.width = width + package.height = height + expected_vals = self._prepare_schenker_shipping(picking) + expected_vals["shippingInformation"]["shipmentPosition"][0].update( + { + "cargoDesc": " / ".join([picking.name, package.name]), + "length": length, + "width": width, + "height": height, + "volume": volume, + } + ) + expected_vals["shippingInformation"]["volume"] = volume + expected_vals["measureUnitVolume"] = volume + vals = self.carrier._prepare_schenker_shipping(picking) + self.assertDictEqual(expected_vals, vals) diff --git a/setup/delivery_schenker_quant_package_dimension/odoo/addons/delivery_schenker_quant_package_dimension b/setup/delivery_schenker_quant_package_dimension/odoo/addons/delivery_schenker_quant_package_dimension new file mode 120000 index 0000000000..4b1992dfb8 --- /dev/null +++ b/setup/delivery_schenker_quant_package_dimension/odoo/addons/delivery_schenker_quant_package_dimension @@ -0,0 +1 @@ +../../../../delivery_schenker_quant_package_dimension \ No newline at end of file diff --git a/setup/delivery_schenker_quant_package_dimension/setup.py b/setup/delivery_schenker_quant_package_dimension/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/delivery_schenker_quant_package_dimension/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)