function __construct(Am_Paysystem_Transaction_Interface $transaction) { $this->Amount = $transaction->getAmount(); $this->PaysysId = $transaction->getPaysysId(); $this->ReceiptId = $transaction->getReceiptId(); $this->RecurringType = $transaction->getRecurringType(); $this->Time = $transaction->getTime()->format('Y-m-d H:i:s'); $this->TimeZone = $transaction->getTime()->getTimezone()->getName(); $this->UniqId = $transaction->getUniqId(); }
public function setFromTransaction(Invoice $invoice, Am_Paysystem_Transaction_Interface $transaction, $refundType) { $this->dattm = $transaction->getTime()->format('Y-m-d H:i:s'); $this->invoice_id = $invoice->invoice_id; $this->invoice_public_id = $invoice->public_id; $this->user_id = $invoice->user_id; $this->currency = $invoice->currency; $this->amount = $transaction->getAmount(); $this->paysys_id = $transaction->getPaysysId(); $this->receipt_id = $transaction->getReceiptId(); $this->transaction_id = $transaction->getUniqId(); $this->refund_type = $refundType; return $this; }
public function setFromTransaction(Invoice $invoice, Am_Paysystem_Transaction_Interface $transaction) { $this->dattm = $transaction->getTime()->format('Y-m-d H:i:s'); $this->invoice_id = $invoice->invoice_id; $this->invoice_public_id = $invoice->public_id; $this->user_id = $invoice->user_id; $this->currency = $invoice->currency; $this->paysys_id = $transaction->getPaysysId(); $this->receipt_id = $transaction->getReceiptId(); $this->transaction_id = $transaction->getUniqId(); /// get from invoice $isFirst = !(doubleval($invoice->first_total) === 0.0 || $invoice->getPaymentsCount()); $amount = $transaction->getAmount(); if ($amount <= 0) { $amount = $isFirst ? $invoice->first_total : $invoice->second_total; } $this->amount = (double) $amount; $this->discount = $isFirst ? $invoice->first_discount : $invoice->second_discount; $this->tax = $isFirst ? $invoice->first_tax : $invoice->second_tax; $this->shipping = $isFirst ? $invoice->first_shipping : $invoice->second_shipping; return $this; }
protected function addRefundInternal(Am_Paysystem_Transaction_Interface $transaction, $origReceiptId, $refundType, $refundAmount = null) { $access = $this->getAccessRecords(); $dattm = $transaction->getTime(); $yesterday = clone $dattm; $yesterday->modify('-1 days'); $totalPaid = 0; foreach ($this->getDi()->invoicePaymentTable->findBy(array('receipt_id' => $origReceiptId, 'invoice_id' => $this->invoice_id)) as $p) { $p->refund($dattm); $totalPaid += $p->amount; // do not disable any access for refunds // if ($refundType == InvoiceRefund::REFUND) // disable only related access // foreach ($access as $a) // if ($a->invoice_payment_id == $p->invoice_payment_id) // $a->updateQuick('expire_date', $yesterday->format('Y-m-d')); } if (!$refundAmount) { $refundAmount = $transaction->getAmount(); } if (!$refundAmount) { $refundAmount = $totalPaid; } $refundAmount = abs($refundAmount); if ($refundType != InvoiceRefund::REFUND || $refundAmount === null || $totalPaid <= $refundAmount) { $this->revokeAccess($transaction, $origReceiptId); } // Some payment system plugins can pass negative value here. $r = $this->getDi()->invoiceRefundRecord; $r->setFromTransaction($this, $transaction, $origReceiptId, InvoiceRefund::REFUND); $r->amount = $refundAmount; $r->refund_type = (int) $refundType; if (!empty($p)) { $r->invoice_payment_id = $p->invoice_payment_id; } $r->insert(); $this->updateStatus(); $this->getUser()->checkSubscriptions(true); $this->getDi()->hook->call(Am_Event::INVOICE_PAYMENT_REFUND, array('invoice' => $this, 'refund' => $r)); }