diff --git a/delivery_stamps/models/delivery_stamps.py b/delivery_stamps/models/delivery_stamps.py index e653e294..8f346f55 100644 --- a/delivery_stamps/models/delivery_stamps.py +++ b/delivery_stamps/models/delivery_stamps.py @@ -36,6 +36,7 @@ class ProductPackaging(models.Model): _inherit = 'product.packaging' package_carrier_type = fields.Selection(selection_add=[('stamps', 'Stamps.com')]) + stamps_cubic_pricing = fields.Boolean(string="Stamps.com Use Cubic Pricing") class ProviderStamps(models.Model): @@ -72,6 +73,18 @@ class ProviderStamps(models.Model): return self.stamps_default_packaging_id.shipper_package_code return package.packaging_id.shipper_package_code if package.packaging_id.shipper_package_code in STAMPS_PACKAGE_TYPES else 'Package' + def _stamps_package_is_cubic_pricing(self, package=None): + if not package: + return self.stamps_default_packaging_id.stamps_cubic_pricing + return package.packaging_id.stamps_cubic_pricing + + def _stamps_package_dimensions(self, package=None): + if not package: + package_type = self.stamps_default_packaging_id + else: + package_type = package.packaging_id + return package_type.length, package_type.width, package_type.height + def _get_stamps_service(self): sudoself = self.sudo() config = StampsConfiguration(integration_id=sudoself.stamps_integration_id, @@ -136,23 +149,33 @@ class ProviderStamps(models.Model): for package in picking.package_ids: weight = self._stamps_convert_weight(package.shipping_weight) + l, w, h = self._stamps_package_dimensions(package=package) ret_val = service.create_shipping() ret_val.ShipDate = date.today().isoformat() ret_val.FromZIPCode = from_partner.zip ret_val.ToZIPCode = to_partner.zip ret_val.PackageType = self._stamps_package_type(package=package) + ret_val.CubicPricing = self._stamps_package_is_cubic_pricing(package=package) + ret_val.Length = l + ret_val.Width = w + ret_val.Height = h ret_val.ServiceType = self.stamps_service_type ret_val.WeightLb = weight ret.append((package.name + ret_val.ShipDate + str(ret_val.WeightLb), ret_val)) if not ret: weight = self._stamps_convert_weight(picking.shipping_weight) + l, w, h = self._stamps_package_dimensions() ret_val = service.create_shipping() ret_val.ShipDate = date.today().isoformat() ret_val.FromZIPCode = from_partner.zip ret_val.ToZIPCode = to_partner.zip ret_val.PackageType = self._stamps_package_type() + ret_val.CubicPricing = self._stamps_package_is_cubic_pricing() + ret_val.Length = l + ret_val.Width = w + ret_val.Height = h ret_val.ServiceType = self.stamps_service_type ret_val.WeightLb = weight ret.append((picking.name + ret_val.ShipDate + str(ret_val.WeightLb), ret_val)) diff --git a/delivery_stamps/views/delivery_stamps_view.xml b/delivery_stamps/views/delivery_stamps_view.xml index bb1d07f2..c4bb6fb0 100644 --- a/delivery_stamps/views/delivery_stamps_view.xml +++ b/delivery_stamps/views/delivery_stamps_view.xml @@ -25,4 +25,15 @@ + + stamps.product.packaging.form.delivery + product.packaging + + + + + + + +