lib/train/tax/calculator.rb in train-tax-calculator-2.2.0 vs lib/train/tax/calculator.rb in train-tax-calculator-2.2.1

- old
+ new

@@ -1,10 +1,11 @@ require "train/tax/calculator/version" require "train/tax/calculator/philhealth" require "train/tax/calculator/pagibig" require "train/tax/calculator/sss" require "train/tax/calculator/deductions" +require "train/tax/calculator/withholding_tax" module Train module Tax module Calculator @@ -13,58 +14,14 @@ hash[:sss] = Sss.compute_employee_share(basic_salary) hash[:pagibig] = Pagibig.compute(basic_salary) hash[:philhealth] = Philhealth.compute(basic_salary) hash[:total_deductions] = Deductions.get(basic_salary) - hash[:withholding_tax] = withholding_tax(hash[:total_deductions], basic_salary) + hash[:withholding_tax] = WithholdingTax.compute(hash[:total_deductions], basic_salary) hash[:net_income] = basic_salary - hash[:withholding_tax] hash end - private - - HIGHEST_BRACKET = 666_667.00 - HIGHER_BRACKET = 166_667.00 - HIGH_BRACKET = 66_667.00 - LOW_BRACKET = 33_333.00 - LOWEST_BRACKET = 20_833.00 - - class << self - - def withholding_tax(deductions, basic_salary) - taxable_income = basic_salary - deductions - compute_withholding_for(taxable_income).round(2) - end - - def compute_withholding_for(income) - if income >= HIGHEST_BRACKET - - 200_833.33 + ((income - HIGHEST_BRACKET) * 0.35) - - elsif income >= HIGHER_BRACKET - - 40_833.33 + ((income - HIGHER_BRACKET) * 0.32) - - elsif income >= HIGH_BRACKET - - 10_833.33 + ((income - HIGH_BRACKET) * 0.30) - - elsif income >= LOW_BRACKET - - 2_500.00 + ((income - LOW_BRACKET) * 0.25) - - elsif income >= LOWEST_BRACKET - - 0.00 + ((income - LOWEST_BRACKET) * 0.20) - - else - - 0.00 - - end - end - - end end end end