mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
IMP delivery_stamps support CubicPricing
Delivery Packaging gets a field to opt into CubicPricing, API restrictions still apply (e.g. height must be > 3/4").
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -25,4 +25,15 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="product_packaging_delivery_form" model="ir.ui.view">
|
||||
<field name="name">stamps.product.packaging.form.delivery</field>
|
||||
<field name="model">product.packaging</field>
|
||||
<field name="inherit_id" ref="delivery.product_packaging_delivery_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='max_weight']" position='after'>
|
||||
<field name="stamps_cubic_pricing"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user