shipcloud: make build_sc_addr() a 'free' function
It doesn't need anything from the 'self' object, so let's make it a function free to use by anyone
This commit is contained in:
parent
95160dd623
commit
8a448e41e2
|
@ -28,47 +28,47 @@ def split_first_lastname(name):
|
||||||
return ("", name)
|
return ("", name)
|
||||||
return (r[0], r[1])
|
return (r[0], r[1])
|
||||||
|
|
||||||
|
def build_sc_addr(partner):
|
||||||
|
"""Convert an Odoo partner object into a shipcloud address."""
|
||||||
|
addr = {}
|
||||||
|
(street, house) = split_street_house(partner.street)
|
||||||
|
addr['street'] = street
|
||||||
|
addr['street_no'] = house
|
||||||
|
if partner.street2:
|
||||||
|
addr['care_of'] = partner.street2
|
||||||
|
addr['zip_code'] = partner.zip
|
||||||
|
addr['city'] = partner.city
|
||||||
|
if partner.state_id and partner.state_id.code:
|
||||||
|
addr['state'] = partner.state_id.code
|
||||||
|
addr['country'] = partner.country_id.code
|
||||||
|
|
||||||
|
if partner.is_company:
|
||||||
|
addr['company'] = partner.name
|
||||||
|
else:
|
||||||
|
if partner.parent_id.name:
|
||||||
|
addr['company'] = partner.parent_id.name
|
||||||
|
if partner.name:
|
||||||
|
(first, last) = split_first_lastname(partner.name)
|
||||||
|
addr['first_name'] = first
|
||||||
|
addr['last_name'] = last
|
||||||
|
if partner.email:
|
||||||
|
addr['email'] = partner.email
|
||||||
|
if partner.mobile:
|
||||||
|
addr['phone'] = partner.mobile
|
||||||
|
elif partner.phone:
|
||||||
|
addr['phone'] = partner.phone
|
||||||
|
elif partner.parent_id and partner.parent_id.phone:
|
||||||
|
addr['phone'] = partner.parent_id.phone
|
||||||
|
|
||||||
|
# We had trouble communicating with the carrier: ShipFrom phone number cannot be more than 15 digits long
|
||||||
|
if 'phone' in addr and len(addr['phone']) > 15:
|
||||||
|
addr['phone'] = ''.join(c for c in addr['phone'] if c.isdigit())
|
||||||
|
|
||||||
|
return addr
|
||||||
|
|
||||||
class SCDeliveryCarrier(models.Model):
|
class SCDeliveryCarrier(models.Model):
|
||||||
_inherit = 'delivery.carrier'
|
_inherit = 'delivery.carrier'
|
||||||
|
|
||||||
def build_sc_addr(self, partner):
|
|
||||||
"""Convert an Odoo partner object into a shipcloud address."""
|
|
||||||
addr = {}
|
|
||||||
(street, house) = split_street_house(partner.street)
|
|
||||||
addr['street'] = street
|
|
||||||
addr['street_no'] = house
|
|
||||||
if partner.street2:
|
|
||||||
addr['care_of'] = partner.street2
|
|
||||||
addr['zip_code'] = partner.zip
|
|
||||||
addr['city'] = partner.city
|
|
||||||
if partner.state_id and partner.state_id.code:
|
|
||||||
addr['state'] = partner.state_id.code
|
|
||||||
addr['country'] = partner.country_id.code
|
|
||||||
|
|
||||||
if partner.is_company:
|
|
||||||
addr['company'] = partner.name
|
|
||||||
else:
|
|
||||||
if partner.parent_id.name:
|
|
||||||
addr['company'] = partner.parent_id.name
|
|
||||||
if partner.name:
|
|
||||||
(first, last) = split_first_lastname(partner.name)
|
|
||||||
addr['first_name'] = first
|
|
||||||
addr['last_name'] = last
|
|
||||||
if partner.email:
|
|
||||||
addr['email'] = partner.email
|
|
||||||
if partner.mobile:
|
|
||||||
addr['phone'] = partner.mobile
|
|
||||||
elif partner.phone:
|
|
||||||
addr['phone'] = partner.phone
|
|
||||||
elif partner.parent_id and partner.parent_id.phone:
|
|
||||||
addr['phone'] = partner.parent_id.phone
|
|
||||||
|
|
||||||
# We had trouble communicating with the carrier: ShipFrom phone number cannot be more than 15 digits long
|
|
||||||
if 'phone' in addr and len(addr['phone']) > 15:
|
|
||||||
addr['phone'] = ''.join(c for c in addr['phone'] if c.isdigit())
|
|
||||||
|
|
||||||
return addr
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def estimate_dimensions(weight_kg, density_kg_per_dm3):
|
def estimate_dimensions(weight_kg, density_kg_per_dm3):
|
||||||
|
@ -184,8 +184,8 @@ class SCDeliveryCarrier(models.Model):
|
||||||
carrier_service = self.sudo().sc_carrier_service
|
carrier_service = self.sudo().sc_carrier_service
|
||||||
|
|
||||||
# build individual sub-objects of the shipment
|
# build individual sub-objects of the shipment
|
||||||
from_addr = self.build_sc_addr(warehouse)
|
from_addr = build_sc_addr(warehouse)
|
||||||
to_addr = self.build_sc_addr(recipient)
|
to_addr = build_sc_addr(recipient)
|
||||||
pkg = self.build_sc_pkg(order=order)
|
pkg = self.build_sc_pkg(order=order)
|
||||||
# build the actual shipment object
|
# build the actual shipment object
|
||||||
shp = shipcloud.gen_shipment(from_addr, to_addr, pkg, order.name,
|
shp = shipcloud.gen_shipment(from_addr, to_addr, pkg, order.name,
|
||||||
|
@ -218,8 +218,8 @@ class SCDeliveryCarrier(models.Model):
|
||||||
carrier_service = self.sudo().sc_carrier_service
|
carrier_service = self.sudo().sc_carrier_service
|
||||||
|
|
||||||
# build individual sub-objects of the shipment
|
# build individual sub-objects of the shipment
|
||||||
from_addr = self.build_sc_addr(warehouse)
|
from_addr = build_sc_addr(warehouse)
|
||||||
to_addr = self.build_sc_addr(recipient)
|
to_addr = build_sc_addr(recipient)
|
||||||
pkg = self.build_sc_pkg(picking=pickings)
|
pkg = self.build_sc_pkg(picking=pickings)
|
||||||
if warehouse.country_id.code != recipient.country_id.code and self._is_outside_eu(recipient.country_id) and carrier_service.carrier != 'ups':
|
if warehouse.country_id.code != recipient.country_id.code and self._is_outside_eu(recipient.country_id) and carrier_service.carrier != 'ups':
|
||||||
customs = self.build_sc_customs_decl(pickings, content_desc)
|
customs = self.build_sc_customs_decl(pickings, content_desc)
|
||||||
|
|
Loading…
Reference in New Issue