View Source UkraineTaxidEx.Itin.Parser (ukraine_tax_id v0.1.1)
This module provides parsing functionality for Ukrainian Individual Taxpayer Identification Numbers (ITIN).
ITINs (also known as РНОКПП/ІПН) are unique identifiers assigned to individuals in Ukraine for tax purposes. The parser validates the number format and extracts meaningful components like the checksum according to official requirements.
Key features:
- Validates ITIN format and length
- Calculates and verifies checksum
- Parses components into a structured format
- Handles both raw strings and pre-validated input
Examples of successful ITIN parsing:
iex> UkraineTaxidEx.Itin.Parser.parse("2222222222")
{:ok, %UkraineTaxidEx.Itin{code: "2222222222", birth_date: ~D[1960-12-17], number: 2222, gender: 0, check_sum: 2, check_digit: 2}}
iex> UkraineTaxidEx.Itin.Parser.parse("3333333333")
{:ok, %UkraineTaxidEx.Itin{code: "3333333333", birth_date: ~D[1991-03-05], number: 3333, gender: 1, check_sum: 3, check_digit: 3}}
Examples of unsuccessful ITIN parsing:
iex> UkraineTaxidEx.Itin.Parser.parse("123456")
{:error, :length_too_short}
iex> UkraineTaxidEx.Itin.Parser.parse("12345678901")
{:error, :length_too_long}
iex> UkraineTaxidEx.Itin.Parser.parse("1234567890")
{:error, :invalid_checksum}
Summary
Types
@type itin() :: UkraineTaxidEx.Itin.t()
@type itin_or_error() :: {:ok, UkraineTaxidEx.Itin.t()} | {:error, :length_too_short | :length_too_long | :invalid_checksum}
@type itin_string() :: String.t()
Functions
@spec birth_date(digits :: UkraineTaxidEx.Commons.digits()) :: Date.t()
@spec gender(digits :: UkraineTaxidEx.Commons.digits()) :: UkraineTaxidEx.Itin.gender()
@spec number(digits :: UkraineTaxidEx.Commons.digits()) :: integer()