class PaymentRecipes::PayPal::REST::Transaction

Attributes

authorizations[R]
captures[R]
currency[R]
description[R]
fee[R]
gift_wrap[R]
handling_fee[R]
insurance[R]
payment[R]
payment_id[R]
raw_transaction[R]
refunds[R]
sales[R]
shipping[R]
shipping_discount[R]
subtotal[R]
tax[R]
total[R]

Public Class Methods

new(paypal_transaction, payment:, expand: false) click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 30
def initialize(paypal_transaction, payment:, expand: false)
  unless paypal_transaction.is_a?(::PayPal::SDK::REST::DataTypes::Transaction)
    raise Exception, "#{ self.class.name } must be initialized with a PayPal Transaction" 
  end

  unless payment.is_a?(::PaymentRecipes::PayPal::REST::Payment)
    raise Exception, "Parameter payment must be a PaymentRecipes::PayPal::REST::Payment"
  end

  @currency           = convert_to_string(paypal_transaction.amount.currency)
  @total              = convert_to_money(amount: paypal_transaction.amount.total, currency: @currency)
  @description        = convert_to_string(paypal_transaction.description)
  @payment            = payment
  @payment_id         = payment.id

  @subtotal           = convert_to_money(amount: paypal_transaction.amount.details.subtotal, currency: @currency)
  @tax                = convert_to_money(amount: paypal_transaction.amount.details.tax, currency: @currency)
  @fee                = convert_to_money(amount: paypal_transaction.amount.details.fee, currency: @currency)
  @shipping           = convert_to_money(amount: paypal_transaction.amount.details.shipping, currency: @currency)
  @handling_fee       = convert_to_money(amount: paypal_transaction.amount.details.handling_fee, currency: @currency)
  @insurance          = convert_to_money(amount: paypal_transaction.amount.details.insurance, currency: @currency)
  @shipping_discount  = convert_to_money(amount: paypal_transaction.amount.details.shipping_discount, currency: @currency)
  @insurance          = convert_to_money(amount: paypal_transaction.amount.details.insurance, currency: @currency)
  @gift_wrap          = convert_to_money(amount: paypal_transaction.amount.details.gift_wrap, currency: @currency)
  @raw_transaction    = paypal_transaction

  @sales              = []
  @authorizations     = []
  @captures           = []
  @refunds            = []

  paypal_transaction.related_resources.each do |paypal_related_resource|
    if paypal_related_resource.sale.id 
      sale = ::PaymentRecipes::PayPal::REST::Sale.new(paypal_related_resource.sale, payment: payment)
      sale.reload! if expand

      @sales << sale
    end

    if paypal_related_resource.authorization.id
      authorization = ::PaymentRecipes::PayPal::REST::Authorization.new(paypal_related_resource.authorization, payment: payment)
      authorization.reload! if expand

      @authorizations << authorization
    end

    if paypal_related_resource.capture.id
      capture = ::PaymentRecipes::PayPal::REST::Capture.new(paypal_related_resource.capture, payment: payment)
      @captures << capture
    end

    if paypal_related_resource.refund.id
      refund = ::PaymentRecipes::PayPal::REST::Refund.new(paypal_related_resource.refund, payment: payment)
      @refunds << refund
    end
  end
end

Public Instance Methods

authorization() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 92
def authorization
  @authorizations.first
end
capture() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 96
def capture
  @captures.first
end
inspect() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 104
def inspect
  to_str
end
refund() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 100
def refund
  @refunds.first
end
sale() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 88
def sale
  @sales.first
end
to_s() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 108
def to_s
  to_str
end
to_str() click to toggle source
# File lib/payment_recipes/paypal/rest/transaction.rb, line 112
def to_str
  "<#{ self.class.name } total=#{ @total.format } sales=#{ @sales.size } authorizations=#{ @authorizations.size } captures=#{ @captures.size }>"
end