Example #1
0
 function trackPackages($track_date = '0000-00-00', $log_id = false)
 {
     // single tracking # or date range
     global $db, $messageStack;
     //	$result = array();
     if ($log_id) {
         $shipments = $db->Execute("select id, ref_id, deliver_date, actual_date, tracking_id, notes \n\t\tfrom " . TABLE_SHIPPING_LOG . " where carrier = '{$this->code}' and id = '{$log_id}'");
     } else {
         $start_date = $track_date;
         $end_date = gen_specific_date($track_date, $day_offset = 1);
         $shipments = $db->Execute("select id, ref_id, deliver_date, actual_date, tracking_id, notes \n\t\tfrom " . TABLE_SHIPPING_LOG . " where carrier = '{$this->code}' and ship_date >= '{$start_date}' and ship_date < '{$end_date}'");
     }
     if ($shipments->RecordCount() == 0) {
         return 'No records were found!';
     }
     $xml = "<StatusRequest>\n";
     $xml .= xmlEntry('AccountID', MODULE_SHIPPING_ENDICIA_ACCOUNT_NUMBER);
     $xml .= xmlEntry('PassPhrase', MODULE_SHIPPING_ENDICIA_PASS_PHRASE);
     $xml .= xmlEntry('Test', MODULE_SHIPPING_ENDICIA_TEST_MODE == 'Test' ? 'Y' : 'N');
     $xml .= xmlEntry('FullStatus', 'N');
     while (!$shipments->EOF) {
         $xml .= "  <StatusList>\n";
         $xml .= xmlEntry('PICNumber', $shipments->fields['tracking_id']);
         $xml .= "  </StatusList>\n";
         $shipments->MoveNext();
     }
     $xml .= "</StatusRequest>\n";
     $client = new SoapClient(MODULE_SHIPPING_ENDICIA_ELS_URL, array('trace' => 1));
     try {
         $response = $client->StatusRequest($xml);
         //echo 'Request <pre>' . htmlspecialchars($client->__getLastRequest()) . '</pre>';
         //echo 'Response <pre>' . htmlspecialchars($client->__getLastResponse()) . '</pre>';
         if ($response->StatusResponse->Status == 0) {
             if (!is_array($response->StatusResponse->StatusList)) {
                 $response->StatusResponse->StatusList = array($response->StatusResponse->StatusList);
             }
             foreach ($response->StatusResponse->StatusList as $status) {
                 $description = $status->PICNumber->Status;
                 $status_code = $status->PICNumber->StatusCode;
                 $message = sprintf(SHIPPING_ENDICIA_TRACK_STATUS, $shipments->fields['ref_id'], $shipments->fields['tracking_id'], $description);
                 $messageStack->add($message, $status_code == 'D' ? 'success' : 'caution');
             }
         } else {
             $message = TEXT_ERROR . ' (' . $response->StatusResponse->Status . ') ' . $response->StatusResponse->ErrorMsg;
             $messageStack->add($message, 'error');
         }
     } catch (SoapFault $exception) {
         //echo 'Error Request <pre>' . htmlspecialchars($client->__getLastRequest()) . '</pre>';
         //echo 'Error Response <pre>' . htmlspecialchars($client->__getLastResponse()) . '</pre>';
         $message = "SOAP Error ({$exception->faultcode}) {$exception->faultstring}";
         $messageStack->add($message, 'error');
     }
     return $message;
 }