Página 1 de 2
ACBR - Autorização
Enviado: 31 Mai 2011 13:25
por Laudelino Scarmagnani
Olá, pessoal.
Estou com o seguinte problema.
Envio a NFe pelo ACBrNFeMonitor. Às vezes, imprime como não autorizada.
tenho que consultar pelo ACBr para então imprimir pelo ACBr. Caso tente a impressão, sem a consulta, imprime como não autorizada.
Neste caso, não tenho o protocolo de autorização no meu sistema.
Estou fazendo algo errado, mas não consigo encontrar onde.
Laudelino
ACBR - Autorização
Enviado: 31 Mai 2011 16:37
por alaminojunior
Experimente atrasar alguns millisec´s entre enviar o xml e receber para impressão. Outra dica interessante é realizar uma consulta antes da impressão.
ACBR - Autorização
Enviado: 31 Mai 2011 17:00
por Laudelino Scarmagnani
Alamino, faço isso no ACBrNFeMonitor?
Laudelino
ACBR - Autorização
Enviado: 31 Mai 2011 17:14
por alaminojunior
Eu costumo fazer uma consulta antes da impressão da nota.
Depois de enviada, pode acontecer do xml chegar sem o protocolo e fazendo uma nova consulta, o mesmo é devolvido já com o protocolo, ou seja: autorizada.
ACBR - Autorização
Enviado: 31 Mai 2011 17:28
por Laudelino Scarmagnani
Ok, Obrigado.
Vou fazer a consulta apos o envio, caso não obtenha a autorização na resposta do envio.
Laudelino
ACBR - Autorização
Enviado: 01 Jun 2011 09:47
por rubens
Olá..
Comigo aqui tá acontecendo o seguinte: Quando a internet está muito lenta, aparece a mensagem de serviço indisponivel pelo acbr, mas a nota foi enviada. Daí deixei uma opção de consulta no programa... Só que tem que solicitar a consulta umas 4 ou 5 vezes para atualizar o xml. Eu tenho uma rotina de verificação controlada pela CStat="100" se foi a nota foi autorizada daí atualizo os dados no meu banco de dados... Pelo que sei do acbr quando voce consulta uma nota ele atualiza automaticamente o xml... Só que daí manda imprimir aparece a tarja sem autorização de uso. Só depois de consultar umas 5 vezes ou mais é que atualiza para imprimir sem a tarja... Alguem tem algum outro tipo de controle ou confirmação a respeito disso?
Rubens
ACBR - Autorização
Enviado: 01 Jun 2011 10:17
por Laudelino Scarmagnani
Rubens, bom dia!
É este o problema que está acontecendo meu sistema. Vou ter que verificar, pois o envio de uma consulta somente pode nao resolver.
Laudelino
ACBR - Autorização
Enviado: 01 Jun 2011 10:24
por rubens
Já percebi que se entra no acbr e manda consultar pelo acbr atualiza na hora.... mas se manda consultar via txt, tem que fazer umas 05 tentativas ou mais para atualizar...
Rubens
ACBR - Autorização
Enviado: 01 Jun 2011 11:31
por Laudelino Scarmagnani
E isso passou a ocorrer a partir da Versão 2 da NFe.
Laudelino
ACBR - Autorização
Enviado: 01 Jun 2011 18:56
por Kiko Fernandes
Pelo que sei do acbr quando voce consulta uma nota ele atualiza automaticamente o xml... Só que daí manda imprimir aparece a tarja sem autorização de uso. Só depois de consultar umas 5 vezes ou mais é que atualiza para imprimir sem a tarja... Alguem tem algum outro tipo de controle ou confirmação a respeito disso?
Rubes o comando
NFe.ConsultarNFe(cArqXML) pode ser usado de 2 formas.
1 - o parâmetro cArqXml ser a chave da nota. (Esta não atualiza o XML)
2 - o parâmetro cArqXml ser o arquivo xml. (Esta o retorno atualiza o XML)
Você tem o conhecimento deste procedimento?
ACBR - Autorização
Enviado: 01 Jun 2011 22:18
por rubens
Kiko olha como eu faço :
Código: Selecionar todos
/////////////////////////////////////////////////////////////////////////////
function ConsultarNFe( cNFe )
LOCAL cTELA := SAVESCREEN(0,0,24,79)
cCmd:= iif(cNFe=nil,"",cNFe)
Comando( "NFE.ConsultarNFe", ["]+cCmd+["] )
Tmp(2)
cretorno := PEGRETNFE(.T.)
nLINHAS := MLCOUNT( cRETORNO )
aLINHA := {}
lAUTORIZA := .F.
cNPROT := ""
cDIGVAL := ""
cDHRECBTO := ""
cCSTAT := ""
cHORA := ""
FOR X = 1 TO nLINHAS
AADD( aLINHA, MEMOLINE(cRETORNO,79,X) )
DO CASE
CASE AT("CStat",aLINHA[X])>0
// VERIFICA SE TEM UMA LINHA STATUS
cCSTAT := SubStr(Alltrim(aLinha[X]),At("=",aLinha[X])+1,Len(aLinha[X]))
// SE cCSTAT = 100 - AUTORIZADO O USO DA NFE IF cCSTAT="100"
lAUTORIZA := .T.
ENDIF
CASE AT("NProt",aLINHA[X])>0
cNPROT := SubStr(Alltrim(aLinha[X]),At("=",aLinha[X])+1,Len(aLinha[X]))
CASE AT("DigVal",aLINHA[X])>0
cDIGVAL:= SubStr(Alltrim(aLinha[X]),At("=",aLinha[X])+1,Len(aLinha[X]))
CASE AT("DhRecbto",aLINHA[X])>0
cDHRECBTO := SubStr(Alltrim(aLinha[X]),10,10)
cHORA := SUBSTR(ALLTRIM(aLINHA[X]),21,8)
ENDCASE
NEXT
// Se a nota foi autorizada grava os dados do retorno
IF lAUTORIZA
WHILE(.T.)
IF RLOCK()
_FIELD->NF->NPROT := cNPROT
_FIELD->NF->DIGVAL := cDIGVAL
_FIELD->NF->DATAENVIO:= CTOD(LEFT( cDHRECBTO,10) )
_FIELD->NF->CSTAT := cCSTAT
_FIELD->NF->HORA := cHORA
UNLOCK
EXIT
ENDIF
ENDDO
ENDIF
RESTSCREEN( 0,0,24,79, cTELA )
return cretorno
Depois disso o cliente vai na opção de imprimir o danfe... então tem tempo de sobra para atualizar o XML né... mas não atualiza... só depois de executar esta função umas 05 vezes é que atualiza o XML... Eu não tenho como saber se atualizou ou não... somente mandando imprimir... Aí o cliente chia...
Precisa ter uma informação no retorno falando se o xml foi atualizado ou não...
Agora se vou no monitor e mando consultar pelo monitor, quando mando imprimir tá atualizado blz, de primeira...
Mas é isso que tento evitar né.. o clienter abrir o monitor e consultar a nota... gostaria de fazer tudo automatico de dentro do programa.
Rubens
ACBR - Autorização
Enviado: 02 Jun 2011 07:08
por Kiko Fernandes
Entendi Rubens, mas neste parâmetro (cNFe), você passa somente o número da chave ou você informa também o arquivo?
O que me referi é que você tem duas opções de consulta, como exemplo:
Usando a sua função:
Ex.: 1
ConsultarNfe( "41110400061100000128550010000001501000001506" ) Desta maneira foi passado apenas a chave da NFe. Nos testes que eu fiz não atualiza o arquivo XML.
Ex.: 2
ConsultarNfe("c:\seupath\41110400061100000128550010000001501000001506-nfe.xml") Desta maneira foi passado o arquivo xml e este deve atualizar o arquivo XML quando tem o protocolo de autorização.
Você também está informando conforme o exemplo 2?
ACBR - Autorização
Enviado: 02 Jun 2011 08:49
por rubens
Eu guardo o nome do arquivo num dbf, daí quando manda consultar, imprimir ou cancelar.... sempre busca o esse nome do arquivo com o parh... está indo o arquivo do xml mesmo e não somente a chave...
Rubens
ACBR - Autorização
Enviado: 02 Jun 2011 09:12
por Kiko Fernandes
ok. Eu aguardo 3 segundos após enviar a consulta para então buscar o retorno.
Vi a tua rotina, seria aquele "tmp(2)" algo como aguardar 2 segundos?
Se for, vc está aguardando também, ai não sei te dizer, você poderia fazer uma experiência aumentando este tempo de espera.
O que posso te afirmar é que ainda não tive este problema, quando acontece isto ele atualiza de primeira também, igual como se estivesse executando direto no monitor.
ACBR - Autorização
Enviado: 02 Jun 2011 11:21
por Laudelino Scarmagnani
Kiko, bom dia.
Não sei se podes passar, como seria a função PEGRETNFE(.T.)? É que eu pego o arquivo texto retornado pelo ACBr e gravo em um DBF, ai leio linha a linha. Você faz isso diretamente com o arquivo texto.
Laudelino