Ir para conteúdo
  • Cadastre-se

dev botao

Exemplo De Uso Acbrnfemonitor


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

Recommended Posts

Bom dia, estou tentando rodar o acbrNFeMonitor com o php através de tcp/ip, porém não estou obtendo sucesso. Quando envio o comando é retornado apenas que o acbr aguarda por comandos.

Alguém teria algum exemplo de como devo trabalhar com ele?

PS: é por tcp/ip e não por txt.

Abaixo tem um exemplo de como fiz.

$host    = "127.0.0.1";
$port    = 3436;//25003;
$lineBreak = "\r\n";//chr(13).chr(10);
$fimComand = '.' . $lineBreak;
$message = 'NFE.STATUSSERVICO' . $lineBreak . '.' . $lineBreak;
echo "Message To server :".$message . '<br>';
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");  
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
//socket_write($socket, $fimComand, strlen($message)) or die("Could not send data to server\n");

// get server response
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
echo "Reply From Server  :".$result . '<br>';
// close socket
socket_close($socket);
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Tente ler a resposta logo após conectar para "limpar" qualquer mensagem que o ACBrNFeMonitor tenha enviado anteriormente.

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

Fiz essa alteração, colocando a leitura logo após a conexão e depois uma leitura após o comando.

No acbr aparece na lista o comando a ser executado, depois é limpa toda a tela e fica a mensagem "ALERTA: Fim da Conexão com: 127.0.0.1 em: 04/04/14 08:56:08", porém para o php não é retornado nada na segunda leitura.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não tenho experiência suficiente em PHP para te ajudar, mas em Lazarus faço da seguinte forma:
 

procedure TfrEnvioNFe.TimerRespostaTimer(Sender: TObject);
var
  RespByte : Byte;
  Resposta : String;
begin
  TimerResposta.Enabled := False;
  CancelaEspera := False;
  Resposta := '';
  RespByte := 0;
 
  while (RespByte <> 3) and (not CancelaEspera) do
   begin
     RespByte := fsSock.RecvByte(10);
     Resposta := Resposta + chr(RespByte);
     Application.ProcessMessages;
   end;
 
   RespACBr := Trim(AnsiToUtf8(Resposta));
 
  if RespACBr <> '' then
     pnlAguarde.Visible := False;
end;  

Não uso simplesmente um READ pois as respostas tem tamanhos variáveis e também o tempo de execução é variável, então sempre fico num loop com a opção de o usuário cancelar a espera da resposta.

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

  • 2 semanas depois ...

Bom dia.

 

Hoje eu uso AcbrNFeMonitor via TXT em varias maquinas funciona OK, estou com um cliente onde ele vai ter que utilizar a emissão do NF de fora da rede e interno, e preciso utilizar da forma TCP/IP já configurei , alguns comandos : Status OK , esta conectando tudo blz.

 

Minha duvida: como posso para enviar uma NF ( como fica o caso do XML ) que fica no servidor ?

1-Qual comando primeiro ?

 

Preciso so de um empurrão para o funcionamento de enviar o ( TXT, XML ou Conteúdo ) para o servidor ( Monitor ) e receber os dados da NF.

 

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Não tenho experiência suficiente em PHP para te ajudar, mas em Lazarus faço da seguinte forma:
 

procedure TfrEnvioNFe.TimerRespostaTimer(Sender: TObject);
var
  RespByte : Byte;
  Resposta : String;
begin
  TimerResposta.Enabled := False;
  CancelaEspera := False;
  Resposta := '';
  RespByte := 0;
 
  while (RespByte <> 3) and (not CancelaEspera) do
   begin
     RespByte := fsSock.RecvByte(10);
     Resposta := Resposta + chr(RespByte);
     Application.ProcessMessages;
   end;
 
   RespACBr := Trim(AnsiToUtf8(Resposta));
 
  if RespACBr <> '' then
     pnlAguarde.Visible := False;
end;  

Não uso simplesmente um READ pois as respostas tem tamanhos variáveis e também o tempo de execução é variável, então sempre fico num loop com a opção de o usuário cancelar a espera da resposta.

Boa tarde, André
Com base neste exemplo acimo que você colocou aqui , estou tentando enviar para o AcbrNfeMonitor o comando para o envio de email da NF.
os comandos (consulta, Serviço, LoadFromFile) via TCP esta funcionando normal , mas não estou fazendo desta forma  como postou estou fazendo read normal simples, com o envio de e-mail não funcionou .

Quando envio o comando email , ele fica sempre RESP igual a zero , e no monitor eu vejo que ele desconecta a conexão , oque pode ser ?
***no monitor ele nem chega o comando

a forma de envio de email :
fSocket.SendString('CTE.EnviarEmail("[email protected]", "' + sqlMov1XML.AsString + '", "1", "' + Assunto + '", "' + '' copia '")');

Obrigado

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3110 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.