Fix UPS tracking when multiple packages in shipment
This commit is contained in:
parent
d92aece404
commit
9c0b2bf81d
@ -238,6 +238,7 @@ class TrackingStatus {
|
||||
switch ($eventcode) {
|
||||
case "M":
|
||||
case "MV":
|
||||
case "ZA": // UPS My Choice redirect
|
||||
return TrackingStatus::TRACKING_STATUS_PRE_TRANSIT;
|
||||
case "I":
|
||||
case "P":
|
||||
|
@ -48,6 +48,10 @@ class Tracking_UPS {
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($trackrequest));
|
||||
$response = curl_exec($ch);
|
||||
|
||||
//header("Content-Type: application/json");
|
||||
//echo json_encode(json_decode($response), JSON_PRETTY_PRINT);
|
||||
//exit();
|
||||
|
||||
// CHECK TO SEE IF WE GOT AN ERROR
|
||||
// IF SO, FORMAT IT LIKE THIS ::28::Operation timed out afterseconds
|
||||
if ((curl_errno($ch)) && (curl_errno($ch) != 0)) {
|
||||
@ -84,8 +88,21 @@ class Tracking_UPS {
|
||||
}
|
||||
|
||||
$info = new TrackingInfo();
|
||||
|
||||
if (!empty($trackinfo["Package"]["TrackingNumber"])) {
|
||||
$info->setCode($trackinfo["Package"]["TrackingNumber"]);
|
||||
} else if (is_array($trackinfo["Package"])) {
|
||||
// More than one linked package in one shipment, get rid of the extra and make the
|
||||
// schema match what we expect
|
||||
$package = [];
|
||||
for ($i = 0; $i < count($trackinfo["Package"]); $i++) {
|
||||
if ($trackinfo["Package"][$i]["TrackingNumber"] == $code) {
|
||||
$info->setCode($trackinfo["Package"][$i]["TrackingNumber"]);
|
||||
$package = $trackinfo["Package"][$i];
|
||||
$trackinfo["Package"] = $package;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$info->setCarrier("ups");
|
||||
$info->setService(new Service($trackinfo["Service"]["Code"], $trackinfo["Service"]["Description"]));
|
||||
|
Loading…
x
Reference in New Issue
Block a user