public function canCapture($member = null, $partial = false)
    {
        // premise
        if (!(
            $this->Status === 'Authorized' &&
            ($partial ? GatewayInfo::allowPartialCapture($this->Gateway) : GatewayInfo::allowCapture($this->Gateway))
        )) {
            return false;
        }

        if ($this->isInDB()) {
            // Check if there are partial captures and deny further captures if multiple captures aren't enabled
            $hasPartials = $this->getPartialPayments()
                    ->filter('Status', array('Captured', 'PendingCapture'))
                    ->count() > 0;
            if ($hasPartials && GatewayInfo::captureMode($this->Gateway) !== GatewayInfo::MULTIPLE) {
                return false;
            }
        }

        $extended = $this->extendedCan('canCapture', $member);
        if ($extended !== null) {
            return $extended;
        }

        return Permission::check('CAPTURE_PAYMENTS', 'any', $member);
    }