/
Items.php
149 lines (139 loc) · 4.24 KB
/
Items.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?php
/**
* Copyright (c) 2013-2014 eBay Enterprise, Inc.
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* @copyright Copyright (c) 2013-2014 eBay Enterprise, Inc. (http://www.ebayenterprise.com/)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class EbayEnterprise_Order_Overrides_Block_Order_Items extends EbayEnterprise_Order_Overrides_Block_Order_Abstract
{
/** @var string */
protected $_template = 'ebayenterprise_order/order/items.phtml';
/**
* @see Mage_Sales_Block_Items_Abstract::$_itemRenders
* Renderer's with render type key
* block => the block name
* template => the template file
* renderer => the block object
*
* @var array
*/
protected $_itemRenders = [];
/**
* Initialize default item renderer
*/
protected function _construct()
{
parent::_construct();
$this->addItemRender('default', 'checkout/cart_item_renderer', 'checkout/cart/item/default.phtml');
}
/**
* @see Mage_Sales_Block_Items_Abstract::addItemRender()
* Add renderer for item product type
*
* @param string
* @param string
* @param string
* @return Mage_Checkout_Block_Cart_Abstract
*/
public function addItemRender($type, $block, $template)
{
$this->_itemRenders[$type] = [
'block' => $block,
'template' => $template,
'renderer' => null,
];
return $this;
}
/**
* @see Mage_Sales_Block_Items_Abstract::getItemRenderer()
* Retrieve item renderer block
*
* @param string
* @return Mage_Core_Block_Abstract
*/
public function getItemRenderer($type)
{
if (!isset($this->_itemRenders[$type])) {
$type = 'default';
}
if (is_null($this->_itemRenders[$type]['renderer'])) {
$this->_itemRenders[$type]['renderer'] = $this->getLayout()
->createBlock($this->_itemRenders[$type]['block'])
->setTemplate($this->_itemRenders[$type]['template'])
->setRenderedBlock($this);
}
return $this->_itemRenders[$type]['renderer'];
}
/**
* @see Mage_Sales_Block_Items_Abstract::_prepareItem()
* Prepare item before output
*
* @param Mage_Core_Block_Abstract
* @return Mage_Sales_Block_Items_Abstract
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _prepareItem(Mage_Core_Block_Abstract $renderer)
{
return $this;
}
/**
* @see Mage_Sales_Block_Items_Abstract::_getItemType()
* Return product type for quote/order item
*
* @param Varien_Object
* @return string
*/
protected function _getItemType(Varien_Object $item)
{
if ($item->getOrderItem()) {
$type = $item->getOrderItem()->getProductType();
} elseif ($item instanceof Mage_Sales_Model_Quote_Address_Item) {
$type = $item->getQuoteItem()->getProductType();
} else {
$type = $item->getProductType();
}
return $type;
}
/**
* @see Mage_Sales_Block_Items_Abstract::getItemHtml()
* Get item row HTML
*
* @param Varien_Object
* @return string
*/
public function getItemHtml(Varien_Object $item)
{
$type = $this->_getItemType($item);
$block = $this->getItemRenderer($type)
->setItem($item);
$this->_prepareItem($block);
return $block->toHtml();
}
/**
* Retrieve current rom_order model instance
*
* @return EbayEnterprise_Order_Model_Detail_Process_IResponse
*/
public function getOrder()
{
return Mage::registry('rom_order');
}
/**
* Calculate the grand order total.
*
* @return float
*/
public function getOrderTotal()
{
$order = $this->getOrder();
return ($order->getSubtotal() + $order->getShippingAmount() + $order->getTaxAmount()) - $order->getDiscountAmount();
}
}