lib/train/tax/calculator/withholding_tax.rb in train-tax-calculator-2.3.2 vs lib/train/tax/calculator/withholding_tax.rb in train-tax-calculator-3.0.0
- old
+ new
@@ -8,36 +8,37 @@
{ lowest: 66_667.00, highest: 166_667.00, base: 10_833.33, excess: 0.30 },
{ lowest: 166_667.00, highest: 666_667.00, base: 40_833.33, excess: 0.32 },
{ lowest: 666_667.00, highest: Float::INFINITY, base: 200_833.33, excess: 0.35 },
]
- def self.compute(basic_salary)
- taxable_income = compute_taxable_income_for(basic_salary)
- tax_bracket = get_tax_bracket_for(taxable_income)
+ def self.call(basic_salary)
+ taxable_income = taxable_income_for(basic_salary)
+ tax_bracket = tax_bracket_for(taxable_income)
+
withholding_tax = ((taxable_income - tax_bracket[:lowest]) * tax_bracket[:excess]) + tax_bracket[:base]
withholding_tax.round(2)
end
private
- def self.compute_taxable_income_for(basic_salary)
- initial_net = basic_salary - Deductions.compute(basic_salary)
+ def self.taxable_income_for(basic_salary)
+ initial_net = basic_salary - Deductions.(basic_salary)
- if basic_salary > 90_000
- additional_tax = ((basic_salary - 90_000) / 12.00)
- return initial_net + additional_tax
- end
-
- initial_net
+ if basic_salary > 90_000
+ additional_tax = ((basic_salary - 90_000) / 12.00)
+ return initial_net + additional_tax
end
- def self.get_tax_bracket_for(taxable_income)
- LOOKUP_TABLE.select do |bracket|
- taxable_income >= bracket[:lowest] &&
- taxable_income < bracket[:highest]
- end.first
- end
+ initial_net
+ end
+
+ def self.tax_bracket_for(taxable_income)
+ LOOKUP_TABLE.select do |bracket|
+ taxable_income >= bracket[:lowest] &&
+ taxable_income < bracket[:highest]
+ end.first
+ end
end
end