Class: Formulas::WithholdingTax

Inherits:
Object
  • Object
show all
Includes:
FrequencyConversions
Defined in:
lib/formulas/withholding_tax.rb

Direct Known Subclasses

PAYE, PAYG

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from FrequencyConversions

#convert_annually_to_annually, #convert_annually_to_fortnightly, #convert_annually_to_monthly, #convert_annually_to_weekly, #convert_fortnightly_to_annually, #convert_fortnightly_to_monthly, #convert_fortnightly_to_weekly, #convert_monthly_to_annually, #convert_monthly_to_fortnightly, #convert_monthly_to_weekly, #convert_weekly_to_annually, #convert_weekly_to_fortnightly, #convert_weekly_to_monthly

Constructor Details

#initialize(gross_pay, origin_frequency, tax_rate, options: {}) ⇒ WithholdingTax

Returns a new instance of WithholdingTax.



9
10
11
12
13
14
# File 'lib/formulas/withholding_tax.rb', line 9

def initialize(gross_pay, origin_frequency, tax_rate, options: {})
  @gross_pay = gross_pay
  @origin_frequency = origin_frequency
  @tax_rate = tax_rate
  @options = options
end

Instance Attribute Details

#origin_frequencyObject (readonly)

Returns the value of attribute origin_frequency.



7
8
9
# File 'lib/formulas/withholding_tax.rb', line 7

def origin_frequency
  @origin_frequency
end

Instance Method Details

#net_pay(request_frequency:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/formulas/withholding_tax.rb', line 16

def net_pay(request_frequency:)
  annual_pay_after_tax = annual_gross_pay - calculate_tax(Formulas::ANNUALLY)

  if respond_to?(:levy)
    net_pay = annual_pay_after_tax - (acc_payable * send(:levy))
  end

  return net_pay if request_frequency.to_s == Formulas::ANNUALLY.to_s

  send("convert_annually_to_#{request_frequency}", net_pay).round(2)
end