diff --git a/delivery_fedex_hibou/models/delivery_fedex.py b/delivery_fedex_hibou/models/delivery_fedex.py index 58b783b2..b3130e1a 100644 --- a/delivery_fedex_hibou/models/delivery_fedex.py +++ b/delivery_fedex_hibou/models/delivery_fedex.py @@ -311,7 +311,8 @@ class DeliveryFedex(models.Model): # package_length=packaging.length, sequence_number=sequence, ref=('%s-%d' % (order_name, sequence)), - insurance=superself.get_insurance_value(picking=picking, package=package) + insurance=superself.get_insurance_value(picking=picking, package=package), + signature_required=superself.get_signature_required(picking=picking, package=package) ) srm.set_master_package(net_weight, package_count, master_tracking_id=master_tracking_id) request = srm.process_shipment() @@ -385,7 +386,8 @@ class DeliveryFedex(models.Model): # package_width=packaging.width, # package_length=packaging.length, ref=order_name, - insurance=superself.get_insurance_value(picking=picking, package=picking_packages[:1]) + insurance=superself.get_insurance_value(picking=picking, package=picking_packages[:1]), + signature_required=superself.get_signature_required(picking=picking, package=picking_packages[:1]) ) srm.set_master_package(net_weight, 1) @@ -475,6 +477,7 @@ class DeliveryFedex(models.Model): meter_number = superself._get_fedex_meter_number(order=order, picking=picking) order_name = superself.get_order_name(order=order, picking=picking) insurance_value = superself.get_insurance_value(order=order, picking=picking, package=package) + signature_required = superself.get_signature_required(order=order, picking=picking, package=package) residential = self._get_fedex_recipient_is_residential(recipient) date_planned = fields.Datetime.now() if self.env.context.get('date_planned'): @@ -558,7 +561,8 @@ class DeliveryFedex(models.Model): # package_length=packaging.length, sequence_number=1, ref=('%s-%d' % (order_name, 1)), - insurance=insurance_value + insurance=insurance_value, + signature_required=signature_required ) else: # deliver all together... @@ -576,7 +580,8 @@ class DeliveryFedex(models.Model): # po_number=po_number, # dept_number=dept_number, ref=('%s-%d' % (order_name, 1)), - insurance=insurance_value + insurance=insurance_value, + signature_required=signature_required ) diff --git a/delivery_fedex_hibou/models/fedex_request.py b/delivery_fedex_hibou/models/fedex_request.py index b6573a31..5e2e4418 100644 --- a/delivery_fedex_hibou/models/fedex_request.py +++ b/delivery_fedex_hibou/models/fedex_request.py @@ -81,7 +81,7 @@ class FedexRequest(fedex_request.FedexRequest): self.RequestedShipment.Recipient.Contact = Contact self.RequestedShipment.Recipient.Address = Address - def add_package(self, weight_value, sequence_number=False, mode='shipping', ref=False, insurance=False): + def add_package(self, weight_value, sequence_number=False, mode='shipping', ref=False, insurance=False, signature_required=False): """ Adds ref type of object to include. :param weight_value: default @@ -89,6 +89,7 @@ class FedexRequest(fedex_request.FedexRequest): :param mode: default :param ref: NEW add CUSTOMER_REFERENCE object :param insurance: NEW add Insurance amount + :param signature_required: NEW add signature required :return: """ package = self.client.factory.create('RequestedPackageLineItem') @@ -109,6 +110,12 @@ class FedexRequest(fedex_request.FedexRequest): insured.Currency = 'USD' package.InsuredValue = insured + special_service = self.client.factory.create("PackageSpecialServicesRequested") + signature_detail = self.client.factory.create("SignatureOptionDetail") + signature_detail.OptionType = 'DIRECT' if signature_required else 'NO_SIGNATURE_REQUIRED' + special_service.SignatureOptionDetail = signature_detail + package.SpecialServicesRequested = special_service + package.PhysicalPackaging = 'BOX' package.Weight = package_weight if mode == 'rating':