Ir para conteúdo
  • Cadastre-se

Leandro Miler Santana

Membros
  • Total de ítens

    267
  • Registro em

  • Última visita

Tudo que Leandro Miler Santana postou

  1. Entendi caro Juliomar, mas vou tentar aqui, quem sabe da certo. Você poderia me dizer o nome do componente e a propriedade que eu "seto" por favor !? Grato.
  2. Caros amigos, boa noite !! Depois que comecei a usar a impressão do DACTE no Fast Reports, percebi que o tamanho dos arquivos em PDF ficaram muito grandes. O maior problema disto são os envios de emails de CTES que ficam mais lentos ou de "Faturas" enviadas por emails com vários XML e CTEs, pois cada fatura tem vários CTES. Verifiquei em um post muito antigo que na NFE tinha uma propriedade de incorporarBackgroundFont, que desabilitando, os PDFs no Fast ficavam muito menores. Existe alguma propriedade parecida no ACBR DACTE? Se existisse iria ajudar muito !!!
  3. Queridos boa tarde. Pelo que sei o ambiente do qual usamos para colher estas informações é conhecido como Ambiente Nacional (me corrijam se eu tiver errado). e realmente eles não retornam 100% das NFEs emitidas, como deveria ser. Também há um atraso na atualização neste servidor. Cheguei a desenvolver um aplicativo para colher estas informações para meus clientes em apoio ao meu software de gestão. Mas não funcionou devido a estes problemas. Infelizmente. Se alguém tiver alguma solução, por favor postem aqui. Abraço a todos
  4. Ola queridos bom dia. Veja a regra de acordo com a Nota Tecnica 2019.003 Veja se ajuda Complementando a resposta anterior, veja exemplo para adicionar contratante. with rodo.infANTT.infContratante.New do // contratante begin CNPJCPF := dm1.CadFil.FieldByName('CGC').AsString; idEstrangeiro := ''; xNome := dm1.CadFil.FieldByName('NOME').AsString; // 09-04-2020 end;
  5. Olá boa tarde, tudo bom ? if dm1.BancoTIPBANCO.AsString = '4' then // SICOB BANCOB begin ACBrBoleto1.Banco.TipoCobranca := cobBancoob; sLocalPagamento := 'Pagar preferêncialmente nas agências do Sicob'; end; Faço assim. Creio que vai dar certo, o meu está homologado.
  6. Olá pessoal. Hoje logo cedo, me deparei com este problema. Não consegui resolver No meu caso podíamos cancelar o CTE e gerar um correto, foi o que fizemos. Com certeza problema no SEFAZ e como sempre, o gráfico de compatibilidade no SEFAZ não consta nenhum problema. abraços.
  7. Pessoal importante lembrar que quando emitimos em contingência desta forma também teremos que modificar a propriedade na tag Ide.tpEmis de cada CTE Emitido. // se for emitir em contingencia faça assim Ide.tpEmis := teSVCRS // contingencia RS // se for emitir normal, faça como codigo abaixo Ide.tpEmis := teNormal; Realmente ainda está com problemas, e o pior que no site de Disponibilidade do Sefaz SP está tudo verdinho bonitinho. Terrível né !!! Att
  8. Conseguiu emitir Calmeida79 ?
  9. Show de Bola !!! Contingência "CTE.Configuracoes.Geral.FormaEmissao := teSVCRS" rodou !!! Obrigado pessoal !!!
  10. Será que é o caso de usarmos o Sefaz de RS igual fizemos recentemente ? CTE.Configuracoes.Geral.FormaEmissao := teSVCRS; Alguém sabe responder ?
  11. Pessoal bom dia. Hoje todos os clientes estão com problema na emissão dos CTEs. Está dando a mensagem uso Indevido. Provavelmente problema no Sefaz apesar de não estarem avisando. Todos usam Sefaz São Paulo. Alguém está passando por isso também ?
  12. Se ajudar segue exemplo de código: procedure TfrmCTE_Importacao.btXMLClick(Sender: TObject); var sfilter, sFileName, mCONHEC,mCOD_CTRC : String; ArquivoXML : TStringList; TipoDFE : Integer; begin OpenDialog1.Title := 'Selecione o CTe'; OpenDialog1.DefaultExt := '*-cte.xml'; OpenDialog1.Filter := 'Arquivos CTe (*-cte.xml)|*-cte.xml|Arquivos XML (*.xml)|*.xml|Todos os Arquivos (*.*)|*.*'; OpenDialog1.InitialDir := ACBrCTE1.Configuracoes.Arquivos.PathSalvar; if OpenDialog1.Execute then begin sFileName := OpenDialog1.FileName; ArquivoXML := TStringList.Create; ArquivoXML.LoadFromFile(sFileName); TipoDFE := 0; if pos('<infNFe', ArquivoXML.Text) > 0 then TipoDFE := 1; if pos('<infCte', ArquivoXML.Text) > 0 then TipoDFE := 2; if pos('InfNfse', ArquivoXML.Text) > 0 then TipoDFE := 3; if pos('infMDFe', ArquivoXML.Text) > 0 then TipoDFE := 4; if pos('procEventoNFe', ArquivoXML.Text) > 0 then TipoDFE := 5; if pos('procEventoCTe', ArquivoXML.Text) > 0 then TipoDFE := 6; if pos('procEventoMDFe', ArquivoXML.Text) > 0 then TipoDFE := 7; ArquivoXML.Free; mCONHEC := LeftStr(RightStr(sFileName,25),7); mCOD_CTRC := mCONHEC+IntToStr(spFCODIGO.Value); sFilter:='COD_CTRC = '+ QuotedStr(mCOD_CTRC)+''; dm1.Nota.Query(sFilter); dm1.Nota.First; if (TipoDFE<>2) then begin messagedlg('Este XML não é de CTe, favor baixar direto do site do SEFAZ !',mterror,[mbok],0); exit; end; if dm1.Nota.Eof then begin importaCteDoXML( sFileName); messagedlg('CTE '+mCONHEC+' foi importado com sucesso !!!',mtInformation,[mbok],0); end else messagedlg('Este CTE já existe no sistema !',mtError,[mbok],0); end; end; procedure TfrmCTE_Importacao.importaCteDoXML(sFile: String); var sRandom, sNatureza,sChaveCTE, mConhec : String; mIBGE_ENT,mCENTREGA,mENT_UF, mIBGE_COL,mCCOLETA,mCOL_UF: String; mCESPECIE, mCNATU, mCNATUC, mCUBAGEM: String; mTARIFA, mCVALOR, mFRTPESO, mXFRETE, mPEDAGIO, mCOUTROS, mCTOTAL, mCBASECALC,mCALIQUOTA, mCICMS : double; mCDATA :TDate; iSerie,iConhec : Integer; mCCLIENTE1, mCCLIENTE2, mCCLIENTE3, mCCLIENTE4 : String; mAPAGAR4, mPAGO4, mAPAGAR3, mPAGO3, mCALCULADO, mCOBS, mCOBS3:String; mFCODIGO, mCOD_CTRC, mTOMADOR : String; iVarreComps, iQtdComps, mQTD : Integer; xQTD_Converte, mCPESO, mTSECCAT, mTDESPACHO, mFRTVALOR : Double; mRecibo, sChaveNFE, mNomeArq, mChaveCTE, mProtoc : String; begin ACBrCTe1.Conhecimentos.Clear; if not FileExists(sFile) then exit; ACBrCTe1.Conhecimentos.LoadFromFile(sFile); // showmessage(IntToStr(ACBrCTe1.Conhecimentos.Items[0].cStat)); if ACBrCTe1.Conhecimentos.Count>0 then begin sNatureza := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.natOp; sRandom := IntToStr(ACBrCTe1.Conhecimentos.Items[0].CTE.ide.cCT); mCDATA := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.dhEmi; mConhec := IntToStr(ACBrCTe1.Conhecimentos.Items[0].CTE.ide.nCT); mCONHEC := tbStrZero(StrToInt(Mconhec),7); mCNATU := IntToStr(ACBrCTe1.Conhecimentos.Items[0].CTE.ide.CFOP); mIBGE_COL := IntToStr(ACBrCTe1.Conhecimentos.Items[0].CTE.ide.cMunIni); mCCOLETA := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.xMunIni; mCOL_UF := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.UFIni; mIBGE_ENT := IntToStr(ACBrCTe1.Conhecimentos.Items[0].CTE.ide.cMunFim); mCENTREGA := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.xMunFim; mENT_UF := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.UFFim; mCCLIENTE1 := ACBrCTe1.Conhecimentos.Items[0].CTE.rem.CNPJCPF; mCCLIENTE2 := ACBrCTe1.Conhecimentos.Items[0].CTE.dest.CNPJCPF; mCCLIENTE3 := ACBrCTe1.Conhecimentos.Items[0].CTE.exped.CNPJCPF; mCCLIENTE4 := ACBrCTe1.Conhecimentos.Items[0].CTE.receb.CNPJCPF; if ACBrCTe1.Conhecimentos.Items[0].CTE.ide.toma03.Toma = tmRemetente then mTOMADOR := mCCLIENTE1; if ACBrCTe1.Conhecimentos.Items[0].CTE.ide.toma03.Toma = tmDestinatario then mTOMADOR := mCCLIENTE2; if ACBrCTe1.Conhecimentos.Items[0].CTE.ide.toma03.Toma = tmExpedidor then mTOMADOR := mCCLIENTE3; if ACBrCTe1.Conhecimentos.Items[0].CTE.ide.toma03.Toma = tmRecebedor then mTOMADOR := mCCLIENTE4; if copy(Mccliente1,1,1)<>'' then mCCLIENTE1:=FUNCOES1.FormataCNPJ(mCCLIENTE1); if copy(Mccliente2,1,1)<>'' then mCCLIENTE2:=FUNCOES1.FormataCNPJ(mCCLIENTE2); if copy(Mccliente3,1,1)<>'' then mCCLIENTE3:=FUNCOES1.FormataCNPJ(mCCLIENTE3); if copy(Mccliente4,1,1)<>'' then mCCLIENTE4:=FUNCOES1.FormataCNPJ(mCCLIENTE4); if copy(mTOMADOR,1,1)<>'' then mTOMADOR:=FUNCOES1.FormataCNPJ(mTOMADOR); if mCCLIENTE1=mTOMADOR then mPAGO3 := 'X'; if mCCLIENTE2=mTOMADOR then mAPAGAR3 := 'X'; if mCCLIENTE3=mTOMADOR then mPAGO4:= 'X'; if mCCLIENTE4=mTOMADOR then mAPAGAR4:= 'X'; mCALCULADO := ACBrCTe1.Conhecimentos.Items[0].CTE.ide.xMunFim; iQtdComps := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.infQ.Count; iVarreComps:=0; while iVarreComps<iQtdComps do begin IF ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.infQ[iVarreComps].tpMed <> 'Kg' then xQTD_Converte := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.infQ[iVarreComps].qCarga; IF ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.infQ[iVarreComps].tpMed = 'Kg' then mCPESO := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.infQ[iVarreComps].qCarga; inc(iVarreComps); end; mQTD := Round(xQTD_Converte); mCVALOR := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.vCarga; mCNATUC := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.proPred; mCESPECIE := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infCarga.xOutCat; mCTOTAL := ACBrCTe1.Conhecimentos.Items[0].CTE.vPrest.vTPrest; mProtoc := ACBrCTe1.Conhecimentos.Items[0].CTE.procCTe.nProt; mNomeArq := ACBrCTe1.Conhecimentos.Items[0].NomeArq; mChaveCTE := ACBrCTe1.Conhecimentos.Items[0].CTE.procCTe.chCTe; mRECIBO := ACBrCTe1.Conhecimentos.Items[0].CTE.procCTe.XML_prot; // será que é o recibo? // mChaveCTE := RightStr(LeftSTR(mNomeArq,52),44); // componentes do frete iQtdComps := ACBrCTe1.Conhecimentos.Items[0].CTE.vPrest.Comp.Count; iVarreComps:=0; while iVarreComps<iQtdComps do begin with ACBrCTe1.Conhecimentos.Items[0].CTE.vPrest do begin if Comp.Items[iVarreComps].xNome='Frete Valor' then mFRTValor := Comp.Items[iVarreComps].vComp; if Comp.Items[iVarreComps].xNome='Frete Peso' then mFRTPeso := Comp.Items[iVarreComps].vComp; if Comp.Items[iVarreComps].xNome='Coleta' then mTARIFA := Comp.Items[iVarreComps].vComp; if Comp.Items[iVarreComps].xNome='Sec-Cat' then mTSECCAT := Comp.Items[iVarreComps].vComp; if Comp.Items[iVarreComps].xNome='Pedagio' then mPEDAGIO := Comp.Items[iVarreComps].vComp; if Comp.Items[iVarreComps].xNome='Despacho' then mTDESPACHO := Comp.Items[iVarreComps].vComp; if Comp.Items[iVarreComps].xNome='Outros Valores' then mCOUTROS := Comp.Items[iVarreComps].vComp; // incrementa inc(iVarreComps); end; end; // nota2 // with infCTeNorm.infDoc.InfNFe.Add do iQtdComps := ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infDoc.infNFe.Count; iVarreComps:=0; while iVarreComps<iQtdComps do begin with ACBrCTe1.Conhecimentos.Items[0].CTE.infCTeNorm.infDoc do begin sChaveNFE := infNFe.Items[iVarreComps].chave; // vai lancando no nota2 dm1.Nota2.Append; dm1.Nota2.FieldByName('CONHEC').AsString := mConhec; dm1.Nota2.FieldByName('FCODIGO').AsString:= IntToStr(spFCODIGO.Value); // verificar dm1.Nota2.FieldByName('COD_CTRC').AsString := mCONHEC+'51'; // verificar dm1.Nota2.FieldByName('NFE').AsString := sChaveNFE; dm1.Nota2.FieldByName('NOTA2').AsString := copy(sChaveNfe,26,9); dm1.Nota2.FieldByName('SERIE').AsString := copy(sChaveNfe,23,3); dm1.Nota2.FieldByName('DATA2').AsDateTime := mCDATA; dm1.Nota2.Commit; // incrementa inc(iVarreComps); end; end; dm1.Nota.Append; with dm1 do begin Nota.FieldByName('CONHEC').AsString := mCONHEC; Nota.FieldByName('FCODIGO').AsString := IntToStr(spFCODIGO.Value); // verificar Nota.FieldByName('COD_CTRC').AsString := mConhec+IntToStr(spFCODIGO.Value); Nota.FieldByName('CDATA').AsDateTime := mCDATA; Nota.FieldByName('CNATU').AsString := mCNATU; Nota.FieldByName('CCLIENTE1').AsString := mCCLIENTE1; Nota.FieldByName('CCLIENTE2').AsString := mCCLIENTE2; Nota.FieldByName('CCLIENTE3').AsString := mCCLIENTE3; Nota.FieldByName('CCLIENTE4').AsString := mCCLIENTE4; Nota.FieldByName('PAGO3').AsString := mPAGO3; Nota.FieldByName('APAGAR3').AsString := mAPAGAR3; Nota.FieldByName('PAGO4').AsString := mPAGO4; Nota.FieldByName('APAGAR4').AsString := mAPAGAR4; Nota.FieldByName('CALCULADO').AsString := mCALCULADO; Nota.FieldByName('CCOLETA').AsString := mCCOLETA; Nota.FieldByName('COL_UF').AsString := mCOL_UF; Nota.FieldByName('IBGE_COL').AsString := mIBGE_COL; Nota.FieldByName('CENTREGA').AsString := mCENTREGA; Nota.FieldByName('ENT_UF').AsString := mENT_UF; Nota.FieldByName('IBGE_ENT').AsString := mIBGE_ENT; // Nota.FieldByName('TSECCAT').AsFloat := mTSECCAT; Nota.FieldByName('COUTROS').AsFloat := mCOUTROS; // Nota.FieldByName('TDESPACHO').AsFloat := mTDESPACHO; Nota.FieldByName('TARIFA').AsFloat := mTARIFA; // Nota.FieldByName('FRTVALOR').AsFloat := mFRTVALOR; Nota.FieldByName('QTD').AsFloat := mQTD; // Nota.FieldByName('CPESO').AsFloat := mCPESO; Nota.FieldByName('CTOTAL').AsFloat := mCTOTAL; Nota.FieldByName('FRTPESO').AsFloat := mFRTPESO; Nota.FieldByName('PROTOC').AsString := mProtoc; Nota.FieldByName('ARQUIVO').AsString := mNomeArq; Nota.FieldByName('CHAVECTE').AsString := mChaveCTE; Nota.FieldByName('PEDAGIO').AsFloat := mPEDAGIO; Nota.FieldByName('GLOBAL').AsString := 'N'; // modificar este campo qdo for usar para outros clientes Nota.FieldByName('CVALOR').AsFloat := mCVALOR; Nota.FieldByName('CNATUC').AsString := mCNATUC; Nota.FieldByName('CESPECIE').AsString := mCESPECIE; end; dm1.Nota.Commit; end; end;
  13. O Fórum é pra isso né !! Aprendermos o que não sabemos e compartilhar experiências que descobrimos. Seguindo o velho ditado e muito correto que "Ninguém sabe tanto que não possa aprender, e nem tão pouco que não possa ensinar !!!" Valew pessoal.
  14. Pessoal, importante saber que neste repositório por algum motivo não estarão 100% das notas recebidas contra o CNPJ. Outra coisa. As vezes demora dias pra determinada NF-e constar no repositório. Att.
  15. Percebam no código fonte que postei acima faço um CTE de Substituição ao invés de fazer um CTE de Anulação, necessário em casos que o CTE foi emitido com "Tomador Errado - Inversão de Frete". Nesta situação o CTE substituto tem que ser preenchido com os mesmos valores do CTE a ser substituído mas desta vez com o tomador correto. Percebam que junto ao evento acima a opção a tag "infCteNorm.infCteSub.indAlteraToma" é modificada para SIM, e não precisa "CTE de Anulação" basta "CTE de Substituição" mas a NFE de Anulação e o evento de desacordo ainda serão obrigatórios. Esta situação torna-se necessária, quando o CTE errado já está contido dentro de um MDFe e este já consultado por alguma barreira policial ou Radar automático (Existem radares que pela placa, consultam o MDFe do Veículo automaticamente). Se não for o caso, a melhor opção mesmo, sempre vai ser "Cancelar o CTE" e fazer outro.
  16. Leia estes links, para base de conhecimento. https://blog.signainfo.com.br/detalhes/quando-posso-emitir-o-cte-de-anulacao-e-o-cte-de-substituicao https://www.ophos.com.br/ct-e-de-anulacao-e-substituicao/ https://blog.oobj.com.br/prestacao-de-servico-em-desacordo/ Segue código que tenho no meu sistema // verifica se o CTE é de Anulação if copy(dm1.Nota.FieldByName('NFEANULA').AsString,1,1)<>'' then // cte tem nota de anulação begin // TpcteTipoCTe = (tcNormal, tcComplemento, tcAnulacao, tcSubstituto); Ide.tpCTe := tcSubstituto; infCTeNorm.infCteSub.chCte:=dm1.Nota.FieldByName('CTEORIG').AsString; // cte a ser subsituido infCTeNorm.infCteSub.tomaICMS.refNFe:=dm1.Nota.FieldByName('NFEANULA').AsString; // chave da nfe de anulaçao emitida pelo tomador // todo colocar rotina para mudança no frete if dm1.Nota.FieldByName('ALT_TOMA').AsString='S' then infCTeNorm.infCteSub.indAlteraToma:=tiSim else infCTeNorm.infCteSub.indAlteraToma:=tiNao; end; Importante observar que além do tomador do serviço que consta no CTE ter que emitir uma NFE de anulação de valores referenciando o CTE a ser anulado, também terá que emitir obrigatoriamente um evento em desacordo referenciando o mesmo CTE. Infelizmente a burocracia nesta situação é enorme, e na maioria das as vezes o próprio contribuinte que foi "mencionado erroneamente" no CTE, não tem sistema ou pessoal qualificado ou mesmo condições de emitir este evento ou NFE. O que muita das vezes, a anulação não é feita, e o transportador emissor do CTE emitido de forma errada acaba tendo que "arcar" com os custos de impostos. Ficou muito ruim estas exigências do SEFAZ. Espero que estes links possam ajudar em alguma coisa ou mesmo dar uma luz. Creio que é isso, caso eu estiver errado os amigos me perdoem e me corrijam por favor. Abraços
  17. https://www.google.com/search?q=como+consumir+apis+em+delphi&oq=como+consumir+apis+em+delphi&aqs=chrome..69i57j33i22i29i30l2.5045j0j7&sourceid=chrome&ie=UTF-8 Clique neste Link e veja a imensidão de material disponível ensinando como fazer isto no Delphi. Tenho certeza que vai achar o que precisa. Grande abraço !!
  18. Bom dia pessoal Aqui também está com problemas. Pra eu usar a teSVCRS, depois que voltar ao normal vou precisar refazer algum processo ? ou basta modificar para "teNormal" ?
  19. Tai Pessoal, uma oportunidade de desenvolver um pequeno aplicativo somente pra isso. Talvez oferece-lo de forma gratuita fazendo com que este aplicativo seja veículo de marketing. Pensem nisso.
  20. Caro amigo mlsvicente, Como fui ajudado aqui por diversas vezes com exemplos de código, segue uma pequena contribuição; Esta rotina que desenvolvi e está funcionando perfeitamente. Se os moderadores acharem conveniente, podem anexar este código a um novo botão no fonte do exemplo do acbrNFe, criando uma nova funcionalidade. Espero que ajude. Abraços a todos // busca os 50 próximos xmls do Ambiente Nacional s grava em uma pasta derminada // Para rodar este exemplo, deverão serem prenchidas as seguintes propriedades do ACBrNFE propriedades { // padrao do certificado A1 ACBrNFe1.Configuracoes.Geral.SSLLib := libOpenSSL; ACBrNFe1.Configuracoes.Geral.SSLCryptLib := cryOpenSSL; ACBrNFe1.Configuracoes.Geral.SSLHttpLib := httpOpenSSL; ACBrNFe1.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2; ACBrNFe1.SSL.SSLType := LT_TLSv1_2; // configurando certificado ACBrNFe1.Configuracoes.Certificados.ArquivoPFX := Empresa.FieldbyName('CER_PATH').AsString; ACBrNFe1.Configuracoes.Certificados.Senha := Empresa.FieldbyName('CER_PASS').AsString; // Define local para salvar os arquivos ACBrNFe1.Configuracoes.Arquivos.PathNFe := Empresa.FieldbyName('XML_PATH').AsString; ACBrNFe1.Configuracoes.Arquivos.PathSchemas := Empresa.FieldbyName('SCHEMAS').AsString; } procedure TfrmPrincipal.btIniciandoBuscaClick(Sender: TObject); // var sChave, cUFAutor, CNPJ, ultNSU, ANSU: string; iQtdBuscou, i : Integer; LDocZip: TdocZipCollectionItem; begin cUFAutor := ''; ACBrNFe1.DistribuicaoDFe(Empresa.FieldByName('UF').AsInteger, Empresa.FieldByName('CNPJ').AsString, Empresa.FieldByName('ULT_NSU').AsString, ''); Memo1.Lines.Text := ACBrNFe1.WebServices.DistribuicaoDFe.RetWS; memo2.Lines.Text := ACBrNFe1.WebServices.DistribuicaoDFe.RetornoWS; LoadXML(ACBrNFe1.WebServices.DistribuicaoDFe.RetWS, WBResposta); iQtdBuscou := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count; for i := 0 to Pred(iQtdBuscou) do begin LDocZip := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i]; ultNSU := LDocZip.NSU; if (LDocZip.schema = schprocNFe) then // separa somente xml de nfe begin ACBrNFe1.NotasFiscais.Clear; acbrNFE1.NotasFiscais.LoadFromString(LDocZip.XML, true ); sChave := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe; ACBrNFe1.NotasFiscais.GravarXML(sChave+'.XML'); end; end; if Empresa.RLock(empresa.RecNo) then begin Empresa.Edit; Empresa.FieldByName('ULT_NSU').AsString := ultNSU; Empresa.Unlock(Empresa.RecNo); end; End;
  21. Bom dia pessoal. Tenho uma dúvida referente ao método DistribuicaoDFePorChaveNFe. Sei que de acordo com a NT 2014.002 V1.02b, uma empresa "Transportadora de Cargas", consegue baixar o XML completo da NFE, mesmo que a mesma não tenha sido manifestada previamente, isto usando o método DistribuicaoDFePorUltNSU . A minha dúvida é: Se eu usar o método DistribuicaoDFePorChaveNFe contendo a chave de uma NFE, em que esta transportadora seja um dos atores da nota, vou ter como resultado o XML da NFE completo, mesmo que a mesma não tenha sido manifestada previamente pelo destinatário da nota ainda. Estou um pouco confuso por não ter usado estes métodos ainda. Mas recorro aos colegas especialistas para sanarem minha dúvida. Desde já agradeço o apoio de todos.
×
×
  • 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.