/** * Prepare and set request to this instance * * @param Mage_Shipping_Model_Rate_Request $request * @return Mage_Usa_Model_Shipping_Carrier_Usps */ public function setRequest(Mage_Shipping_Model_Rate_Request $request) { $this->_request = $request; $r = new Varien_Object(); if ($request->getLimitMethod()) { $r->setService($request->getLimitMethod()); } else { $r->setService('ALL'); } if ($request->getUspsUserid()) { $userId = $request->getUspsUserid(); } else { $userId = $this->getConfigData('userid'); } $r->setUserId($userId); if ($request->getUspsContainer()) { $container = $request->getUspsContainer(); } else { $container = $this->getConfigData('container'); } $r->setContainer($container); if ($request->getUspsSize()) { $size = $request->getUspsSize(); } else { $size = $this->getConfigData('size'); } $r->setSize($size); if ($request->getGirth()) { $girth = $request->getGirth(); } else { $girth = $this->getConfigData('girth'); } $r->setGirth($girth); if ($request->getHeight()) { $height = $request->getHeight(); } else { $height = $this->getConfigData('height'); } $r->setHeight($height); if ($request->getLength()) { $length = $request->getLength(); } else { $length = $this->getConfigData('length'); } $r->setLength($length); if ($request->getWidth()) { $width = $request->getWidth(); } else { $width = $this->getConfigData('width'); } $r->setWidth($width); if ($request->getUspsMachinable()) { $machinable = $request->getUspsMachinable(); } else { $machinable = $this->getConfigData('machinable'); } $r->setMachinable($machinable); if ($request->getOrigPostcode()) { $r->setOrigPostal($request->getOrigPostcode()); } else { $r->setOrigPostal(Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_ZIP, $request->getStoreId())); } if ($request->getOrigCountryId()) { $r->setOrigCountryId($request->getOrigCountryId()); } else { $r->setOrigCountryId(Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_COUNTRY_ID, $request->getStoreId())); } if ($request->getDestCountryId()) { $destCountry = $request->getDestCountryId(); } else { $destCountry = self::USA_COUNTRY_ID; } $r->setDestCountryId($destCountry); if (!$this->_isUSCountry($destCountry)) { $r->setDestCountryName($this->_getCountryName($destCountry)); } if ($request->getDestPostcode()) { $r->setDestPostal($request->getDestPostcode()); } $weight = $this->getTotalNumOfBoxes($request->getPackageWeight()); $r->setWeightPounds(floor($weight)); $r->setWeightOunces(round(($weight - floor($weight)) * self::OUNCES_POUND, 1)); if ($request->getFreeMethodWeight() != $request->getPackageWeight()) { $r->setFreeMethodWeight($request->getFreeMethodWeight()); } $r->setValue($request->getPackageValue()); $r->setValueWithDiscount($request->getPackageValueWithDiscount()); $r->setBaseSubtotalInclTax($request->getBaseSubtotalInclTax()); $this->_rawRequest = $r; return $this; }
/** * Map request to shipment * * @param Varien_Object $request * @return null */ protected function _mapRequestToShipment(Varien_Object $request) { $customsValue = $request->getPackageParams()->getCustomsValue(); $request->setOrigPersonName($request->getShipperContactPersonName()); $request->setOrigPostal($request->getShipperAddressPostalCode()); $request->setOrigPhoneNumber($request->getShipperContactPhoneNumber()); $request->setOrigCompanyName($request->getShipperContactCompanyName()); $request->setOrigCountryId($request->getShipperAddressCountryCode()); $request->setOrigState($request->getShipperAddressStateOrProvinceCode()); $request->setOrigCity($request->getShipperAddressCity()); $request->setOrigStreet($request->getShipperAddressStreet1() . ' ' . $request->getShipperAddressStreet2()); $request->setOrigStreetLine2($request->getShipperAddressStreet2()); $request->setDestPersonName($request->getRecipientContactPersonName()); $request->setDestPostcode($request->getRecipientAddressPostalCode()); $request->setDestPhoneNumber($request->getRecipientContactPhoneNumber()); $request->setDestCompanyName($request->getRecipientContactCompanyName()); $request->setDestCountryId($request->getRecipientAddressCountryCode()); $request->setDestRegionCode($request->getRecipientAddressStateOrProvinceCode()); $request->setDestCity($request->getRecipientAddressCity()); $request->setDestStreet($request->getRecipientAddressStreet1()); $request->setDestStreetLine2($request->getRecipientAddressStreet2()); $request->setLimitMethod($request->getShippingMethod()); $request->setPackageValue($customsValue); $request->setValueWithDiscount($customsValue); $request->setPackageCustomsValue($customsValue); $request->setFreeMethodWeight(0); $request->setDhlShipmentType($request->getPackagingType()); $request->setBaseSubtotalInclTax($request->getBaseSubtotalInclTax()); }
/** * Map request to shipment * * @param Varien_Object $request * @return null */ protected function _mapRequestToShipment(Varien_Object $request) { $request->setOrigCountryId($request->getShipperAddressCountryCode()); $this->_rawRequest = $request; $customsValue = 0; $packageWeight = 0; $packages = $request->getPackages(); foreach ($packages as &$piece) { $params = $piece['params']; if ($params['width'] || $params['length'] || $params['height']) { $minValue = $this->_getMinDimension($params['dimension_units']); if ($params['width'] < $minValue || $params['length'] < $minValue || $params['height'] < $minValue) { $message = Mage::helper('usa')->__('Height, width and length should be equal or greater than %s', $minValue); Mage::throwException($message); } } $weightUnits = $piece['params']['weight_units']; $piece['params']['height'] = $this->_getDimension($piece['params']['height'], $weightUnits); $piece['params']['length'] = $this->_getDimension($piece['params']['length'], $weightUnits); $piece['params']['width'] = $this->_getDimension($piece['params']['width'], $weightUnits); $piece['params']['dimension_units'] = $this->_getDimensionUnit(); $piece['params']['weight'] = $this->_getWeight($piece['params']['weight'], false, $weightUnits); $piece['params']['weight_units'] = $this->_getWeightUnit(); $customsValue += $piece['params']['customs_value']; $packageWeight += $piece['params']['weight']; } $request->setPackages($packages)->setPackageWeight($packageWeight)->setPackageValue($customsValue)->setValueWithDiscount($customsValue)->setPackageCustomsValue($customsValue)->setFreeMethodWeight(0); }