Um manipulador de documentos (RG, CPF, Inscrição Estadual, etc)
Usando Composer
$ composer require emcvlt/documents
Para validar um número de inscrição, basta você realizar uma chamada à classe passando como parâmetros o número da inscrição e a UF a qual pertence este número.
// Aqui definimos valores fictícios, porém válidos
$number = '01.140.812/690-10';
$stateOfRegistration = 'AC';
// Verificar se uma inscrição estadual é válida
if StateRegistration::isValid($number, $stateOfRegistration) {
echo "A inscrição estadual {$number} / {$stateOfRegistration} é válida";
} else {
echo "A inscrição estadual {$number} / {$stateOfRegistration} não é válida. Verifique e tente novamente.";
}
Caso o estado informado seja inválido (UF inexistente), a classe irá gerar uma exceção do tipo 'InvalidArgumentException'. Você pode tratar este comportamento facilmente.
// Aqui definimos valores fictícios, porém inválidos
$number = '01.140.812/690-10';
$stateOfRegistration = 'XX';
try {
// Verificar se uma inscrição estadual é válida
if StateRegistration::isValid($number, $stateOfRegistration) {
echo "A inscrição estadual {$number} / {$stateOfRegistration} é válida";
} else {
echo "A inscrição estadual {$number} / {$stateOfRegistration} não é válida. Verifique e tente novamente.";
}
} catch (\InvalidArgumentException $e) {
// Aqui tratamos os casos de UF inválida
echo 'Exceção capturada: ', $e->getMessage(), "\n";
}
Nos casos em que ocorrer a isenção da inscrição estadual, você pode simplesmente fornecer no número o valor 'ISENTO' ou 'ISENTA'. A classe lida com letras maiúsculas e minúsculas normalmente, tanto no número da inscrição estadual quanto na UF.
Por exemplo são válidos:
- 'SP', 'Sp' ou 'sp' para o estado de São Paulo
- 'ISENTO', 'Isento' ou 'isento' para isentos
Você precisa lidar antecipadamente com relação à quantidade de algarismos exigidos na inscrição estadual. Algumas UFs não usam dígitos identificadores da UF (os dois primeiros dígitos) e os usuários tendem à representar o número sem os zeros à esquerda. Nestes casos esta classe não saberá lidar com estes valores e poderá indicar um 'falso' resultado.
Também são usados sinais de pontuação na inscrição estadual e até letras. Nestes casos a classe irá lidar corretamente com estes valores, ignorando as pontuações e tratando os demais caracteres (letras e números).
Por exemplo são valores válidos para inscrições de São Paulo (SP):
- 'P-01100424.3/002' ou 'P011004243002'
Em caso de dúvidas, consulte a documentação de cada estado ou o site do Sintegra (http://www.sintegra.gov.br) para esclarecer suas dúvidas.
Incluí uma rotina de testes com valores válidos de todas as unidades da federação.
$ phpunit --verbose --testdox tests/StateRegistrationTest.php
A Licença MIT (MIT). Por favor veja License File para maiores informações.