Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
 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");
     }
 }
Exemple #3
0
 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();
 }
Exemple #4
0
 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();
 }
Exemple #5
0
 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();
 }
Exemple #6
0
    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;
    }
Exemple #7
0
 /**
  * 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;
 }
Exemple #8
0
 /**
  * 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('*/*/');
 }