From 63dba9134f588e88b0c53224973b3d907988eadf Mon Sep 17 00:00:00 2001 From: Leighton Pennicott Date: Mon, 23 Nov 2020 19:07:32 -0500 Subject: [PATCH] [IMP] delivery_gls_nl: update to convert imperial units to metric units For clients with Odoo databases that use imperial units for gross weight and want to create labels to using the gls connector. H4321 --- delivery_gls_nl/models/delivery_gls_nl.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/delivery_gls_nl/models/delivery_gls_nl.py b/delivery_gls_nl/models/delivery_gls_nl.py index 46fcebff..c0694d70 100644 --- a/delivery_gls_nl/models/delivery_gls_nl.py +++ b/delivery_gls_nl/models/delivery_gls_nl.py @@ -232,21 +232,23 @@ class ProviderGLSNL(models.Model): # } if picking.package_ids: for package in picking.package_ids: - rate = self._gls_nl_rate(to.country_id.code, package.shipping_weight or 0.0) + converted_weight = self._gls_convert_weight(package.shipping_weight) + rate = self._gls_nl_rate(to.country_id.code, converted_weight or 0.0) if rate and rate != self.GLS_NL_COUNTRY_NOT_FOUND: total_rate += rate unit = { 'unitId': package.name, - 'weight': package.shipping_weight, + 'weight': converted_weight } request_body['units'].append(unit) else: - rate = self._gls_nl_rate(to.country_id.code, picking.shipping_weight or 0.0) + converted_weight = self._gls_convert_weight(picking.shipping_weight) + rate = self._gls_nl_rate(to.country_id.code, converted_weight or 0.0) if rate and rate != self.GLS_NL_COUNTRY_NOT_FOUND: total_rate += rate unit = { 'unitId': picking.name, - 'weight': picking.shipping_weight, + 'weight': converted_weight, } request_body['units'].append(unit) @@ -292,3 +294,11 @@ class ProviderGLSNL(models.Model): picking.write({'carrier_tracking_ref': '', 'carrier_price': 0.0}) except HTTPError as e: raise ValidationError(e) + + def _gls_convert_weight(self, weight): + get_param = self.env['ir.config_parameter'].sudo().get_param + product_weight_in_lbs_param = get_param('product.weight_in_lbs') + if product_weight_in_lbs_param == '1': + return weight / 2.20462 + else: + return weight