Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

VALIDAÇÃO CHAVE DE ACESSO NF-E


Guilhermehc

Posts Recomendados


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  16
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  120
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  37

Salve galera,

desenvolvi uma Function que é executada através de uma trigger da tabela TMOV para validação do DV da Chave de Acesso da Nota Fiscal Eletrônica de entrada.

Funciona da seguinte forma:

Usuário no movimento de entrada informa o tipo do documento como NF-e e então o sistema habilita o campo Chave de Acesso NF-e.

Neste campo, por padrão, nenhuma validação é feita.

Foi criada a trigger e function então para que seja validado o DV (dígito verificador) da nota, ou seja, o último número dos 44 caracteres.

Caso o DV ou então algum número seja digitado de forma incorreta o sistema não permite a gravação.

No mais era isso!

Se alguém tiver interesse posso disponibilizar para todos!

Valeu abraço!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  60
  • Conteúdo/Dia:  0.01
  • Reputação:   3
  • Pontos/Conquistas:  388
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline
  • Idade:  50

Achei interessante sim , se puder disponibilizar eu agradeceria muito pois ainda sou novato com o SQL .

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  17
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  51
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  425
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Ola, eu tbem acho interessante, visto q a versao que estou nao tem isso ...

Obr

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  16
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  120
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  37

USE [teste]

GO

/****** Object: UserDefinedFunction [dbo].[VALIDA_CHAVEACESSONFE] Script Date: 06/01/2012 14:15:44 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[VALIDA_CHAVEACESSONFE] (@IDMOV INT,@CODCOLIGADA INT)

--CRIADO POR GUILHERME

RETURNS INT

AS

BEGIN

DECLARE @TOTAL int, @RESTO int, @RETORNO INT

SELECT @TOTAL = (select SUM (

(substring(chaveacessonfe,43,1) * 2) +

(substring(chaveacessonfe,42,1) * 3) +

(substring(chaveacessonfe,41,1) * 4) +

(substring(chaveacessonfe,40,1) * 5) +

(substring(chaveacessonfe,39,1) * 6) +

(substring(chaveacessonfe,38,1) * 7) +

(substring(chaveacessonfe,37,1) * 8) +

(substring(chaveacessonfe,36,1) * 9) +

(substring(chaveacessonfe,35,1) * 2) +

(substring(chaveacessonfe,34,1) * 3) +

(substring(chaveacessonfe,33,1) * 4) +

(substring(chaveacessonfe,32,1) * 5) +

(substring(chaveacessonfe,31,1) * 6) +

(substring(chaveacessonfe,30,1) * 7) +

(substring(chaveacessonfe,29,1) * 8) +

(substring(chaveacessonfe,28,1) * 9) +

(substring(chaveacessonfe,27,1) * 2) +

(substring(chaveacessonfe,26,1) * 3) +

(substring(chaveacessonfe,25,1) * 4) +

(substring(chaveacessonfe,24,1) * 5) +

(substring(chaveacessonfe,23,1) * 6) +

(substring(chaveacessonfe,22,1) * 7) +

(substring(chaveacessonfe,21,1) * 8) +

(substring(chaveacessonfe,20,1) * 9) +

(substring(chaveacessonfe,19,1) * 2) +

(substring(chaveacessonfe,18,1) * 3) +

(substring(chaveacessonfe,17,1) * 4) +

(substring(chaveacessonfe,16,1) * 5) +

(substring(chaveacessonfe,15,1) * 6) +

(substring(chaveacessonfe,14,1) * 7) +

(substring(chaveacessonfe,13,1) * 8) +

(substring(chaveacessonfe,12,1) * 9) +

(substring(chaveacessonfe,11,1) * 2) +

(substring(chaveacessonfe,10,1) * 3) +

(substring(chaveacessonfe,9,1) * 4) +

(substring(chaveacessonfe,8,1) * 5) +

(substring(chaveacessonfe,7,1) * 6) +

(substring(chaveacessonfe,6,1) * 7) +

(substring(chaveacessonfe,5,1) * 8) +

(substring(chaveacessonfe,4,1) * 9) +

(substring(chaveacessonfe,3,1) * 2) +

(substring(chaveacessonfe,2,1) * 3) +

(substring(chaveacessonfe,1,1) * 4) )

from

TMOV

where

CODCOLIGADA = @CODCOLIGADA and

IDMOV = @IDMOV

GROUP BY TMOV.CHAVEACESSONFE)

--VALIDAÇÃO CÁCULO MÓDULO 11

SELECT @RESTO = @TOTAL%11

SELECT @RETORNO = 11 - @RESTO

IF (@RESTO = 0 OR @RESTO = 1)

SET @RETORNO = 0

ELSE

SET @RETORNO = @RETORNO

RETURN(@RETORNO)

END

Essa acima é a function.. e esta abaixo a trigger de insert da tabela TMOV que faz a validação no momento do lançamento das notas.

Se quiserem a trigger de update é só mudar ali o tipo de insert pra update nesta trigger mesmo!

Funciona 100%!

USE [teste]

GO

/****** Object: Trigger [dbo].[Tabela_TMOV_Insert_Filial_CC] Script Date: 06/01/2012 14:17:27 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[Tabela_TMOV_Insert_Filial_CC] ON [dbo].[TMOV]

FOR INSERT As

DECLARE @CdColigada INT,

@CdFilial INT,

@CdCC VARCHAR(10),

@chaveacesso varchar(44),

@idmov INT,

@CdTmv varchar(10)

BEGIN

--Buscando dados sendo inseridos

SELECT

@CdColigada = codcoligada,

@CdFilial = codfilial,

@CdCC = codccusto,

@chaveacesso = CHAVEACESSONFE,

@idmov = IDMOV,

@CdTmv = CODTMV

FROM inserted

IF (@CdTmv like '1.2%')

BEGIN

IF DBO.VALIDA_CHAVEACESSONFE(@idmov,@CdColigada) <> substring(@chaveacesso,44,1)

Raiserror('DV DA CHAVE DE ACESSO NF-e INVÁLIDO.',11,127,@CdCC,@CdFilial);

END

END

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  60
  • Conteúdo/Dia:  0.01
  • Reputação:   3
  • Pontos/Conquistas:  388
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline
  • Idade:  50

Valeu por compartilhar o conhecimento com todos , vou testar numa base pra ver como ficou .

Obrigado .

Link para comentar
Compartilhar em outros sites

  • 1 ano depois...

  • Tópicos Que Criei:  25
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  310
  • Conteúdo/Dia:  0.05
  • Reputação:   1
  • Pontos/Conquistas:  1.796
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  49

Quem desejar segue abaixo formula de consistência para o movimento e checando seus campos se necessário.

===================valida chave==============

+++++++++++++numero nota fiscal++++++++++++++

SE SUBSTR(TABMOV('CHAVEACESSONFE','S'),26,9)=TABMOV('NUMEROMOV','N')

ENTAO 1

SENAO 0

FIMSE

++++++++++++++++++++++++++++++++++CNPJ+++++++++++++++++++++++++++++++++++++++++

SE EXECSQL('GEC44')=1

ENTAO SE RESULTSQL('GEC44','CGCCFO')=SUBSTR(TABMOV('CHAVEACESSONFE','S'),7,14)

ENTAO 1

SENAO 0

FIMSE

SENAO 0

FIMSE

consulta relacionada

SELECT REPLACE(REPLACE(REPLACE(CGCCFO,'.'),'/'),'-') AS CGCCFO FROM RM.FCFO

WHERE CODCFO=:FRM_GEC04

+++++++++++++++++++++Data de Emissao da NOTA++++++++++++++++++++++++++++++++++++

DECL M,A;

SETVAR(M,MESDT(TABMOV('DATAEMISSAO','D')));

SETVAR(A,SUBSTR(ANODT(TABMOV('DATAEMISSAO','D')),3,2));

SE VAL(SUBSTR(TABMOV('CHAVEACESSONFE','S'),3,2))=A E VAL(SUBSTR(TABMOV('CHAVEACESSONFE','S'),5,2))=M

ENTAO 1

SENAO 0

FIMSE

+++++++++++++++++++++++UF da Nota++++++++++++++++++++++++++++++++++++++++++++++++

/*Valida UF do Cliente*/

DECL

ESTADORO,ESTADOAC,ESTADOAM,ESTADORR,ESTADOPA,ESTADOAP,ESTADOTO,ESTADOMA,ESTADOPI,ESTADOCE,ESTADORN,ESTADOPB,ESTADOPE,ESTADOAL,ESTADOSE,

ESTADOBA,ESTADOMG,ESTADOES,ESTADORJ,ESTADOSP,ESTADOPR,ESTADOSC,ESTADORS,ESTADOMS,ESTADOMT,ESTADOGO,ESTADODF;

SETVAR(ESTADORO,11);SETVAR(ESTADOAC,12);SETVAR(ESTADOAM,13);SETVAR(ESTADORR,14);SETVAR(ESTADOPA,15);SETVAR(ESTADOAP,16);

SETVAR(ESTADOTO,17);SETVAR(ESTADOMA,21);SETVAR(ESTADOPI,22);SETVAR(ESTADOCE,23);SETVAR(ESTADORN,24);SETVAR(ESTADOPB,25);

SETVAR(ESTADOPE,26);SETVAR(ESTADOAL,27);SETVAR(ESTADOSE,28);SETVAR(ESTADOBA,29);SETVAR(ESTADOMG,31);SETVAR(ESTADOES,32);

SETVAR(ESTADORJ,33);SETVAR(ESTADOSP,35);SETVAR(ESTADOPR,41);SETVAR(ESTADOSC,42);SETVAR(ESTADORS,43);SETVAR(ESTADOMS,50);

SETVAR(ESTADOMT,51);SETVAR(ESTADOGO,52);SETVAR(ESTADODF,53);

SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='RO'

ENTAO SE ESTADORO=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='AC'

ENTAO SE ESTADOAC=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='AM'

ENTAO SE ESTADOAM=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='RR'

ENTAO SE ESTADORR=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='PA'

ENTAO SE ESTADOPA=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='AP'

ENTAO SE ESTADOAP=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='TO'

ENTAO SE ESTADOTO=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='MA'

ENTAO SE ESTADOMA=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='PI'

ENTAO SE ESTADOPI=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='CE'

ENTAO SE ESTADOCE=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='RN'

ENTAO SE ESTADORN=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='PB'

ENTAO SE ESTADOPB=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='PE'

ENTAO SE ESTADOPE=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='AL'

ENTAO SE ESTADOAL=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='SE'

ENTAO SE ESTADOSE=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='BA'

ENTAO SE ESTADOBA=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='MG'

ENTAO SE ESTADOMG=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='ES'

ENTAO SE ESTADOES=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='RJ'

ENTAO SE ESTADORJ=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='SP'

ENTAO SE ESTADOSP=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='PR'

ENTAO SE ESTADOPR=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='SC'

ENTAO SE ESTADOSC=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='RS'

ENTAO SE ESTADORS=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='MS'

ENTAO SE ESTADOMS=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='GO'

ENTAO SE ESTADOGO=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO SE TABCLIFOR('CODETD','S',TABMOV ('CODCOLCFO' , 'V'),TABMOV('CODCFO','S'))='DF'

ENTAO SE ESTADODF=SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,2)

ENTAO 1

SENAO 0

FIMSE

SENAO 0

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

+++++++++++++++++++++++++++ VALIDANDO O DV E OS CAMPOS DE COMPOSIÇÃO DA CHAVE+++++++++++++++++++++++++++++++++++++++++

/*DECLARANDO VARIAVEIS*/

DECL PS1,PS2,PS3,PS4,PS5,PS6,PS7,PS8,PS9,PS10,PS11,PS12,PS13,PS14,PS15,PS16,PS17,PS18,PS19,PS20,PS21,PS22,

PS23,PS24,PS25,PS26,PS27,PS28,PS29,PS30,PS31,PS32,PS33,PS34,PS35,PS36,PS37,PS38,PS39,PS40,PS41,PS42,PS43,TT,TT1,TT2,TT3,TT4,DV;

/*CASO O TIPO DE DOCUMENTO FOR 024 OU 026 E A CHAVE DE ACESSO NF-E FOR NULA SE CALCULA O DV(DIGITO VERIFICADOR) */

SE TABMOV('CODTDO','S')='024' OU TABMOV('CODTDO','S')='026' E TABMOV('CHAVEACESSONFE','S')<>""

ENTAO

SE TABMOV('CHAVEACESSONFE','S')<>""

ENTAO SETVAR(PS1,SUBSTR(TABMOV('CHAVEACESSONFE','S'),1,1)*4);

SETVAR(PS2,SUBSTR(TABMOV('CHAVEACESSONFE','S'),2,1)*3);

SETVAR(PS3,SUBSTR(TABMOV('CHAVEACESSONFE','S'),3,1)*2);

SETVAR(PS4,SUBSTR(TABMOV('CHAVEACESSONFE','S'),4,1)*9);

SETVAR(PS5,SUBSTR(TABMOV('CHAVEACESSONFE','S'),5,1)*8);

SETVAR(PS6,SUBSTR(TABMOV('CHAVEACESSONFE','S'),6,1)*7);

SETVAR(PS7,SUBSTR(TABMOV('CHAVEACESSONFE','S'),7,1)*6);

SETVAR(PS8,SUBSTR(TABMOV('CHAVEACESSONFE','S'),8,1)*5);

SETVAR(PS9,SUBSTR(TABMOV('CHAVEACESSONFE','S'),9,1)*4);

SETVAR(PS10,SUBSTR(TABMOV('CHAVEACESSONFE','S'),10,1)*3);

SETVAR(PS11,SUBSTR(TABMOV('CHAVEACESSONFE','S'),11,1)*2);

SETVAR(PS12,SUBSTR(TABMOV('CHAVEACESSONFE','S'),12,1)*9);

SETVAR(PS13,SUBSTR(TABMOV('CHAVEACESSONFE','S'),13,1)*8);

SETVAR(PS14,SUBSTR(TABMOV('CHAVEACESSONFE','S'),14,1)*7);

SETVAR(PS15,SUBSTR(TABMOV('CHAVEACESSONFE','S'),15,1)*6);

SETVAR(PS16,SUBSTR(TABMOV('CHAVEACESSONFE','S'),16,1)*5);

SETVAR(PS17,SUBSTR(TABMOV('CHAVEACESSONFE','S'),17,1)*4);

SETVAR(PS18,SUBSTR(TABMOV('CHAVEACESSONFE','S'),18,1)*3);

SETVAR(PS19,SUBSTR(TABMOV('CHAVEACESSONFE','S'),19,1)*2);

SETVAR(PS20,SUBSTR(TABMOV('CHAVEACESSONFE','S'),20,1)*9);

SETVAR(PS21,SUBSTR(TABMOV('CHAVEACESSONFE','S'),21,1)*8);

SETVAR(PS22,SUBSTR(TABMOV('CHAVEACESSONFE','S'),22,1)*7);

SETVAR(PS23,SUBSTR(TABMOV('CHAVEACESSONFE','S'),23,1)*6);

SETVAR(PS24,SUBSTR(TABMOV('CHAVEACESSONFE','S'),24,1)*5);

SETVAR(PS25,SUBSTR(TABMOV('CHAVEACESSONFE','S'),25,1)*4);

SETVAR(PS26,SUBSTR(TABMOV('CHAVEACESSONFE','S'),26,1)*3);

SETVAR(PS27,SUBSTR(TABMOV('CHAVEACESSONFE','S'),27,1)*2);

SETVAR(PS28,SUBSTR(TABMOV('CHAVEACESSONFE','S'),28,1)*9);

SETVAR(PS29,SUBSTR(TABMOV('CHAVEACESSONFE','S'),29,1)*8);

SETVAR(PS30,SUBSTR(TABMOV('CHAVEACESSONFE','S'),30,1)*7);

SETVAR(PS31,SUBSTR(TABMOV('CHAVEACESSONFE','S'),31,1)*6);

SETVAR(PS32,SUBSTR(TABMOV('CHAVEACESSONFE','S'),32,1)*5);

SETVAR(PS33,SUBSTR(TABMOV('CHAVEACESSONFE','S'),33,1)*4);

SETVAR(PS34,SUBSTR(TABMOV('CHAVEACESSONFE','S'),34,1)*3);

SETVAR(PS35,SUBSTR(TABMOV('CHAVEACESSONFE','S'),35,1)*2);

SETVAR(PS36,SUBSTR(TABMOV('CHAVEACESSONFE','S'),36,1)*9);

SETVAR(PS37,SUBSTR(TABMOV('CHAVEACESSONFE','S'),37,1)*8);

SETVAR(PS38,SUBSTR(TABMOV('CHAVEACESSONFE','S'),38,1)*7);

SETVAR(PS39,SUBSTR(TABMOV('CHAVEACESSONFE','S'),39,1)*6);

SETVAR(PS40,SUBSTR(TABMOV('CHAVEACESSONFE','S'),40,1)*5);

SETVAR(PS41,SUBSTR(TABMOV('CHAVEACESSONFE','S'),41,1)*4);

SETVAR(PS42,SUBSTR(TABMOV('CHAVEACESSONFE','S'),42,1)*3);

SETVAR(PS43,SUBSTR(TABMOV('CHAVEACESSONFE','S'),43,1)*2);

SETVAR (TT,PS1+PS2+PS3+PS4+PS5+PS6+PS7+PS8+PS9+PS10+PS11+PS12+PS13+PS14+PS15+PS16+PS17+PS18+PS19+PS20+PS21+PS22+PS23+PS24

+PS25+PS26+PS27+PS28+PS29+PS30+PS31+PS32+PS33+PS34+PS35+PS36+PS37+PS38+PS39+PS40+PS41+PS42+PS43);

SETVAR(TT1,TT/11);

SETVAR(TT2,TRUNCVALOR(TT1,0));

SETVAR(TT3,TT2*11);

SETVAR(TT4,TT-TT3);

SETVAR(DV,11-TT4);

SENAO SETVAR(DV,0)

FIMSE

SENAO SETVAR(DV,0)

FIMSE;

SE FRAC(TT/11)=0 OU FRAC(TT/11)=1

ENTAO SETVAR(DV,0)

SENAO SETVAR(TT1,TT/11);

SETVAR(TT2,TRUNCVALOR(TT1,0));

SETVAR(TT3,TT2*11);

SETVAR(TT4,TT-TT3);

SETVAR(DV,11-TT4);

FIMSE;

/*CHECAGEM DA VALIDAÇÃO*/

SE TABMOV('CODTDO','S')='024' OU TABMOV('CODTDO','S')='026'

ENTAO SE TABMOV('CHAVEACESSONFE','S')<>""

ENTAO SE SUBSTR(TABMOV('CHAVEACESSONFE','S'),44,1)=DV

ENTAO SE FOR('GEC02')=1 E FOR('GEC03')=1 E FOR('GEC05')=1 E FOR('GEC06')=1

ENTAO 1

SENAO 0

FIMSE

SENAO 0

FIMSE

SENAO 0

FIMSE

SENAO 1

FIMSE

  • Gostei 1
Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

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

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.