/** * 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; }