ADD IBAN FIELD TO STRUCTS AND UPDATE PARSING LOGIC
- Added `iban` field to the `IbanEx.Iban` struct to hold the full IBAN value. - Updated the parsing logic to populate the new field. - Adjusted BBAN rules and tests for France and Brazil to reflect updated structures. - Improved error handling and format validation routines.
This commit is contained in:
@@ -2,6 +2,19 @@ defmodule IbanEx.Country.FR do
|
||||
@moduledoc """
|
||||
France IBAN parsing rules
|
||||
|
||||
According to SWIFT registry and Wise validation, France BBAN structure is:
|
||||
- Bank code: 5 digits
|
||||
- Branch code: 5 digits
|
||||
- Account number: 11 alphanumeric characters
|
||||
- National check: 2 digits
|
||||
|
||||
BBAN spec: 5!n5!n11!c2!n (total 23 chars)
|
||||
Example: FR1420041010050500013M02606
|
||||
- Bank: 20041
|
||||
- Branch: 01005
|
||||
- Account: 0500013M026
|
||||
- National check: 06
|
||||
|
||||
## Examples
|
||||
|
||||
```elixir
|
||||
@@ -10,8 +23,8 @@ defmodule IbanEx.Country.FR do
|
||||
...> check_digits: "14",
|
||||
...> bank_code: "20041",
|
||||
...> branch_code: "01005",
|
||||
...> national_check: "06",
|
||||
...> account_number: "0500013M026"
|
||||
...> account_number: "0500013M026",
|
||||
...> national_check: "06"
|
||||
...> }
|
||||
...> |> IbanEx.Country.FR.to_string()
|
||||
"FR 14 20041 01005 0500013M026 06"
|
||||
@@ -23,6 +36,8 @@ defmodule IbanEx.Country.FR do
|
||||
|
||||
use IbanEx.Country.Template
|
||||
|
||||
alias IbanEx.Iban
|
||||
|
||||
@impl IbanEx.Country.Template
|
||||
@spec to_string(Iban.t()) :: binary()
|
||||
@spec to_string(Iban.t(), binary()) :: binary()
|
||||
@@ -32,12 +47,13 @@ def to_string(
|
||||
check_digits: check_digits,
|
||||
bank_code: bank_code,
|
||||
branch_code: branch_code,
|
||||
national_check: national_check,
|
||||
account_number: account_number
|
||||
account_number: account_number,
|
||||
national_check: national_check
|
||||
} = _iban,
|
||||
joiner \\ " "
|
||||
) do
|
||||
[country_code, check_digits, bank_code, branch_code, account_number, national_check]
|
||||
|> Enum.reject(&is_nil/1)
|
||||
|> Enum.join(joiner)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user