ACBR - Autorização
Moderador: Moderadores
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
ACBR - Autorização
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
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
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
ACBR - Autorização
Experimente atrasar alguns millisec´s entre enviar o xml e receber para impressão. Outra dica interessante é realizar uma consulta antes da impressão.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
ACBR - Autorização
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.
Código: Selecionar todos
...
criação
envio
consulta
impressão
...
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
ACBR - Autorização
Ok, Obrigado.
Vou fazer a consulta apos o envio, caso não obtenha a autorização na resposta do envio.
Laudelino
Vou fazer a consulta apos o envio, caso não obtenha a autorização na resposta do envio.
Laudelino
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
ACBR - Autorização
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
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
"Eu e minha casa servimos ao Senhor e você
"
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
ACBR - Autorização
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
É este o problema que está acontecendo meu sistema. Vou ter que verificar, pois o envio de uma consulta somente pode nao resolver.
Laudelino
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
ACBR - Autorização
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
Rubens
"Eu e minha casa servimos ao Senhor e você
"
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
-
Kiko Fernandes
- Usuário Nível 3

- Mensagens: 213
- Registrado em: 24 Out 2008 22:41
- Localização: Foz do Iguaçu
ACBR - Autorização
Rubes o comando NFe.ConsultarNFe(cArqXML) pode ser usado de 2 formas.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?
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?
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
ACBR - Autorização
Kiko olha como eu faço :
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
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
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
"Eu e minha casa servimos ao Senhor e você
"
-
Kiko Fernandes
- Usuário Nível 3

- Mensagens: 213
- Registrado em: 24 Out 2008 22:41
- Localização: Foz do Iguaçu
ACBR - Autorização
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?
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?
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
ACBR - Autorização
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
Rubens
"Eu e minha casa servimos ao Senhor e você
"
-
Kiko Fernandes
- Usuário Nível 3

- Mensagens: 213
- Registrado em: 24 Out 2008 22:41
- Localização: Foz do Iguaçu
ACBR - Autorização
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.
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.
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
ACBR - Autorização
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
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