protected function _toHtml() { $this->setTxnIdHtml($this->escapeHtml($this->_txn->getTxnId())); $this->setParentTxnIdUrlHtml($this->escapeHtml($this->getUrl('*/sales_transactions/view', array('txn_id' => $this->_txn->getParentId())))); $this->setParentTxnIdHtml($this->escapeHtml($this->_txn->getParentTxnId())); $this->setOrderIncrementIdHtml($this->escapeHtml($this->_txn->getOrder()->getIncrementId())); $this->setTxnTypeHtml($this->escapeHtml($this->_txn->getTxnType())); $this->setOrderIdUrlHtml($this->escapeHtml($this->getUrl('*/sales_order/view', array('order_id' => $this->_txn->getOrderId())))); $this->setIsClosedHtml($this->_txn->getIsClosed() ? Mage::helper('sales')->__('Yes') : Mage::helper('sales')->__('No')); $createdAt = strtotime($this->_txn->getCreatedAt()) ? $this->formatDate($this->_txn->getCreatedAt(), Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true) : $this->__('N/A'); $this->setCreatedAtHtml($this->escapeHtml($createdAt)); return parent::_toHtml(); }
/** * Update transactions in database using provided transaction as parent for them * have to repeat the business logic to avoid accidental injection of wrong transactions * @param Mage_Sales_Model_Order_Payment_Transaction $transaction */ public function injectAsParent(Mage_Sales_Model_Order_Payment_Transaction $transaction) { $txnId = $transaction->getTxnId(); if ($txnId && Mage_Sales_Model_Order_Payment_Transaction::TYPE_PAYMENT === $transaction->getTxnType() && ($id = $transaction->getId())) { $adapter = $this->_getWriteAdapter(); // verify such transaction exists, determine payment and order id $verificationRow = $adapter->fetchRow($adapter->select()->from($this->getMainTable(), array('payment_id', 'order_id'))->where("{$this->getIdFieldName()} = ?", (int) $id)); if (!$verificationRow) { return; } list($paymentId, $orderId) = array_values($verificationRow); // inject $adapter->update($this->getMainTable(), array('parent_id' => $id), sprintf('%s <> %d AND parent_id IS NULL AND payment_id = %d AND order_id = %d AND parent_txn_id = %s', $this->getIdFieldName(), $id, (int) $paymentId, (int) $orderId, $adapter->quote($txnId))); } }
/** * Re-create order with new transaction returned by Eway * @param $data */ private function __createNewTransaction(Mage_Sales_Model_Order $order, $transId) { // Load transaction $currentTrans = Mage::getModel('sales/order_payment_transaction')->getCollection()->addFieldToFilter('order_id', array('eq' => $order->getEntityId())); foreach ($currentTrans as $t) { } if ($t == null) { $t = new Mage_Sales_Model_Order_Payment_Transaction(); } $trans = new Mage_Sales_Model_Order_Payment_Transaction(); // Load payment object $payment = Mage::getModel('sales/order_payment')->load($t->getPaymentId()); $trans->setOrderPaymentObject($payment); $trans->setOrder($order); $trans->setParentId($t->getTransactionId()); $trans->setOrderId($order->getEntityId()); $trans->setPaymentId($t->getPaymentId()); $trans->setTxnId($transId); $trans->setParentTxnId($t->getTxnId()); $trans->setTxnType($t->getTxnType()); $trans->setIsClosed($t->getIsClosed()); $trans->setCreatedAt(date('Y-m-d H:i:s')); $trans->save(); }
/** * Create new transaction with base order * @param $data */ private function __createNewTransaction(Mage_Sales_Model_Order $order, $transId) { // Load transaction $currentTrans = Mage::getModel('sales/order_payment_transaction')->getCollection()->addFieldToFilter('order_id', array('eq' => $order->getEntityId())); foreach ($currentTrans as $t) { } if ($t == null) { $t = new Mage_Sales_Model_Order_Payment_Transaction(); } $trans = new Mage_Sales_Model_Order_Payment_Transaction(); // Load payment object $payment = Mage::getModel('sales/order_payment')->load($t->getPaymentId()); $trans->setOrderPaymentObject($payment); $trans->setOrder($order); $trans->setParentId($t->getTransactionId()); $trans->setOrderId($order->getEntityId()); $trans->setPaymentId($t->getPaymentId()); // Get new TxnId $break = true; for ($i = 0; $i < 100; $i++) { $transId += 1; $newTrans = Mage::getModel('sales/order_payment_transaction')->getCollection()->addFieldToFilter('txn_id', array('eq' => $transId)); if (count($newTrans) == 0) { $break = false; break; } } if ($break) { return false; } $trans->setTxnId($transId); $trans->setParentTxnId($t->getTxnId()); $trans->setTxnType($t->getTxnType()); $trans->setIsClosed($t->getIsClosed()); $trans->setCreatedAt(date('Y-m-d H:i:s')); try { $trans->save(); } catch (Exception $e) { // Do something } return true; }
/** * Determine if a transaction has been voided, using the "txn_type" field * instead of "type" like the native isVoided method does * * @param Mage_Sales_Model_Order_Payment_Transaction $trans * @return bool */ public function transactionIsVoided($trans) { $children = $trans->getChildTransactions(); $result = false; if (Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH === $trans->getTxnType()) { foreach ($children as $child) { if (Mage_Sales_Model_Order_Payment_Transaction::TYPE_VOID === $child->getTxnType()) { $result = true; } } } return $result; }