Página 2 de 4
Re: NF_e - Inicio
Enviado: 11 Jan 2010 19:07
por Laudelino Scarmagnani
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
Re: NF_e - Inicio
Enviado: 11 Jan 2010 19:15
por anacatacombs
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..
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?
Essa eu vou deixar para quem usar esse programa

Re: NF_e - Inicio
Enviado: 11 Jan 2010 19:27
por Laudelino Scarmagnani
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
Re: NF_e - Inicio
Enviado: 11 Jan 2010 19:53
por anacatacombs
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
Re: NF_e - Inicio
Enviado: 11 Jan 2010 21:17
por Laudelino Scarmagnani
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
Re: NF_e - Inicio
Enviado: 21 Jan 2010 08:58
por Laudelino Scarmagnani
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.
Re: NF_e - Inicio
Enviado: 21 Jan 2010 10:50
por anacatacombs
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)
Re: NF_e - Inicio
Enviado: 21 Jan 2010 22:52
por Laudelino Scarmagnani
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.
Re: NF_e - Inicio
Enviado: 22 Jan 2010 07:44
por SandroBelarmino
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.
Laudelino Scarmagnani escreveu:OK: Nfe criada em: C:\AcbrNfeMonitor\logs\34xxxxxx.......-nfe.xml. O nome o arquivo vem sempre nesta posição?
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:Caso retorne um erro, como devo tratá-lo.
É 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.
Sandro.
Re: NF_e - Inicio
Enviado: 22 Jan 2010 08:16
por anacatacombs
eu procuro pela ocorrencia ERRO...
por enquanto não tive problemas
Re: NF_e - Inicio
Enviado: 25 Jan 2010 10:57
por Laudelino Scarmagnani
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.
Re: NF_e - Inicio
Enviado: 26 Jan 2010 07:38
por SandroBelarmino
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.
Re: NF_e - Inicio
Enviado: 26 Jan 2010 18:12
por Laudelino Scarmagnani
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.
Re: NF_e - Inicio
Enviado: 27 Jan 2010 07:21
por SandroBelarmino
Laudelino Scarmagnani escreveu:Como não consigo testar os comandos de entrada, aqui vai o primeiro comando para uma avaliação de voces
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.
Sandro.
Re: NF_e - Inicio
Enviado: 27 Jan 2010 14:05
por Laudelino Scarmagnani
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?