Beispiel #1
0
 protected function _writeOrderItem(Mage_Sales_Model_Order_Item $item, XMLWriter $xml, $storeId = null)
 {
     // inherit some attributes from parent order item
     if ($item->getParentItemId() && !$item->getParentItem()) {
         $item->setParentItem(Mage::getModel('sales/order_item')->load($item->getParentItemId()));
     }
     // only inherit if parent has been hidden
     if ($item->getParentItem() && $item->getPrice() == 0.0 && Mage::helper('auctaneapi')->isExcludedProductType($item->getParentItem()->getProductType())) {
         $item->setPrice($item->getParentItem()->getPrice());
     }
     /* @var $gift Mage_GiftMessage_Model_Message */
     $gift = Mage::helper('giftmessage/message')->getGiftMessage(!$item->getGiftMessageId() && $item->getParentItem() ? $item->getParentItem()->getGiftMessageId() : $item->getGiftMessageId());
     $item->setGift($gift->isObjectNew() ? 'false' : 'true');
     if (!$gift->isObjectNew()) {
         $item->setGiftMessage(sprintf("From: %s\nTo: %s\nMessage: %s", $gift->getSender(), $gift->getRecipient(), $gift->getMessage()));
     }
     /* @var $product Mage_Catalog_Model_Product */
     $product = Mage::getModel('catalog/product')->setStoreId($storeId)->load($item->getProductId());
     // inherit some attributes from parent product item
     if ($parentProduct = $this->_getOrderItemParentProduct($item, $storeId)) {
         if (!$product->getImage() || $product->getImage() == 'no_selection') {
             $product->setImage($parentProduct->getImage());
         }
         if (!$product->getSmallImage() || $product->getSmallImage() == 'no_selection') {
             $product->setSmallImage($parentProduct->getSmallImage());
         }
         if (!$product->getThumbnail() || $product->getThumbnail() == 'no_selection') {
             $product->setThumbnail($parentProduct->getThumbnail());
         }
     }
     $xml->startElement('Item');
     $helper = Mage::helper('auctaneapi');
     if (Mage::helper('auctaneapi')->getExportPriceType($item->getOrder()->getStoreId()) == Auctane_Api_Model_System_Source_Config_Prices::BASE_PRICE) {
         $helper->fieldsetToXml('base_sales_order_item', $item, $xml);
     } else {
         $helper->fieldsetToXml('sales_order_item', $item, $xml);
     }
     /* using emulation so that product images come from the correct store */
     $appEmulation = Mage::getSingleton('core/app_emulation');
     $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($product->getStoreId());
     Mage::helper('auctaneapi')->fieldsetToXml('sales_order_item_product', $product, $xml);
     $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
     $xml->startElement('Options');
     $this->_writeOrderProductAttribute($product, $xml, $storeId);
     // items may have several custom options chosen by customer
     foreach ((array) $item->getProductOptionByCode('options') as $option) {
         $this->_writeOrderItemOption($option, $xml, $storeId);
     }
     $buyRequest = $item->getProductOptionByCode('info_buyRequest');
     if ($buyRequest && @$buyRequest['super_attribute']) {
         // super_attribute is non-null and non-empty, there must be a Configurable involved
         $parentItem = $this->_getOrderItemParent($item);
         /* export configurable custom options as they are stored in parent */
         foreach ((array) $parentItem->getProductOptionByCode('options') as $option) {
             $this->_writeOrderItemOption($option, $xml, $storeId);
         }
         foreach ((array) $parentItem->getProductOptionByCode('attributes_info') as $option) {
             $this->_writeOrderItemOption($option, $xml, $storeId);
         }
     }
     $xml->endElement();
     // Options
     $xml->endElement();
     // Item
 }