Ir para conteúdo
  • Cadastre-se

dev botao

Vendas cfe-SAT Duplicadas No SEFAZ


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

Recommended Posts

Bom Dia Pessoal.

Gostaria de ajuda para resolver o seguinte problema, os contadores do nossos clientes relataram que alguma vendas cfe-Sat que aparecem no portal  SGRSAT não estão gravadas no sistema, e com essa informação começamos analisar as informações do sistema e logs do ACBRSAT e constatamos que ao enviar uma venda para o equipamento SAT e o mesmo não autorizar a venda com o seguinte retorno:  - 08:17:50:048 - NumeroSessao: 541941 - Resposta:541941|06098||SAT em processamento. Tente Novamente.|| e como solicitado no erro o sistema envia a venda novamente para ser autorizada e com o novo envio ela é autorizada, porém o equipamento de alguma forma também autorizou a requisição anterior e desta forma ficamos com duas vendas iguais com numeração diferentes.

Em anexo existe um SAT.LOG onde é possível verificar que o equipamento SAT ficou rejeitando as vendas porém após autorizar o registro pode se notar que foram puladas as numeração das requisições anteriores e as requisições anteriores aparecem no SAT.

Encontramos esses problemas em equipamentos SAT de marcas diferentes Sweda, Dimep,

SAT.LOG

Link para o comentário
Compartilhar em outros sites

  • Fabricantes

Boa tarde Diego,

Este retorno com "SAT em processamento. Tente Novamente" é um retorno da DLL para a aplicação.

Não tenho uma explicação do motivo de isto estar acontecendo com você pois muitos fatores podem influenciar neste retorno.

Porém há uma solução fácil de ser implementada. Nos casos de envio de xml de venda em que houver como o retorno "SAT em processamento. Tente Novamente" você pode consultar a última seção, com isso você poderá verificar o retorno do SAT e caso seja um novo cupom você além de recuperar o mesmo não irá emitir em duplicidade.

 

Mas veja bem, é uma sugestão de um contorno, não é a solução do problema. O correto é isso não acontecer.

Mas enquanto não conseguir resolver o problema pode ser uma boa dica.

 

Att

Cristiano Abbud

 

 

Link para o comentário
Compartilhar em outros sites

Boa Tarde Cristiano

Obrigado pela ajuda, e a rotina que passou de consultar a sessão ao receber a mensagem "SAT em processamento. Tente Novamente" nós iremos implementar como uma segurança a mais para não duplicar vendas.

caso apareça alguma solução ou novas informações irei anexar a este tópico.

Obrigadp

Link para o comentário
Compartilhar em outros sites

Cristiano, boa tarde!

Pelo que entendi, o Sat só é capaz de retornar o conteúdo da última sessão (Por favor me corrija se eu estiver enganado).

Nestes casos, é possível que a DLL dê duas respostas seguidas de "SAT em processamento. Tente Novamente"? (Primeira resposta para a tentativa de venda, segunda resposta para tentativa de consulta). Se for possível essa mesma resposta em sequencia, significa que perderíamos as chances de acessar o sessão de venda já que ela não seria mais a última?

José Roberto dos Santos
VMX Tech

Link para o comentário
Compartilhar em outros sites

Bom dia Cristiano.

Observando os manuais técnicos de utilização do equipamento sat, e observei que as rotinas a serem utilizadas possuem um timeout de resposta será que este tempo está sendo considerado pelo acbrsat para verificar o retorno, ou as funções são assíncronas e o timeout é o tempo que a DLL demora para processar o comando?

Link para o comentário
Compartilhar em outros sites

  • Fabricantes

Boa tarde José Roberto,

Com relação a primeira pergunta, o retorno "SAT em processamento. Tente Novamente" é uma string presente na DLL.

Se acontecer de receber repetidas vezes e na sequencia esta mensagens é uma situação pior que a anterior, e ai deve-se analisar muito, se for o caso reiniciar o equipamento e/ou a aplicação e eventualmente o microcomputador. E com isso você restabelece a aplicação e SAT e consulta a ultima seção.

Lembrando que isso que escrevi acima não é solução para o problema, são contornos até que seja resolvido.

 

Com relação aos timeouts da DLL, os mesmos existem e devem seguir a Especificação da Sefaz. Mas tenho certeza que o pessoal do ACBR está seguindo pois temos o SAT operando com sucesso em muitos locais.

 

Att

Cristiano Abbud

 

Link para o comentário
Compartilhar em outros sites

Pessoal,

Vejam o que acham da sugestão:

Utilizar o retorno do ConsultarStatusOperacional.

Pegar ULTIMO_CF-E-SAT ou LISTA_ INICIAL e  LISTA_ FINAL.

Com esses dados (do caractere 31 ao 37 da chave de acesso você pega o número do Cf-e) dá para retirar pelo menos o último CF-e-SAT emitido ou os números dos CF-e-SAT que estão na memória. 

Link para o comentário
Compartilhar em outros sites

Creio que o que ele sugeriu seria acompanhar a numeração dos cupons para ver se foi feita a operação ou não.

Exemplo: Antes de mandar uma venda, pego a informação de qual é o ULTIMO_CF-E-SAT. Dessa informação "tiro" que o cupom mais recente é o 1514. Guardo isso numa variável e faço a venda. Se der o erro de "SAT em processamento", leia novamente ULTIMO_CF-E-SAT. Se for 1315, é porque a venda foi feita com sucesso. Caso contrário (ainda está em 1514) a venda não teve sucesso.

Será que há algum problema nessa linha de raciocínio?

Link para o comentário
Compartilhar em outros sites

  • Fabricantes

Prezado Cristiano, boa noite.

 

Se você consultar o Status Operacional para ver qual foi o ultimo cupom você chegará a conclusão se houve uma emissão ou não a partir do ultimo numero que seu AC gravou do último cupom emitido, entretanto você perderá a chance de recuperar o cupom, pois ao consultar a ultima seção você irá receber novamente o Status Operacional.

 

Att

Cristiano Abbud

Link para o comentário
Compartilhar em outros sites

Boa noite Cristiano.

Sim, estou a par desse problema, mas eu pensei em recorrer a esse recurso de consulta ao Status Operacional somente após algumas tentativas de comunicação e ainda assim persistir o erro de "SAT em processamento", por exemplo se após 1 minuto de consulta de 10 em 10 segundos continuar dando o erro de "SAT em processamento". Afinal, não vai dar para ficar esperando indefinidamente o SAT "acordar pra vida"...

Será que há uma alternativa melhor? Se for usar a técnica que eu descrevi, qual seria um tempo razoável para esperar a mensagem de "SAT em processamento" se resolver por si só antes de apelar à consulta ao Status Operacional?

Link para o comentário
Compartilhar em outros sites

  • Fabricantes

Bom dia Cristiano,

 

Como a mensagem "SAT em Processamento" é um retorno da DLL para os casos de falha na localização do SAT há várias possibilidades para isso acontecer e não depende só do SAT.

Portanto se continuamente você tiver esta resposta de "SAT em Processamento" certamente ao Consultar o Status Operacional certamente vai receber "SAT em Processamento"

Nestes casos mais críticos muitas vezes é necessário reiniciar a aplicação, o sat ou até mesmo o microcomputador.

 

Att

Cristiano Abbud

 

Link para o comentário
Compartilhar em outros sites

Boa Tarde a todos.

Até o momento ainda não temos solução para ocorrido, parece se tratar de uma fragilidade da estrutura do sat. Conforme já sugerido em outro tópico a solução seria o equipamento receber melhorias onde o desenvolvedor tivesse acesso aos ultimos Cfes emitidos, pois atualmente o mecanismo disponibilizado "ConsultarNumeroSessao" somente pode ser utilizado para o ultimo comando, O SAT possui suas fragilidades e elas precisam ser corrigidas para uma maior transparências nas operações.

http://www.projetoacbr.com.br/forum/topic/24430-manifesto-a-sefaz-e-fabricantes/ 

 

Link para o comentário
Compartilhar em outros sites

  • 8 meses depois ...
  • Membros Pro

Bom Dia, estamos com o mesmo problema relatado no tópico.

   Para tentar resolver estamos guardando o número de sessão para quando ocorrer alguma falha poder consultar a sessão, porém estamos com uma duvida referente ao código retornado, está sempre retornando o código 6000. Pelo que vi no manual ao consultar  uma sessão de uma venda que deu certo o retorno deveria ser 11000 porém está sempre retornando o código 6000. Este retorno está correto?

Exemplo do código abaixo:

    //..Enviando o Cupom Fiscal
    ACBrSAT.EnviarDadosVenda(ACBrSAT.CFe.GerarXML( True ));

    if ACBrSAT.Resposta.codigoDeRetorno = 6000 then
    begin
      //..gravamos os dados do cupom
    end
    else
    begin
      //..se o retorno acima for diferente de 6000 consultamos a sessão para ver se transmissão do cupom foi realizado corretamente
      //..esse retorno deveria ser 11000, mas pelos nossos teste está vindo 6000
      vNrSessaoAux:= ACBrSAT.numeroSessao;
      vRetConsultaSessao:= ACBrSAT.ConsultarNumeroSessao(vNrSessaoAux);
      if ACBrSAT.Resposta.codigoDeRetorno = 11000 then
      begin
         //..gravamos os dados do cupom
      end
      else
      begin
        showmessage(ACBrSAT.RespostaComando);
        exit;
      end;
    end;

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Veja o que diz a Especificação Técnica do SAT

Citar

6.1.8.2.  ConsultarNumeroSessao  –  Retorno  caso  a  sessão  já  tenha  sido processada pelo SAT-CF-e
Se a sessão consultada foi processada anteriormente pelo SAT-CFe, o retorno da função ConsultarNumeroSessao deverá ser exatamente igual ao retorno da função processada

 

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

  • 2 semanas depois ...

Boa Tarde,

 

Estamos com este problema também.

O grande impasse é não possuir o xml e não poder enviá-lo ao contador, além de duplicar a venda e assim o cliente pagar o dobro do tributo.

Se o retorno da venda for diferente de 6000, consultamos o status e se o número da ultima nota emitida for diferente do que está gravado no banco nós cancelamos. Assim o cliente não terá venda duplicada.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olha , notei o seguinte , se o aparelho sat fica parado por um tempo , ele trava. Quando voce envia uma venda , ele grava a venda e retorna esse erro de Sat Em processamento.

Uma das alternativas que encontrei até o momento é verificar através da função: ConsultarSAT para ver se o sat esta ativo , analisar o retorno e SÓ ENVIAR A VENDA  se o status for 08000.

 ConsultarSAT  retornos possíveis:

08000   SAT/AC SAT em operação.
08098  SAT/AC SAT em processamento Tente novamente.
08099  SAT/AC Erro desconhecido. Informar o administrador.

Um Detalhe, dá para desmontar o arquivo de DownLoad dos cupons do site do cliente e montar o XML da venda , o problema é detectar os cupons que foram gravados pelo siote sem o conhecimento do sistema.

 

OBS: Se o retorno não for 08000 , ai desliga o aparelho sat, desliga tudo , até retornar 08000.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Solution
Em 21/06/2016 at 18:40, biniva disse:

Olha , notei o seguinte , se o aparelho sat fica parado por um tempo , ele trava....

biniva, boa tarde.

Também estava tendo problemas com o fato de os aparelhos ficarem parados por algum tempo e quando iriam ser utilizados, gerava o erro de "Sat em Processamento". Parte desse problema, resolvi configurando o Windows para não desativar a energia das das portas USB.

abç 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Este tópico foi criado há 2376 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...