示例#1
0
 /**
  * Do request to shipment
  *
  * @param Mage_Shipping_Model_Shipment_Request $request
  * @return array
  */
 public function requestToShipment(Mage_Shipping_Model_Shipment_Request $request)
 {
     $packages = $request->getPackages();
     if (!is_array($packages) || !$packages) {
         Mage::throwException(Mage::helper('usa')->__('No packages for request'));
     }
     if ($request->getStoreId() != null) {
         $this->setStore($request->getStoreId());
     }
     $data = array();
     foreach ($packages as $packageId => $package) {
         $request->setPackageId($packageId);
         $request->setPackagingType($package['params']['container']);
         $request->setPackageWeight($package['params']['weight']);
         $request->setPackageParams(new Varien_Object($package['params']));
         $request->setPackageItems($package['items']);
         $result = $this->_doShipmentRequest($request);
         if ($result->hasErrors()) {
             $this->rollBack($data);
             break;
         } else {
             $data[] = array('tracking_number' => $result->getTrackingNumber(), 'label_content' => $result->getShippingLabelContent());
         }
         if (!isset($isFirstRequest)) {
             $request->setMasterTrackingId($result->getTrackingNumber());
             $isFirstRequest = false;
         }
     }
     $response = new Varien_Object(array('info' => $data));
     if ($result->getErrors()) {
         $response->setErrors($result->getErrors());
     }
     return $response;
 }
示例#2
0
 /**
  * Do request to shipment
  *
  * @param Mage_Shipping_Model_Shipment_Request $request
  * @return array
  */
 public function requestToShipment(Mage_Shipping_Model_Shipment_Request $request)
 {
     $this->_debug = Mage::helper('wsalogger')->isDebug($this->_modName);
     $packages = $request->getPackages();
     if (!is_array($packages) || !$packages) {
         Mage::throwException(Mage::helper('usa')->__('No packages for request'));
     }
     if ($request->getStoreId() != null) {
         $this->setStore($request->getStoreId());
     }
     $data = array();
     foreach ($packages as $packageId => $package) {
         $request->setPackageId($packageId);
         $request->setPackagingType($this->checkContainerType($package['params']['container']));
         $request->setPackageWeight($package['params']['weight']);
         $request->setPackageValue($package['params']['customs_value']);
         $request->setServices($package['params']['delivery_confirmation']);
         $request->setPackageParams(new Varien_Object($package['params']));
         $request->setPackageItems($package['items']);
         array_key_exists('add_insurance', $package['params']) ? $request->setInsuranceRequired($package['params']['add_insurance']) : $request->setInsuranceRequired(false);
         array_key_exists('insurance_value', $package['params']) ? $request->setInsuranceValue($package['params']['insurance_value']) : $request->setInsuranceValue(false);
         array_key_exists('endicia_shipmethod', $package['params']) ? $request->setShippingMethod($package['params']['endicia_shipmethod']) : $request->setSelectedShipMethod(false);
         $result = $this->_doShipmentRequest($request);
         if ($result->hasErrors()) {
             $this->rollBack($data);
             break;
         } else {
             $data[] = array('tracking_number' => $result->getTrackingNumber(), 'label_content' => $result->getShippingLabelContent());
         }
         if (!isset($isFirstRequest)) {
             $request->setMasterTrackingId($result->getTrackingNumber());
             $isFirstRequest = false;
         }
     }
     $response = new Varien_Object(array('info' => $data));
     if ($result->getErrors()) {
         $response->setErrors($result->getErrors());
     }
     return $response;
 }