× Linguagem de Programação ADVPL

Perguntas Lançamento automatico de NF`s de entrada.

Mais
10 anos 6 meses atrás #22700 por rafhapalles
Ola, pessoal!
Preciso de ajuda com uma rotina que funcionava perfeitamente, mas depois de alguma atualização da TOTVS parou de funcionar.
Essa rotina inclui a nf de entrada fazendo o uso do MSExecAuto({|x,y| mata103(x,y)},aCabec,aItens),mas agora na hora de validar a chave da nfe junto ao Sefaz retorna o erro falando que a chave deve conter 44 digitos
Obs: A chave contem 44 digitos.

Segue trecho do código.

// Chama a rotina de leitura do XML que retorna o vetor de dados úteis ao processo
aDados := U_PARXML(cPasta, cArquivo) // aDados := U_PARXML(cPasta, cArquivo, lProcessoNormal)


// Montagem do cabeçalho que é enviado para o msexecauto
aCabAuto:= { {"F1_FILIAL" ,SM0->m0_codfil,NIL},;
{"F1_TIPO" ,"N" ,NIL},;
{"F1_FORMUL" ,"N" ,NIL},;
{"F1_DOC" ,aCabec[3] ,NIL},;
{"F1_SERIE" ,aCabec[4] ,NIL},;
{"F1_EMISSAO" ,aCabec[5] ,NIL},;
{"F1_FORNECE" ,aCabec[1] ,NIL},;
{"F1_LOJA" ,aCabec[2] ,NIL},;
{"F1_ESPECIE" ,"CTE" ,NIL},;
{"F1_EST" ,aCabec[6] ,NIL},;
{"F1_CHVNFE" ,aCabec[8] ,NIL},; (35131103972433001330550990000003261001107113)
{"F1_COND" ,cPGTO_ ,NIL},;
{"F1_PBRUTO" ,aCabec[10] ,NIL},;
{"F1_VOLUME1" ,aCabec[12] ,NIL},;
{"F1_ESPECI1" ,aCabec[15] ,NIL},;
{"F1_MENNOTA" ,aCabec[16] ,NIL} }

aIteAuto := {}
aLinha := {}

Aadd( aLinha, { "D1_COD" , cCod_ , NIL } )
Aadd( aLinha, { "D1_TES" , cTes_ , NIL } )
Aadd( aLinha, { "D1_LOCAL" , "01" , NIL } )
Aadd( aLinha, { "D1_QUANT" , 1 , NIL } )
Aadd( aLinha, { "D1_VUNIT" , aCabec[13] , NIL } )
Aadd( aLinha, { "D1_TOTAL" , aCabec[13] , NIL } )
Aadd( aLinha, { "D1_VALICM" , aCabec[9] , NIL } )
Aadd( aLinha, { "D1_PICM" , aCabec[11] , NIL } )
Aadd( aLinha, { "D1_BASEICM", aCabec[14] , NIL } )

// Insere linha no vetor que será enviado para o mse+xecauto
Aadd( aIteAuto, aClone( aLinha ) )

MsAguarde( { || MSExecAuto({|x,y,z| mata103(x,y,z)},aCabAuto,aIteAuto,3) },;
"Aguarde",;
"Importando XML CT-e... Documento: " + aCabec[ 3 ] + "\" + aCabec[ 4 ] )
Endif

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 6 meses atrás #22701 por lalberto
Rafhael tenta colocar este comando antes do execauto

RegToMemory("SF1",.t.) ele irá carregar as variáveis de memória da SF1, senão funcionar tenta desligar o parametro de checagem da chave da nfe, se passar vai precisar a cada importação desliga-lo e liga-lo novamente.

Espero que ajude.

Abraços.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 6 meses atrás - 10 anos 6 meses atrás #22704 por rafhapalles
Com o RegToMemory("SF1",.t.) o problema persiste, agora a solução de ligar e desligar a verificação pode trazer problemas com usuarios que estejam realizando outra operação que precise validar a chave simultaneamente com esta que não precisa.

Mas agradeço a ajuda.
Ultima edição: 10 anos 6 meses atrás por rafhapalles.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22841 por ODIEGO
Boa noite Rafael,

A sua rotina valida a chave digitada direto no sefaz ???

poderia disponibilizar o fonte no site ou por email ?

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22845 por THALESCOTR
Bom dia Rafael, a ideia do Luiz está correta.
Desligue o parâmetro a cada nota importada, após volte o parâmetro.

Ex:

// Montagem do cabeçalho que é enviado para o msexecauto
aCabAuto:= { {"F1_FILIAL" ,SM0->m0_codfil,NIL},;
{"F1_TIPO" ,"N" ,NIL},;
{"F1_FORMUL" ,"N" ,NIL},;
{"F1_DOC" ,aCabec[3] ,NIL},;
{"F1_SERIE" ,aCabec[4] ,NIL},;
{"F1_EMISSAO" ,aCabec[5] ,NIL},;
{"F1_FORNECE" ,aCabec[1] ,NIL},;
{"F1_LOJA" ,aCabec[2] ,NIL},;
{"F1_ESPECIE" ,"CTE" ,NIL},;
{"F1_EST" ,aCabec[6] ,NIL},;
{"F1_CHVNFE" ,aCabec[8] ,NIL},; (35131103972433001330550990000003261001107113)
{"F1_COND" ,cPGTO_ ,NIL},;
{"F1_PBRUTO" ,aCabec[10] ,NIL},;
{"F1_VOLUME1" ,aCabec[12] ,NIL},;
{"F1_ESPECI1" ,aCabec[15] ,NIL},;
{"F1_MENNOTA" ,aCabec[16] ,NIL} }

aIteAuto := {}
aLinha := {}

Aadd( aLinha, { "D1_COD" , cCod_ , NIL } )
Aadd( aLinha, { "D1_TES" , cTes_ , NIL } )
Aadd( aLinha, { "D1_LOCAL" , "01" , NIL } )
Aadd( aLinha, { "D1_QUANT" , 1 , NIL } )
Aadd( aLinha, { "D1_VUNIT" , aCabec[13] , NIL } )
Aadd( aLinha, { "D1_TOTAL" , aCabec[13] , NIL } )
Aadd( aLinha, { "D1_VALICM" , aCabec[9] , NIL } )
Aadd( aLinha, { "D1_PICM" , aCabec[11] , NIL } )
Aadd( aLinha, { "D1_BASEICM", aCabec[14] , NIL } )

// Insere linha no vetor que será enviado para o mse+xecauto
Aadd( aIteAuto, aClone( aLinha ) )

PUTMV("MV_CHVNFE",.F.) //Desativa a verificação

MsAguarde( { || MSExecAuto({|x,y,z| mata103(x,y,z)},aCabAuto,aIteAuto,3) },;
"Aguarde",;
"Importando XML CT-e... Documento: " + aCabec[ 3 ] + "\" + aCabec[ 4 ] )
Endif

PUTMV("MV_CHVNFE",.T.) //Volta o parâmetro após o execauto, não impactando nos demais usuários.


Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #22846 por rafhapalles
Bom dia Diego, essa rotina na verdade executa a Mata103 em modo de inclusão, e a propria Mata103 através do TSS faz a validação junto ao SEFAZ.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.105 segundos
Joomla templates by a4joomla