Ir para conteúdo
  • Cadastre-se

dev botao

ACBrMonitor PLUS + Sat + Aplicação Controlar o Número de Sessão


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 3185 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Estou fazendo testes aqui com o ACBrMonitor PLUS para o Sat, usando um sat Tanca.

Em um determinado momento, ao enviar uma venda, percebi que o LED "Conectado ao AC" permaneceu aceso por mais tempo que o normal, do nada o ACBRMonitor PLUS fechou e não houve nenhum retorno.

Iniciei novamente o monitor e solicitei novamente a operação. Desta vez a venda foi processada, mas houve um salto no número do CFe.

Provavelmente o Sat registrou aquela venda onde o monitor fechou, mas fiquei sem o XML.

Poderia resolver isso consultando o número da última sessão, mas a aplicação não tomou conhecimento porque o monitor se encerrou e não deu o retorno do número de sessão.

Existe alguma maneira da aplicação enviar o número de sessão para o monitor?

José Roberto dos Santos
VMX Tech

Link para o comentário
Compartilhar em outros sites

Promovi algumas alterações nas units abaixo (trunck2) para proporcionar o controle no número da sessão para os comandos "criarenviarcfe", "enviarcfe" e "cancelarcfe". Em ambos, basta passar o número de sessão no segundo parâmetro.

Exemplo:

Sat.CriarEnviarCfe("....ini....",102030);

Nas units alteradas, deixei um comentário ( // !@#!@# ) para indicar as linhas acrescentadas e alteradas.

Como o svn não está atualizando por aqui, fiz alterações com base na versão 1.7.3

Espero que ajude!

ACBrMonitor1.pas

DoSATUnit.pas

José Roberto dos Santos
VMX Tech

Link para o comentário
Compartilhar em outros sites

  • Consultores

Queira verificar se seu problema com o SVN não é o mesmo descrito neste tópico aqui abaixo. A solução está logo depois.

http://www.projetoacbr.com.br/forum/topic/22935-não-consigo-baixar-os-fontes-acbr/?page=2#comment-149090

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Depois de várias tentativas, ontem consegui atualizar pelo SVN. Mas tive que cancelar e retomar a atualização várias vezes. Deve ser instabilidade do SourceForge depois dos últimos problemas.

Gostaria de saber com o pessoal se há interesse em incorporar a modificação que inclui o controle do número de sessão pelo aplicativo. Vejo que isso será muito importante na recuperação de uma falha, evitando como isso que seja emitido um CFe no Sat sem conhecimento da nossa aplicação e ainda sem recurso de conseguir o XML.

Já resolvi aqui aplicando aquelas alterações, mas não é legal ficar mantendo uma build diferente do projeto.

José Roberto dos Santos
VMX Tech

Link para o comentário
Compartilhar em outros sites

  • Fundadores

A alteração propõem um novo parâmetro nos métodos: criarcfe, criarenviarcfe, enviarcfe, cancelarcfe

Mas todos os comandos do SAT, recebem um número de Sessão.. então se o objetivo é ter controle do Número de sessão, a modificação não cobriria todas as possibilidades...

Talvez possamos criar um método como: SAT.SetNumeroSessao( iNumero ) e ele memorizaria o Número de Sessão para a próxima operação a ser enviada ao SAT..

 

Mas isso é realmente necessário ?

Você sempre terá o Número da Sessão utilizada, na resposta do comando enviado... então, não seria mais simples apenas ler o número retornado e salva-lo para conferência futura ?

Em qual situação que essa abordagem não funcionaria ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Daniel,

acho interessante sim criar este método SAT.SetNumeroSessao( iNumero ) para definir o número da próxima sessão. Isso evitaria ter que criar uma variável global como tive que fazer. Acho que se o número não for definido pela aplicação, o ACBr por default poderia gerar o número aleatório como já faz.

Vou tentar te explicar a necessidade que tive aqui:

Este recurso seria muito útil quando a nossa Aplicação e o Monitor não conseguissem completar o ciclo de comunicação. Isso pode acontecer por n fatores: falta de energia, travamento da máquina, SO, travamento da DLL do Sat, problema no monitor ou problema na aplicação. Este ciclo pode ser interrompido durante o processo que o monitor já fez a chamada da DLL e o Sat já emitiu um CFe, por exemplo. Desta forma, nossa aplicação ficaria sem a resposta da emissão, enquanto que no Sat o CFe estaria registrado. Se nossa aplicação tiver posse do número de sessão, poderemos realizar a consulta da sessão e assim identificar se o processo foi concluído ou não.

Por que somente nos métodos relacionados à emissão e cancelamento de cupons?
Acredito que pode ser estendida aos outros métodos também, mas me preocupei com os métodos que promovem alteração de dados no Sat. Os outros métodos de uso corriqueiro são mais de consulta ao Sat e não promovem alterações, por isso achei que podem ser repetidos sem problema se for necessário.
Acho que é preciso analisar também a necessidade para os métodos de bloqueio e troca de assinatura, se é viável ou não esta necessidade. É que estamos tão focados em colocar isso para funcionar e confesso que não foquei nesta última parte (bloqueio,p.e.)

José Roberto dos Santos
VMX Tech

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

Compreendi o seu ponto de vista... realmente é estratégico conhecer o numero da Sessão antes da resposta...

Vou implementar usando o SAT.SetNumeroSessao( iNumero ) ... nessa caso, não será necessário modificar a assinatura dos demais métodos..

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Ok... enviei modificações para o SVN, que criam o método: SAT.SetNumeroSessao( iNumero )

Ele portanto, deve ser chamado antes de qualquer outro método do SAT... exemplo:

SAT.SetNumeroSessao( 11111 )
OK:
SAT.ConsultarStatusOperacional

 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

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