/**
* Customer create new return
*/
public function createAction()
{
$orderId = (int)$this->getRequest()->getParam('order_id');
$order = Mage::getModel('sales/order')->load($orderId);
if (empty($orderId)) {
$this->_redirect('sales/order/history');
return;
}
Mage::register('current_order', $order);
if (!$this->_loadOrderItems($orderId)) {
return;
}
if ($this->_canViewOrder($order)) {
$post = $this->getRequest()->getPost();
if (($post) && !empty($post['items'])) {
$_POST['items'] = array();
$rma_ids = array();
foreach ($post['items'] as $post_item) {
$_POST['items'][] = $post_item;
try {
$file_path = $this->saveUploadFile();
$rmaModel = Mage::getModel('enterprise_rma/rma');
$customerModel = Mage::getModel('customer/customer')->load($order->getCustomerId());
$rmaData = array(
'status' => Enterprise_Rma_Model_Rma_Source_Status::STATE_PENDING,
'date_requested' => Mage::getSingleton('core/date')->gmtDate(),
'order_id' => $order->getId(),
'order_increment_id' => $order->getIncrementId(),
'store_id' => $order->getStoreId(),
'customer_id' => $order->getCustomerId(),
'order_date' => $order->getCreatedAt(),
'file' => $file_path,
'issue_desc' => $post['issue_desc'],
'customer_name' => $order->getCustomerName(),
'customer_custom_email' => $customerModel->getEmail(),
'region' => $post['region'],
'city' => $post['city'],
'district' => $post['district'],
'address' => $post['address'],
'telephone' => $post['telephone'],
'contact_name' => $post['contact_name'],
'resolution' => $post_item['resolution'],
);
$result = $rmaModel->setData($rmaData)->saveRma();
if (!$result) {
$this->_redirectError(Mage::getUrl('*/*/create', array('order_id' => $orderId)));
return;
}
$result->sendNewRmaEmail();
if (isset($post['rma_comment']) && !empty($post['rma_comment'])) {
Mage::getModel('enterprise_rma/rma_status_history')
->setRmaEntityId($rmaModel->getId())
->setComment($post['rma_comment'])
->setIsVisibleOnFront(true)
->setStatus($rmaModel->getStatus())
->setCreatedAt(Mage::getSingleton('core/date')->gmtDate())
->save();
}
} catch (Exception $e) {
Mage::getSingleton('core/session')->addError(
Mage::helper('enterprise_rma')->__('Cannot create New Return, try again later')
);
Mage::logException($e);
}
$rma_ids[] = $rmaModel->getIncrementId();
}
Mage::getSingleton('core/session')->addSuccess(
Mage::helper('enterprise_rma')->__('Return #%s has been submitted successfully', implode(',',$rma_ids))
);
$this->_redirectSuccess(Mage::getUrl('rma/return/history'));
return;
}
$this->loadLayout();
$this->_initLayoutMessages('core/session');
$this->getLayout()->getBlock('head')->setTitle(Mage::helper('enterprise_rma')->__('Create New Return'));
if ($block = $this->getLayout()->getBlock('customer.account.link.back')) {
$block->setRefererUrl($this->_getRefererUrl());
}
$this->renderLayout();
} else {
$this->_redirect('sales/order/history');
}
}
核心中使用$_POST['items']来提取items数据。所以很简单,创建中间临时变量来分ITEM保存为RMA即可