There was situation i need to add a extra page before submit rma :
on step 2 page i change the form action url like:
<form action="<?php echo $this->getStep2PostUrl(); ?>" method="POST" enctype="multipart/form-data" id="rma-form-validate" > // where action = Mage::getUrl('rma/rma/step3');
the url will redirect to the function difined in controller:
path = app/code/local/Mirasvit/Rma/controllers/RmaController.php
in rma controller you need to define a function named public function step3Action() with the following code:
public function step3Action() { if (!$this->_validateFormKey()) { $this->_redirectReferer(); return; } $session = $this->_getSession(); $formUid = $this->getRequest()->getParam('form_uid'); if ($formUid == $session->getLastFormUid()) { //simple protection from double posting. #RMA-90 $this->_redirectReferer(); return; } $session->setLastFormUid($formUid); $customer = $session->getCustomer(); $data = $this->getRequest()->getParams(); $items = $data['items']; $rmspro = array(); foreach($items as $k => $v) { $rmspro[] = $k; } Mage::getSingleton('core/session')->setrmaitems($rmspro); unset($data['items']); try { $this->_redirect('*/*/stepthree', array('order' =>$this->getRequest()->getParam('order_id'))); } catch (Mage_Core_Exception $e) { $session->addError($e->getMessage()); $session->setFormData($data); if ($this->getRequest()->getParam('id')) { $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); } else { $this->_redirect('*/*/add', array('order_id' => $this->getRequest()->getParam('order_id'))); } } }
in the above code in try block this will redirect to page stepthree where order id =some order id
for the stepthree page you need to write a function in Rma controller page named public function stepthreeAction() that will load the layout like:
public function stepthreeAction() { $this->loadLayout(); $this->renderLayout(); }
for stepthree page create a block in the following directory:
app/code/local/Mirasvit/Rma/Block/Rma/Stepthree.php
with the following code:
<?php class Mirasvit_Rma_Block_Rma_Stepthree extends Mage_Core_Block_Template { protected function _prepareLayout() { parent::_prepareLayout(); if ($headBlock = $this->getLayout()->getBlock('head')) { $headBlock->setTitle(Mage::helper('rma')->__('Create RMA')); } } protected function getConfig() { return Mage::getSingleton('rma/config'); } protected function getCustomer() { return Mage::getSingleton('customer/session')->getCustomer(); } public function getOrderCollection() { return Mage::helper('rma')->getAllowedOrderCollection($this->getCustomer()); } protected $_order; public function getOrder() { if (!$this->_order) { if ($orderId = Mage::app()->getRequest()->getParam('order_id')) { $collection = Mage::helper('rma')->getAllowedOrderCollection($this->getCustomer(), false); $collection->addFieldToFilter('entity_id', (int) $orderId); if ($collection->count()) { $this->_order = $collection->getFirstItem(); } } } return $this->_order; } public function getOrderItemCollection() { $order = $this->getOrder(); $collection = $order->getItemsCollection(); return $collection; } public function getStoreId() { return Mage::app()->getStore()->getId(); } public function getReasonCollection() { return Mage::getModel('rma/reason')->getCollection() ->addFieldToFilter('is_active', true) ->setStoreId($this->getStoreId()) ->setOrder('sort_order', 'asc'); } public function getResolutionCollection() { return Mage::getModel('rma/resolution')->getCollection() ->addFieldToFilter('is_active', true) ->setOrder('sort_order', 'asc'); } public function getConditionCollection() { return Mage::getModel('rma/condition')->getCollection() ->addFieldToFilter('is_active', true) ->setOrder('sort_order', 'asc'); } public function getCustomFields() { $collection = Mage::helper('rma/field')->getVisibleCustomerCollection('initial', true); return $collection; } public function getPolicyIsActive() { return $this->getConfig()->getPolicyIsActive(); } protected $_pblock; public function getPolicyBlock() { if (!$this->_pblock) { $this->_pblock = Mage::getModel('cms/block')->load($this->getConfig()->getPolicyPolicyBlock()); } return $this->_pblock; } public function getPolicyTitle() { return $this->getPolicyBlock()->getTitle(); } public function getPolicyContent() { $helper = Mage::helper('cms'); $processor = $helper->getPageTemplateProcessor(); return $processor->filter($this->getPolicyBlock()->getContent()); } public function getReturnPeriod() { return $this->getConfig()->getPolicyReturnPeriod(); } public function getIsGift() { return Mage::app()->getRequest()->getParam('is_gift') == 1; } public function getRmaItemsByOrderItem($orderItem) { $collection = Mage::getModel('rma/item')->getCollection(); $collection->addFieldToFilter('order_item_id', $orderItem->getId()); // echo $collection->getSelect();die; return $collection; } public function getRMAUrl($rma) { return $rma->getUrl(); } public function getRmasByOrderItem($orderItem) { $result = array(); foreach ($this->getRmaItemsByOrderItem($orderItem) as $item) { $rma = Mage::getModel('rma/rma')->load($item->getRmaId()); $result[] = "<a href='{$this->getRMAUrl($rma)}' target='_blank'>#{$rma->getIncrementId()}</a>"; } return implode(', ', $result); } }
and in xml file ()
<rma_rma_stepthree> <reference name="head"> <action method="addJs"><script>mirasvit/core/jquery.min.js</script></action> <action method="addJs"><script>mirasvit/core/jquery.MultiFile.js</script></action> <action method="addJs"><script>mirasvit/code/rma/frontend/customer.js</script></action> </reference> <update handle="customer_account"/> <reference name="content"> <block type="rma/rma_stepthree" name="rma.rma.stepthree" as="rma.rma.stepthree" template="mst_rma/rma/new/step3.phtml"> </block> </reference> </rma_rma_stepthree>
0 Comments