/** * Prepare collection to be displayed in the grid * * @return Mage_Adminhtml_Block_Sales_Order_Create_Search_Grid */ protected function _prepareCollection() { $flag = false; $params = $this->getRequest()->getParams(); $type = isset($params['type']) && in_array($params['type'], array_keys(Ced_CsMarketplace_Model_Vpayment::getStates())) ? $params['type'] : Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_CREDIT; $vendorId = isset($params['vendor_id']) ? $params['vendor_id'] : 0; $orderIds = isset($params['order_ids']) ? explode(',', trim($params['order_ids'])) : array(); $orderTable = Mage::getSingleton('core/resource')->getTableName('sales/order'); $collection = Mage::getModel('csmarketplace/vorders')->getCollection(); $main_table = Mage::helper('csmarketplace')->getTableKey('main_table'); $vendor_id = Mage::helper('csmarketplace')->getTableKey('vendor_id'); $order_payment_state = Mage::helper('csmarketplace')->getTableKey('order_payment_state'); $payment_state = Mage::helper('csmarketplace')->getTableKey('payment_state'); $order_total = Mage::helper('csmarketplace')->getTableKey('order_total'); $shop_commission_fee = Mage::helper('csmarketplace')->getTableKey('shop_commission_fee'); $collection->addFieldToFilter("{$main_table}.{$vendor_id}", array('eq' => $vendorId)); if ($type == Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_DEBIT) { $collection->addFieldToFilter("{$main_table}.{$order_payment_state}", array('eq' => Mage_Sales_Model_Order_Invoice::STATE_PAID))->addFieldToFilter("{$main_table}.{$payment_state}", array('eq' => Ced_CsMarketplace_Model_Vorders::STATE_REFUND)); } else { $collection->addFieldToFilter("{$main_table}.{$order_payment_state}", array('eq' => Mage_Sales_Model_Order_Invoice::STATE_PAID))->addFieldToFilter("{$main_table}.{$payment_state}", array('eq' => Ced_CsMarketplace_Model_Vorders::STATE_OPEN)); } $collection->getSelect()->columns(array('net_vendor_earn' => new Zend_Db_Expr("({$main_table}.{$order_total} - {$main_table}.{$shop_commission_fee})"))); $collection->getSelect()->joinLeft($orderTable, 'main_table.order_id =' . $orderTable . '.increment_id', array('*')); $this->setCollection($collection); return $this; }
public function getHeaderText() { $params = $this->getRequest()->getParams(); $type = isset($params['type']) && in_array(trim($params['type']), array_keys(Ced_CsMarketplace_Model_Vpayment::getStates())) ? trim($params['type']) : Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_CREDIT; if ($type == Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_DEBIT) { return Mage::helper('csmarketplace')->__("Debit Amount"); } else { return Mage::helper('csmarketplace')->__("Credit Amount"); } }
protected function _prepareColumns() { $this->addColumn('created_at', array('header' => Mage::helper('sales')->__('Transaction Date'), 'index' => 'created_at', 'type' => 'datetime', 'width' => '100px')); $this->addColumn('transaction_id', array('header' => Mage::helper('csmarketplace')->__('Transaction ID#'), 'align' => 'left', 'index' => 'transaction_id', 'filter_index' => 'transaction_id')); $this->addColumn('vendor_id', array('header' => Mage::helper('csmarketplace')->__('Vendor Name'), 'align' => 'left', 'index' => 'vendor_id', 'renderer' => 'Ced_CsMarketplace_Block_Adminhtml_Vorders_Grid_Renderer_Vendorname', 'filter_condition_callback' => array($this, '_vendornameFilter'))); $this->addColumn('payment_method', array('header' => Mage::helper('csmarketplace')->__('Payment Mode'), 'align' => 'left', 'index' => 'payment_method', 'filter_index' => 'payment_method', 'type' => 'options', 'options' => Ced_CsMarketplace_Helper_Acl::$PAYMENT_MODES)); $this->addColumn('transaction_type', array('header' => Mage::helper('csmarketplace')->__('Transaction Type'), 'index' => 'transaction_type', 'type' => 'options', 'options' => Ced_CsMarketplace_Model_Vpayment::getStates())); $this->addColumn('base_amount', array('header' => Mage::helper('csmarketplace')->__('Amount'), 'index' => 'base_amount', 'type' => 'currency', 'currency' => 'base_currency')); $this->addColumn('base_fee', array('header' => Mage::helper('csmarketplace')->__('Adjustment Amount'), 'index' => 'base_fee', 'type' => 'currency', 'currency' => 'base_currency')); $this->addColumn('base_net_amount', array('header' => Mage::helper('csmarketplace')->__('Net Amount'), 'index' => 'base_net_amount', 'type' => 'currency', 'currency' => 'base_currency')); $this->addColumn('amount_desc', array('header' => Mage::helper('csmarketplace')->__('Amount Description'), 'index' => 'amount_desc', 'type' => 'text', 'renderer' => $this->getLayout()->createBlock('csmarketplace/adminhtml_vpayments_grid_renderer_orderdesc'))); $this->addColumn('action', array('header' => Mage::helper('csmarketplace')->__('Action'), 'width' => '100', 'type' => 'action', 'getter' => 'getId', 'actions' => array(array('caption' => Mage::helper('csmarketplace')->__('View'), 'url' => array('base' => '*/*/details'), 'field' => 'id')), 'filter' => false, 'sortable' => false, 'index' => 'stores', 'is_system' => true)); return parent::_prepareColumns(); }
protected function _prepareForm() { $back = $this->getRequest()->getParam('back', ''); $amount = $this->getRequest()->getPost('total', 0); $params = $this->getRequest()->getParams(); $type = isset($params['type']) && in_array($params['type'], array_keys(Ced_CsMarketplace_Model_Vpayment::getStates())) ? $params['type'] : Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_CREDIT; if ($back == 'edit' && $amount) { $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getUrl('*/*/save', array('payment_method' => Mage::helper('csmarketplace/acl')->getDefaultPaymentType(), 'type' => $type)), 'method' => 'post', 'enctype' => 'multipart/form-data')); } else { $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getUrl('*/*/*', array('vendor_id' => $this->getRequest()->getParam('vendor_id'), 'type' => $type)), 'method' => 'post', 'enctype' => 'multipart/form-data')); } $form->setUseContainer(true); $this->setForm($form); return parent::_prepareForm(); }
protected function _prepareForm() { $params = $this->getRequest()->getParams(); $type = isset($params['type']) && in_array($params['type'], array_keys(Ced_CsMarketplace_Model_Vpayment::getStates())) ? $params['type'] : Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_CREDIT; $form = new Varien_Data_Form(); $this->setForm($form); $fieldset = $form->addFieldset('form_fields', array('legend' => Mage::helper('csmarketplace')->__('Transaction Information'))); $vendorId = $this->getRequest()->getParam('vendor_id', 0); $base_amount = $this->getRequest()->getPost('total', 0); $amountDesc = $this->getRequest()->getPost('orders'); $vendor = Mage::getModel('csmarketplace/vendor')->getCollection()->toOptionArray($vendorId); $ascn = isset($vendor[$vendorId]) ? $vendor[$vendorId] : ''; $fieldset->addField('vendor_id', 'hidden', array('name' => 'vendor_id', 'value' => $vendorId)); $fieldset->addField('amount_desc', 'hidden', array('name' => 'amount_desc', 'value' => json_encode($amountDesc))); $fieldset->addField('currency', 'hidden', array('name' => 'currency', 'value' => Mage::app()->getBaseCurrencyCode())); $fieldset->addField('vendor_name', 'label', array('label' => Mage::helper('csmarketplace')->__('Vendor'), 'after_element_html' => '<a target="_blank" href="' . Mage::helper('adminhtml')->getUrl('adminhtml/adminhtml_vendor/edit/', array('vendor_id' => $vendorId, '_secure' => true)) . '" title="' . $ascn . '">' . $ascn . '</a>')); $fieldset->addField('base_amount', 'text', array('label' => Mage::helper('csmarketplace')->__('Amount'), 'class' => 'required-entry validate-greater-than-zero', 'required' => true, 'name' => 'base_amount', 'value' => $base_amount, 'readonly' => 'readonly', 'after_element_html' => '<b>[' . Mage::app()->getBaseCurrencyCode() . ']</b><small><i>' . $this->__('Readonly field') . '</i>.</small>')); $fieldset->addField('payment_code', 'select', array('label' => Mage::helper('csmarketplace')->__('Payment Method'), 'class' => 'required-entry', 'required' => true, 'onchange' => !$type ? 'vpayment.changePaymentDatail(this)' : 'vpayment.changePaymentToOther(this)', 'name' => 'payment_code', 'values' => Mage::getModel('csmarketplace/vendor')->getPaymentMethodsArray($vendorId), 'after_element_html' => '<small id="beneficiary-payment-detail">' . $this->__('Select Payment Method') . '</small><script type="text/javascript"> var vpayment = new ced_csmarketplace("' . Mage::helper('adminhtml')->getUrl('*/*/getdetail', array('vendor_id' => $vendorId)) . '","");</script>')); $fieldset->addField('payment_code_other', 'text', array('label' => '', 'style' => 'display: none;', 'disbaled' => 'true', 'name' => 'payment_code')); $fieldset->addField('base_fee', 'text', array('label' => Mage::helper('csmarketplace')->__('Adjustment Amount'), 'class' => 'validate-number', 'required' => false, 'name' => 'base_fee', 'after_element_html' => '<b>[' . Mage::app()->getBaseCurrencyCode() . ']</b><small>' . $this->__('Enter adjustment amount in +/- (if any)') . '</small>')); $fieldset->addField('transaction_id', 'text', array('label' => Mage::helper('csmarketplace')->__('Transaction Id'), 'class' => 'required-entry', 'required' => true, 'name' => 'transaction_id', 'after_element_html' => '<small>' . $this->__('Enter transaction id') . '</small>')); $fieldset->addField('textarea', 'textarea', array('label' => Mage::helper('csmarketplace')->__('Notes'), 'required' => false, 'name' => 'notes')); return parent::_prepareForm(); }
public function getAddOrderBlock() { $relationIds = $this->getRequest()->getParam('order_ids', array()); $vendorId = $this->getRequest()->getParam('vendor_id', 0); $params = $this->getRequest()->getParams(); $type = isset($params['type']) && in_array($params['type'], array_keys(Ced_CsMarketplace_Model_Vpayment::getStates())) ? $params['type'] : Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_CREDIT; $collection = Mage::getModel('csmarketplace/vorders')->getCollection()->addFieldToFilter('vendor_id', array('eq' => $vendorId)); if ($type == Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_DEBIT) { $collection->addFieldToFilter('order_payment_state', array('eq' => Mage_Sales_Model_Order_Invoice::STATE_PAID))->addFieldToFilter('payment_state', array('eq' => Ced_CsMarketplace_Model_Vorders::STATE_REFUND)); } else { $collection->addFieldToFilter('order_payment_state', array('eq' => Mage_Sales_Model_Order_Invoice::STATE_PAID))->addFieldToFilter('payment_state', array('eq' => Ced_CsMarketplace_Model_Vorders::STATE_OPEN)); } $collection = $collection->addFieldToFilter('id', array('in' => $relationIds)); $renderer = new Ced_CsMarketplace_Block_Adminhtml_Vorders_Grid_Renderer_Orderid(); $collection->getSelect()->columns(array('net_vendor_earn' => new Zend_Db_Expr('(order_total - shop_commission_fee)'))); $html = ""; $html .= '<table cellspacing="0" class="data order-tables"> <col width="100" /> <col width="40" /> <col width="100" /> <col width="80" /> <thead> <tr class="headings"> <th class="no-link">' . Mage::helper("csmarketplace")->__("Order ID") . '</th> <th class="no-link">' . Mage::helper("csmarketplace")->__("Grand Total") . '</th> <th class="no-link">' . Mage::helper("csmarketplace")->__("Commission Fee") . '</th> <th class="no-link">' . Mage::helper("csmarketplace")->__("Vendor Payment") . '</th> </tr> </thead> <tbody>'; $amount = 0.0; $class = ''; foreach ($collection as $item) { $class = $class == 'odd' ? 'even' : 'odd'; $html .= '<tr class="' . $class . '"'; $html .= '>'; $html .= '<td>' . $renderer->render($item) . '</td>'; $html .= '<td>' . Mage::app()->getLocale()->currency($item->getCurrency())->toCurrency($item->getOrderTotal()) . '</td>'; $html .= '<td>' . Mage::app()->getLocale()->currency($item->getCurrency())->toCurrency($item->getShopCommissionFee()) . '</td>'; $html .= '<td>' . Mage::app()->getLocale()->currency($item->getCurrency())->toCurrency($item->getNetVendorEarn()); $amount += $item->getNetVendorEarn(); $html .= '<input id="csmarketplace_vendor_orders_' . $item->getId() . '" type="hidden" value="' . $this->roundPrice($item->getNetVendorEarn()) . '" name="orders[' . $item->getOrderId() . ']"/>'; $html .= '</td>'; $html .= '</tr>'; } $html .= '<input type="hidden" id="csmarketplace_fetched_total" value="' . $this->roundPrice($amount) . '"/></tbody></table>'; return $html; }
/** * Retrieve vendor payment status array * * @return array */ public static function getStatuses() { if (is_null(self::$_statuses)) { self::$_statuses = array(self::PAYMENT_STATUS_OPEN => Mage::helper('sales')->__('Pending'), self::PAYMENT_STATUS_PAID => Mage::helper('sales')->__('Paid'), self::PAYMENT_STATUS_CANCELED => Mage::helper('sales')->__('Canceled'), self::PAYMENT_STATUS_REFUND => Mage::helper('csmarketplace')->__('Refund'), self::PAYMENT_STATUS_REFUNDED => Mage::helper('csmarketplace')->__('Refunded')); } return self::$_statuses; }
/** * Save payment form */ public function saveAction() { if ($data = $this->getRequest()->getPost()) { $params = $this->getRequest()->getParams(); $type = isset($params['type']) && in_array($params['type'], array_keys(Ced_CsMarketplace_Model_Vpayment::getStates())) ? $params['type'] : Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_CREDIT; $model = Mage::getModel('csmarketplace/vpayment'); $amount_desc = isset($data['amount_desc']) ? $data['amount_desc'] : json_encode(array()); $total_amount = json_decode($amount_desc); Mage::helper('csmarketplace')->logProcessedData($total_amount, Ced_CsMarketplace_Helper_Data::VPAYMENT_TOTAL_AMOUNT); $baseCurrencyCode = Mage::app()->getBaseCurrencyCode(); $allowedCurrencies = Mage::getModel('directory/currency')->getConfigAllowCurrencies(); $rates = Mage::getModel('directory/currency')->getCurrencyRates($baseCurrencyCode, array_values($allowedCurrencies)); $data['base_to_global_rate'] = isset($data['currency']) && isset($rates[$data['currency']]) ? $rates[$data['currency']] : 1; $base_amount = 0; if (count($total_amount) > 0) { foreach ($total_amount as $key => $value) { $base_amount += $value; } } if ($base_amount != $data['base_amount']) { Mage::getSingleton('adminhtml/session')->addError('Amount entered should be equal to the sum of all selected order(s)'); $this->_redirect('*/*/edit', array('vendor_id' => $this->getRequest()->getParam('vendor_id'), 'type' => $type)); return; } $data['transaction_type'] = $type; $data['payment_method'] = isset($data['payment_method']) ? $data['payment_method'] : 0; /*Will use it when vendor will pay in different currenncy */ list($currentBalance, $currentBaseBalance) = $model->getCurrentBalance($data['vendor_id']); $base_net_amount = $data['base_amount'] + $data['base_fee']; if ($type == Ced_CsMarketplace_Model_Vpayment::TRANSACTION_TYPE_DEBIT) { /* Case of Deduct credit */ if ($currentBaseBalance > 0) { $newBaseBalance = $currentBaseBalance - $base_net_amount; } else { $newBaseBalance = $base_net_amount; } $base_net_amount = -$base_net_amount; if (-$base_net_amount <= 0.0) { Mage::getSingleton('adminhtml/session')->addError("Refund Net Amount can't be less than zero"); $this->_redirect('*/*/edit', array('vendor_id' => $this->getRequest()->getParam('vendor_id'), 'type' => $type)); return; } } else { // Case of Add credit $newBaseBalance = $currentBaseBalance + $base_net_amount; if ($base_net_amount <= 0.0) { Mage::getSingleton('adminhtml/session')->addError("Net Amount can't be less than zero"); $this->_redirect('*/*/edit', array('vendor_id' => $this->getRequest()->getParam('vendor_id'), 'type' => $type)); return; } } $data['base_currency'] = $baseCurrencyCode; $data['base_net_amount'] = $base_net_amount; $data['base_balance'] = $newBaseBalance; $data['amount'] = $base_amount * $data['base_to_global_rate']; $data['balance'] = Mage::helper('directory')->currencyConvert($newBaseBalance, $baseCurrencyCode, $data['currency']); $data['fee'] = Mage::helper('directory')->currencyConvert($data['base_fee'], $baseCurrencyCode, $data['currency']); $data['net_amount'] = Mage::helper('directory')->currencyConvert($base_net_amount, $baseCurrencyCode, $data['currency']); $data['tax'] = 0.0; $data['payment_detail'] = isset($data['payment_detail']) ? $data['payment_detail'] : 'n/a'; $model->addData($data); $openStatus = $model->getOpenStatus(); $model->setStatus($openStatus); try { $model->saveOrders($data); $model->save(); Mage::helper('csmarketplace')->logProcessedData($model->getData(), Ced_CsMarketplace_Helper_Data::VPAYMENT_CREATE); Mage::app()->cleanCache(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('csmarketplace')->__('Payment is successfully saved')); Mage::getSingleton('adminhtml/session')->setFormData(false); $this->_redirect('*/*/'); return; } catch (Exception $e) { Mage::helper('csmarketplace')->logException($e); Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); Mage::getSingleton('adminhtml/session')->setFormData($data); $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); return; } } Mage::getSingleton('adminhtml/session')->addError(Mage::helper('csmarketplace')->__('Unable to find vendor to save')); $this->_redirect('*/*/'); }