Ir para conteúdo
  • Cadastre-se

dev botao

Tem Como Saber Se Acbrnfemonitor Esta Processando


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

Recommended Posts

Bom dia.

 

Tem alguma forma do sistema saber se o ACBrNFeMonitor esta processando ou com fila de espera a processar ?

 

Ex: são gerados 10 arquivos ENTNFE001.TXT, ENTNFE002.TXT, ENTNFE003.TXT, ENTNFE004.TXT

 

E o ACBrNFeMonitor ainda esta processando o arquivo : ENTNFE002.TXT

 

Porque preciso disso, gero todo os arquivos de entrada dai depois tenho um botão que le todas as SAINFE....txt   , então queria bloquear este botão de processar Saidas ate o Monitor ficar se a lista de entrada.

 

Obrigado

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Funciona assim:

 

1. Você gera o arquivo,

2. O Monitor lê o arquivo,

3. O Monitor processa o arquivo,

4. O Monitor devolve um arquivo com a resposta,

5. Você lê o arquivo de resposta e apaga ele.

 

Se entendi direito o que você quer, baseado nisso, basta bloquear o botão entre os passos 2 até 5.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Funciona assim:

 

1. Você gera o arquivo,

2. O Monitor lê o arquivo,

3. O Monitor processa o arquivo,

4. O Monitor devolve um arquivo com a resposta,

5. Você lê o arquivo de resposta e apaga ele.

 

Se entendi direito o que você quer, baseado nisso, basta bloquear o botão entre os passos 2 até 5.

Oque preciso é assim , imagina 3 faturista gerando CT-e o sistema :

1- gerar o arquivo;

2- Monitor le o arquivo

3. O Monitor processa o arquivo,

4. O Monitor devolve um arquivo com a resposta,

 

*** No passo 5, o meu sistema so pode le o arquivos de resposta se não existir nenhum arquivo para processar ( Passo 1 );

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Acho que você não entendeu, o arquivo de resposta só existe quando existe resposta, como eu disse anteriormente, você envia e fica em loop esperando o arquivo de retorno, no momento que ele é criado então foi processado e está pronto.

Como você tem mais de um usuário gerando requisições, você vai ter que ter o controle para saber que o arquivo de resposta e de um ou outro usuário e tratar isso.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Acho que você não entendeu, o arquivo de resposta só existe quando existe resposta, como eu disse anteriormente, você envia e fica em loop esperando o arquivo de retorno, no momento que ele é criado então foi processado e está pronto.

Como você tem mais de um usuário gerando requisições, você vai ter que ter o controle para saber que o arquivo de resposta e de um ou outro usuário e tratar isso.

Régys, eu entendi sim . eu já faço o controle dos arquivos de entrada (por usuário). oque acontece que no sistema, se um dos usuário clicar no botão e requisitar o processamento dos arquivos ( sainfe....txt ) e os registros que esta em processo ( aguardando retorno ) ainda não foi gerado ainda este arquivo ( pq eles faturam muitos ao mesmo tempo ) e monitor ainda não teve tempo de processar o arquivo , oque acontece estes registros sai do estado processando pq não acharam o arquivo de saída *** os que tem retorno do monitor fica OK , mas estes eu coloco no status ( arquivo de retorno não localizado ) porem após alguns minutos este arquivo e gerado pelo monitor.

 

Imagina 4 usuário somente enviado arquivo : 30 arquivos : ENTNFE001.TXT AO ENTNFE030.TXT  as vezes isso o monitor demora um pouco ( em 1 minuto exemplo ) ele processo o retorno de 15 arquivos : SAINFE001.TXT AO SAINFE015.TXT

no meu sistema eu queria controlar não deixar um dos usuário clicar num botão que se chama : retorno CT-e em quanto existir ENTNFE...TXT para monitor processar .

 

deu pra entender .

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Então é o que estou dizendo desde de o início, a espera pelo arquivo deve ser um loop, nesse loop você bloqueia a ação do usuário.

Ou no loop você trata somente o que já veio, impedindo de alguma forma que ele faça algo que não deve.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

 

no meu sistema eu queria controlar não deixar um dos usuário clicar num botão que se chama : retorno CT-e em quanto existir ENTNFE...TXT para monitor processar .

 

 

Faz assim algo do tipo:

 

btnRetornoCTe.Enabled := ! FileExists(Caminho do arquivo ENTNFE)

Link para o comentário
Compartilhar em outros sites

Então é o que estou dizendo desde de o início, a espera pelo arquivo deve ser um loop, nesse loop você bloqueia a ação do usuário.

Ou no loop você trata somente o que já veio, impedindo de alguma forma que ele faça algo que não deve.

Sim isto seria um método, mas o usuário não quer aguardar o retorno , eles querem indo emitindo e pegar so retorno depois ... entendeu ( se colocar loop ) fica parando o faturamento deles !!!

Link para o comentário
Compartilhar em outros sites

Então minha ideia seria fazer uma alteração no Monitor, para ele gerar um TXT em algum lugar e armazenando os comandos e retirando o mesmo conforme indo processar , dai no meu sistema verificava se existir o tal arquivo não deixar executar . 

 

Seria uma boa também montar uma thread, pra ficar lendo somente as saídas automáticas sem precisar clicar em nenhum botão

Link para o comentário
Compartilhar em outros sites

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