Source of file Payable.php
Size: 2,199 Bytes - Last Modified: 2021-12-23T10:34:19+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/Payable.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | <?php namespace SilverStripe\Omnipay\Extensions; use SilverStripe\Omnipay\GatewayInfo; use SilverStripe\Omnipay\Model\Payment; use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\HasManyList; /** * An extension for providing payments on a particular data object. * * @property DataObject|Payable $owner * @method Payment[]|HasManyList Payments() */ class Payable extends DataExtension { private static $has_many = [ 'Payments' => Payment::class ]; /** * Get the total captured amount * * @return float */ public function TotalPaid() { $paid = 0; if ($payments = $this->owner->Payments()) { foreach ($payments as $payment) { if ($payment->Status == 'Captured') { $paid += $payment->Amount; } } } return $paid; } /** * Get the total captured or authorized amount, excluding Manual payments. * * @return float */ public function TotalPaidOrAuthorized() { $paid = 0; if ($payments = $this->owner->Payments()) { foreach ($payments as $payment) { // Captured and authorized payments // (which aren't manual) should count towards the total $captured = $payment->Status == 'Captured'; $authorized = $payment->Status == 'Authorized' && !GatewayInfo::isManual($payment->Gateway); if ($captured || $authorized) { $paid += $payment->Amount; } } } return $paid; } /** * Whether or not the model has payments that are in a pending state. * * Can be used to show a waiting screen to the user or similar. * * @return bool */ public function HasPendingPayments() { return $this->owner->Payments() ->filter('Status', array( 'PendingAuthorization', 'PendingPurchase', 'PendingCapture', 'PendingRefund', 'PendingVoid' ))->count() > 0; } } |