Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão de alteração na unit ACBrSATDinamico_stdcall


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

Recommended Posts

Boa noite senhores

Estava quebrando um pouco a cabeça com uma exceção que não retornava nenhuma mensagem de erro na TACBrSATDinamico_stdcall.EnviarDadosVenda com um SAT de desenvolvimento da Dimep. 

A DLL não consegue fazer alguma validação (retorna 1999|Erro não identificado), e além de tudo gera uma exceção no retorno.

A sugestão de alteração no fonte é colocar try..finally na função:

function TACBrSATDinamico_stdcall.EnviarDadosVenda(dadosVenda : AnsiString) : String ;
Var
  Resp : PAnsiChar;
begin
  try
    Resp := xSAT_EnviarDadosVenda( numeroSessao, PAnsiChar(codigoDeAtivacao),
                                   PAnsiChar(dadosVenda) ) ;
  finally
    Result := String( Resp );
  end;
end ;



Obs: Mesmo colocando o TACBrSAT.EnviarDadosVenda dentro de um try..finally, não funciona. Só fazendo isso na unit de chamada da dll que consegui pegar o retorno corretamente.

Obs2: Se estou usando o canal errado pra sugerir alteração, me corrijam, rs... Não sou "commiter" do projeto.

Abs

Igor

 

Editado por igorryko
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não sei se é possível capturar um Exception vindo de DLL...

Tenho um SAT da Dimap... Como posso reproduzir e testar essa situação, usando o SATTeste ?

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, acredito que seja a tag vItem12741 que ele não conseguiu tratar, é esse o xml que ele está recusando. Acredito que se montar um igual no demo ele recusará também. Configuração acho que não é, pois consulto status operacional normalmente na minha aplicação. E no SATTeste, vendo normalmente.

Vou ver isso agora, daqui a pouco trago mais detalhes. 

<?xml version="1.0" encoding="UTF-8"?>
<CFe>
   <infCFe versaoDadosEnt="0.06">
      <ide>
         <CNPJ>16716114000172</CNPJ>
         <signAC>SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT</signAC>
         <numeroCaixa>001</numeroCaixa>
      </ide>
      <emit>
         <CNPJ>61099008000141</CNPJ>
         <IE>111111111111</IE>
         <IM>123123</IM>
         <indRatISSQN>N</indRatISSQN>
      </emit>
      <dest>
      </dest>
      <det nItem="1">
         <prod>
            <cProd>MO6095</cProd>
            <cEAN>8575011693</cEAN>
            <xProd>CHAMA ARDENTE 1 Ed 2003</xProd>
            <NCM>49019900</NCM>
            <CFOP>5102</CFOP>
            <uCom>UN</uCom>
            <qCom>1.0000</qCom>
            <vUnCom>27.90</vUnCom>
            <indRegra>A</indRegra>
         </prod>
         <imposto>
            <vItem12741>3.35</vItem12741>
            <ICMS>
               <ICMS40>
                  <Orig>0</Orig>
                  <CST>40</CST>
               </ICMS40>
            </ICMS>
            <PIS>
               <PISNT>
                  <CST>06</CST>
               </PISNT>
            </PIS>
            <COFINS>
               <COFINSNT>
                  <CST>06</CST>
               </COFINSNT>
            </COFINS>
         </imposto>
      </det>
      <total>
         <vCFeLei12741>0.00</vCFeLei12741>
      </total>
      <pgto>
         <MP>
            <cMP>01</cMP>
            <vMP>27.90</vMP>
         </MP>
      </pgto>
   </infCFe>
</CFe>

 

Editado por igorryko
Link para o comentário
Compartilhar em outros sites

Acredito que minha aplicação tem algo de errado. Fui fazer como manda o figurino, com datamodule, classe com os métodos e atributos chamando o datamodule, form totalmente client, só acessando essa classe como se fosse um controller. Mas tanto no SAT da Dimep, quanto o da Tanca dá problema. Ambos travam em determinado momento, sendo necessário tirar a alimentação deles pra resetar.

Vou jogar o projeto fora e vou fazer todo em cima do SATTeste, vou usar até o mesmo projeto e renomear já que vou fazer um servidor de SAT, rs... 

As vezes a orientação a objeto fica muito improdutiva, rs.

Então, não sei como excluir ou dar o tópico como resolvido, procurei por aqui e não vi nenhuma opção. Mas minha sugestão de mudança nos fontes faz-se desnecessária, uma vez que o problema não são os fontes. 

Abs e desculpem a "encheção" de saco, rs... 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Estimado,

Boa tarde. Durante a montagem do XML , na parte dos itens vc deve estar fazendo algo do tipo:

Imposto.vItem12741 := (Prod.qCom * Prod.vUnCom) * rAliqImposto / 100;

Cria uma variável e acumula os valores calculados pois você deve preencher a tag vCFeLei12741 no final;

xImpostoLei12741 := xImpostoLei12741 + Imposto.vItem12741;

Daí, quando terminar você preenche a tag vCFeLei12741

Total.vCFeLei12741 := xImpostoLei12741;

Ao que parece é somente isso que falta.

Teste e retorne, até mais,

Acredito que minha aplicação tem algo de errado. Fui fazer como manda o figurino, com datamodule, classe com os métodos e atributos chamando o datamodule, form totalmente client, só acessando essa classe como se fosse um controller. Mas tanto no SAT da Dimep, quanto o da Tanca dá problema. Ambos travam em determinado momento, sendo necessário tirar a alimentação deles pra resetar.

Vou jogar o projeto fora e vou fazer todo em cima do SATTeste, vou usar até o mesmo projeto e renomear já que vou fazer um servidor de SAT, rs... 

As vezes a orientação a objeto fica muito improdutiva, rs.

Então, não sei como excluir ou dar o tópico como resolvido, procurei por aqui e não vi nenhuma opção. Mas minha sugestão de mudança nos fontes faz-se desnecessária, uma vez que o problema não são os fontes. 

Abs e desculpem a "encheção" de saco, rs... 

Igor, rsrs, acredite, foi exatamente o que fiz. 

Até mais,

-- 

Alexandre de Oliveira

Diretor de T.I.

xx16 3811 0155

www.consultatec.com.br - [email protected]

image.png.744a897bbf36127e428c6e687ef05731.png

 

Link para o comentário
Compartilhar em outros sites

Alexandre, eu já corrigi a geração do xml, e o erro permanece. É minha aplicação mesmo o problema, tem algo que trava o SAT da Tanca e que gera exceção ao chamar a função de venda da DLL da Dimep.

Como estou com pressa e o SATTeste funciona perfeitamente, vou pegar o projeto inteiro dele e adaptar ao que preciso. Não dá tempo de inventar nem testar nada. Vou tentar concluir isso nesse fim de semana. 

Talvez seja algo que deu errado em relação ao timer que uso, pois vou fazer um servidor de SAT que vai buscar o que emitir da base dados. Os meus clientes reclamaram de ter que comprar um SAT por caixa sendo que a legislação diz que pode ter até 3 por caixa. Então tenho que fazer esse servidor, não tem jeito. 

Mas valeu pela ajuda.

Abs

Link para o comentário
Compartilhar em outros sites

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