     end
   end
 
-  defp gra_income_tax(i, "2019") do
+  defp gra_income_tax(i, 2019) do
     decimal_1 = Decimal.new("1")
 
     cond do


    taxable_income = Decimal.sub(total_cash, total_relief)

    # TODO: depending on month route tax calculation to appropriate functions
    tax_ded = gra_income_tax(taxable_income, "2019")

    overtime_tax = gra_overtime_tax(emp.overtime_earned, earned_salary)


    {csv, 1} = dbf_to_csv(dbf_file)
    {:ok, stream} = csv |> StringIO.open()

    tax_year =
      cond do
        month > "1812M" -> 2019
        month <= "1812M" -> 2018
      end

    records =
      stream
      |> IO.binstream(:line)
      |> MyParser.parse_stream(headers: false)
      |> Stream.filter(fn x -> hd(x) == month end)
      |> Task.async_stream(&parse_payroll_record(&1, employees, tax_year))
      |> Stream.map(fn {:ok, res} -> res end)
      # |> Stream.map(&parse_payroll_record(&1))
      |> Enum.to_list()
