public function testLoadByTxnId() { $order = new Mage_Sales_Model_Order(); $order->loadByIncrementId('100000001'); $model = new Mage_Sales_Model_Order_Payment_Transaction(); $model->setOrderPaymentObject($order->getPayment())->loadByTxnId('invalid_transaction_id'); $this->assertNull($model->getId()); $model->loadByTxnId('trx1'); $this->assertNotNull($model->getId()); }
/** * 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))); } }
/** * Parent transaction getter * May attempt to load it. * * @param bool $shouldLoad * @return Mage_Sales_Model_Order_Payment_Transaction|false */ public function getParentTransaction($shouldLoad = true) { if (null === $this->_parentTransaction) { $this->_verifyThisTransactionExists(); $this->_parentTransaction = false; $parentId = $this->getParentId(); if ($parentId) { $class = get_class($this); $this->_parentTransaction = new $class(); if ($shouldLoad) { $this->_parentTransaction->setOrderPaymentObject($this->_paymentObject)->load($parentId); if (!$this->_parentTransaction->getId()) { $this->_parentTransaction = false; } else { $this->_parentTransaction->hasChildTransaction(true); } } } } return $this->_parentTransaction; }