Sha256: 351c421e14632e501c4b9a22ad1be66a4ed85212e9832b38d675b63500578566

Contents?: true

Size: 1.55 KB

Versions: 62

Compression:

Stored size: 1.55 KB

Contents

module Workarea
  class Payment
    module Status
      class NotApplicable
        include StatusCalculator::Status

        def in_status?
          order.tenders.empty?
        end
      end

      class Pending
        include StatusCalculator::Status

        def in_status?
          order.transactions.map(&:success?).empty?
        end
      end

      class Authorized
        include StatusCalculator::Status

        def in_status?
          order.tenders.all? do |tender|
            tender.authorized_amount == tender.amount &&
              tender.captured_amount == 0
          end
        end
      end

      class Captured
        include StatusCalculator::Status

        def in_status?
          order.tenders.all? do |tender|
            tender.captured_amount == tender.amount &&
              tender.refunded_amount == 0
          end
        end
      end

      class PartiallyCaptured
        include StatusCalculator::Status

        def in_status?
          order.tenders.any? do |tender|
            tender.captured_amount > 0 &&
              tender.refunded_amount == 0
          end
        end
      end

      class Refunded
        include StatusCalculator::Status

        def in_status?
          order.tenders.all? do |tender|
            tender.refunded_amount == tender.amount
          end
        end
      end

      class PartiallyRefunded
        include StatusCalculator::Status

        def in_status?
          order.tenders.any? do |tender|
            tender.refunded_amount > 0
          end
        end
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.4.13 app/models/workarea/payment/status.rb
workarea-core-3.4.12 app/models/workarea/payment/status.rb