Jump to content

Delphi Enterprise 
pela METADE DO PREÇO

botao_delphi.png

 

 

tp_550_logo.png Homologação ACBr Apresenta:
Nova  Impressora
TP-550

botao_saibamais.png

 

 

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

igorryko

Sugestão de alteração na unit ACBrSATDinamico_stdcall

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

 

Edited by igorryko

Share this post


Link to post
Share on other sites

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
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other 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>

 

Edited by igorryko

Share this post


Link to post
Share on other sites

Daniel, sem chance, mesmo colocando o try..finally a exceção por vezes não é tratada.

Vou ver se consigo descobrir o problema do XML, pois mesmo sem informar o imposto da lei 12741 não consigo vender pela minha aplicação. 

Share this post


Link to post
Share on other 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... 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
  • Este tópico foi criado há 1739 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...