/** * Prepare and set request in property of current instance * * @param Varien_Object $request * @return Mage_Usa_Model_Shipping_Carrier_Dhl */ public function setRequest(Varien_Object $request) { $this->_request = $request; $this->setStore($request->getStoreId()); $requestObject = new Varien_Object(); $requestObject->setIsGenerateLabelReturn($request->getIsGenerateLabelReturn()); $requestObject->setStoreId($request->getStoreId()); if ($request->getLimitMethod()) { $requestObject->setService($request->getLimitMethod()); } $requestObject = $this->_addParams($requestObject); if ($request->getDestPostcode()) { $requestObject->setDestPostal($request->getDestPostcode()); } $requestObject->setOrigCountry($this->_getDefaultValue($request->getOrigCountry(), Mage_Shipping_Model_Shipping::XML_PATH_STORE_COUNTRY_ID))->setOrigCountryId($this->_getDefaultValue($request->getOrigCountryId(), Mage_Shipping_Model_Shipping::XML_PATH_STORE_COUNTRY_ID)); $shippingWeight = $request->getPackageWeight(); $requestObject->setValue(round($request->getPackageValue(), 2))->setValueWithDiscount($request->getPackageValueWithDiscount())->setCustomsValue($request->getPackageCustomsValue())->setDestStreet(Mage::helper('core/string')->substr(str_replace("\n", '', $request->getDestStreet()), 0, 35))->setDestStreetLine2($request->getDestStreetLine2())->setDestCity($request->getDestCity())->setOrigCompanyName($request->getOrigCompanyName())->setOrigCity($request->getOrigCity())->setOrigPhoneNumber($request->getOrigPhoneNumber())->setOrigPersonName($request->getOrigPersonName())->setOrigEmail(Mage::getStoreConfig('trans_email/ident_general/email', $requestObject->getStoreId()))->setOrigCity($request->getOrigCity())->setOrigPostal($request->getOrigPostal())->setOrigStreetLine2($request->getOrigStreetLine2())->setDestPhoneNumber($request->getDestPhoneNumber())->setDestPersonName($request->getDestPersonName())->setDestCompanyName($request->getDestCompanyName()); $originStreet2 = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_ADDRESS2, $requestObject->getStoreId()); $requestObject->setOrigStreet($request->getOrigStreet() ? $request->getOrigStreet() : $originStreet2); if (is_numeric($request->getOrigState())) { $requestObject->setOrigState(Mage::getModel('directory/region')->load($request->getOrigState())->getCode()); } else { $requestObject->setOrigState($request->getOrigState()); } if ($request->getDestCountryId()) { $destCountry = $request->getDestCountryId(); } else { $destCountry = self::USA_COUNTRY_ID; } // for DHL, Puerto Rico state for US will assume as Puerto Rico country // for Puerto Rico, dhl will ship as international if ($destCountry == self::USA_COUNTRY_ID && ($request->getDestPostcode() == '00912' || $request->getDestRegionCode() == self::PUERTORICO_COUNTRY_ID)) { $destCountry = self::PUERTORICO_COUNTRY_ID; } $requestObject->setDestCountryId($destCountry)->setDestState($request->getDestRegionCode())->setWeight($shippingWeight)->setFreeMethodWeight($request->getFreeMethodWeight())->setOrderShipment($request->getOrderShipment()); if ($request->getPackageId()) { $requestObject->setPackageId($request->getPackageId()); } $requestObject->setBaseSubtotalInclTax($request->getBaseSubtotalInclTax()); $this->_rawRequest = $requestObject; return $this; }
/** * Prepare and set request in property of current instance * * @param Varien_Object $request * @return Mage_Usa_Model_Shipping_Carrier_Dhl */ public function setRequest(Varien_Object $request) { $this->_request = $request; $r = new Varien_Object(); if ($request->getAction() == 'GenerateLabel') { $r->setAction('GenerateLabel'); } else { $r->setAction('RateEstimate'); } $r->setIsGenerateLabelReturn($request->getIsGenerateLabelReturn()); $r->setStoreId($request->getStoreId()); if ($request->getLimitMethod()) { $r->setService($request->getLimitMethod()); } if ($request->getDhlId()) { $id = $request->getDhlId(); } else { $id = $this->getConfigData('id'); } $r->setId($id); if ($request->getDhlPassword()) { $password = $request->getDhlPassword(); } else { $password = $this->getConfigData('password'); } $r->setPassword($password); if ($request->getDhlAccount()) { $accountNbr = $request->getDhlAccount(); } else { $accountNbr = $this->getConfigData('account'); } $r->setAccountNbr($accountNbr); if ($request->getDhlShippingKey()) { $shippingKey = $request->getDhlShippingKey(); } else { $shippingKey = $this->getConfigData('shipping_key'); } $r->setShippingKey($shippingKey); if ($request->getDhlShippingIntlKey()) { $shippingKey = $request->getDhlShippingIntlKey(); } else { $shippingKey = $this->getConfigData('shipping_intlkey'); } $r->setShippingIntlKey($shippingKey); if ($request->getDhlShipmentType()) { $shipmentType = $request->getDhlShipmentType(); } else { $shipmentType = $this->getConfigData('shipment_type'); } $r->setShipmentType($shipmentType); if ($request->getDhlDutiable()) { $shipmentDutible = $request->getDhlDutiable(); } else { $shipmentDutible = $this->getConfigData('dutiable'); } $r->setDutiable($shipmentDutible); if ($request->getDhlDutyPaymentType()) { $dutypaytype = $request->getDhlDutyPaymentType(); } else { $dutypaytype = $this->getConfigData('dutypaymenttype'); } $r->setDutyPaymentType($dutypaytype); if ($request->getDhlContentDesc()) { $contentdesc = $request->getDhlContentDesc(); } else { $contentdesc = $this->getConfigData('contentdesc'); } $r->setContentDesc($contentdesc); if ($request->getDestPostcode()) { $r->setDestPostal($request->getDestPostcode()); } if ($request->getOrigCountry()) { $origCountry = $request->getOrigCountry(); } else { $origCountry = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_COUNTRY_ID, $r->getStoreId()); } $r->setOrigCountry($origCountry); if ($request->getOrigCountryId()) { $origCountryId = $request->getOrigCountryId(); } else { $origCountryId = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_COUNTRY_ID, $r->getStoreId()); } $r->setOrigCountryId($origCountryId); if ($request->getAction() == 'GenerateLabel') { $packageParams = $request->getPackageParams(); $shippingWeight = $request->getPackageWeight(); if ($packageParams->getWeightUnits() != Zend_Measure_Weight::POUND) { $shippingWeight = round(Mage::helper('usa')->convertMeasureWeight($request->getPackageWeight(), $packageParams->getWeightUnits(), Zend_Measure_Weight::POUND)); } if ($packageParams->getDimensionUnits() != Zend_Measure_Length::INCH) { $packageParams->setLength(round(Mage::helper('usa')->convertMeasureDimension($packageParams->getLength(), $packageParams->getDimensionUnits(), Zend_Measure_Length::INCH))); $packageParams->setWidth(round(Mage::helper('usa')->convertMeasureDimension($packageParams->getWidth(), $packageParams->getDimensionUnits(), Zend_Measure_Length::INCH))); $packageParams->setHeight(round(Mage::helper('usa')->convertMeasureDimension($packageParams->getHeight(), $packageParams->getDimensionUnits(), Zend_Measure_Length::INCH))); } $r->setPackageParams($packageParams); } else { /* * DHL only accepts weight as a whole number. Maximum length is 3 digits. */ $shippingWeight = $request->getPackageWeight(); if ($shipmentType != 'L') { $weight = $this->getTotalNumOfBoxes($shippingWeight); $shippingWeight = round(max(1, $weight), 0); } } $r->setValue(round($request->getPackageValue(), 2)); $r->setValueWithDiscount($request->getPackageValueWithDiscount()); $r->setCustomsValue($request->getPackageCustomsValue()); $r->setDestStreet(Mage::helper('core/string')->substr(str_replace("\n", '', $request->getDestStreet()), 0, 35)); $r->setDestStreetLine2($request->getDestStreetLine2()); $r->setDestCity($request->getDestCity()); $r->setOrigCompanyName($request->getOrigCompanyName()); $r->setOrigCity($request->getOrigCity()); $r->setOrigPhoneNumber($request->getOrigPhoneNumber()); $r->setOrigPersonName($request->getOrigPersonName()); $r->setOrigEmail(Mage::getStoreConfig('trans_email/ident_general/email', $r->getStoreId())); $r->setOrigCity($request->getOrigCity()); $r->setOrigPostal($request->getOrigPostal()); $originStreet1 = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_ADDRESS1, $r->getStoreId()); $originStreet2 = Mage::getStoreConfig(Mage_Shipping_Model_Shipping::XML_PATH_STORE_ADDRESS2, $r->getStoreId()); $r->setOrigStreet($request->getOrigStreet() ? $request->getOrigStreet() : $originStreet2); $r->setOrigStreetLine2($request->getOrigStreetLine2()); $r->setDestPhoneNumber($request->getDestPhoneNumber()); $r->setDestPersonName($request->getDestPersonName()); $r->setDestCompanyName($request->getDestCompanyName()); if (is_numeric($request->getOrigState())) { $r->setOrigState(Mage::getModel('directory/region')->load($request->getOrigState())->getCode()); } else { $r->setOrigState($request->getOrigState()); } if ($request->getDestCountryId()) { $destCountry = $request->getDestCountryId(); } else { $destCountry = self::USA_COUNTRY_ID; } //for DHL, puero rico state for US will assume as puerto rico country //for puerto rico, dhl will ship as international if ($destCountry == self::USA_COUNTRY_ID && ($request->getDestPostcode() == '00912' || $request->getDestRegionCode() == self::PUERTORICO_COUNTRY_ID)) { $destCountry = self::PUERTORICO_COUNTRY_ID; } $r->setDestCountryId($destCountry); $r->setDestState($request->getDestRegionCode()); $r->setWeight($shippingWeight); $r->setFreeMethodWeight($request->getFreeMethodWeight()); $r->setOrderShipment($request->getOrderShipment()); if ($request->getPackageId()) { $r->setPackageId($request->getPackageId()); } $r->setBaseSubtotalInclTax($request->getBaseSubtotalInclTax()); $this->_rawRequest = $r; return $this; }
/** * Form array with appropriate structure for shipment request * * @param Varien_Object $request * @return array */ protected function _formShipmentRequest(Varien_Object $request) { $r = new Varien_Object(); $this->_request = $request; $this->_setAccessRequest($r); $packageItems = $request->getPackageItems(); $shipRequest = new StdClass(); $shipRequest->RequesterID = $r->getRequesterId(); //$shipRequest->LabelSize = '4x8'; if (Mage::getStoreConfig('carriers/wsaendicia/label_pdf')) { $shipRequest->ImageFormat = 'PDF'; //EN-15 } $shipRequest->AccountID = $r->getAccountId(); $shipRequest->PassPhrase = $r->getPassword(); $shipRequest->MailClass = $request->getShippingMethod(); $shipRequest->CostCenter = 0; $shipRequest->Stealth = Mage::getStoreConfig('carriers/wsaendicia/stealth') ? 'TRUE' : 'FALSE'; $shipRequest->Value = $request->getPackageValue(); $shipRequest->Description = 'Goods purchased'; $weightUnits = Zend_Measure_Weight::POUND; $shipDimensions = new stdClass(); foreach ($request->getPackages() as $package) { $shipDimensions->Length = $this->_convertDimension($package['params']['length'], $package['params']['dimension_units']); $shipDimensions->Width = $this->_convertDimension($package['params']['width'], $package['params']['dimension_units']); $shipDimensions->Height = $this->_convertDimension($package['params']['height'], $package['params']['dimension_units']); $shipRequest->MailpieceShape = $this->checkContainerType($package['params']['container']); $weightUnits = $package['params']['weight_units']; break; } $shipRequest->WeightOz = $this->_convertWeight($request->getPackageWeight(), $weightUnits); $shipRequest->MailpieceDimensions = $shipDimensions; $isDomestic = $request->getRecipientAddressCountryCode() == self::USA_COUNTRY_ID; if (!$isDomestic) { $shipCustomsInfo = new stdClass(); $shipCustomsInfo->ContentsType = 'Merchandise'; $shipCustomsInfo->RestrictionType = 'None'; $shipCustomsInfo->SendersCustomsReference = $request->getShipperContactCompanyName(); $shipCustomsInfo->ImportersCustomsReference = $request->getRecipientContactPersonName(); $shipCustomsInfo->LicenseNumber = ''; $shipCustomsInfo->CertificateNumber = ''; if ($invoice = $request->getOrderShipment()->getOrder()->getInvoice()) { $invoiceNum = $invoice->getIncrementId(); } else { $invoiceNum = ''; } $shipCustomsInfo->InvoiceNumber = $invoiceNum; $shipCustomsInfo->EelPfc = 'NOEEI 30.37(a)'; $customItems = new stdClass(); foreach ($packageItems as $item) { $oneCustomsItem = new stdClass(); $oneCustomsItem->Description = $item['name']; $oneCustomsItem->Quantity = $item['qty']; $oneCustomsItem->Weight = $this->_convertWeight($item['weight'] * $item['qty'], $weightUnits); $oneCustomsItem->Value = $item['customs_value'] * $item['qty']; $customItems->CustomsItem[] = $oneCustomsItem; } $shipCustomsInfo->CustomsItems = $customItems; $shipRequest->CustomsInfo = $shipCustomsInfo; $shipRequest->CustomsCertify = 'FALSE'; $shipRequest->CustomsSigner = ''; $shipRequest->CustomsSendersCopy = 'true'; } $shipRequest->SortType = 'Nonpresorted'; $shipRequest->EntryFacility = "Other"; $services = false; if ($isDomestic) { foreach ($this->getCode('delivery_conf_types') as $confCode => $description) { if ($request->getServices() != 'False' && $this->_mapServices($request->getServices()) == $confCode) { if (!$services) { $services = new stdClass(); } $services->{$confCode} = "ON"; } } } if ($request->getInsuranceRequired()) { if (!$services) { $services = new stdClass(); } $services->InsuredMail = Mage::helper('wsaendicia')->getInsuranceProvider(); $shipRequest->InsuredValue = $request->getInsuranceValue() ? $request->getInsuranceValue() : $request->getPackageValue(); } if ($services) { $shipRequest->Services = $services; } $shipRequest->PartnerCustomerID = $request->getOrderShipment()->getOrder()->getIncrementId(); $shipRequest->PartnerTransactionID = $request->getOrderShipment()->getOrder()->getIncrementId(); if (Mage::getStoreConfig('carriers/wsaendicia/rubber_stamp_order')) { $shipRequest->RubberStamp1 = $request->getOrderShipment()->getOrder()->getIncrementId(); } $rubberStamp1code = Mage::getStoreConfig('carriers/wsaendicia/rubber_stamp_1'); $rubberStamp2code = Mage::getStoreConfig('carriers/wsaendicia/rubber_stamp_2'); $rubberStamp3code = Mage::getStoreConfig('carriers/wsaendicia/rubber_stamp_3'); if ($rubberStamp1code != '' || $rubberStamp2code != '' || $rubberStamp3code != '') { $product = new Varien_Object(); foreach ($packageItems as $packageItem) { $product = Mage::getModel('catalog/product')->load($packageItem['product_id']); break; } try { if ($product->getData($rubberStamp1code)) { $rubberStamp1 = $product->getAttributeText($rubberStamp1code) ? $product->getAttributeText($rubberStamp1code) : $product->getData($rubberStamp1code); } else { $rubberStamp1 = ""; } if ($product->getData($rubberStamp2code)) { $rubberStamp2 = $product->getAttributeText($rubberStamp2code) ? $product->getAttributeText($rubberStamp2code) : $product->getData($rubberStamp2code); } else { $rubberStamp2 = ""; } if ($product->getData($rubberStamp3code)) { $rubberStamp3 = $product->getAttributeText($rubberStamp3code) ? $product->getAttributeText($rubberStamp3code) : $product->getData($rubberStamp3code); } else { $rubberStamp3 = ""; } if ($rubberStamp1 != "") { if (Mage::getStoreConfig('carriers/wsaendicia/rubber_stamp_order')) { $shipRequest->RubberStamp1 = $request->getOrderShipment()->getOrder()->getIncrementId() . ": " . $rubberStamp1; } else { $shipRequest->RubberStamp1 = $rubberStamp1; } } if ($rubberStamp2 != "") { $shipRequest->RubberStamp2 = $rubberStamp2; } if ($rubberStamp3 != "") { $shipRequest->RubberStamp3 = $rubberStamp3; } } catch (Exception $e) { Mage::logException($e); } } $shipRequest->FromName = $request->getShipperContactCompanyName(); $shipRequest->ReturnAddress1 = $request->getShipperAddressStreet(); $shipRequest->FromCity = $request->getShipperAddressCity(); $shipRequest->FromState = $request->getShipperAddressStateOrProvinceCode(); $shipRequest->FromPostalCode = substr($request->getShipperAddressPostalCode(), 0, 5); if ($isDomestic) { $shipRequest->FromCountry = $request->getShipperAddressCountryCode(); } $shipRequest->FromPhone = $request->getShipperContactPhoneNumber(); $shipRequest->ToName = $request->getRecipientContactPersonName(); if ($request->getRecipientContactCompanyName()) { $shipRequest->ToCompany = $request->getRecipientContactCompanyName(); } $shipRequest->ToAddress1 = $request->getRecipientAddressStreet(); $shipRequest->ToCity = $request->getRecipientAddressCity(); $shipRequest->ToState = $request->getRecipientAddressStateOrProvinceCode(); $shipRequest->ToPostalCode = $isDomestic ? substr($request->getRecipientAddressPostalCode(), 0, 5) : substr($request->getRecipientAddressPostalCode(), 0, 15); if (!$isDomestic) { $shipRequest->ToCountryCode = $request->getRecipientAddressCountryCode(); } if (!$isDomestic) { $shipRequest->ToCountry = Mage::getModel('directory/country')->load($request->getRecipientAddressCountryCode())->getName(); } $shipRequest->ToPhone = $request->getRecipientContactPhoneNumber(); $test = $this->getConfigFlag('sandbox_mode') ? 'YES' : "NO"; $shipRequest->Test = $test; // $shipRequest->ImageFormat = 'PDF'; $wholeRequest = new stdClass(); $wholeRequest->LabelRequest = $shipRequest; return $wholeRequest; }