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(); }
/** * Retrieve header text * * @return string */ public function getHeaderText() { return Mage::helper('sales')->__("Transaction # %s | %s", $this->_txn->getTxnId(), $this->formatDate($this->_txn->getCreatedAt(), Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true)); }
/** * Update transaction ids for further processing * If no transactions were set before invoking, may generate an "offline" transaction id * * @param string $type * @param Mage_Sales_Model_Order_Payment_Transaction $transactionBasedOn */ protected function _generateTransactionId($type, $transactionBasedOn = false) { if (!$this->getParentTransactionId() && !$this->getTransactionId() && $transactionBasedOn) { $this->setParentTransactionId($transactionBasedOn->getTxnId()); } // generate transaction id for an offline action or payment method that didn't set it if (($parentTxnId = $this->getParentTransactionId()) && !$this->getTransactionId()) { $this->setTransactionId("{$parentTxnId}-{$type}"); } }
/** * Update transaction ids for further processing * If no transactions were set before invoking, may generate an "offline" transaction id * * @param string $type * @param Mage_Sales_Model_Order_Payment_Transaction $transactionBasedOn */ protected function _generateTransactionId($payment, $type, $transactionBasedOn = false) { if (!$payment->getParentTransactionId() && $transactionBasedOn) { $payment->setParentTransactionId($transactionBasedOn->getTxnId()); } // generate transaction id for an offline action or payment method that didn't set it if ($parentTxnId = $payment->getParentTransactionId()) { $transactionId = "{$parentTxnId}-{$type}"; $collection = Mage::getModel('sales/order_payment_transaction')->getCollection()->setOrderFilter($payment->getOrder())->addPaymentIdFilter($payment->getId())->addTxnTypeFilter($type); if ($collection->count() > 0) { $transactionId .= '-' . ($collection->count() + 1); } $payment->setTransactionId($transactionId); } }
/** * 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; }