Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Acredito que seja erro na sua aplicação mesmo que esta entrando em alguma rotina após enviar a venda, uso em um DataModule , sempre antes de começar o cupom  inicializo F_DataModule.ACBrSAT.InicializaCFe;

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Membros Pro
Postado

to usando asssim

Variavel
   sXMLGerado:String;
 

ModACBr.ACBrSAT.CFe.Clear;
ModACBr.ACBrSAT.InicializaCFe ;

dados da nota
 
sXMLGerado := ModACBr.ACBrSAT.CFe.GetXMLString( True );
ModACBr.ACBrSAT.EnviarDadosVenda(sXMLGerado);
  • Membros Pro
Postado (editado)

OLha como ta meu codigo fonte:

 

So Lembrando que a primeira venda vai normal, ja na segunda em diante não vai mais, da erro na funcao:

 

Resp := xSAT_EnviarDadosVenda( numeroSessao, PAnsiChar(codigoDeAtivacao),PAnsiChar(dadosVenda) ) ;
 
versão da dll dimep: 1.0.2.0
 
procedure GerarSAT(CodigoVenda:Integer) ;
var
  TotalItem: Double;
  sXMLGerado:String;
  iItem:integer;
  DirEnv, DirResp : String;
  numSessao,CodigoNota: Integer;
  TempMemo:TMemo;
  ok:Boolean;
begin
  try
     ModACBr.ACBrSAT.CFe.Clear;
     ModACBr.ACBrSAT.InicializaCFe ;

     TempMemo        := TMemo.Create(Application);
     TempMemo.Visible:=False;
     TempMemo.Parent := frm_Principal;

     with ModACBr.ACBrSAT.CFe do
     begin
       CarregaDadosEmitente;
       SQLString(Tabela.Consulta,'Select n.*,e.* from nnfe n,nnfestatus e '+
                          ' where n.no_codigo = e.no_codigo'+
                          ' and n.codvenda='+inttostr(CodigoVenda)+
                          ' and n.modelo=59');
       CodigoNota:= MostCampoQ(Tabela.Consulta,'no_codigo','I');
       iRegEmp   := MostCampoQ(Tabela.Consulta,'crt','I');

       SQLString(Tabela.Consulta,'Select * from nnfecli where no_codigo='+inttostr(CodigoNota));

       if Tabela.Consulta.IsEmpty=False then
       begin
         if MostCampoQ(Tabela.Consulta,'cli_codigo','I')>0 then
         begin
           if ValidaDocs(ModACBr.ACBrValidador,'CPF',MostCampoQ(Tabela.Consulta,'CNPJ','S')) then
              Dest.CNPJCPF  := TiraCaracEspecial(MostCampoQ(Tabela.Consulta,'CNPJ','S'));

           if MostCampoQ(Tabela.Consulta,'cli_nome','S')<>'' then
           begin
             Dest.xNome     := MostCampoQ(Tabela.Consulta,'cli_nome','S');
             Entrega.xLgr   := MostCampoQ(Tabela.Consulta,'cli_endereco','S');
             Entrega.nro    := MostCampoQ(Tabela.Consulta,'cli_numero','S') ;
             Entrega.xCpl   := MostCampoQ(Tabela.Consulta,'cli_endcompl','S');
             Entrega.xBairro:= MostCampoQ(Tabela.Consulta,'cli_bairro','S') ;
             Entrega.xMun   := MostCampoQ(Tabela.Consulta,'cli_cidade','S');
             Entrega.UF     := MostCampoQ(Tabela.Consulta,'cli_estado','S') ;
           end;
         end;
       end;

       if SQLString(Tabela.Consulta,'Select p.*,i.* from nnfeprod p,nnfeprodimp i '+
                             ' where p.no_codigo=i.no_codigo and p.item=i.item and '+
                             ' p.no_codigo='+inttostr(CodigoNota)) then
       begin
         while not(Tabela.Consulta.Eof) do
         begin
           with Det.Add do
           begin
             nItem              := MostCampoQ(Tabela.Consulta,'ITEM','I');
             Prod.cProd         := MostCampoQ(Tabela.Consulta,'CODIGO','S');
             if EAN13Valido(MostCampoQ(Tabela.Consulta,'CODBARRA','S')) then
             Prod.cEAN          := MostCampoQ(Tabela.Consulta,'CODBARRA','S');
             Prod.xProd         := MostCampoQ(Tabela.Consulta,'DESCRICAO','S');
             prod.NCM           := MostCampoQ(Tabela.Consulta,'NCM','S');
             Prod.CFOP          := MostCampoQ(Tabela.Consulta,'CFOP','S');
             Prod.uCom          := MostCampoQ(Tabela.Consulta,'UN','S');
             Prod.qCom          := MostCampoQ(Tabela.Consulta,'QTDE','F');
             Prod.vUnCom        := MostCampoQ(Tabela.Consulta,'PRECO','F');
             Prod.indRegra      := irArredondamento;
             Prod.vDesc         := 0;
             Prod.vRatDesc      := MostCampoQ(Tabela.Consulta,'DESCONTO','F');
             Prod.vRatAcr       := MostCampoQ(Tabela.Consulta,'OUTRAS','F');
             Imposto.vItem12741 := MostCampoQ(Tabela.Consulta,'vTotTrib','F');
             infAdProd          := MostCampoQ(Tabela.Consulta,'INFADIC','S');

              //  with Prod.obsFiscoDet.Add do
              //  begin
              //    xCampoDet := 'campo';
              //    xTextoDet := 'texto';
             //   end;

             Imposto.ICMS.orig  := StrToOrig(ok,MostCampoQ(Tabela.Consulta,'ORIG','S'));
             if (iRegEmp <= 1) then // simples nacional
             begin
                Imposto.ICMS.CSOSN := StrToCSOSNIcms(ok,MostCampoQ(Tabela.Consulta,'IC_STI','S'));
             end else
             begin
                Imposto.ICMS.CST   := StrToCSTICMS(ok,MostCampoQ(Tabela.Consulta,'IC_STI','S'));
             end;

             Imposto.ICMS.pICMS     := MostCampoQ(Tabela.Consulta,'IC_PICMS','F');
             Imposto.PIS.CST        := StrToCSTPIS(OK,MostCampoQ(Tabela.Consulta,'PIS_CST','S'));
             Imposto.PIS.vBC        := MostCampoQ(Tabela.Consulta,'PIS_VBC','F');
             Imposto.PIS.pPIS       := MostCampoQ(Tabela.Consulta,'PIS_PPIS','F');
             Imposto.COFINS.CST     := StrToCSTCOFINS(OK,MostCampoQ(Tabela.Consulta,'CO_CST','S'));
             Imposto.COFINS.vBC     := MostCampoQ(Tabela.Consulta,'CO_VBC','F');
             Imposto.COFINS.pCOFINS := MostCampoQ(Tabela.Consulta,'CO_PCOFINS','F');

           end;
           Tabela.Consulta.Next;
         end;
       end;

       SQLString(Tabela.Consulta,'Select vlBaseIcms,vlIcms,vlBaseICmsSt,vlIcmsSt,'+
                                    'vltotNota,vlFrete,vlSeguro,vlDesconto,'+
                                    'vlOutras,vltotNota,vltotProd,vTotTrib, '+
                                    'vlpis, vlcofins '+
                             ' from nnfe '+
                             ' where no_codigo='+inttostr(CodigoNota));



       Total.DescAcrEntr.vDescSubtot := MostCampoQ(Tabela.Consulta,'vlDesconto','F');
       Total.DescAcrEntr.vAcresSubtot:= MostCampoQ(Tabela.Consulta,'vloutras','F');
       Total.vCFe                    := MostCampoQ(Tabela.Consulta,'vltotNota','F');
       Total.vCFeLei12741            := MostCampoQ(Tabela.Consulta,'vTotTrib','F');

       if SQLString(Tabela.Consulta,'select * from formapgto where codvenda='+
                 inttostr(CodigoVenda)) then
       begin
         while not(Tabela.Consulta.Eof) do
         begin
            with Pagto.Add do
            begin
               if ((Tabela.Consulta.FieldByName('FORMA').AsString='Dinheiro') or
                    (Tabela.Consulta.FieldByName('FORMA').AsString='Troca') or
                    (Tabela.Consulta.FieldByName('FORMA').AsString='Boleto') or
                   (Tabela.Consulta.FieldByName('FORMA').AsString='Vale/Tichets')) then
               begin
                 cMP := mpDinheiro;
                 vMP := Tabela.Consulta.FieldByName('VALOR').AsFloat;
               end else if ((Tabela.Consulta.FieldByName('FORMA').AsString='Cheque') or
                            (Tabela.Consulta.FieldByName('FORMA').AsString='Cheque-pre')) then
               begin
                 cMP := mpCheque;
                 vMP := Tabela.Consulta.FieldByName('VALOR').AsFloat;
               end else if ((Tabela.Consulta.FieldByName('FORMA').AsString='Cartao') or
                           (Tabela.Consulta.FieldByName('FORMA').AsString='Cartão')) then
               begin
                 cMP := mpCartaodeCredito;
                 vMP := Tabela.Consulta.FieldByName('VALOR').AsFloat;
               end else if ((Tabela.Consulta.FieldByName('FORMA').AsString='Crediario')) then
               begin
                 cMP := mpCreditoLoja;
                 vMP := Tabela.Consulta.FieldByName('VALOR').AsFloat;
               end else
               begin
                 cMP := mpOutros;
                 vMP := Tabela.Consulta.FieldByName('VALOR').AsFloat;
               end;
            end;
            Tabela.Consulta.Next;
         end;
       end;

       // | Informações Adicionais
       if SQLString(Tabela.Consulta,' Select inffisco,infcompl,infcomplusu '+
                                 ' from nnfe where no_codigo='+inttostr(CodigoNota)) then
       begin
         InfAdic.infCpl     :=MostCampoQ(Tabela.Consulta,'INFCOMPL','S')+
                           MostCampoQ(Tabela.Consulta,'INFCOMPLUSU','S');
       end;
     end;

     sXMLGerado := ModACBr.ACBrSAT.CFe.GetXMLString( True );

     DirEnv := ExtractFilePath(Application.ExeName)+'\Env\';
     DirResp := ExtractFilePath(Application.ExeName)+'\Res\';

     try
        ModACBr.ACBrSAT.EnviarDadosVenda();
     except
     end;

     numSessao := ModACBr.ACBrSAT.numeroSessao;
     ForceDirectories( DirEnv );
     ForceDirectories( DirResp );

     TempMemo.Lines.Text:= sXMLGerado;
     TempMemo.Lines.SaveToFile(DirEnv + 'CFe-'+IntToStrZero(numSessao,6)+'.xml');

     if ModACBr.ACBrSAT.Resposta.codigoDeRetorno = 6000 then
     begin
        TempMemo.Lines.Text:=ModACBr.ACBrSAT.CFe.AsXMLString;
        TempMemo.Lines.SaveToFile(DirResp + 'CFe-'+ModACBr.ACBrSAT.CFe.infCFe.ID+'-rec.xml');

        if ImpPerguntaSAT then
        begin
           if varSATImpresaoDetalhada then
              ModACBr.ACBrSAT.ImprimirExtrato
           else ModACBr.ACBrSAT.ImprimirExtratoResumido;
        end;
     end else
     begin
       showmessage(ModACBr.ACBrSAT.Resposta.RetornoLst.Text);
     end;

  finally
     FreeAndNil(TempMemo);
     if Assigned(Frm_MensagemLoadNF) then
         FreeAndNil(Frm_MensagemLoadNF);
  end;
end;
Editado por sidnei_alves1
  • Curtir 1
  • Membros Pro
Postado

Bom dia. 

Fiz o teste aqui usando o SATTeste.exe. o mesmo erro ocorre ao enviar a segunda em diante.

 

erro: EExternalException - External exception C0000008.

 

é o mesmo que ocorrer com minha aplicação. A primeira venda vai normal. na segunda em diante ja da erro.

  • Fundadores
Postado

O tópico mencionado não é o mesmo problema (e já foi corrigido)

 

Se você descrever o passo a passo corretamente, usando o SATTeste.exe... O dia (e quando) eu receber o SAT da Dimep... eu poderia testar o problema...

Ou seja, no momento não tenho as ferramentas necessárias pra debugar.. (não tenho o equipamento)

 

Uma tentativa, é verificar se você está usando a última versão da DLL

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.

  • Membros Pro
Postado

Vou atualizar o meus fontes e assim que testar com os fontes atualizados posto aqui o resultado, mas a versão da minha dll é diferente 1.0.0.12.

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Membros Pro
Postado

Mandei no seu e-mail, não tenho permissão para anexar pelo forum este tipo de arquivo, me envie a sua para que eu tb possa testar aqui, atualizei os fontes e ainda está funcionando com a versão da dll que eu tenho...

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Membros Pro
Postado

Marlus da DIMEP vai disponibilizar outra versão oficial da DLL, ele me mandou uma de teste recompilada e funcionou normal, ele falo que amanha ja deve ta no 4bee pra download.

Postado

Pessoal, vcs que tem contato com o pessoal da DIMEP e inclusive achando bugs na DLL não seria a hora de pedir pro pessoal da DIMEP disponibilizar 1 (um) equipamento pro ACBr?, a DIMEP tem MUITO a ganhar com isso, vide a Epson T-20 que o pessoal da epson disponibilizou e já está redonda pra NFC-e. #ficaadica.

  • 3 semanas depois ...
Postado

Compramos um Kit SAT Dimep.

Porém só conseguimos consultar Status e Log do sat pois não sabemos qual os dados que vieram ativado e também não conseguimos contato no suporte.

Alguém saberia informar:

O CNPJ e IE do contribuinte que está ativado?

o CNPJ da Software House e também a assinatura a ser utilizada?

Com isso acho que conseguiremos emitir os primeiros cupons sem utilizar o emulador.

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