Class: SpreeCmCommissioner::TicketTransfers::FeeCalculator

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/ticket_transfers/fee_calculator.rb

Instance Method Summary collapse

Instance Method Details

#call(from_guest:, price:, currency:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/services/spree_cm_commissioner/ticket_transfers/fee_calculator.rb', line 6

def call(from_guest:, price:, currency:)
  price = price.to_d

  rule = resolve_rule(from_guest: from_guest, currency: currency)

  # If no rule is found, allow transfer with zero fees (free transfer)
  return success(rule: nil, price: price, platform_fee: 0.to_d, seller_net: price, total: price) if rule.nil?

  platform_fee = price.zero? ? 0.to_d : compute_fee(rule, price)
  seller_net   = [price - platform_fee, 0.to_d].max
  total        = price

  success(rule: rule, price: price, platform_fee: platform_fee, seller_net: seller_net, total: total)
end