*/ class Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Bundle extends Mage_Bundle_Block_Sales_Order_Items_Renderer { /** * Add item to XML object * (get from template: bundle/sales/order/items/renderer.phtml) * * @param Mage_XmlConnect_Model_Simplexml_Element $orderItemXmlObj * @return null */ public function addItemToXmlObject(Mage_XmlConnect_Model_Simplexml_Element $orderItemXmlObj) { /** @var $parentItem Mage_Sales_Model_Order_Item */ $parentItem = $this->getItem(); $items = array_merge(array($parentItem), $parentItem->getChildrenItems()); $_prevOptionId = ''; /** @var $weeeHelper Mage_Weee_Helper_Data */ $weeeHelper = $this->helper('weee'); /** @var $taxHelper Mage_Tax_Helper_Data */ $taxHelper = $this->helper('tax'); /** @var $itemXml Mage_XmlConnect_Model_Simplexml_Element */ $itemXml = $orderItemXmlObj->addChild('item'); /** @var $optionsXml Mage_XmlConnect_Model_Simplexml_Element */ $optionsXml = $itemXml->addChild('related_products'); $this->setWeeeTaxAppliedAmount($parentItem->getWeeeTaxAppliedAmount()); $this->setWeeeTaxDisposition($parentItem->getWeeeTaxDisposition()); $typeOfDisplay1 = $weeeHelper->typeOfDisplay($parentItem, 1, 'sales') && $this->getWeeeTaxAppliedAmount(); $typeOfDisplay2 = $weeeHelper->typeOfDisplay($parentItem, 2, 'sales') && $this->getWeeeTaxAppliedAmount(); $typeOfDisplay4 = $weeeHelper->typeOfDisplay($parentItem, 4, 'sales') && $this->getWeeeTaxAppliedAmount(); $typeOfDisplay014 = $weeeHelper->typeOfDisplay($parentItem, array(0, 1, 4), 'sales') && $this->getWeeeTaxAppliedAmount(); $this->setTypesOfDisplay(array( Mage_XmlConnect_Helper_Customer_Order::PRICE_DISPLAY_TYPE_1 => $typeOfDisplay1, Mage_XmlConnect_Helper_Customer_Order::PRICE_DISPLAY_TYPE_2 => $typeOfDisplay2, Mage_XmlConnect_Helper_Customer_Order::PRICE_DISPLAY_TYPE_4 => $typeOfDisplay4, Mage_XmlConnect_Helper_Customer_Order::PRICE_DISPLAY_TYPE_14 => $typeOfDisplay014, )); $this->setWeeeTaxes($weeeHelper->getApplied($parentItem)); /** @var $item Mage_Sales_Model_Order_Item */ foreach ($items as $item) { $isOption = $item->getParentItem() ? true : false; /** @var $objectXml Mage_XmlConnect_Model_Simplexml_Element */ if ($isOption) { $objectXml = $optionsXml->addChild('item'); } else { $objectXml = $itemXml; } $objectXml->addAttribute('product_id', $item->getProductId()); $objectXml->addCustomChild('entity_type', $item->getProductType()); if ($isOption) { $attributes = $this->getSelectionAttributes($item); if ($_prevOptionId != $attributes['option_id']) { $objectXml->addAttribute('label', $objectXml->xmlAttribute($attributes['option_label'])); $_prevOptionId = $attributes['option_id']; } } $objectXml->addCustomChild('sku', Mage::helper('core/string')->splitInjection($item->getSku())); if ($isOption) { $name = $this->getValueHtml($item); } else { $name = $item->getName(); } $objectXml->addCustomChild('name', $name); // set prices exactly for the Bundle product, but not for related products if (!$isOption) { /** @var $priceXml Mage_XmlConnect_Model_Simplexml_Element */ $priceXml = $objectXml->addChild('price'); /** @var $subtotalXml Mage_XmlConnect_Model_Simplexml_Element */ $subtotalXml = $objectXml->addChild('subtotal'); // Price excluding tax if ($taxHelper->displaySalesBothPrices() || $taxHelper->displaySalesPriceExclTax()) { Mage::helper('xmlconnect/customer_order')->addPriceAndSubtotalToXml( $this, $parentItem, $priceXml, $subtotalXml ); } // Price including tax if ($taxHelper->displaySalesBothPrices() || $taxHelper->displaySalesPriceInclTax()) { Mage::helper('xmlconnect/customer_order')->addPriceAndSubtotalToXml( $this, $parentItem, $priceXml, $subtotalXml, true ); } } // set quantities /** @var $qtyXml Mage_XmlConnect_Model_Simplexml_Element */ if (($isOption && $this->isChildCalculated()) || (!$isOption && !$this->isChildCalculated()) ) { $qtyXml = $objectXml->addChild('qty'); if ($item->getQtyOrdered() > 0) { $qtyXml->addCustomChild('value', $item->getQtyOrdered() * 1, array( 'label' => Mage::helper('sales')->__('Ordered') )); } if ($item->getQtyShipped() > 0 && !$this->isShipmentSeparately()) { $qtyXml->addCustomChild('value', $item->getQtyShipped() * 1, array( 'label' => Mage::helper('sales')->__('Shipped') )); } if ($item->getQtyCanceled() > 0) { $qtyXml->addCustomChild('value', $item->getQtyCanceled() * 1, array( 'label' => Mage::helper('sales')->__('Canceled') )); } if ($item->getQtyRefunded() > 0) { $qtyXml->addCustomChild('value', $item->getQtyRefunded() * 1, array( 'label' => Mage::helper('sales')->__('Refunded') )); } } elseif ($item->getQtyShipped() > 0 && $isOption && $this->isShipmentSeparately()) { $qtyXml = $objectXml->addChild('qty'); $qtyXml->addCustomChild('value', $item->getQtyShipped() * 1, array( 'label' => Mage::helper('sales')->__('Shipped') )); } } if ($parentItem->getDescription()) { $itemXml->addCustomChild('description', $parentItem->getDescription()); } Mage::helper('xmlconnect/customer_order')->addItemOptionsToXml($this, $itemXml); } /** * Prepare option data for output * * @param Mage_Sales_Model_Order_Item $item * @return string */ public function getValueHtml($item) { $attributes = $this->getSelectionAttributes($item); if ($attributes) { return sprintf('%d', $attributes['qty']) . ' x ' . $item->getName() . ' - ' . $this->_formatPrice($attributes['price']); } else { return $item->getName(); } } /** * Format price using order currency * * @param float $price * @return string */ protected function _formatPrice($price) { return Mage::helper('xmlconnect/customer_order')->formatPrice($this, $price); } }