Ir para conteúdo
  • Cadastre-se

dev botao

Iniciando com ACBrNFeMonitor


Alexsander
  • Este tópico foi criado há 4631 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Baixei um instalador da versão 0.5.7b com OpenSSL. Configurei certificado (via .pfx) e proxy, ao entrar na aba "Testes" e clicar no botão "Status Serviço", o XML vem em branco -- erro abrindo "temp.xml". Como posso diagnosticar o problema? Com a versão 0.6.0c também deu o mesmo erro.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

Baixei a versão CAPICOM 0.6.0c e funcionou. Eu exportei o certificado seguindo estas instruções:

http://www1.serpro.gov.br/servicos/help ... t_cert.htm

Preciso fazer algo mais para o arquivo PFX funcione, alguma forma diferente de exportar, algo assim? Ah, outra coisa: a versão CAPICOM pede senha (da CrypyoAPI) na primeira vez em que um comando é enviado (quando o monitor é reiniciado), tem como evitar isso? A opção "salvar senha" da janela da CryptoAPI aparentemente esquece a senha quando o monitor é reiniciado.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

Alexsander, basta instalar o certificado digital no pc que vai ter o acbrnfemonitor e la na configuração vc informa o certificado que vai ser usado. Quanto a senha quando for o A1 geralmente nos meus clientes não está pedindo senha, mas já com o a3 ele sempre pede.

Link para o comentário
Compartilhar em outros sites

Jaime, a versão CAPICOM eu consegui fazer funcionar. Estou tentando usar a versão OPENSSL porque futuramente quero ajudar o Daniel a portar o ACBrNFeMonitor para Lazarus. Por enquanto não chega a ser problema usar a versão CAPICOM porque este cliente tem uma máquina Windows XP que roda exclusivamente o software do TEF, esta mesma máquina poderia rodar o ACBrNFeMonitor com folga. No entanto, nem todo mundo usa TEF; seria interessante ter uma solução 100% Linux.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Estou usando ACBrNFeMonitor2 versão 0.6.0c via Sockets. Como obter o retorno dos erros? Tive um erro de validação no campo NATOP porque meu BD tinha uma "natureza de operação" muito grande, com mais de 60 caracteres, mas tive que ver o LOG para achar o erro. Aparentemente o comando "CRIANFE" via Sockets estava retornando em branco.

Minha rotina para envio de comandos é bem simples:

function TfrmEmissaoNFe.ExecutaComando(cmd: string): string;

begin

  telnet.Send(cmd+sLineBreak+'.'+sLineBreak);

  Result := Trim(telnet.RecvTerminated(#03));

end;

Estou fazendo assim para pegar os erros:
  resp := ExecutaComando(Format('NFE.CRIARNFE("%s")',[lstNFe.Text]));

  if LeftStr(resp,2) <> 'OK' then

  begin

    Screen.Cursor := crDefault;

    ShowMessage(resp);

    Exit;

  end;

Alguma sugestão?

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites


NFE.CRIARNFE("

...

")

ERRO: Falha na validação dos dados da nota 6

TAG: ID:B04/natOp(Descrição da Natureza da Operação) - Tamanho maior que o máximo permitido [VENDA DE MERCADORIA, ADQUIRIDA OU RECEBIDA DE TERCEIROS, SUJEITA AO REGIME DE SUBSTITUICAO TRIBUTARIA, NA CONDICAO DE CONTRIBUINTE-SUBSTITUIDO].

'VENDA DE MERCADORIA, ADQUIRIDA OU RECEBIDA DE TERCEIROS, SUJEITA AO REGIME DE SUBSTITUICAO TRIBUTARIA, NA CONDICAO DE C...' violates maxLenght constraint of '60'.

The element '{http://www.portalfiscal.inf.br/nfe}natOp' with value 'VENDA DE MERCADORIA, ADQUIRIDA OU RECEBIDA DE TERCEIROS, SUJEITA AO REGIME DE SUBSTITUICAO TRIBUTARIA, NA CONDICAO DE C...' failed to parse.

PS: Eu sei que a descrição está grande demais, já corrigi, mas gostaria de poder receber estes erros sem ter que olhar o log.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Assim como vc está tratando a resposta qdo vem OK, vc tbm tem que tratar qdo vem ERRO, todas as msgs mostradas no log do ACBrNFeMonitor são enviadas como resposta para a aplicação.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Mas veja o meu código: se "resp" não for 'OK' é executado um "ShowMessage(resp)" que deveria mostrar a mensagem de erro. Está aparecendo apenas uma caixa de diálogo em branco. PS: Estou usando Lazarus no Linux, mas a máquina com o monitor tem Windows XP.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Do mesmo modo que vc recebe a resposta qdo o monitor retorna OK era pra vc receber a resposta qdo houver um erro.

Verifique se sua rotina de recepção da resposta está correta. Teste via troca de arquivos que vc irá ver como deverá ser a resposta correta.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não sei, apenas debugando vc poderá encontrar o erro.

Como te disse, teste via troca de arquivos e vc verá no arquivo SAINFE.TXT a resposta que deveria receber via sockets.

Eu uso da seguinte forma no Lazarus e funciona corretamente:


fsSock.SetSendTimeout(200);

fsSock.SendString('NFe.SetAmbiente('+IntToStr(pAmbiente)+')'+ CRLF + '.' + CRLF);
Resposta := AnsiToUtf8(fsSock.RecvTerminated(500, #3));

if Resposta = '' then
begin
RespByte := 0;

while (RespByte 3) and (ModalResult mrCancel) do
begin
RespByte := fsSock.RecvByte(10);
Resposta := Resposta + chr(RespByte);
Application.ProcessMessages;
end;

Resposta := Trim(AnsiToUtf8(Resposta));
end;
[/code]

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Moderadores

fsSock: TTCPBlockSocket; // unit blcksock da synapse

Fiz da forma acima, pois em algumas respostas grandes(como no caso de erros) não recebia a resposta inteira, então vou lendo byte a byte até receber o #3 que é o terminador enviado pelo ACBrNFeMonitor, assim sempre tenho certeza que li a resposta inteira.

Faço esse laço apenas quando não consigo receber a resposta no comando "Resposta := AnsiToUtf8(fsSock.RecvTerminated(500, #3));"

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Tentei fazer exatamente como o seu código e ainda não funcionou:

function TfrmEmissaoNFe.ExecutaComando(cmd: string): string;

var respbyte: Byte;

  resp: string;

begin

  btnAbortar.Enabled := true;

  btnAbortar.Tag := 0;

  telnet.SetSendTimeout(200);

  telnet.SendString(cmd+CRLF+'.'+CRLF);

  resp := Trim(AnsiToUtf8(telnet.RecvTerminated(TIMEOUT,#03)));

  if resp = '' then

  begin

    respbyte := 0;

    while (respbyte <> 3) and (btnAbortar.Tag = 0) do

    begin

      respbyte := telnet.RecvByte(10);

      resp := resp + chr(respbyte);

      Application.ProcessMessages;

    end;

    resp := Trim(AnsiToUtf8(resp));

  end;

  btnAbortar.Enabled := false;

  Result := resp;

end;

Ainda estou recebendo a string vazia quando há erro. Se não houver erro, funciona normalmente. A constante TIMEOUT está com o valor 500, como no seu exemplo, e declarei telnet:TTCPBlockSocket também. Alguma sugestão?

Estou usando o synapse do SVN (revisão 129), FPC 2.4.0 (release) e Lazarus do SVN (branch "0.9.30 fixes", que será o release 0.9.30). Meu Linux é o Ubuntu 10.10 versão 32 bits rodando num vmware dentro de um Ubuntu 10.10 64 bits, o servidor do ACBrNFeMonitor2 0.6.0c é um Windows XP rodando direto na máquina, que além do ACBrNFeMonitor2 roda apenas o software de controle do SiTef.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Eu uso atualmente com o Lazarus 0.9.31 e as units do synapse que estão no ACBr e funciona corretamente. Mas já uso desde a versão 0.9.28 do Lazarus a mesma rotina e sempre funcionou.

Como já disse, teste via TXT e veja se o ACBrNFeMonitor está criando corretamente a resposta, depois tente verificar pq não está recebendo a resposta quando usa via sockets.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Localizei o problema. As mensagens de erro estão vindo em algum ENCODING (aparentemente LATIN1 ou algo assim) que faz a rotina RecvString esvaziar o buffer e retornar uma string vazia. Coloquei um debug pra mostrar byte a byte o que está vindo e no primeiro acento de "ERRO: Falha na validação" já aborta ao tentar adicionar na string. Por enquanto coloquei um teste pra só adicionar na string se o ASCII for abaixo de 127 mas futuramente vou tentar alguma outra solução mais elegante.

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 7 meses depois ...

Bom dia a todos,

sou novo por aqui e estou com muitas dúvidas quanto a configuração do ACBrNFeMonitor.

A primeira é. Vou conseguir fazer testes apenas com certificado digital instalado?

O programa me devolve a seguinte mensagem:

ERRO: WebService Consulta Status serviço:

- Inativo ou Inoperante tente novamente.

- Número de Série do Certificado Digital não especificado !

Desde já obrigado!

Álvaro Santos

Link para o comentário
Compartilhar em outros sites

Bom dia, estou iniciando com o ACBrNFeMonitor CAPCOM. E preciso saber se vou conseguir comunicação somente após instalar o certificado digital?

NFE.StatusServico

A mensagem que retorna:

ERRO: WebService Consulta Status serviço:

- Inativo ou Inoperante tente novamente.

- Número de Série do Certificado Digital não especificado !

Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

Olá,

você nem precisa instalar o certificado para o monitor SSL, o que você precisa é dizer na configuração onde está o arquivo PFX. Pra isso você tem que informar o local e a senha do certificado. Não esquece de deixar em homologação para realizar testes, principalmente se o certificado não for seu.

Para funcionar os testes também o emissor dono do certificado tem que estar cadastrado na SEFIN do estado como emissor de NFe. Depois que você ativa como emissor, você tem em torno de 10 dias para emitir uma NFe válida, senão sera bloqueado como emissor.

t+

MicroLine Software

xHarbour Simplex 1.2.3/xDev 0.70/xDesigner by L.F.Basso/HWGui

ACBRMonitorPlus OpenSSl/Capicom

[email protected]

69-98114-9250

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4631 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...