mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[IMP] delivery_purolator: demo data and tests, method for weight
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
</record>
|
</record>
|
||||||
<record id="purolator_express" model="delivery.carrier">
|
<record id="purolator_express" model="delivery.carrier">
|
||||||
<field name="name">Purolator Express Test</field>
|
<field name="name">Purolator Express Test</field>
|
||||||
<field name="product_id" ref="delivery_purolator.product_product_purolator_carrier"/>
|
<field name="product_id" ref="delivery_purolator.product_product_purolator_express"/>
|
||||||
<field name="delivery_type">purolator</field>
|
<field name="delivery_type">purolator</field>
|
||||||
<field name="purolator_service_type">PurolatorExpress</field>
|
<field name="purolator_service_type">PurolatorExpress</field>
|
||||||
<field name="prod_environment" eval="False"/>
|
<field name="prod_environment" eval="False"/>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</record>
|
</record>
|
||||||
<record id="purolator_ground" model="delivery.carrier">
|
<record id="purolator_ground" model="delivery.carrier">
|
||||||
<field name="name">Purolator Ground Test</field>
|
<field name="name">Purolator Ground Test</field>
|
||||||
<field name="product_id" ref="delivery_purolator.product_product_purolator_carrier"/>
|
<field name="product_id" ref="delivery_purolator.product_product_purolator_ground"/>
|
||||||
<field name="delivery_type">purolator</field>
|
<field name="delivery_type">purolator</field>
|
||||||
<field name="purolator_service_type">PurolatorGround</field>
|
<field name="purolator_service_type">PurolatorGround</field>
|
||||||
<field name="prod_environment" eval="False"/>
|
<field name="prod_environment" eval="False"/>
|
||||||
|
|||||||
@@ -81,6 +81,10 @@ class ProviderPurolator(models.Model):
|
|||||||
default='PurolatorGround')
|
default='PurolatorGround')
|
||||||
purolator_default_package_type_id = fields.Many2one('stock.package.type', string="Purolator Package Type")
|
purolator_default_package_type_id = fields.Many2one('stock.package.type', string="Purolator Package Type")
|
||||||
|
|
||||||
|
def _purolator_weight(self, weight):
|
||||||
|
weight_uom_id = self.env['product.template']._get_weight_uom_id_from_ir_config_parameter()
|
||||||
|
return weight_uom_id._compute_quantity(weight, self.env.ref('uom.product_uom_lb'), round=False)
|
||||||
|
|
||||||
def purolator_rate_shipment(self, order):
|
def purolator_rate_shipment(self, order):
|
||||||
# sudoself = self.sudo()
|
# sudoself = self.sudo()
|
||||||
sender = self.get_shipper_warehouse(order=order)
|
sender = self.get_shipper_warehouse(order=order)
|
||||||
@@ -91,8 +95,8 @@ class ProviderPurolator(models.Model):
|
|||||||
'Country': receiver.country_id.code,
|
'Country': receiver.country_id.code,
|
||||||
'PostalCode': receiver.zip,
|
'PostalCode': receiver.zip,
|
||||||
}
|
}
|
||||||
weight_uom_id = self.env['product.template']._get_weight_uom_id_from_ir_config_parameter()
|
# TODO packaging volume/length/width/height
|
||||||
weight = weight_uom_id._compute_quantity(order._get_estimated_weight(), self.env.ref('uom.product_uom_lb'), round=False)
|
weight = self._purolator_weight(order._get_estimated_weight())
|
||||||
client = PurolatorClient(
|
client = PurolatorClient(
|
||||||
self.purolator_api_key,
|
self.purolator_api_key,
|
||||||
self.purolator_password,
|
self.purolator_password,
|
||||||
@@ -147,20 +151,23 @@ class ProviderPurolator(models.Model):
|
|||||||
'PostalCode': receiver.zip,
|
'PostalCode': receiver.zip,
|
||||||
}
|
}
|
||||||
weight_uom_id = self.env['product.template']._get_weight_uom_id_from_ir_config_parameter()
|
weight_uom_id = self.env['product.template']._get_weight_uom_id_from_ir_config_parameter()
|
||||||
|
volume_uom_id = self.env['product.template']._get_volume_uom_id_from_ir_config_parameter()
|
||||||
|
|
||||||
date_planned = fields.Datetime.now()
|
date_planned = fields.Datetime.now()
|
||||||
if self.env.context.get('date_planned'):
|
if self.env.context.get('date_planned'):
|
||||||
date_planned = self.env.context.get('date_planned')
|
date_planned = self.env.context.get('date_planned')
|
||||||
|
|
||||||
|
# TODO need packaging volume/dimensions
|
||||||
package_code = self.purolator_default_package_type_id.shipper_package_code
|
package_code = self.purolator_default_package_type_id.shipper_package_code
|
||||||
if order:
|
if order:
|
||||||
weight = weight_uom_id._compute_quantity(order._get_estimated_weight(), self.env.ref('uom.product_uom_lb'), round=False)
|
weight = order._get_estimated_weight()
|
||||||
else:
|
else:
|
||||||
if package:
|
if package:
|
||||||
weight = package.shipping_weight
|
weight = package.shipping_weight
|
||||||
package_code = package.package_type_id.shipper_package_code or package_code
|
package_code = package.package_type_id.shipper_package_code if package.package_type_id.package_carrier_type == 'purolator' else package_code
|
||||||
else:
|
else:
|
||||||
weight = picking.shipping_weight or picking.weight
|
weight = picking.shipping_weight or picking.weight
|
||||||
|
weight = self._purolator_weight(weight)
|
||||||
client = PurolatorClient(
|
client = PurolatorClient(
|
||||||
self.purolator_api_key,
|
self.purolator_api_key,
|
||||||
self.purolator_password,
|
self.purolator_password,
|
||||||
@@ -200,6 +207,7 @@ class ProviderPurolator(models.Model):
|
|||||||
if self.purolator_service_type == service_code:
|
if self.purolator_service_type == service_code:
|
||||||
return self
|
return self
|
||||||
carrier = self.search([('delivery_type', '=', 'purolator'),
|
carrier = self.search([('delivery_type', '=', 'purolator'),
|
||||||
('purolator_service_type', '=', service_code)
|
('purolator_service_type', '=', service_code),
|
||||||
|
('purolator_account_number', '=', self.purolator_account_number),
|
||||||
], limit=1)
|
], limit=1)
|
||||||
return carrier
|
return carrier
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class TestPurolator(TransactionCase):
|
|||||||
|
|
||||||
# Multi-rating with sale order
|
# Multi-rating with sale order
|
||||||
rates = self.carrier.rate_shipment_multi(order=self.sale_order)
|
rates = self.carrier.rate_shipment_multi(order=self.sale_order)
|
||||||
carrier_express = self.env.ref('delivery_purolator.purolator_ground')
|
carrier_express = self.env.ref('delivery_purolator.purolator_express')
|
||||||
rate_express = list(filter(lambda r: r['carrier'] == carrier_express, rates))
|
rate_express = list(filter(lambda r: r['carrier'] == carrier_express, rates))
|
||||||
rate_express = rate_express and rate_express[0]
|
rate_express = rate_express and rate_express[0]
|
||||||
self.assertFalse(rate_express['error_message'])
|
self.assertFalse(rate_express['error_message'])
|
||||||
|
|||||||
Reference in New Issue
Block a user