@lytrax/afm

1.0.1 • Public • Published

Greek TIN/AFM Validator and Generator

Linux Build Status tested with jest NPM

Logo

Validate and generate Greek TIN (Tax Identification Number) / AFM (Αριθμός Φορολογικού Μητρώου). Generation function can create valid or invalid numbers including parameters for old format, individuals, legal entities and repet tolerance digits control.

Online demo and presentation

https://lytrax.io/blog/projects/greek-tin-validator-generator

Installation

Install @lytrax/afm using npm:

npm install @lytrax/afm

Or yarn:

yarn add @lytrax/afm

Usage

Import or require (ESM, CJS):

// ESM
import {
  validateAFM,
  generateAFM,
  generateValidAFM,
  generateInvalidAFM
} from '@lytrax/afm';

// CJS
const {
  validateAFM,
  generateAFM,
  generateValidAFM,
  generateInvalidAFM
} = require('@lytrax/afm');

For browsers (UMD), download latest release from releases, or browse JSDeliver CDN to pick the latest version and then include the script file:

// UMD (Browsers)
<script src="https://cdn.jsdelivr.net/npm/@lytrax/afm@latest/dist/lytrax-afm.min.js"></script>

Validate a number:

> validateAFM('090000045')
< true

> validateAFM('123456789')
< false

Generate a valid number:

> generateValidAFM()
< "731385437"

Generate an invalid number:

> generateInvalidAFM()
< "853003357"

API

validateAFM (afm, [{ extendedResult = false }])

  • afm: string - A number to be checked
  • [params: object] - Optional object for named parameters
  • [params.extendedResult: boolean = false] - Return a boolean or ValidateAFMExtendedResult
  • Returns: boolean or ValidateAFMExtendedResult

Example:

> validateAFM('ab1234', { extendedResult: true })
< {valid: false, error: "length"}

generateAFM ([{
   forceFirstDigit,
   pre99 = false,
   individual = false,
   legalEntity = false,
   repeatTolerance,
   valid = true
}])

  • [params: object] - Optional object for named parameters
  • [params.forceFirstDigit: null|number] - If specified, overrides all pre99, legalEntity and individual
  • [params.pre99: boolean = false] - Για ΑΦΜ πριν από 1/1/1999 (ξεκινάει με 0), (if true, overrides both legalEntity and individual)
  • [params.individual: boolean = false] - Φυσικά πρόσωπα, (ξεκινάει με 1-4)
  • [params.legalEntity: boolean = false] - Νομικές οντότητες (ξεκινάει με 7-9)
  • [params.repeatTolerance: null|number] - Number for max repeat tolerance (0 for no repeats, unspecified for no check)
  • [params.valid: boolean = true] - Generate valid or invalid AFM
  • Returns: string - A valid or invalid 9 digit AFM number

Example:

> generateAFM({ forceFirstDigit: 3, repeatTolerance: 1, valid: true })
< "335151580"

generateValidAFM - Same as generateAFM with params.valid force and override to true

  • Returns: string - A valid 9 digit AFM number

Example:

> generateValidAFM({ pre99: true })
< "070825250"

generateInvalidAFM - Same as generateAFM with params.valid force and override to false

  • Returns: string - An invalid 9 digit AFM number

Example:

> generateInvalidAFM({ legalEntity: true })
< "877577341"

Object result typedef ValidateAFMExtendedResult

  • Property valid: boolean - Whether the AFM number is valid or not.
  • Property error: 'length' or 'nan' or 'zero' or 'invalid'

Test

Clone this repository, intall modules and run test:

git clone https://github.com/clytras/afm-es.git && cd afm-es
npm install
npm run test

Changelog

See CHANGELOG

License

MIT License - see the LICENSE file for details

Dependencies (0)

    Dev Dependencies (9)

    Package Sidebar

    Install

    npm i @lytrax/afm

    Weekly Downloads

    148

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    29.9 kB

    Total Files

    8

    Last publish

    Collaborators

    • clytras