-
Total de ítens
267 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Leandro Miler Santana postou
-
FastReport - DACTE PDF Muito grande
Leandro Miler Santana replied to Leandro Miler Santana's tópico in ACBrNFe
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. -
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 !!!
-
NFe - Distribuição DFe perdendo informações
Leandro Miler Santana replied to Marcos Gerene's tópico in ACBrNFe
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 -
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;
-
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.
-
Uso Indevido - Hoje Rejeição Sefaz São Paulo
Leandro Miler Santana replied to Leandro Miler Santana's tópico in ACBrCTe
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 -
Maravilha !!!
-
Conseguiu emitir Calmeida79 ?
-
Uso Indevido - Hoje Rejeição Sefaz São Paulo
Leandro Miler Santana replied to Leandro Miler Santana's tópico in ACBrCTe
Show de Bola !!! Contingência "CTE.Configuracoes.Geral.FormaEmissao := teSVCRS" rodou !!! Obrigado pessoal !!! -
Uso Indevido - Hoje Rejeição Sefaz São Paulo
Leandro Miler Santana replied to Leandro Miler Santana's tópico in ACBrCTe
Maravilha, vou testar em contingência !!! -
Uso Indevido - Hoje Rejeição Sefaz São Paulo
Leandro Miler Santana replied to Leandro Miler Santana's tópico in ACBrCTe
Será que é o caso de usarmos o Sefaz de RS igual fizemos recentemente ? CTE.Configuracoes.Geral.FormaEmissao := teSVCRS; Alguém sabe responder ? -
Uso Indevido - Hoje Rejeição Sefaz São Paulo
um tópico no fórum postou Leandro Miler Santana ACBrCTe
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 ? -
Cte - Conhecimentos - LoadFromFile (XML)
Leandro Miler Santana replied to Nota10's tópico in ACBrCTe
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; -
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.
-
Consultar NFs emitidas contra o meu CNPJ
Leandro Miler Santana replied to mlsvicente's tópico in ACBrNFe
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. -
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.
-
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
-
CONSUMIR WEB SERVICE
Leandro Miler Santana replied to Vander Ramos's tópico in Object Pascal - Delphi & Lazarus
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 !! -
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" ?
-
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.
-
Consultar NFs emitidas contra o meu CNPJ
Leandro Miler Santana replied to mlsvicente's tópico in ACBrNFe
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; -
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.