Class: SchwabRb::DataObjects::OrderPreview::CommissionAndFee

Inherits:
Object
  • Object
show all
Defined in:
lib/schwab_rb/data_objects/order_preview.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs) ⇒ CommissionAndFee

Returns a new instance of CommissionAndFee.



148
149
150
151
152
153
154
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 148

def initialize(attrs)
  @commission = attrs[:commission]&.to_f
  @commissions = attrs[:commissions] || []
  @fee = attrs[:fee]&.to_f
  @fees = attrs[:fees] || []
  @true_commission = attrs[:trueCommission]&.to_f
end

Instance Attribute Details

#commissionObject (readonly)

Returns the value of attribute commission.



146
147
148
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 146

def commission
  @commission
end

#commissionsObject (readonly)

Returns the value of attribute commissions.



146
147
148
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 146

def commissions
  @commissions
end

#feeObject (readonly)

Returns the value of attribute fee.



146
147
148
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 146

def fee
  @fee
end

#feesObject (readonly)

Returns the value of attribute fees.



146
147
148
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 146

def fees
  @fees
end

#true_commissionObject (readonly)

Returns the value of attribute true_commission.



146
147
148
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 146

def true_commission
  @true_commission
end

Instance Method Details

#commission_totalObject



156
157
158
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 156

def commission_total
  calculate_total_from_legs(@commissions, "COMMISSION")
end

#commission_valueObject



160
161
162
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 160

def commission_value
  @commission || commission_total
end

#fee_totalObject



164
165
166
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 164

def fee_total
  calculate_total_from_legs(@fees, %w[OPT_REG_FEE INDEX_OPTION_FEE])
end

#fee_valueObject



168
169
170
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 168

def fee_value
  @fee || fee_total
end

#to_hObject



176
177
178
179
180
181
182
183
184
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 176

def to_h
  {
    commission: @commission,
    fee: @fee,
    trueCommission: @true_commission,
    commissions: @commissions,
    fees: @fees
  }
end

#true_commission_valueObject



172
173
174
# File 'lib/schwab_rb/data_objects/order_preview.rb', line 172

def true_commission_value
  @true_commission || (commission_total * 2)
end