*/
class Mage_Adminhtml_Block_Sales_Order_View_Info extends Mage_Adminhtml_Block_Sales_Order_Abstract
{
/**
* Retrieve required options from parent
*/
protected function _beforeToHtml()
{
if (!$this->getParentBlock()) {
Mage::throwException(Mage::helper('adminhtml')->__('Invalid parent block for this block.'));
}
$this->setOrder($this->getParentBlock()->getOrder());
foreach ($this->getParentBlock()->getOrderInfoData() as $k => $v) {
$this->setDataUsingMethod($k, $v);
}
parent::_beforeToHtml();
}
public function getOrderStoreName()
{
if ($this->getOrder()) {
$storeId = $this->getOrder()->getStoreId();
if (is_null($storeId)) {
$deleted = Mage::helper('adminhtml')->__(' [deleted]');
return nl2br($this->getOrder()->getStoreName()) . $deleted;
}
$store = Mage::app()->getStore($storeId);
$name = array(
$store->getWebsite()->getName(),
$store->getGroup()->getName(),
$store->getName()
);
return implode('
', $name);
}
return null;
}
public function getCustomerGroupName()
{
if ($this->getOrder()) {
return Mage::getModel('customer/group')->load((int)$this->getOrder()->getCustomerGroupId())->getCode();
}
return null;
}
public function getCustomerViewUrl()
{
if ($this->getOrder()->getCustomerIsGuest() || !$this->getOrder()->getCustomerId()) {
return false;
}
return $this->getUrl('*/customer/edit', array('id' => $this->getOrder()->getCustomerId()));
}
public function getViewUrl($orderId)
{
return $this->getUrl('*/sales_order/view', array('order_id'=>$orderId));
}
/**
* Find sort order for account data
* Sort Order used as array key
*
* @param array $data
* @param int $sortOrder
* @return int
*/
protected function _prepareAccountDataSortOrder(array $data, $sortOrder)
{
if (isset($data[$sortOrder])) {
return $this->_prepareAccountDataSortOrder($data, $sortOrder + 1);
}
return $sortOrder;
}
/**
* Return array of additional account data
* Value is option style array
*
* @return array
*/
public function getCustomerAccountData()
{
$accountData = array();
/* @var $config Mage_Eav_Model_Config */
$config = Mage::getSingleton('eav/config');
$entityType = 'customer';
$customer = Mage::getModel('customer/customer');
foreach ($config->getEntityAttributeCodes($entityType) as $attributeCode) {
/* @var $attribute Mage_Customer_Model_Attribute */
$attribute = $config->getAttribute($entityType, $attributeCode);
if (!$attribute->getIsVisible() || $attribute->getIsSystem()) {
continue;
}
$orderKey = sprintf('customer_%s', $attribute->getAttributeCode());
$orderValue = $this->getOrder()->getData($orderKey);
if ($orderValue != '') {
$customer->setData($attribute->getAttributeCode(), $orderValue);
$dataModel = Mage_Customer_Model_Attribute_Data::factory($attribute, $customer);
$value = $dataModel->outputValue(Mage_Customer_Model_Attribute_Data::OUTPUT_FORMAT_HTML);
$sortOrder = $attribute->getSortOrder() + $attribute->getIsUserDefined() ? 200 : 0;
$sortOrder = $this->_prepareAccountDataSortOrder($accountData, $sortOrder);
$accountData[$sortOrder] = array(
'label' => $attribute->getFrontendLabel(),
'value' => $this->escapeHtml($value, array('br'))
);
}
}
ksort($accountData, SORT_NUMERIC);
return $accountData;
}
/**
* Get link to edit order address page
*
* @param Mage_Sales_Model_Order_Address $address
* @param string $label
* @return string
*/
public function getAddressEditLink($address, $label='')
{
if (empty($label)) {
$label = $this->__('Edit');
}
$url = $this->getUrl('*/sales_order/address', array('address_id'=>$address->getId()));
return '' . $label . '';
}
/**
* Whether Customer IP address should be displayed on sales documents
* @return bool
*/
public function shouldDisplayCustomerIp()
{
return !Mage::getStoreConfigFlag('sales/general/hide_customer_ip', $this->getOrder()->getStoreId());
}
}