NF_e - Inicio

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: NF_e - Inicio

Mensagem 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 :)
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: NF_e - Inicio

Mensagem 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
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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.
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: NF_e - Inicio

Mensagem 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)
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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.
SandroBelarmino
Usuário Nível 3
Usuário Nível 3
Mensagens: 464
Registrado em: 04 Set 2007 16:11
Localização: Pedreira-SP

Re: NF_e - Inicio

Mensagem 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.
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 !!!!"
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Re: NF_e - Inicio

Mensagem por anacatacombs »

eu procuro pela ocorrencia ERRO...
por enquanto não tive problemas
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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.
SandroBelarmino
Usuário Nível 3
Usuário Nível 3
Mensagens: 464
Registrado em: 04 Set 2007 16:11
Localização: Pedreira-SP

Re: NF_e - Inicio

Mensagem 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.
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 !!!!"
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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.
SandroBelarmino
Usuário Nível 3
Usuário Nível 3
Mensagens: 464
Registrado em: 04 Set 2007 16:11
Localização: Pedreira-SP

Re: NF_e - Inicio

Mensagem 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.
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 !!!!"
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: NF_e - Inicio

Mensagem 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?
Responder