[IMP] delivery_hibou: improve dynamic calls

This commit is contained in:
Jared Kipe
2022-09-20 19:45:24 +00:00
parent b08e05df17
commit 2d1c973034

View File

@@ -294,16 +294,16 @@ class DeliveryCarrier(models.Model):
p.package_type_id.package_carrier_type in (False, '', 'none', carrier.delivery_type)) p.package_type_id.package_carrier_type in (False, '', 'none', carrier.delivery_type))
if packages and not carrier_packages: if packages and not carrier_packages:
continue continue
if hasattr(carrier, '%s_rate_shipment_multi' % self.delivery_type): attr = getattr(carrier, '%s_rate_shipment_multi' % self.delivery_type, None)
if attr:
try: try:
res += getattr(carrier, '%s_rate_shipment_multi' % carrier.delivery_type)(order=order, res += attr(order=order, picking=picking, packages=carrier_packages)
picking=picking,
packages=carrier_packages)
except TypeError: except TypeError:
# TODO remove catch if after Odoo 14 # TODO remove catch if after Odoo 14
# This is intended to find ones that don't support packages= kwarg # This is intended to find ones that don't support packages= kwarg
res += getattr(carrier, '%s_rate_shipment_multi' % carrier.delivery_type)(order=order, res2 = attr(order=order, picking=picking)
picking=picking) if res2:
res += res2
return res return res
@@ -314,11 +314,12 @@ class DeliveryCarrier(models.Model):
:param packages: Optional recordset of packages (should be for this carrier) :param packages: Optional recordset of packages (should be for this carrier)
''' '''
self.ensure_one() self.ensure_one()
if hasattr(self, '%s_cancel_shipment' % self.delivery_type): attr = getattr(self, '%s_cancel_shipment' % self.delivery_type, None)
if attr:
# No good way to tell if this method takes the kwarg for packages # No good way to tell if this method takes the kwarg for packages
if packages: if packages:
try: try:
return getattr(self, '%s_cancel_shipment' % self.delivery_type)(pickings, packages=packages) return attr(pickings, packages=packages)
except TypeError: except TypeError:
# we won't be able to cancel the packages properly # we won't be able to cancel the packages properly
# here we will TRY to make a good call here where we put the package references into the picking # here we will TRY to make a good call here where we put the package references into the picking
@@ -329,7 +330,7 @@ class DeliveryCarrier(models.Model):
'carrier_tracking_ref': tracking_ref, 'carrier_tracking_ref': tracking_ref,
}) })
return getattr(self, '%s_cancel_shipment' % self.delivery_type)(pickings) return attr(pickings)
class ChooseDeliveryPackage(models.TransientModel): class ChooseDeliveryPackage(models.TransientModel):