Ir para conteúdo
Fórum Script Brasil
  • 0

Validar Inscrição Estadual - MG


Caipira

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

Olá,

Segue abaixo função SQLServer 2005 para validação do IE (Inscrição Estadual) inicialmente para o estado de São Paulo. Quando terminar os demais eu faço outro post.

O retorno da função é:

0 - Validação com Erro

1 - Validação OK

Para testar:

I – Industriais e comerciantes (exceto produtores rurais a eles não equiparados):

> Formato: 12 dígitos sendo que o 9º e o 12º são dígitos verificadores

> Exemplo: Inscrição Estadual 110.042.490.114

---

II – Inscrição estadual de Produtor Rural (Não equiparado a industrial ou comerciante, cujas inscrições obedecem a Regra descrita no item anterior):

> Formato: - P0MMMSSSSD000

- 13 caracteres dos quais o 10º caracter contado a partir da esquerda ("D") é o dígito verificador

- Inicia sempre com "P" e apresenta a sequência 0MMMSSSSD000, onde:

0MMMSSSS-algarismos que serão utilizados no cálculo do dígito verificador "D"

"D" - Dígito verificador que consiste os 8 (oito)dígitos imediatamente anteriores

000 - 3 (três) dígitos que compõem o nº de inscrição mas não utilizados no cálculo do dígito verificador

> Exemplo: Inscrição Estadual P-01100424.3/002

Fonte de informações:

http://www.sefaz.mt.gov.br/portal/Tributar...cador/dv-SP.php

http://forum.imasters.uol.com.br/index.php...dos-os-estados/

Abraços,

Alexandre.

---------

if exists (select *

from sysobjects

where id = object_id ('ST_FN_CALCULADIGIE'))

drop function dbo.ST_FN_CALCULADIGIE

go

create function dbo.ST_FN_CALCULADIGIE (@vINSCRICAO varchar(16), @vESTADO char(2)) returns numeric(1)

as

begin

declare @nRETURN numeric(1)

declare @nPOS integer

declare @vIE varchar(14)

declare @nVALORBASE integer

declare @nDIGITO integer

declare @vCHAR char(1)

declare @nSOMA integer

if len(@vESTADO) != 2

return 0

else

set @vESTADO = upper(@vESTADO)

if len(@vINSCRICAO) = 0

return 0

else

set @vINSCRICAO = upper(@vINSCRICAO)

set @nPOS = 1

set @vIE = ''

--Retira CARACTERES inválidos da INSCRIÇÃO ESTADUAL.

while @nPOS <= len(@vINSCRICAO)

begin

set @vCHAR = substring(@vINSCRICAO, @nPOS, 1)

if charindex(@vCHAR, '0123456789P') > 0

set @vIE = @vIE + @vCHAR

set @nPOS = @nPOS + 1

end

if upper(@vESTADO) = 'SP'

begin

if substring(@vIE, 1, 1) = 'P'

begin

-- Exemplo: P011004243002

if len(@vIE) != 13

return 0

set @nVALORBASE = 1

set @nSOMA = 0

set @nPOS = 2

while @nPOS <= 9

begin

set @vCHAR = substring(@vIE, @nPOS, 1)

set @nSOMA = @nSOMA + (convert(integer, @vCHAR) * @nVALORBASE)

set @nPOS = @nPOS + 1

set @nVALORBASE = @nVALORBASE + 1

if @nVALORBASE = 2

set @nVALORBASE = 3

if @nVALORBASE = 9

set @nVALORBASE = 10

end

set @nDIGITO = @nSOMA % 11

if @nDIGITO > 9

set @nDIGITO = 0

if @nDIGITO != convert(integer, substring(@vIE, 10, 1))

set @nRETURN = 0

else

set @nRETURN = 1

end

else

begin

set @vIE = right(replicate('0', 12) + rtrim(ltrim(@vIE)), 12)

set @nVALORBASE = 1

set @nSOMA = 0

set @nPOS = 1

while @nPOS <= 7

begin

set @vCHAR = substring(@vIE, @nPOS, 1)

set @nSOMA = @nSOMA + (convert(integer, @vCHAR) * @nVALORBASE)

set @nPOS = @nPOS + 1

set @nVALORBASE = @nVALORBASE + 1

if @nVALORBASE = 2

set @nVALORBASE = 3

if @nVALORBASE = 9

set @nVALORBASE = 10

end

set @nDIGITO = @nSOMA % 11

if @nDIGITO > 9

set @nDIGITO = 0

if @nDIGITO != convert(integer, substring(@vIE, 9, 1))

return 0

else

begin

set @nVALORBASE = 3

set @nSOMA = 0

set @nPOS = 1

while @nPOS <= 11

begin

set @vCHAR = substring(@vIE, @nPOS, 1)

set @nSOMA = @nSOMA + (convert(numeric(1), @vCHAR) * @nVALORBASE)

set @nPOS = @nPOS + 1

set @nVALORBASE = @nVALORBASE - 1

if @nVALORBASE = 1

set @nVALORBASE = 10

end

set @nDIGITO = @nSOMA % 11

if @nDIGITO > 9

set @nDIGITO = 0

if @nDIGITO != convert(integer, substring(@vIE, 12, 1))

set @nRETURN = 0

else

set @nRETURN = 1

end

end

end

return @nRETURN

end

-------

Editado por Alex.Vasc
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...