DOKK / manpages / debian 10 / libbusiness-br-ids-perl / Business::BR::IE.3pm.en
Business::BR::IE(3pm) User Contributed Perl Documentation Business::BR::IE(3pm)

Business::BR::IE - Perl module to test for correct IE numbers

  use Business::BR::IE qw(test_ie canon_ie format_ie random_ie); 
  test_ie('sp', '110.042.490.114') # 1
  test_ie('pr', '123.45678-50') # 1
  test_ie('ac', '01.004.823/001-12') # 1
  test_ie('al', '24.000.004-8') # 1
  test_ie('am', '04.117.161-6') # 1
  test_ie('ba', '123456-63') # 1
  test_ie('ma', '12.000.038-5') # 1
  test_ie('mg', '062.307.904/0081') #1
  test_ie('rr', '24.006.628-1') # 1
  test_ie('ap', '03.012.345-9') # 1

YET TO COME. Handles IE for the states of Acre (AC), Alagoas (AL), Amapa (AP), Amazonas (AM), Bahia (BA), Maranha~o (MA), Minas Gerais (MG), Parana (PR), Rondonia (RO), Roraima (RR) and Sao Paulo (SP) by now.

EXPORT

"test_ie" is exported by default. "canon_ie", "format_ie", "random_ie" and "parse_ie" can be exported on demand.

Each state has its own rules for IE numbers. In this section, we gloss over each one of these

AC

The state of Acre uses:

  • 13-digits number
  • the last two are check digits
  • the usual formatting is like '01.004.823/001-12'
  • if the IE-AC number is decomposed into digits like this

      a_1 a_2 a_3 a_4 a_5 a_6 a_7 a_8 a_9 a_10 a_11 d_1 d_2
        

    it is correct if

      a_1 a_2 = 0 1
        

    (that is, it always begin with "01") and if it satisfies the check equations:

      4 a_1 + 3 a_2 + 2 a_3 + 9 a_4  + 8 a_5  + 7 a_6 + 6 a_7 +
                      5 a_8 + 4 a_9 + 3 a_10 + 2 a_11 +   d_1   = 0 (mod 11) or
                                                                = 1 (mod 11) (if d_1 = 0)
      5 a_1 + 4 a_2 + 3 a_3 + 2 a_4  + 9 a_5  + 8 a_6 + 7 a_7 +
              6 a_8 + 5 a_9 + 4 a_10 + 3 a_11 + 2 d_1 +   d_2  = 0 (mod 11) or
                                                               = 1 (mod 11) (if d_2 = 0)
        

AL

The state of Alagoas uses:

  • 9-digits number
  • the last one is a check digit
  • the usual formatting is like '24.000.004-8'
  • if the IE-AL number is decomposed into digits like this

      a_1 a_2 a_3 a_4 a_5 a_6 a_7 a_8 d_1
        

    it is correct if it always begin with "24" (the code for the state of Alagoas),

      a_1 a_2 = 2 4
        

    if the following digit identifies a valid company type

      0 - "normal"
      1 - "normal"
      3 - "produtor rural"
      5 - "substituta"
      6 - "empresa pequeno porte"
      7 - "micro empresa ambulante"
      8 - "micro empresa"
      9 - "especial"
        

    and if it satisfies the check equation:

      ( 9 a_1 + 2 a_2 + 3 a_3 + 4 a_4 + 5 a_5
                        6 a_6 + 7 a_7 + 8 a_8 ) * 10 - d_1 = 0  (mod 11) or
                                                           = 10 (mod 11) (if d_1 = 0)
        

AM

The state of Amazonas uses:

  • 9-digits number
  • the last one is a check digit
  • the usual formatting is like '11.111.111-0'
  • if the IE-AM number is decomposed into digits like this

      a_1 a_2 a_3 a_4 a_5 a_6 a_7 a_8 d_1
        

    it is correct if it satisfies the check equation:

      9 a_1 + 8 a_2 + 7 a_3 + 6 a_4 + 5 a_5
                        4 a_6 + 3 a_7 + 2 a_8   + d_1 = 0  (mod 11) or
                                                      = 1  (mod 11) (if d_1 = 0)
        

BA

The state of Bahia uses:

  • 8-digits number
  • the last two are check digits
  • the usual formatting is like '123456-63'

MA

The state of Maranha~o uses:

  • 9-digits number
  • the 9th is a check digit
  • the usual formatting is like '12.000.038-5'
  • if the IE-MA number is decomposed into digits like this

      a_1 a_2 a_3 a_4 a_5 a_6 a_7 a_8 d_1
        

    it is correct if it always begin with "12" (the code for the state of Maranha~o),

      a_1 a_2 = 1 2
        

    and if it satisfies the check equation:

      ( 9 a_1 + 8 a_2 + 7 a_3 + 6 a_4 + 5 a_5
                        4 a_6 + 3 a_7 + 2 a_8 ) - d_1 = 0  (mod 11) or
                                                      = 10 (mod 11) (if d_1 = 0)
        

MG

The state of Minas Gerais uses:

  • 13-digits number
  • the 11th and 12th are check digits
  • the usual formatting is like '062.307.904/0081'
  • to determine if IE/MG number is correct, the computation rules in

      http://www.sintegra.gov.br/Cad_Estados/cad_MG.html
        

    must be followed. (Yes, they are boring and hard to describe.)

PR

The state of Parana uses:

  • 10-digits number
  • the 9th and 10th are check digits
  • the usual formatting is like '123.45678-50'

RO

The state of Rondonia uses:

  • 14-digits number
  • the 14th is a check digit
  • the usual formatting is like '0000000062521-3'
  • if the IE-RO number is decomposed into digits like this

      a_1 a_2 a_3 a_4 a_5 a_6 a_7 a_8 a_9 a_10 a_11 a_12 a_13 d_1
        

    it is correct if it satisfies the check equation:

      ( 6 a_1 + 5 a_2 + 4 a_3 + 3 a_4 + 2 a_5 +
        9 a_6 + 8 a_7 + 7 a_8 + 6 a_9 + 5 a_10 +
        4 a_11 + 3 a_12 + 2 a_13 + d_1            = 0  (mod 11) or
                                                  = 1  (mod 11) if d_1 = 0
        

RR

The state of Roraima uses:

  • 9-digits number
  • the 9th is a check digit
  • the usual formatting is like '24.006.628-1'
  • if the IE-RR number is decomposed into digits like this

      a_1 a_2 a_3 a_4 a_5 a_6 a_7 a_8 d_1
        

    it is correct if it always begin with "24" (the code for the state of Roraima),

      a_1 a_2 = 2 4
        

    and if it satisfies the check equation:

      ( 1 a_1 + 2 a_2 + 3 a_3 + 4 a_4 + 5 a_5
                        6 a_6 + 7 a_7 + 8 a_8 ) - d_1 = 0  (mod 9)
        

SP

The state of Sa~o Paulo uses:

  • 12-digits number
  • the 9th and 12nd are check digits
  • the usual formatting is like '110.042.490.114'

  • This documentation is faulty
  • If you want handling more than AC, AL, AM, MA, MG, PR, RO, RO and SP, you'll have to wait for the next releases
  • The handling of IE-SP does not include yet the special rule for testing correctness of registrations of rural producers.
  • the case of unfair digits must be handled satisfactorily (in this and other Business::BR::Ids modules)

Please reports bugs via CPAN RT, http://rt.cpan.org/NoAuth/Bugs.html?Dist=Business-BR-Ids By doing so, the author will receive your reports and patches, as well as the problem and solutions will be documented.

A. R. Ferreira, <ferreira@cpan.org>

Copyright (C) 2005-2007 by A. R. Ferreira

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

2008-07-01 perl v5.14.2