@@ -30,6 +30,9 @@ def __init__(self, config_obj, *args, **kwargs):
3030
3131 @type config_obj: L{FedexConfig}
3232 @param config_obj: A valid FedexConfig object.
33+
34+ @type tracking_number_unique_id: str
35+ @param tracking_number_unique_id: Used to distinguish duplicate FedEx tracking numbers.
3336 """
3437 self ._config_obj = config_obj
3538
@@ -38,6 +41,11 @@ def __init__(self, config_obj, *args, **kwargs):
3841 'intermediate' : '0' , 'minor' : '0' }
3942 self .TrackPackageIdentifier = None
4043 """@ivar: Holds the TrackPackageIdentifier WSDL object."""
44+
45+ self .TrackingNumberUniqueIdentifier = None
46+ self .tracking_number_unique_id = kwargs .pop ('tracking_number_unique_id' , None )
47+
48+ """@ivar: Holds the TrackingNumberUniqueIdentifier WSDL object."""
4149 # Call the parent FedexBaseService class for basic setup work.
4250 super (FedexTrackRequest , self ).__init__ (self ._config_obj ,
4351 'TrackService_v5.wsdl' ,
@@ -53,6 +61,10 @@ def _prepare_wsdl_objects(self):
5361 # Default to tracking number.
5462 self .TrackPackageIdentifier .Type = 'TRACKING_NUMBER_OR_DOORTAG'
5563
64+ if self .tracking_number_unique_id :
65+ self .TrackingNumberUniqueIdentifier = self .client .factory .create ('TrackDetail' )
66+ self .TrackingNumberUniqueIdentifier = self .tracking_number_unique_id
67+
5668 def _check_response_for_request_errors (self ):
5769 """
5870 Checks the response to see if there were any errors specific to
@@ -82,6 +94,7 @@ def _assemble_and_send_request(self):
8294 TransactionDetail = self .TransactionDetail ,
8395 Version = self .VersionId ,
8496 IncludeDetailedScans = self .IncludeDetailedScans ,
85- PackageIdentifier = self .TrackPackageIdentifier )
97+ PackageIdentifier = self .TrackPackageIdentifier ,
98+ TrackingNumberUniqueIdentifier = self .TrackingNumberUniqueIdentifier )
8699
87100 return response
0 commit comments