示例#1
0
 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());
 }
示例#2
0
 /**
  * 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)));
     }
 }
示例#3
0
 /**
  * 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;
 }