NF_e - Inicio
Moderador: Moderadores
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Boa noite, pessoal!
Desculpe estar insistindo no assunto, mas é que estou meio devagar em clipper/xHarbour. É linguagem nova para mim.
O exemplo do rochina ajudou a entender a sequencia dos comando e ter uma idéia de como proceder. Fiz conversao para o xHarbour, porem não consegui compilar. Ele fez para FiveWin e tem umas funções que são diferentes no xHarbour (GetInstance,MsgYesNo,...).
Alguém sabe se há algo parecido no forum, para xHarbour?
Fiz um comando para testar a comunicação com o ACBrNfeMonitor, porém da a mensagem que não há certificado cadastrado. Só conseguirei testar quando tiver um certificado?
O comando que enviei ao ENTNFE.TXT foi este e, aparendemente funcionou, apesar da mensagem, pois o arquivo entnfe.txt foi removido.
Nfe_COMANDO := FCreate("NFE_ENVRESP\ENTNFE.TXT")
FWRITE (NFE_COMANDO,"NFE.CriarNfe(\nfe\nfe.txt,[1]"+ chr(13)+chr(10))
FWRITE(nFE_comando,",1)")
FCLOSE(Nfe_comando)
Uma dúvida quanto ao programa da SEFAZ, ele interage com o arquivo texto, ou o arquivo texto tem que ser importado nota a nota? No caso de gerar o arquivo texto, ele se vira em gerar o arquivo "xml", retornando-o para o sistema?
Laudelino
Desculpe estar insistindo no assunto, mas é que estou meio devagar em clipper/xHarbour. É linguagem nova para mim.
O exemplo do rochina ajudou a entender a sequencia dos comando e ter uma idéia de como proceder. Fiz conversao para o xHarbour, porem não consegui compilar. Ele fez para FiveWin e tem umas funções que são diferentes no xHarbour (GetInstance,MsgYesNo,...).
Alguém sabe se há algo parecido no forum, para xHarbour?
Fiz um comando para testar a comunicação com o ACBrNfeMonitor, porém da a mensagem que não há certificado cadastrado. Só conseguirei testar quando tiver um certificado?
O comando que enviei ao ENTNFE.TXT foi este e, aparendemente funcionou, apesar da mensagem, pois o arquivo entnfe.txt foi removido.
Nfe_COMANDO := FCreate("NFE_ENVRESP\ENTNFE.TXT")
FWRITE (NFE_COMANDO,"NFE.CriarNfe(\nfe\nfe.txt,[1]"+ chr(13)+chr(10))
FWRITE(nFE_comando,",1)")
FCLOSE(Nfe_comando)
Uma dúvida quanto ao programa da SEFAZ, ele interage com o arquivo texto, ou o arquivo texto tem que ser importado nota a nota? No caso de gerar o arquivo texto, ele se vira em gerar o arquivo "xml", retornando-o para o sistema?
Laudelino
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: NF_e - Inicio
Boa Noite..
Sim, realmente é necessário um certificado digital para realizar os testes...
O arquivo ENTNFE é apagado pelo ACBR se eu não me engano..
Sim, realmente é necessário um certificado digital para realizar os testes...
O arquivo ENTNFE é apagado pelo ACBR se eu não me engano..
Essa eu vou deixar para quem usar esse programaquanto ao programa da SEFAZ, ele interage com o arquivo texto, ou o arquivo texto tem que ser importado nota a nota? No caso de gerar o arquivo texto, ele se vira em gerar o arquivo "xml", retornando-o para o sistema?
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Denovo,
Alguém teria um exemplo de codigo para leitura de arquivo texto, com registro de tamanho variável?
Andei pesquisando, FOpen, Fseek, FClose, mas, para sair da "gramática para a prática", tá difícil.
Laudelino
Alguém teria um exemplo de codigo para leitura de arquivo texto, com registro de tamanho variável?
Andei pesquisando, FOpen, Fseek, FClose, mas, para sair da "gramática para a prática", tá difícil.
Laudelino
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: NF_e - Inicio
Caro colega..
A Respeito de leitura de arquivo texto, dê uma olhada no tópico https://pctoledo.org/forum/viewtopic.php?t=1970
Eu utilizei a função postada pelo nosso querido amigo Maligno, mas tive que fazer algumas mudanças para armazenar as linhas em array e fazer a busca com o ASCAN, tornando o fseek desnecessário.
Essa função já faz a abertura do arquivo, e a leitura das linhas do arquivo..
Existem outros exemplos nesse tópico caso você queira implementar outra solução.
Se precisar de mais algo... é só chamar
A Respeito de leitura de arquivo texto, dê uma olhada no tópico https://pctoledo.org/forum/viewtopic.php?t=1970
Eu utilizei a função postada pelo nosso querido amigo Maligno, mas tive que fazer algumas mudanças para armazenar as linhas em array e fazer a busca com o ASCAN, tornando o fseek desnecessário.
Essa função já faz a abertura do arquivo, e a leitura das linhas do arquivo..
Existem outros exemplos nesse tópico caso você queira implementar outra solução.
Se precisar de mais algo... é só chamar
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Obrigado, Ana.
Tentei fazer a rotina funcionar, mas não consegui
fiz os comandos
leitura("NFE_ENVRESP\SAINFE.TXT")
e
no funnfe.prg
#define _kSIZE 2048
#define _kEOL Chr(13)+Chr(10)
//------------------------------------------------------------
function Leitura(cFileN)
local nByts // bytes lidos na iteração
local nLins := 0 // quantidade de linhas
local cBuff := Space(_kSIZE) // buffer de armazenamento
local cRest := "" // resto da leitura
local cFileH := FOpen(cFileN) = -1 // alça do arquivo aberto
*
*if nFileH = -1
// Erro na abertura do arquivo! Trate o erro à sua maneira
* return .F.
*end
*
while (nByts := FRead(cFileH,@cBuff,_kSIZE)) > 0 .or. !Empty(cRest)
cBuff := RTrim(cBuff)
cBuff := cRest+cBuff
cBuff += if(nByts=0 .and. Right(cBuff,2) != _kEOL, _kEOL, "")
//
// Individualização da linha através do par CR/LF (_kEOL)
while (i := At(_kEOL,cBuff)) > 0
// A linha já individualizada, sem _kEOL
cLine := Left(cBuff,i-1)
@24,05 say 'Linha cLine:' + cline
inkey(0)
// Ajuste do buffer, descartando o _kEOL
cBuff := SubStr(cBuff,i+2)
@24,05 say 'Linha cBuff:' + cBuff
inkey(0)
// Contador de linhas, caso precise
nLins ++
//
//
// Neste ponto você poderá fazer sua pesquisa
// dentro da linha, usando as funções básicas
// do Clipper.
//
//
end
// Pode sobrar algo após o último _kEOL
cRest := cBuff
// Reset do buffer para nova leitura
cBuff := Space(_kSIZE)
end
O arquivo sainfe.txt existe, porem não entrou no loop para dar a mensagem. O arquivo sainfe.txt tem tres linhas e preciso que me retorne as tres linhas.
a linha "if nFileH = -1" retorna como variável nao existe.
Laudelino
Tentei fazer a rotina funcionar, mas não consegui
fiz os comandos
leitura("NFE_ENVRESP\SAINFE.TXT")
e
no funnfe.prg
#define _kSIZE 2048
#define _kEOL Chr(13)+Chr(10)
//------------------------------------------------------------
function Leitura(cFileN)
local nByts // bytes lidos na iteração
local nLins := 0 // quantidade de linhas
local cBuff := Space(_kSIZE) // buffer de armazenamento
local cRest := "" // resto da leitura
local cFileH := FOpen(cFileN) = -1 // alça do arquivo aberto
*
*if nFileH = -1
// Erro na abertura do arquivo! Trate o erro à sua maneira
* return .F.
*end
*
while (nByts := FRead(cFileH,@cBuff,_kSIZE)) > 0 .or. !Empty(cRest)
cBuff := RTrim(cBuff)
cBuff := cRest+cBuff
cBuff += if(nByts=0 .and. Right(cBuff,2) != _kEOL, _kEOL, "")
//
// Individualização da linha através do par CR/LF (_kEOL)
while (i := At(_kEOL,cBuff)) > 0
// A linha já individualizada, sem _kEOL
cLine := Left(cBuff,i-1)
@24,05 say 'Linha cLine:' + cline
inkey(0)
// Ajuste do buffer, descartando o _kEOL
cBuff := SubStr(cBuff,i+2)
@24,05 say 'Linha cBuff:' + cBuff
inkey(0)
// Contador de linhas, caso precise
nLins ++
//
//
// Neste ponto você poderá fazer sua pesquisa
// dentro da linha, usando as funções básicas
// do Clipper.
//
//
end
// Pode sobrar algo após o último _kEOL
cRest := cBuff
// Reset do buffer para nova leitura
cBuff := Space(_kSIZE)
end
O arquivo sainfe.txt existe, porem não entrou no loop para dar a mensagem. O arquivo sainfe.txt tem tres linhas e preciso que me retorne as tres linhas.
a linha "if nFileH = -1" retorna como variável nao existe.
Laudelino
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Sobre ACBrNfeMonitor, o comando NFE.EnviarNfe, o campo "cLote", o que vai neste campo? Alguem teria um exemplo do comando completo, em clipper ou xharbour?
Laudelino.
Laudelino.
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: NF_e - Inicio
Cada vez que você envia uma ou mais NF-E's , é necessário informar o LOTE, que deve ser sequencial.
Eu gravo o numero do lote no banco de dados, e incremento a cada nf enviada, uma vez que meu sistema não permite o envio de várias NF-E's por lote.
o Comando é:
Nfe.EnviarNfe(CHAVE DA NFE ,LOTE A SER ENVIADO ,1,0)
Eu gravo o numero do lote no banco de dados, e incremento a cada nf enviada, uma vez que meu sistema não permite o envio de várias NF-E's por lote.
o Comando é:
Nfe.EnviarNfe(CHAVE DA NFE ,LOTE A SER ENVIADO ,1,0)
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Ana, boa noite!
Denovo. Terias uma exemplo de como tratar o arquivo de retorno? Por exemplo: o retorno do comando Nfe.CriarNfe retorna, cf manual:
OK: Nfe criada em: C:\AcbrNfeMonitor\logs\34xxxxxx.......-nfe.xml. O nome o arquivo vem sempre nesta posição?
Caso retorne um erro, como devo tratá-lo.
Denovo. Terias uma exemplo de como tratar o arquivo de retorno? Por exemplo: o retorno do comando Nfe.CriarNfe retorna, cf manual:
OK: Nfe criada em: C:\AcbrNfeMonitor\logs\34xxxxxx.......-nfe.xml. O nome o arquivo vem sempre nesta posição?
Caso retorne um erro, como devo tratá-lo.
-
SandroBelarmino
- Usuário Nível 3

- Mensagens: 464
- Registrado em: 04 Set 2007 16:11
- Localização: Pedreira-SP
Re: NF_e - Inicio
Em caso de ter corrido tudo certo, o retorno sempre será com a string OK nas duas primeira posicoes da primeira linha, em caso de nao ter corrido tudo bem, será retornado a string ERRO nas 4 primeiras posicoes da primeira linha.
Sandro.
Eu instalei a versao 0.5.5c do monitor e isso mudou, não sei porque, mas foi alterado, nessa versao foi tirado a expressao "Nfe criada em:", entao ficou da seguinte forma: "OK: C:\AcbrNfeMonitor\logs\34xxxxxx.......-nfe.xml."Laudelino Scarmagnani escreveu:OK: Nfe criada em: C:\AcbrNfeMonitor\logs\34xxxxxx.......-nfe.xml. O nome o arquivo vem sempre nesta posição?
É retornado no arquivo o motivo do erro, no meu caso eu mostro na tela que retornou erro e qual foi o motivo, daí o operador toma as devidas providencias.Laudelino Scarmagnani escreveu:Caso retorne um erro, como devo tratá-lo.
Sandro.
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Alguém teria um arquivo texto do retorno dos comantos NFE.EnviarNFe, NFE.ValidarNFe e NFE.AssinarNFe para que eu possa usar como exemplo. É que não tenho certificado ainda e preciso inr antecipando a implementação da NFe. Pode ser com dados fictícios, mas no formato da resposta no ACBRMonitor. Se é que isso pode ser passado. Meu e_mail: laudelino@scarmagnani.brtdata.com.br.
-
SandroBelarmino
- Usuário Nível 3

- Mensagens: 464
- Registrado em: 04 Set 2007 16:11
- Localização: Pedreira-SP
Re: NF_e - Inicio
Laudelino, no endereço: http://acbr.sourceforge.net/drupal/?q=node/40 tem a relação dos comandos disponíveis no acbrnfemonitor, e com o exemplo de cada comando, tem um exemplo de retorno, acho que serve pra te ajudar nos testes.
Sandro.
Sandro.
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Ok, Sandro. Já comecei fazer alguns testes com o arquivo de retorno a partir dos exemplo no endereço indicado. Minha dúvida era de um arquivo real poder ter algo diferente, mas, a orientação, partindo de voces, que usam, fico mais tranquilo.
Como não consigo testar os comandos de entrada, aqui vai o primeiro comando para uma avaliação de voces:
Nfe_COMANDO := FCreate("NFE_ENVRESP\ENTNFE.TXT")
FWRITE (NFE_COMANDO,"NFE.CriarNfe(\nfe\nfe.txt,"+alltrim(str(WNRLOTENFE,9))+"[1])"+ chr(13)+chr(10))
FWRITE(nFE_comando,",1)")
FCLOSE(Nfe_comando)
Muito Obrigado.
Como não consigo testar os comandos de entrada, aqui vai o primeiro comando para uma avaliação de voces:
Nfe_COMANDO := FCreate("NFE_ENVRESP\ENTNFE.TXT")
FWRITE (NFE_COMANDO,"NFE.CriarNfe(\nfe\nfe.txt,"+alltrim(str(WNRLOTENFE,9))+"[1])"+ chr(13)+chr(10))
FWRITE(nFE_comando,",1)")
FCLOSE(Nfe_comando)
Muito Obrigado.
-
SandroBelarmino
- Usuário Nível 3

- Mensagens: 464
- Registrado em: 04 Set 2007 16:11
- Localização: Pedreira-SP
Re: NF_e - Inicio
Bom dia Laudelino, mesmo sem o certificado, voce pode testar, por exemplo, esse comando, pois o monitor irá gerar o xml da nfe, apenas nao será possível assiná-lo e fazer o envio.Laudelino Scarmagnani escreveu:Como não consigo testar os comandos de entrada, aqui vai o primeiro comando para uma avaliação de voces
Sandro.
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: NF_e - Inicio
Ok, Sandro.
Não havia conseguido testar o comando NFE.CriarNFe. Então devo ter errado algo, vou verificar assim que terminar uns testes de retorno que estou fazendo. Outra coisa: No camando NFE.EnviarNFe, retorna [NFE28] e no comando NFE.CriarEnviarNFe, retorna [NFE26]. Qual a diferença dos dois?
Não havia conseguido testar o comando NFE.CriarNFe. Então devo ter errado algo, vou verificar assim que terminar uns testes de retorno que estou fazendo. Outra coisa: No camando NFE.EnviarNFe, retorna [NFE28] e no comando NFE.CriarEnviarNFe, retorna [NFE26]. Qual a diferença dos dois?