lib/train/tax/calculator.rb in train-tax-calculator-1.1.1 vs lib/train/tax/calculator.rb in train-tax-calculator-2.0.0
- old
+ new
@@ -6,22 +6,73 @@
module Train
module Tax
module Calculator
class << self
+ def call(basic_salary)
+ hash = Hash.new
+ hash[:sss] = for_sss_es(basic_salary)
+ hash[:philhealth] = for_philhealth(basic_salary)
+ hash[:pagibig] = for_pagibig(basic_salary)
+ hash[:total_deductions] = hash[:sss] + hash[:philhealth] + hash[:pagibig]
+ hash[:withholding_tax] = withholding_tax(basic_salary)
+ hash[:net_income] = net_income(basic_salary)
+
+ hash
+ end
+ 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(basic_salary)
deductions = for_philhealth(basic_salary) + for_pagibig(basic_salary) + for_sss_es(basic_salary)
taxable_income = basic_salary - deductions
compute_withholding_for(taxable_income).round(2)
end
def net_income(basic_salary)
basic_salary - withholding_tax(basic_salary)
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
+
def for_philhealth(basic_salary)
Philhealth.compute(basic_salary)
end
def for_pagibig(basic_salary)
@@ -36,46 +87,9 @@
Sss.compute_employee_share(basic_salary)
end
def for_sss_er(basic_salary)
Sss.compute_employer_share(basic_salary)
- end
-
- 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
-
- def self.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