Membros Pro Sistemas Drogal Postado 13 Agosto Membros Pro Postado 13 Agosto Existe um erro que ocorre esporadicamente em meus PDVs no momento da emissão SAT. Log em anexo, e falha ocorre na emissão no momento 03/08/24 09:36:04:931. Foi emitido com sucesso o xml pelo SAT, creio que deva ocorrer alguma falha/execption, pois não tenho o retorno da Lib com o retorno do Sat, logo após é possível observar o carregamento novamente da Lib, que no caso pode ter ocorrido uma reabertura do sistema.ACBrLibSAT-20240803.zip
Consultores antonio.carlos Postado 13 Agosto Consultores Postado 13 Agosto 11 minutos atrás, Sistemas Drogal disse: Existe um erro que ocorre esporadicamente em meus PDVs no momento da emissão SAT. Log em anexo, e falha ocorre na emissão no momento 03/08/24 09:36:04:931. Foi emitido com sucesso o xml pelo SAT, creio que deva ocorrer alguma falha/execption, pois não tenho o retorno da Lib com o retorno do Sat, logo após é possível observar o carregamento novamente da Lib, que no caso pode ter ocorrido uma reabertura do sistema.ACBrLibSAT-20240803.zip Criada uma #TK-5859 para analise do caso, logo daremos um retorno ! Você esta com as classes atualizadas ? Qual tamanho do buffer, você utilizou ? Utilizando a ultima versão disponível para download do ACBrLibSAT ? Qual versão esta utilizando ? x86/x64.. cdecl/stdcall.. SingleThread/MultiThread ? Realizou teste com o programa exemplo, nele ocorre o mesmo comportamento ? Qual modelo Marca e Modelo SAT esta utilizando ? 1
Membros Pro Sistemas Drogal Postado 14 Agosto Autor Membros Pro Postado 14 Agosto As classes estão atualizadas. O buffer utilizada é o que está setado no constante da lib (256). A lib utilizada nessa versão não foi a ultima versão de hoje no caso. Utilizo a versão x86 cdecl MultiThread. Não consegui reproduzir o caso, como eu havia dito esse erro acontece esporadicamente em nossas filiais, e as mesmas tem alto nível de emissão SAT durante o dia todo. O modelo do SAT é o Dimep D-Sat 2.0.
Consultores antonio.carlos Postado 14 Agosto Consultores Postado 14 Agosto 11 minutos atrás, Sistemas Drogal disse: Não consegui reproduzir o caso, como eu havia dito esse erro acontece esporadicamente em nossas filiais, e as mesmas tem alto nível de emissão SAT durante o dia todo. Em média de quantas emissões ? tem uma ideia mais ou menos ?? Eu não tenho Dimep aqui, tenho somente SMART ELGIN, mas vou tentar simular.. e ver se aparece NULL em algum momento..
Membros Pro Sistemas Drogal Postado 14 Agosto Autor Membros Pro Postado 14 Agosto Uma média de 500 a 600 cupons por dia. No dia em específico desse erro foram emitidos 577 cupons. 1
Consultores Solution antonio.carlos Postado 14 Agosto Consultores Solution Postado 14 Agosto 6 horas atrás, Sistemas Drogal disse: Uma média de 500 a 600 cupons por dia. No dia em específico desse erro foram emitidos 577 cupons. Como citei anteriormente, não tenho SAT DIMEP de homologação para testes. Mas realizando testes com SMART SAT ELGIN, não obtive problemas. Usei mesmas configurações que você citou, ACBrLibSAT x86 MultiThread em Cdecl.. usando as classes de alto nível e mantendo o buffer em 256. Os testes realizados foram com o programa exemplo.. A pasta onde esta salvo os xml, temos 1.175 xmls emitidos durante os testes.. tentei forçar ao máximo que ocorra algum exception ou falha. Quanto ao log, também não apareceu nenhuma mensagem nula. ACBrLibSAT-20240814.zip Uma observação, em seu log, você esta com uma versão desatualizada do ACBrLibSAT.. Os testes que realizei foram com a ultima versão disponibilizada no fórum 0.2.4.290 Outra observação, eu não sei se você já tem isso em seu código.. Mas para o SAT, sempre bom validar se o código de retorno igual a 6000.. e ai sim, faz a impressão do Cupom CFe. Caso ocorra um retorno diferente de 6000, quer dizer que houve algum problema na emissão do CFe-SAT. 1
Fundadores Daniel Simoes Postado 14 Agosto Fundadores Postado 14 Agosto @antonio.carlos, Partindo da premissa, que o problema ocorre, quando o Buffer fica com os Nullos no final, pois foi alocado um Buffer maior que a resposta retornada... Experimente deixar o Buffer com um valor bastante alto.. como 64K, por exemplo... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Consultores antonio.carlos Postado 14 Agosto Consultores Postado 14 Agosto 10 minutos atrás, Daniel Simoes disse: @antonio.carlos, Partindo da premissa, que o problema ocorre, quando o Buffer fica com os Nullos no final, pois foi alocado um Buffer maior que a resposta retornada... Experimente deixar o Buffer com um valor bastante alto.. como 64K, por exemplo... Realizando o teste, logo dou um retorno.
Consultores antonio.carlos Postado 14 Agosto Consultores Postado 14 Agosto 52 minutos atrás, Daniel Simoes disse: @antonio.carlos, Partindo da premissa, que o problema ocorre, quando o Buffer fica com os Nullos no final, pois foi alocado um Buffer maior que a resposta retornada... Experimente deixar o Buffer com um valor bastante alto.. como 64K, por exemplo... Testes com buffer maior que 256: ACBrLibSAT-20240814.zip @Sistemas Drogal me confirma uma coisa, você inicializa o sat a cada venda ? porque olhando os seus logs novamente, deu a entender que você esta Inicializando o SAT, realizando a emissão CFe-SAT e DesInicializando... Ideal é que faça a Inicialização do SAT.. emite todos os CFes e no final ao fechar a aplicação, faz o uso do DesInicializar.. fazer o uso do Inicializar e DesInicializar toda hora, pode ocasionar problemas de comunicação com o SAT..
Membros Pro Sistemas Drogal Postado 15 Agosto Autor Membros Pro Postado 15 Agosto @antonio.carlos O retorno do SAT valido sim o tipo 6000, mais nesses caso não chego a ter esse retorno, como eu havia dito o sistema aparentemente congela devido a alguma possível exception. A Lib instancio no inicio da minha aplicação e só a destruo na finalização da minha aplicação. O Sat realmente inicializo e desinicializo a cada venda emitida. Adotei essa mecânica, pois vi que no Pdv Demo está dessa forma.
Consultores antonio.carlos Postado 15 Agosto Consultores Postado 15 Agosto 1 minuto atrás, Sistemas Drogal disse: @antonio.carlos O retorno do SAT valido sim o tipo 6000, mais nesses caso não chego a ter esse retorno, como eu havia dito o sistema aparentemente congela devido a alguma possível exception. A Lib instancio no inicio da minha aplicação e só a destruo na finalização da minha aplicação. O Sat realmente inicializo e desinicializo a cada venda emitida. Adotei essa mecânica, pois vi que no Pdv Demo está dessa forma. Entendi. Bom, usando buffer maior também não ocorreu problemas.. O seu cliente que esta utilizando o DIMEP, é um notebook ? ou desktop ?, Não tenho certeza, mas pode ser alguma relação com alimentação de energia com o SAT.. hoje o DIMEP esta ligado apenas via USB na máquina ? experimente colocar uma fonte de alimentação.
Membros Pro Sistemas Drogal Postado 15 Agosto Autor Membros Pro Postado 15 Agosto O modelo Dimep que utilizamos em nossas filiais só é alimentado via Usb, não tem entrada pra fonte. Nossos PDVs são todos desktop. Em relação à mecânica de inicialização e desinicialização do SAT realmente tem um impacto ?
Consultores antonio.carlos Postado 15 Agosto Consultores Postado 15 Agosto 2 minutos atrás, Sistemas Drogal disse: Em relação à mecânica de inicialização e desinicialização do SAT realmente tem um impacto ? Pode ter.. Eu não costumo inicializar e desinicializar o SAT a emissão CFe-SAT.. Até mesmo o programa exemplo ACBrLibSAT, não faz isso.
Membros Pro Sistemas Drogal Postado 15 Agosto Autor Membros Pro Postado 15 Agosto Entendi, vou fazer essa alteração e acompanhar por alguns dias. Como eu havia dito esse erro ocorre esporadicamente, e todos os casos são exatamente iguais; no momento da emissão envio a venda e não tenho o retorno. Nos logs da minha aplicação é possível ver que o sistema foi reaberto por algum motivo, seja ele congelamento ou fechamento por alguma exceção ocasionada.
Consultores antonio.carlos Postado 15 Agosto Consultores Postado 15 Agosto 2 minutos atrás, Sistemas Drogal disse: todos os casos são exatamente iguais; no momento da emissão envio a venda e não tenho o retorno. Nos logs da minha aplicação é possível ver que o sistema foi reaberto por algum motivo, seja ele congelamento ou fechamento por alguma exceção ocasionada. Tente criar logs detalhados em sua aplicação.. para identificar o motivo de ocorrer o exception.. se realmente é no momento da emissão CFe-SAT. E por qual motivo o sistema foi aberto novamente. Veja esta orientação sobre o EnviarDadosVenda, sobre o envio com números de itens alto.. Veja também como esta alimentação USB no computador, se não esta sinalizado com economia de energia ativa. Fiz mais alguns testes, mantendo o buffer maior que 256, e tentando simular alguma queda de comunicação com o SAT... para ver se ocorre algum exception. O que ocorre é apenas um timeout de comunicação e logo após isso, retorna SAT Desconectado.. ao resolver a comunicação com o SAT, as emissões voltam ao normal. ACBrLibSAT-20240815.log
Fundadores Daniel Simoes Postado 15 Agosto Fundadores Postado 15 Agosto No teste do @antonio.carlos, notei que a resposta não vem com os Nulos... porem no Log do @Sistemas Drogal, os nulos estão lá... Portanto eu presumo que seja a DLL do SAT, que esteja retornando os Nulos... Poderiamos aplicar um Workaround, nos fontes do ACBr, inserindo um 'Trim' na String retornada pelo SAT.. Exemplo: function TACBrSATDinamico_stdcall.EnviarDadosVenda(dadosVenda : AnsiString) : String ; Var Resp : PAnsiChar; begin Resp := xSAT_EnviarDadosVenda( numeroSessao, PAnsiChar(codigoDeAtivacao), PAnsiChar(dadosVenda) ) ; Result := Trim(String( Resp )); end ; Mas não me agrada muito, interferir no conteúdo retornado pela DLL do SAT... @Sistemas Drogal, você está com a última versão da DLL do fabricante ? Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Membros Pro Sistemas Drogal Postado 15 Agosto Autor Membros Pro Postado 15 Agosto @Daniel Simoes Sim, estou com as ultimas dlls do fabricante. @antonio.carlos Obrigado pela diga do log, mais nosso log já é bem detalhado e nessas situações é possível enxergar a reabertura do sistema, só não temos a certeza se essa reabertura foi necessária devido à algum travamento da minha aplicação ou fechamento inesperado da aplicação.
Recommended Posts