Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao assinar um CT'e-OS - "NENHUM ELEMENTO ENCONTRADO"


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

Recommended Posts

Postado

Estou com um problema, ao assinar um CT'e-OS, aparece a mensagem de "Nenhum Elemento Encontrado", já revisei o código e não consegui achar o que está faltando, vi em um tópico aqui no grupo um erro igual, mas no meu código está informando o modelo 67 para CT'e-OS, peço para gerar um PDF com as informações carregadas, e as informações aparecem, já comparei com a versão de exemplo da pasta do componente e está seguindo todos os passos. Vou colocar o código para ver se alguém me ajuda. Desde já agradeço.

      dmCTe.ConfiguraCTe;
      dmCTe.ACBrCTe.Conhecimentos.Clear;
      CTE_OS;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].ImprimirPDF;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].Assinar;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].Validar;

 

procedure TdmCTe.ConfiguraCTe;
var Ok: boolean;
    PathMensal: String;
begin
  ACBrCTe.Configuracoes.Geral.SSLLib              := TSSLLib(dados.qryConfigTIPO_EMISSAO.Value);
  ACBrCTe.Configuracoes.Geral.SSLCryptLib         := TSSLCryptLib(dados.qryConfigCRYPTLIB.AsInteger);
  ACBrCTe.Configuracoes.Geral.SSLHttpLib          := TSSLHttpLib(dados.qryConfigHTTPLIB.AsInteger);
  ACBrCTe.Configuracoes.Geral.SSLXmlSignLib       := TSSLXmlSignLib(dados.qryConfigXMLSIGN.AsInteger);
  ACBrCTe.SSL.SSLType                             := TSSLType(dados.qryconfigSSL_TIPO.AsInteger);
  ACBrCTe.Configuracoes.Certificados.NumeroSerie  := dados.qryConfigNUMEROSERIECERTFICADO.Value;
  ACBrCTe.Configuracoes.Certificados.Senha        := dados.qryConfigSENHACERTIFICADO.Value;
  ACBrCTe.Configuracoes.Certificados.ArquivoPFX   := dados.qryConfigCAMINHO_CERTIFICADO.Value;
  ACBrCTe.Configuracoes.Arquivos.AdicionarLiteral := true;
  ACBrCTe.Configuracoes.Arquivos.EmissaoPathCTe   := true;
  ACBrCTe.Configuracoes.Arquivos.SepararPorMes    := true;
  ACBrCTe.Configuracoes.Arquivos.SepararPorCNPJ   := true;
  ACBrCTe.Configuracoes.Arquivos.PathEvento       := trim(dados.qryConfigPATH_EVENTO_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := trim(dados.qryConfigPATH_SALVAR_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathCTe          := trim(dados.qryConfigPATH_ENVIADAS_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathSchemas      := dados.qryConfigPATH_SCHEMA_CTE.Value;
  ACBrCTe.Configuracoes.Arquivos.PathInu          := dados.qryConfigPATH_INU_CTE.Value;
  PathMensal                                      := ACBrCTe.Configuracoes.Arquivos.GetPathCTe(0);
  case dados.qryConfigVERSAO_CTE.Value of
    0: ACBrCTe.Configuracoes.Geral.VersaoDF       := TVersaoCTe(0);
    1: ACBrCTe.Configuracoes.Geral.VersaoDF       := TVersaoCTe(1);
  end;
  // ACBrCTe.SSL.DescarregarCertificado;
  // Configurações -> Geral
  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := PathMensal;
  ACBrCTe.DACTE.PathPDF                           := dados.qryConfigPATH_PDF_CTE.Value;
  // Configurações -> WebServices
  ACBrCTe.Configuracoes.WebServices.AguardarConsultaRet       := 15;
  ACBrCTe.Configuracoes.WebServices.AjustaAguardaConsultaRet  := true;
  ACBrCTe.Configuracoes.WebServices.IntervaloTentativas       := 5;
  ACBrCTe.Configuracoes.WebServices.Tentativas                := 15;
  ACBrCTe.Configuracoes.WebServices.UF                        := dados.qryConfigUF.Text;
  ACBrCTe.Configuracoes.WebServices.Visualizar                := false;
  if dados.qryConfigVISUALIZAR.Value = 'S' then
    ACBrCTe.Configuracoes.WebServices.Visualizar              := true;
  ACBrCTe.Configuracoes.WebServices.Salvar                    := false;
  // DAMDFe
  if ACBrCTe.DACTE <> nil then
  begin
    ACBrCTe.DACTE.PathPDF                                     := dados.qryConfigPATH_PDF_CTE.Value;
    ACBrCTe.DACTE.ExpandeLogoMarca                            := false;
    ACBrCTe.DACTE.Logo                                        := dados.qryConfigLOGOMARCA.Value;
    ACBrCTe.DACTE.TipoDACTE                                   := StrToTpImp(Ok, IntToStr(1));
  end;
  // ACBrCTe.Configuracoes.Arquivos.Salvar := true;
  ACBrCTe.Configuracoes.WebServices.Ambiente := taProducao;
  if dados.qryConfigAMBIENTE.Value = 1 then
    ACBrCTe.Configuracoes.WebServices.Ambiente := taHomologacao;
  ACBrCTeDACTeRL1.Sistema := dados.qryParametroEMPRESA.Value + ' | ' +
                             dados.qryParametroFONE1.Value + ' ' +
                             dados.qryparametroFONE2.Value;
  ACBrCTeDACTeRL1.Site := dados.qryparametroSITE.Value;

end;
 

 

procedure TfrmConsCTe.CTE_OS;
begin
//  dmCTe.ACBrCTe.Conhecimentos.Clear;
  with dmCTe.ACBrCTe.Conhecimentos.Add.CTe do
  begin
    infCTe.versao   := 3.0;
    Ide.cUF         := UFtoCUF(dados.qryEmpresaUF.Value);
    Ide.nCT         := qryCteNUMERO.Value;
    Ide.cCT         := GerarCodigoDFe(qryCteNUMERO.Value);
    Ide.CFOP        := qryCteCFOP.Value;
    Ide.natOp       := 'PRESTACAO SERVICO TRANSPORTE';
    Ide.modelo      := 67;
    Ide.serie       := dados.qryConfigCTE_SERIE.AsInteger;
    Ide.dhEmi       := now;
    Ide.tpImp       := tiRetrato;
    Ide.tpEmis      := teNormal;

    if dados.qryConfigAMBIENTE.Value = 0 then
      Ide.tpAmb     := taProducao
    else
      Ide.tpAmb     := taHomologacao;

    Ide.tpCTe       := tcNormal;
    case qryCteTIPOSERVICO.Value of
      0: Ide.tpServ := tsNormal;
      1: Ide.tpServ := tsSubcontratacao;
      2: Ide.tpServ := tsRedespacho;
      3: Ide.tpServ := tsIntermediario;
      4: Ide.tpServ := tsMultimodal;
      5: Ide.tpServ := tsTranspPessoas;
      6: Ide.tpServ := tsTranspValores;
      7: Ide.tpServ := tsExcessoBagagem;
    end;
    Ide.procEmi     := peAplicativoContribuinte;
    Ide.verProc     := '3.0';
    Ide.cMunEnv     := dados.qryEmpresaID_CIDADE.Value;
    Ide.xMunEnv     := dados.qryEmpresaCIDADE.Value;
    Ide.UFEnv       := dados.qryEmpresaUF.Value;
    Ide.modal       := mdRodoviario;
    Ide.indIEToma   := TpcnindIEDest(dados.qryConfigTIPO_CONTRIBUINTE_CTE.Value);
    Ide.cMunIni     := qryCteCODMUNINI.Value;
    Ide.xMunIni     := qryCteMUNICIPIOINI.Value;
    Ide.UFIni       := qryCteUFINI.Value;
    Ide.cMunFim     := qryCteCODMUNFIM.Value;
    Ide.xMunFim     := qryCteMINICIPIOFIM.Value;
    Ide.UFFim       := qryCteUFFIM.Value;

    Emit.CNPJ               := TiraPontos(dados.qryEmpresaCNPJ.Value);
    Emit.IE                 := TiraPontos(dados.qryEmpresaIE.Value);
    Emit.xNome              := dados.qryEmpresaRAZAO.Value;
    Emit.xFant              := dados.qryEmpresaFANTASIA.Value;
    Emit.enderEmit.xLgr     := dados.qryEmpresaENDERECO.Value;
    Emit.enderEmit.nro      := dados.qryEmpresaNUMERO.Value;
    Emit.enderEmit.xCpl     := '';
    Emit.enderEmit.xBairro  := dados.qryEmpresaBAIRRO.Value;
    Emit.enderEmit.cMun     := dados.qryEmpresaID_CIDADE.Value;
    Emit.enderEmit.xMun     := dados.qryEmpresaCIDADE.Value;
    Emit.enderEmit.CEP      := dados.qryEmpresaCEP.AsInteger;
    Emit.enderEmit.UF       := dados.qryEmpresaUF.Value;
    Emit.enderEmit.fone     := dados.qryEmpresaFONE.Value;

    // Adiciona dados do tomador do serviço
    qryTomador.Close;
    qryTomador.Params[0].Value := qryCteFKTOMADOR.Value;
    qryTomador.Open;

    toma.CNPJCPF            := TiraPontos(qryTomadorCNPJ.Value);
    if trim(qryTomadorIE.AsString) <> '' then
      toma.IE               := TiraPontos(qryTomadorIE.Value);
    toma.xNome              := qryTomadorRAZAO.Value;
    toma.xFant              := qryTomadorFANTASIA.Value;
    toma.fone               := '';
    toma.enderToma.xLgr     := qryTomadorENDERECO.Value;
    toma.enderToma.nro      := qryTomadorNUMERO.Value;
    toma.enderToma.xCpl     := '';
    toma.enderToma.xBairro  := qryTomadorBAIRRO.Value;
    toma.enderToma.cMun     := qryTomadorCODMUN.Value;
    toma.enderToma.xMun     := qryTomadorMUNICIPIO.Value;
    toma.enderToma.CEP      := qryTomadorCEP.AsInteger;
    toma.enderToma.UF       := qryTomadorUF.Value;
    toma.enderToma.cPais    := 1058;
    toma.enderToma.xPais    := 'BRASIL';
    toma.email              := '';

    { Carrega valores da prestacao de servico }
    vPrest.vTPrest  := qryCteTOTAL.AsFloat;
    vPrest.vRec     := qryCteRECEBIDO.AsFloat;
    with vPrest.comp.Add do
    begin
      xNome := 'Componente 1';
      vComp := qryCteRECEBIDO.AsFloat;
    end;

    // 90 - ICMS Outros
    if Emit.enderEmit.UF = Rem.enderReme.UF then
    begin
      Imp.ICMS.SituTrib       := cst90;
      Imp.ICMS.ICMS90.CST     := cst90;
      Imp.ICMS.ICMS90.pRedBC  := 0.00;
      Imp.ICMS.ICMS90.vBC     := 0.00;
      Imp.ICMS.ICMS90.pICMS   := 0.00;
      Imp.ICMS.ICMS90.vICMS   := 0;
      Imp.ICMS.ICMS90.vCred   := 0.00;
    end
    else
    begin
      Imp.ICMS.SituTrib                   := cstICMSOutraUF;
      Imp.ICMS.ICMSOutraUF.CST            := cstICMSOutraUF; // ICMS Outros
      Imp.ICMS.ICMSOutraUF.pRedBCOutraUF  := 0;
      Imp.ICMS.ICMSOutraUF.vBCOutraUF     := 0;
      Imp.ICMS.ICMSOutraUF.pICMSOutraUF   := 0;
      Imp.ICMS.ICMSOutraUF.vICMSOutraUF   := 0;
    end;

    Imp.infAdFisco  := 'Lei da Transparencia: O valor aproximado de tributos incidentes sobre o preço deste servico é de R$' +
                       FormatFloat(',0.00', qryCteVTOTTIRB.AsFloat) + ' Fonte: IBPT';
    Imp.vTotTrib    := qryCteVTOTTIRB.AsFloat;

    // Impostos federais
    Imp.infTribFed.vPIS     := qryCteVPIS.AsFloat;
    Imp.infTribFed.vCOFINS  := qryCteVCOFINS.AsFloat;
    Imp.infTribFed.vIR      := qryCteVIR.AsFloat;
    Imp.infTribFed.vINSS    := qryCteVINSS.AsFloat;
    Imp.infTribFed.vCSLL    := qryCteVCLSS.AsFloat;

    { Carrega as informacoes CTe Normal }
    infCTeNorm.infServico.xDescServ := qryCteDESCRICAOSERVICO.Value;;;
    infCTeNorm.infServico.qCarga    := qryCteQTD.AsFloat;;

    { Carrega informacoes do seguro }
    with infCTeNorm.Seg.Add do
    begin
      respSeg := rsTomadorServico;
      xSeg := qryCteXSEG.Value;
      nApol := qryCteNAPOLICE.Value;
    end;

    { Carrega Informacoes do Modal }
    { Rodoviario }
    infCTeNorm.rodoOS.TAF                         := qryCteTAF.AsString;
    infCTeNorm.rodoOS.NroRegEstadual              := qryCteNROREGESTADUAL.AsString;
    infCTeNorm.rodoOS.infFretamento.tpFretamento  := TtpFretamento(1);
    infCTeNorm.rodoOS.infFretamento.dhViagem      := now;

    // responsavel tecnico 22-03-2019
    if dados.qryEmpresaRESPONSAVEL_TECNICO.Value = 'S' then
    begin

      dados.qryRespTecnico.Close;
      dados.qryRespTecnico.Open;

      infRespTec.CNPJ     := TiraPontos(dados.qryRespTecnicoCNPJ.Value);
      infRespTec.xContato := dados.qryRespTecnicoNOME.Value;
      infRespTec.email    := dados.qryRespTecnicoEMAIL.Value;
      infRespTec.fone     := TiraPontos(dados.qryRespTecnicoTELEFONE.Value);
      infRespTec.hashCSRT := dados.qryRespTecnicoCSRT.Value;
    end;

    { Carega inf veiculos do modal rodo 0-1 }
    qryTransp.Close;
    qryTransp.Params[0].Value := qryCteFKTRANSPORTADOR.Value;
    qryTransp.Open;

    with infCTeNorm.rodoOS.veic do
    begin
      placa     := qryTranspPLACA.Value;
      RENAVAM   := qryTranspRENAVAM.Value;
      UF        := qryTranspUFPLACA.Value;
    end;
  end;
end;

  • Consultores
Postado

Boa noite,

Tente emitir pelo programa de exemplo,  além de apenas comparar, e se não ocorrer o mesmo problema já tem um caminho para seguir.

Tentou debugar este ponto de assinatura deste outro tópico, para ver se está chegando na assinatura correta?

Revise as configurações de ssl 

A3 : Windows atualizado

SSLCryplib = cryWinCrypt

SSLHttpLib = httpWinHttp

SSLLiB = libWinCrypt

SSLXMLSignLib = xsLibXml2

SSLType = LT_TLSv1_2

A1:

SSLLib := libOpenSSL

SSLCryptLib := cryOpenSSL

SSLHttpLib := httpOpenSSL

SSLXmlSignLib  := xsLibXml2

SSLType := LT_TLSv1_2

Copie as dlls atuais na pasta do seu exe.

trunk2/DLLs/OpenSSL/1.1.1.10/X86/

Copie também as dlls atuais da LibXml2.

trunk2/DLLs/LibXml2/x86/

Lembrando, se a sua aplicação for x86, use as dlls x86, mesmo que o S.O. seja 64.

  • Moderadores
Postado
19 horas atrás, José Justino disse:

Estou com um problema, ao assinar um CT'e-OS, aparece a mensagem de "Nenhum Elemento Encontrado", já revisei o código e não consegui achar o que está faltando, vi em um tópico aqui no grupo um erro igual, mas no meu código está informando o modelo 67 para CT'e-OS, peço para gerar um PDF com as informações carregadas, e as informações aparecem, já comparei com a versão de exemplo da pasta do componente e está seguindo todos os passos. Vou colocar o código para ver se alguém me ajuda. Desde já agradeço.

      dmCTe.ConfiguraCTe;
      dmCTe.ACBrCTe.Conhecimentos.Clear;
      CTE_OS;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].ImprimirPDF;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].Assinar;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].Validar;

 

procedure TdmCTe.ConfiguraCTe;
var Ok: boolean;
    PathMensal: String;
begin
  ACBrCTe.Configuracoes.Geral.SSLLib              := TSSLLib(dados.qryConfigTIPO_EMISSAO.Value);
  ACBrCTe.Configuracoes.Geral.SSLCryptLib         := TSSLCryptLib(dados.qryConfigCRYPTLIB.AsInteger);
  ACBrCTe.Configuracoes.Geral.SSLHttpLib          := TSSLHttpLib(dados.qryConfigHTTPLIB.AsInteger);
  ACBrCTe.Configuracoes.Geral.SSLXmlSignLib       := TSSLXmlSignLib(dados.qryConfigXMLSIGN.AsInteger);
  ACBrCTe.SSL.SSLType                             := TSSLType(dados.qryconfigSSL_TIPO.AsInteger);
  ACBrCTe.Configuracoes.Certificados.NumeroSerie  := dados.qryConfigNUMEROSERIECERTFICADO.Value;
  ACBrCTe.Configuracoes.Certificados.Senha        := dados.qryConfigSENHACERTIFICADO.Value;
  ACBrCTe.Configuracoes.Certificados.ArquivoPFX   := dados.qryConfigCAMINHO_CERTIFICADO.Value;
  ACBrCTe.Configuracoes.Arquivos.AdicionarLiteral := true;
  ACBrCTe.Configuracoes.Arquivos.EmissaoPathCTe   := true;
  ACBrCTe.Configuracoes.Arquivos.SepararPorMes    := true;
  ACBrCTe.Configuracoes.Arquivos.SepararPorCNPJ   := true;
  ACBrCTe.Configuracoes.Arquivos.PathEvento       := trim(dados.qryConfigPATH_EVENTO_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := trim(dados.qryConfigPATH_SALVAR_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathCTe          := trim(dados.qryConfigPATH_ENVIADAS_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathSchemas      := dados.qryConfigPATH_SCHEMA_CTE.Value;
  ACBrCTe.Configuracoes.Arquivos.PathInu          := dados.qryConfigPATH_INU_CTE.Value;
  PathMensal                                      := ACBrCTe.Configuracoes.Arquivos.GetPathCTe(0);
  case dados.qryConfigVERSAO_CTE.Value of
    0: ACBrCTe.Configuracoes.Geral.VersaoDF       := TVersaoCTe(0);
    1: ACBrCTe.Configuracoes.Geral.VersaoDF       := TVersaoCTe(1);
  end;
  // ACBrCTe.SSL.DescarregarCertificado;
  // Configurações -> Geral
  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := PathMensal;
  ACBrCTe.DACTE.PathPDF                           := dados.qryConfigPATH_PDF_CTE.Value;
  // Configurações -> WebServices
  ACBrCTe.Configuracoes.WebServices.AguardarConsultaRet       := 15;
  ACBrCTe.Configuracoes.WebServices.AjustaAguardaConsultaRet  := true;
  ACBrCTe.Configuracoes.WebServices.IntervaloTentativas       := 5;
  ACBrCTe.Configuracoes.WebServices.Tentativas                := 15;
  ACBrCTe.Configuracoes.WebServices.UF                        := dados.qryConfigUF.Text;
  ACBrCTe.Configuracoes.WebServices.Visualizar                := false;
  if dados.qryConfigVISUALIZAR.Value = 'S' then
    ACBrCTe.Configuracoes.WebServices.Visualizar              := true;
  ACBrCTe.Configuracoes.WebServices.Salvar                    := false;
  // DAMDFe
  if ACBrCTe.DACTE <> nil then
  begin
    ACBrCTe.DACTE.PathPDF                                     := dados.qryConfigPATH_PDF_CTE.Value;
    ACBrCTe.DACTE.ExpandeLogoMarca                            := false;
    ACBrCTe.DACTE.Logo                                        := dados.qryConfigLOGOMARCA.Value;
    ACBrCTe.DACTE.TipoDACTE                                   := StrToTpImp(Ok, IntToStr(1));
  end;
  // ACBrCTe.Configuracoes.Arquivos.Salvar := true;
  ACBrCTe.Configuracoes.WebServices.Ambiente := taProducao;
  if dados.qryConfigAMBIENTE.Value = 1 then
    ACBrCTe.Configuracoes.WebServices.Ambiente := taHomologacao;
  ACBrCTeDACTeRL1.Sistema := dados.qryParametroEMPRESA.Value + ' | ' +
                             dados.qryParametroFONE1.Value + ' ' +
                             dados.qryparametroFONE2.Value;
  ACBrCTeDACTeRL1.Site := dados.qryparametroSITE.Value;

end;
 

 

procedure TfrmConsCTe.CTE_OS;
begin
//  dmCTe.ACBrCTe.Conhecimentos.Clear;
  with dmCTe.ACBrCTe.Conhecimentos.Add.CTe do
  begin
    infCTe.versao   := 3.0;
    Ide.cUF         := UFtoCUF(dados.qryEmpresaUF.Value);
    Ide.nCT         := qryCteNUMERO.Value;
    Ide.cCT         := GerarCodigoDFe(qryCteNUMERO.Value);
    Ide.CFOP        := qryCteCFOP.Value;
    Ide.natOp       := 'PRESTACAO SERVICO TRANSPORTE';
    Ide.modelo      := 67;
    Ide.serie       := dados.qryConfigCTE_SERIE.AsInteger;
    Ide.dhEmi       := now;
    Ide.tpImp       := tiRetrato;
    Ide.tpEmis      := teNormal;

    if dados.qryConfigAMBIENTE.Value = 0 then
      Ide.tpAmb     := taProducao
    else
      Ide.tpAmb     := taHomologacao;

    Ide.tpCTe       := tcNormal;
    case qryCteTIPOSERVICO.Value of
      0: Ide.tpServ := tsNormal;
      1: Ide.tpServ := tsSubcontratacao;
      2: Ide.tpServ := tsRedespacho;
      3: Ide.tpServ := tsIntermediario;
      4: Ide.tpServ := tsMultimodal;
      5: Ide.tpServ := tsTranspPessoas;
      6: Ide.tpServ := tsTranspValores;
      7: Ide.tpServ := tsExcessoBagagem;
    end;
    Ide.procEmi     := peAplicativoContribuinte;
    Ide.verProc     := '3.0';
    Ide.cMunEnv     := dados.qryEmpresaID_CIDADE.Value;
    Ide.xMunEnv     := dados.qryEmpresaCIDADE.Value;
    Ide.UFEnv       := dados.qryEmpresaUF.Value;
    Ide.modal       := mdRodoviario;
    Ide.indIEToma   := TpcnindIEDest(dados.qryConfigTIPO_CONTRIBUINTE_CTE.Value);
    Ide.cMunIni     := qryCteCODMUNINI.Value;
    Ide.xMunIni     := qryCteMUNICIPIOINI.Value;
    Ide.UFIni       := qryCteUFINI.Value;
    Ide.cMunFim     := qryCteCODMUNFIM.Value;
    Ide.xMunFim     := qryCteMINICIPIOFIM.Value;
    Ide.UFFim       := qryCteUFFIM.Value;

    Emit.CNPJ               := TiraPontos(dados.qryEmpresaCNPJ.Value);
    Emit.IE                 := TiraPontos(dados.qryEmpresaIE.Value);
    Emit.xNome              := dados.qryEmpresaRAZAO.Value;
    Emit.xFant              := dados.qryEmpresaFANTASIA.Value;
    Emit.enderEmit.xLgr     := dados.qryEmpresaENDERECO.Value;
    Emit.enderEmit.nro      := dados.qryEmpresaNUMERO.Value;
    Emit.enderEmit.xCpl     := '';
    Emit.enderEmit.xBairro  := dados.qryEmpresaBAIRRO.Value;
    Emit.enderEmit.cMun     := dados.qryEmpresaID_CIDADE.Value;
    Emit.enderEmit.xMun     := dados.qryEmpresaCIDADE.Value;
    Emit.enderEmit.CEP      := dados.qryEmpresaCEP.AsInteger;
    Emit.enderEmit.UF       := dados.qryEmpresaUF.Value;
    Emit.enderEmit.fone     := dados.qryEmpresaFONE.Value;

    // Adiciona dados do tomador do serviço
    qryTomador.Close;
    qryTomador.Params[0].Value := qryCteFKTOMADOR.Value;
    qryTomador.Open;

    toma.CNPJCPF            := TiraPontos(qryTomadorCNPJ.Value);
    if trim(qryTomadorIE.AsString) <> '' then
      toma.IE               := TiraPontos(qryTomadorIE.Value);
    toma.xNome              := qryTomadorRAZAO.Value;
    toma.xFant              := qryTomadorFANTASIA.Value;
    toma.fone               := '';
    toma.enderToma.xLgr     := qryTomadorENDERECO.Value;
    toma.enderToma.nro      := qryTomadorNUMERO.Value;
    toma.enderToma.xCpl     := '';
    toma.enderToma.xBairro  := qryTomadorBAIRRO.Value;
    toma.enderToma.cMun     := qryTomadorCODMUN.Value;
    toma.enderToma.xMun     := qryTomadorMUNICIPIO.Value;
    toma.enderToma.CEP      := qryTomadorCEP.AsInteger;
    toma.enderToma.UF       := qryTomadorUF.Value;
    toma.enderToma.cPais    := 1058;
    toma.enderToma.xPais    := 'BRASIL';
    toma.email              := '';

    { Carrega valores da prestacao de servico }
    vPrest.vTPrest  := qryCteTOTAL.AsFloat;
    vPrest.vRec     := qryCteRECEBIDO.AsFloat;
    with vPrest.comp.Add do
    begin
      xNome := 'Componente 1';
      vComp := qryCteRECEBIDO.AsFloat;
    end;

    // 90 - ICMS Outros
    if Emit.enderEmit.UF = Rem.enderReme.UF then
    begin
      Imp.ICMS.SituTrib       := cst90;
      Imp.ICMS.ICMS90.CST     := cst90;
      Imp.ICMS.ICMS90.pRedBC  := 0.00;
      Imp.ICMS.ICMS90.vBC     := 0.00;
      Imp.ICMS.ICMS90.pICMS   := 0.00;
      Imp.ICMS.ICMS90.vICMS   := 0;
      Imp.ICMS.ICMS90.vCred   := 0.00;
    end
    else
    begin
      Imp.ICMS.SituTrib                   := cstICMSOutraUF;
      Imp.ICMS.ICMSOutraUF.CST            := cstICMSOutraUF; // ICMS Outros
      Imp.ICMS.ICMSOutraUF.pRedBCOutraUF  := 0;
      Imp.ICMS.ICMSOutraUF.vBCOutraUF     := 0;
      Imp.ICMS.ICMSOutraUF.pICMSOutraUF   := 0;
      Imp.ICMS.ICMSOutraUF.vICMSOutraUF   := 0;
    end;

    Imp.infAdFisco  := 'Lei da Transparencia: O valor aproximado de tributos incidentes sobre o preço deste servico é de R$' +
                       FormatFloat(',0.00', qryCteVTOTTIRB.AsFloat) + ' Fonte: IBPT';
    Imp.vTotTrib    := qryCteVTOTTIRB.AsFloat;

    // Impostos federais
    Imp.infTribFed.vPIS     := qryCteVPIS.AsFloat;
    Imp.infTribFed.vCOFINS  := qryCteVCOFINS.AsFloat;
    Imp.infTribFed.vIR      := qryCteVIR.AsFloat;
    Imp.infTribFed.vINSS    := qryCteVINSS.AsFloat;
    Imp.infTribFed.vCSLL    := qryCteVCLSS.AsFloat;

    { Carrega as informacoes CTe Normal }
    infCTeNorm.infServico.xDescServ := qryCteDESCRICAOSERVICO.Value;;;
    infCTeNorm.infServico.qCarga    := qryCteQTD.AsFloat;;

    { Carrega informacoes do seguro }
    with infCTeNorm.Seg.Add do
    begin
      respSeg := rsTomadorServico;
      xSeg := qryCteXSEG.Value;
      nApol := qryCteNAPOLICE.Value;
    end;

    { Carrega Informacoes do Modal }
    { Rodoviario }
    infCTeNorm.rodoOS.TAF                         := qryCteTAF.AsString;
    infCTeNorm.rodoOS.NroRegEstadual              := qryCteNROREGESTADUAL.AsString;
    infCTeNorm.rodoOS.infFretamento.tpFretamento  := TtpFretamento(1);
    infCTeNorm.rodoOS.infFretamento.dhViagem      := now;

    // responsavel tecnico 22-03-2019
    if dados.qryEmpresaRESPONSAVEL_TECNICO.Value = 'S' then
    begin

      dados.qryRespTecnico.Close;
      dados.qryRespTecnico.Open;

      infRespTec.CNPJ     := TiraPontos(dados.qryRespTecnicoCNPJ.Value);
      infRespTec.xContato := dados.qryRespTecnicoNOME.Value;
      infRespTec.email    := dados.qryRespTecnicoEMAIL.Value;
      infRespTec.fone     := TiraPontos(dados.qryRespTecnicoTELEFONE.Value);
      infRespTec.hashCSRT := dados.qryRespTecnicoCSRT.Value;
    end;

    { Carega inf veiculos do modal rodo 0-1 }
    qryTransp.Close;
    qryTransp.Params[0].Value := qryCteFKTRANSPORTADOR.Value;
    qryTransp.Open;

    with infCTeNorm.rodoOS.veic do
    begin
      placa     := qryTranspPLACA.Value;
      RENAVAM   := qryTranspRENAVAM.Value;
      UF        := qryTranspUFPLACA.Value;
    end;
  end;
end;

e se quiser trazer códigos, por favor anexe como arquivo. assim não fica poluido o post para pesquisas futuras

  • Curtir 2
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Solution
Postado
Em 28/07/2022 at 13:00, José Justino disse:

Estou com um problema, ao assinar um CT'e-OS, aparece a mensagem de "Nenhum Elemento Encontrado", já revisei o código e não consegui achar o que está faltando, vi em um tópico aqui no grupo um erro igual, mas no meu código está informando o modelo 67 para CT'e-OS, peço para gerar um PDF com as informações carregadas, e as informações aparecem, já comparei com a versão de exemplo da pasta do componente e está seguindo todos os passos. Vou colocar o código para ver se alguém me ajuda. Desde já agradeço.

      dmCTe.ConfiguraCTe;
      dmCTe.ACBrCTe.Conhecimentos.Clear;
      CTE_OS;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].ImprimirPDF;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].Assinar;
      dmCTe.ACBrCTe.Conhecimentos.Items[0].Validar;

 

procedure TdmCTe.ConfiguraCTe;
var Ok: boolean;
    PathMensal: String;
begin
  ACBrCTe.Configuracoes.Geral.SSLLib              := TSSLLib(dados.qryConfigTIPO_EMISSAO.Value);
  ACBrCTe.Configuracoes.Geral.SSLCryptLib         := TSSLCryptLib(dados.qryConfigCRYPTLIB.AsInteger);
  ACBrCTe.Configuracoes.Geral.SSLHttpLib          := TSSLHttpLib(dados.qryConfigHTTPLIB.AsInteger);
  ACBrCTe.Configuracoes.Geral.SSLXmlSignLib       := TSSLXmlSignLib(dados.qryConfigXMLSIGN.AsInteger);
  ACBrCTe.SSL.SSLType                             := TSSLType(dados.qryconfigSSL_TIPO.AsInteger);
  ACBrCTe.Configuracoes.Certificados.NumeroSerie  := dados.qryConfigNUMEROSERIECERTFICADO.Value;
  ACBrCTe.Configuracoes.Certificados.Senha        := dados.qryConfigSENHACERTIFICADO.Value;
  ACBrCTe.Configuracoes.Certificados.ArquivoPFX   := dados.qryConfigCAMINHO_CERTIFICADO.Value;
  ACBrCTe.Configuracoes.Arquivos.AdicionarLiteral := true;
  ACBrCTe.Configuracoes.Arquivos.EmissaoPathCTe   := true;
  ACBrCTe.Configuracoes.Arquivos.SepararPorMes    := true;
  ACBrCTe.Configuracoes.Arquivos.SepararPorCNPJ   := true;
  ACBrCTe.Configuracoes.Arquivos.PathEvento       := trim(dados.qryConfigPATH_EVENTO_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := trim(dados.qryConfigPATH_SALVAR_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathCTe          := trim(dados.qryConfigPATH_ENVIADAS_CTE.Value);
  ACBrCTe.Configuracoes.Arquivos.PathSchemas      := dados.qryConfigPATH_SCHEMA_CTE.Value;
  ACBrCTe.Configuracoes.Arquivos.PathInu          := dados.qryConfigPATH_INU_CTE.Value;
  PathMensal                                      := ACBrCTe.Configuracoes.Arquivos.GetPathCTe(0);
  case dados.qryConfigVERSAO_CTE.Value of
    0: ACBrCTe.Configuracoes.Geral.VersaoDF       := TVersaoCTe(0);
    1: ACBrCTe.Configuracoes.Geral.VersaoDF       := TVersaoCTe(1);
  end;
  // ACBrCTe.SSL.DescarregarCertificado;
  // Configurações -> Geral
  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := PathMensal;
  ACBrCTe.DACTE.PathPDF                           := dados.qryConfigPATH_PDF_CTE.Value;
  // Configurações -> WebServices
  ACBrCTe.Configuracoes.WebServices.AguardarConsultaRet       := 15;
  ACBrCTe.Configuracoes.WebServices.AjustaAguardaConsultaRet  := true;
  ACBrCTe.Configuracoes.WebServices.IntervaloTentativas       := 5;
  ACBrCTe.Configuracoes.WebServices.Tentativas                := 15;
  ACBrCTe.Configuracoes.WebServices.UF                        := dados.qryConfigUF.Text;
  ACBrCTe.Configuracoes.WebServices.Visualizar                := false;
  if dados.qryConfigVISUALIZAR.Value = 'S' then
    ACBrCTe.Configuracoes.WebServices.Visualizar              := true;
  ACBrCTe.Configuracoes.WebServices.Salvar                    := false;
  // DAMDFe
  if ACBrCTe.DACTE <> nil then
  begin
    ACBrCTe.DACTE.PathPDF                                     := dados.qryConfigPATH_PDF_CTE.Value;
    ACBrCTe.DACTE.ExpandeLogoMarca                            := false;
    ACBrCTe.DACTE.Logo                                        := dados.qryConfigLOGOMARCA.Value;
    ACBrCTe.DACTE.TipoDACTE                                   := StrToTpImp(Ok, IntToStr(1));
  end;
  // ACBrCTe.Configuracoes.Arquivos.Salvar := true;
  ACBrCTe.Configuracoes.WebServices.Ambiente := taProducao;
  if dados.qryConfigAMBIENTE.Value = 1 then
    ACBrCTe.Configuracoes.WebServices.Ambiente := taHomologacao;
  ACBrCTeDACTeRL1.Sistema := dados.qryParametroEMPRESA.Value + ' | ' +
                             dados.qryParametroFONE1.Value + ' ' +
                             dados.qryparametroFONE2.Value;
  ACBrCTeDACTeRL1.Site := dados.qryparametroSITE.Value;

end;
 

 

procedure TfrmConsCTe.CTE_OS;
begin
//  dmCTe.ACBrCTe.Conhecimentos.Clear;
  with dmCTe.ACBrCTe.Conhecimentos.Add.CTe do
  begin
    infCTe.versao   := 3.0;
    Ide.cUF         := UFtoCUF(dados.qryEmpresaUF.Value);
    Ide.nCT         := qryCteNUMERO.Value;
    Ide.cCT         := GerarCodigoDFe(qryCteNUMERO.Value);
    Ide.CFOP        := qryCteCFOP.Value;
    Ide.natOp       := 'PRESTACAO SERVICO TRANSPORTE';
    Ide.modelo      := 67;
    Ide.serie       := dados.qryConfigCTE_SERIE.AsInteger;
    Ide.dhEmi       := now;
    Ide.tpImp       := tiRetrato;
    Ide.tpEmis      := teNormal;

    if dados.qryConfigAMBIENTE.Value = 0 then
      Ide.tpAmb     := taProducao
    else
      Ide.tpAmb     := taHomologacao;

    Ide.tpCTe       := tcNormal;
    case qryCteTIPOSERVICO.Value of
      0: Ide.tpServ := tsNormal;
      1: Ide.tpServ := tsSubcontratacao;
      2: Ide.tpServ := tsRedespacho;
      3: Ide.tpServ := tsIntermediario;
      4: Ide.tpServ := tsMultimodal;
      5: Ide.tpServ := tsTranspPessoas;
      6: Ide.tpServ := tsTranspValores;
      7: Ide.tpServ := tsExcessoBagagem;
    end;
    Ide.procEmi     := peAplicativoContribuinte;
    Ide.verProc     := '3.0';
    Ide.cMunEnv     := dados.qryEmpresaID_CIDADE.Value;
    Ide.xMunEnv     := dados.qryEmpresaCIDADE.Value;
    Ide.UFEnv       := dados.qryEmpresaUF.Value;
    Ide.modal       := mdRodoviario;
    Ide.indIEToma   := TpcnindIEDest(dados.qryConfigTIPO_CONTRIBUINTE_CTE.Value);
    Ide.cMunIni     := qryCteCODMUNINI.Value;
    Ide.xMunIni     := qryCteMUNICIPIOINI.Value;
    Ide.UFIni       := qryCteUFINI.Value;
    Ide.cMunFim     := qryCteCODMUNFIM.Value;
    Ide.xMunFim     := qryCteMINICIPIOFIM.Value;
    Ide.UFFim       := qryCteUFFIM.Value;

    Emit.CNPJ               := TiraPontos(dados.qryEmpresaCNPJ.Value);
    Emit.IE                 := TiraPontos(dados.qryEmpresaIE.Value);
    Emit.xNome              := dados.qryEmpresaRAZAO.Value;
    Emit.xFant              := dados.qryEmpresaFANTASIA.Value;
    Emit.enderEmit.xLgr     := dados.qryEmpresaENDERECO.Value;
    Emit.enderEmit.nro      := dados.qryEmpresaNUMERO.Value;
    Emit.enderEmit.xCpl     := '';
    Emit.enderEmit.xBairro  := dados.qryEmpresaBAIRRO.Value;
    Emit.enderEmit.cMun     := dados.qryEmpresaID_CIDADE.Value;
    Emit.enderEmit.xMun     := dados.qryEmpresaCIDADE.Value;
    Emit.enderEmit.CEP      := dados.qryEmpresaCEP.AsInteger;
    Emit.enderEmit.UF       := dados.qryEmpresaUF.Value;
    Emit.enderEmit.fone     := dados.qryEmpresaFONE.Value;

    // Adiciona dados do tomador do serviço
    qryTomador.Close;
    qryTomador.Params[0].Value := qryCteFKTOMADOR.Value;
    qryTomador.Open;

    toma.CNPJCPF            := TiraPontos(qryTomadorCNPJ.Value);
    if trim(qryTomadorIE.AsString) <> '' then
      toma.IE               := TiraPontos(qryTomadorIE.Value);
    toma.xNome              := qryTomadorRAZAO.Value;
    toma.xFant              := qryTomadorFANTASIA.Value;
    toma.fone               := '';
    toma.enderToma.xLgr     := qryTomadorENDERECO.Value;
    toma.enderToma.nro      := qryTomadorNUMERO.Value;
    toma.enderToma.xCpl     := '';
    toma.enderToma.xBairro  := qryTomadorBAIRRO.Value;
    toma.enderToma.cMun     := qryTomadorCODMUN.Value;
    toma.enderToma.xMun     := qryTomadorMUNICIPIO.Value;
    toma.enderToma.CEP      := qryTomadorCEP.AsInteger;
    toma.enderToma.UF       := qryTomadorUF.Value;
    toma.enderToma.cPais    := 1058;
    toma.enderToma.xPais    := 'BRASIL';
    toma.email              := '';

    { Carrega valores da prestacao de servico }
    vPrest.vTPrest  := qryCteTOTAL.AsFloat;
    vPrest.vRec     := qryCteRECEBIDO.AsFloat;
    with vPrest.comp.Add do
    begin
      xNome := 'Componente 1';
      vComp := qryCteRECEBIDO.AsFloat;
    end;

    // 90 - ICMS Outros
    if Emit.enderEmit.UF = Rem.enderReme.UF then
    begin
      Imp.ICMS.SituTrib       := cst90;
      Imp.ICMS.ICMS90.CST     := cst90;
      Imp.ICMS.ICMS90.pRedBC  := 0.00;
      Imp.ICMS.ICMS90.vBC     := 0.00;
      Imp.ICMS.ICMS90.pICMS   := 0.00;
      Imp.ICMS.ICMS90.vICMS   := 0;
      Imp.ICMS.ICMS90.vCred   := 0.00;
    end
    else
    begin
      Imp.ICMS.SituTrib                   := cstICMSOutraUF;
      Imp.ICMS.ICMSOutraUF.CST            := cstICMSOutraUF; // ICMS Outros
      Imp.ICMS.ICMSOutraUF.pRedBCOutraUF  := 0;
      Imp.ICMS.ICMSOutraUF.vBCOutraUF     := 0;
      Imp.ICMS.ICMSOutraUF.pICMSOutraUF   := 0;
      Imp.ICMS.ICMSOutraUF.vICMSOutraUF   := 0;
    end;

    Imp.infAdFisco  := 'Lei da Transparencia: O valor aproximado de tributos incidentes sobre o preço deste servico é de R$' +
                       FormatFloat(',0.00', qryCteVTOTTIRB.AsFloat) + ' Fonte: IBPT';
    Imp.vTotTrib    := qryCteVTOTTIRB.AsFloat;

    // Impostos federais
    Imp.infTribFed.vPIS     := qryCteVPIS.AsFloat;
    Imp.infTribFed.vCOFINS  := qryCteVCOFINS.AsFloat;
    Imp.infTribFed.vIR      := qryCteVIR.AsFloat;
    Imp.infTribFed.vINSS    := qryCteVINSS.AsFloat;
    Imp.infTribFed.vCSLL    := qryCteVCLSS.AsFloat;

    { Carrega as informacoes CTe Normal }
    infCTeNorm.infServico.xDescServ := qryCteDESCRICAOSERVICO.Value;;;
    infCTeNorm.infServico.qCarga    := qryCteQTD.AsFloat;;

    { Carrega informacoes do seguro }
    with infCTeNorm.Seg.Add do
    begin
      respSeg := rsTomadorServico;
      xSeg := qryCteXSEG.Value;
      nApol := qryCteNAPOLICE.Value;
    end;

    { Carrega Informacoes do Modal }
    { Rodoviario }
    infCTeNorm.rodoOS.TAF                         := qryCteTAF.AsString;
    infCTeNorm.rodoOS.NroRegEstadual              := qryCteNROREGESTADUAL.AsString;
    infCTeNorm.rodoOS.infFretamento.tpFretamento  := TtpFretamento(1);
    infCTeNorm.rodoOS.infFretamento.dhViagem      := now;

    // responsavel tecnico 22-03-2019
    if dados.qryEmpresaRESPONSAVEL_TECNICO.Value = 'S' then
    begin

      dados.qryRespTecnico.Close;
      dados.qryRespTecnico.Open;

      infRespTec.CNPJ     := TiraPontos(dados.qryRespTecnicoCNPJ.Value);
      infRespTec.xContato := dados.qryRespTecnicoNOME.Value;
      infRespTec.email    := dados.qryRespTecnicoEMAIL.Value;
      infRespTec.fone     := TiraPontos(dados.qryRespTecnicoTELEFONE.Value);
      infRespTec.hashCSRT := dados.qryRespTecnicoCSRT.Value;
    end;

    { Carega inf veiculos do modal rodo 0-1 }
    qryTransp.Close;
    qryTransp.Params[0].Value := qryCteFKTRANSPORTADOR.Value;
    qryTransp.Open;

    with infCTeNorm.rodoOS.veic do
    begin
      placa     := qryTranspPLACA.Value;
      RENAVAM   := qryTranspRENAVAM.Value;
      UF        := qryTranspUFPLACA.Value;
    end;
  end;
end;

Consegui resolver, em algum ponto do código, estava mudando o modelo do documento, corrigi e funcionou. Obrigado a todos pela atenção, bom final de semana a todos e Deus abençoe.

  • Este tópico foi criado há 850 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.