/** * Set order status by transaction * * @param \XLite\Model\Payment\transaction $transaction Transaction which changes status * * @return void */ public function setPaymentStatusByTransaction(\XLite\Model\Payment\transaction $transaction) { if ($transaction->isXpc(true)) { $config = \XLite\Core\Config::getInstance()->CDev->XPaymentsConnector; list($authorized, $captured, $voided, $refunded) = $this->getXpcTransactionSums(); if ($transaction->getDataCell('xpc_is_fraud_status') && 1 == $transaction->getDataCell('xpc_is_fraud_status')->getValue() && self::ORDER_ZERO >= $authorized && self::ORDER_ZERO >= $captured && self::ORDER_ZERO >= $voided && self::ORDER_ZERO >= $refunded) { $status = $config->xpc_status_declined; } elseif ($refunded > 0) { if ($refunded >= $captured) { $status = $config->xpc_status_refunded; } else { $status = $config->xpc_status_refunded_part; } } elseif ($voided > 0) { $status = $config->xpc_status_declined; } elseif ($captured > 0) { if ($captured >= $authorized) { $status = $config->xpc_status_charged; } else { $status = $config->xpc_status_charged_part; } } elseif ($authorized > 0 || $authorized <= self::ORDER_ZERO && $this->getTotal() <= self::ORDER_ZERO) { $status = $config->xpc_status_auth; } else { $status = $config->xpc_status_new; } $this->setPaymentStatus($status); } else { parent::setPaymentStatusByTransaction($transaction); } }
/** * {@inheritDoc} */ public function setPaymentStatusByTransaction(\XLite\Model\Payment\Transaction $transaction) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPaymentStatusByTransaction', array($transaction)); return parent::setPaymentStatusByTransaction($transaction); }