The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

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

SYNOPSIS

  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('ma', '12.000.038-5') # 1

DESCRIPTION

YET TO COME. Handles IE for the states of Acre (AC), Alagoas (AL), Maranhão (MA), Paraná (PR) 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.

DETAILS

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)

MA

The state of Maranhã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 Maranhã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)

PR

The state of Paraná uses:

  • 10-digits number

  • the 9th and 10th are check digits

  • the usual formatting is like '123.45678-50'

SP

The state of São Paulo uses:

  • 12-digits number

  • the 9th and 12nd are check digits

  • the usual formatting is like '110.042.490.114'

BUGS

  • This documentation is faulty

  • If you want handling more than AC, AL, MA, PR 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)

SEE ALSO

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.

AUTHOR

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

COPYRIGHT AND LICENSE

Copyright (C) 2005 by A. R. Ferreira

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 434:

Non-ASCII character seen before =encoding in 'Maranhão'. Assuming CP1252