Packages

Elixir package to validate bank account numbers of Brazilian banks.

Retired package: Security issue - Not published by owners

Current section

Files

Jump to
bran_checker lib banks itau.ex
Raw

lib/banks/itau.ex

defmodule BRAN.Banks.Itau do
alias BRAN.DigitCalculator
import BRAN.Banks.Util
@moduledoc """
Documentation `BRAN.Banks.Itau`
"""
@weigths [2, 1, 2, 1, 2, 1, 2, 1, 2]
@doc """
Returns a boolean, after checking if the combination of agency_number, account_number and digit is valid
##Examples
iex> BRAN.Itau.is_valid?([2,5,4,5], [0,2,3,6,6], 1)
:true
"""
@spec is_valid?(List.t(), List.t(), Integer.t()) :: Boolean.t()
def is_valid?(agency_number, account_number, digit) do
with true <- is_valid_agency_number?(agency_number),
true <- is_valid_account_number?(account_number) do
digit_result =
(agency_number ++ account_number)
|> DigitCalculator.mod(10, @weigths, true)
|> rem(10)
digit_result == digit
else
_ -> false
end
end
defp is_valid_account_number?(account_number), do: length(account_number) == 5
end