Jump to content

click.png click.png click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

Recuperar valor da propriedade do ACBrNFe que acabei de ALTERAR


Go to solution Solved by José M. S. Junior,
  • Este tópico foi criado há 976 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia...

Pode parecer algo "bobo" pois faz mais de 20 anos que programo em DELPHI, 

mas não estou compreendendo o que está ocorrendo.

Vejam as linhas ABAIXO :

Begin      

... (tem o carregamento de outras inúmeras propriedades aqui...) ...

 

 ACBrNFe1.NotasFiscais.Add.NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
 ACBrNFe1.NotasFiscais.Add.NFe.Dest.CNPJCPF := '84782595620';


      showmessage('Propriedades ALTERADA : '+#13+#13+

      'CNPJCPF = '+ ACBrNFe1.NotasFiscais.Add.NFe.Dest.CNPJCPF +#13+
      'xNome = '  + ACBrNFe1.NotasFiscais.Add.NFe.Dest.xNome );

End

 

Estranhamente , a propriedade dá como se Não tivesse sido alterada (veja o Anexo)

( apesar do DANFE da NFCe estar emitindo corretamente,  eu preciso recuperar estas propriedades no meu sistema... como fazer ? )

 

image.png.5596d6b9d1e73bd2b56b057f6102d3d2.png

 

 

 

Link to comment
Share on other sites

  • Consultores
2 horas atrás, ROGERIO EDVAR DE SOUZA disse:

ACBrNFe1.NotasFiscais.Add.xxxx

É como o Junior mencionou acima. Com esse comando você acabou de adicionar uma nova nota.

Add é uma função que retorna uma nova nf-e. Não é uma propriedade.

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

1 hora atrás, José M. S. Junior disse:

Bom dia

Esta informando um "Add" na mensagem, deve apenas recuperar os dados do componente:

ACBrNFe.NotasFiscais.Items[I].NFe.Dest.CNPJCPF;  

 

 

Boa tarde...

Muitíssimo obrigado pela explicação...

Eu achei estranho mesmo o "add", suspeitando ser um método e não uma propriedade mas,

como vi o ":=" ... pensei estar errado...

.... Com sua explicação fiz o seguinte código, descobrindo que o "xNome" fica na posição "1" e o "CNPJCPF" ficou na posição "2"...

Achei também estranho ficar em "items" ... mas tudo bem, deu certo... Abraços!!!

 

     ACBrNFe1.NotasFiscais.Add.NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
      ACBrNFe1.NotasFiscais.Add.NFe.Dest.CNPJCPF := '84782595620';

      For V_N:=0 TO 100 Do
      Begin
         try
            If (Trim(ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.xNome))<>'' then
            showmessage('Propriedades ALTERADA : '+#13+#13+
            'xNome['+ IntToStr(V_N) +']   = '+ ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.xNome    );

            If (Trim(ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.CNPJCPF))<>'' then
            showmessage('Propriedades ALTERADA : '+#13+#13+
            'CNPJCPF['+ IntToStr(V_N) +'] = '+ ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.CNPJCPF );
            
         Except
         End;
      End;

3 minutos atrás, ROGERIO EDVAR DE SOUZA disse:

 

Boa tarde...

Muitíssimo obrigado pela explicação...

Eu achei estranho mesmo o "add", suspeitando ser um método e não uma propriedade mas,

como vi o ":=" ... pensei estar errado...

.... Com sua explicação fiz o seguinte código, descobrindo que o "xNome" fica na posição "1" e o "CNPJCPF" ficou na posição "2"...

Achei também estranho ficar em "items" ... mas tudo bem, deu certo... Abraços!!!

 

     ACBrNFe1.NotasFiscais.Add.NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
      ACBrNFe1.NotasFiscais.Add.NFe.Dest.CNPJCPF := '84782595620';

      For V_N:=0 TO 100 Do
      Begin
         try
            If (Trim(ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.xNome))<>'' then
            showmessage('Propriedades ALTERADA : '+#13+#13+
            'xNome['+ IntToStr(V_N) +']   = '+ ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.xNome    );

            If (Trim(ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.CNPJCPF))<>'' then
            showmessage('Propriedades ALTERADA : '+#13+#13+
            'CNPJCPF['+ IntToStr(V_N) +'] = '+ ACBrNFe1.NotasFiscais.Items[V_N].NFe.Dest.CNPJCPF );
            
         Except
         End;
      End;

Esqueci de falar... pode fechar o tópico...

  • Like 2
Link to comment
Share on other sites

  • Consultores
2 horas atrás, ROGERIO EDVAR DE SOUZA disse:

.... Com sua explicação fiz o seguinte código, descobrindo que o "xNome" fica na posição "1" e o "CNPJCPF" ficou na posição "2"...

Achei também estranho ficar em "items" ... mas tudo bem, deu certo... Abraços!!!

 

     ACBrNFe1.NotasFiscais.Add.NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
      ACBrNFe1.NotasFiscais.Add.NFe.Dest.CNPJCPF := '84782595620';

Oi Rogerio, mas isso ainda está incorreto.

Você está criando duas notas, e preenchendo os dados em cada uma. O correto é você fazer algo assim:

procedure CriarNFe();
begin
  with ACBrNFe1.NotasFiscais.Add do
  begin
    ...// outras propriedades
    NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
    NFe.Dest.CNPJCPF := '84782595620';
    ...// mais outras propriedades
  end;

Ou se preferir fazer isso sem o with:

procedure CriarNFe();
var
  UmaNFe: NotaFiscal;
begin
  UmaNFe := ACBrNFe1.NotasFiscais.Add;
  ...// outras propriedades
  UmaNFe.NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
  UmaNFe.NFe.Dest.CNPJCPF := '84782595620';
  ...// mais outras propriedades
...
end;

 

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

21 horas atrás, EMBarbosa disse:

Oi Rogerio, mas isso ainda está incorreto.

Você está criando duas notas, e preenchendo os dados em cada uma. O correto é você fazer algo assim:

procedure CriarNFe();
begin
  with ACBrNFe1.NotasFiscais.Add do
  begin
    ...// outras propriedades
    NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
    NFe.Dest.CNPJCPF := '84782595620';
    ...// mais outras propriedades
  end;

Ou se preferir fazer isso sem o with:

procedure CriarNFe();
var
  UmaNFe: NotaFiscal;
begin
  UmaNFe := ACBrNFe1.NotasFiscais.Add;
  ...// outras propriedades
  UmaNFe.NFe.Dest.xNome   := 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME' ;
  UmaNFe.NFe.Dest.CNPJCPF := '84782595620';
  ...// mais outras propriedades
...
end;

 

Entendi... estou REALMENTE CONFUSO com o "método" add... é como se fosse um "vetor" e a cada "add" coloca uma nova posição ... blz...

Edited by ROGERIO EDVAR DE SOUZA
adicionando informações ao meu comentário
Link to comment
Share on other sites

  • Consultores
Agora, ROGERIO EDVAR DE SOUZA disse:

Entendi... estou REALMENTE CONFUSO com o "método" add... é como se fosse um "vetor" e a cada "add" coloca uma nova posição ... blz...

Mais ou menos isso mesmo.

"ACBrNFe1.NotasFiscais" é uma classe do tipo lista de notas fiscais.

ACBrNFe1.NotasFiscais.add é uma função que (1) adiciona uma nova nota na lista e (2) retorna a nova nota pra você.

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

E se for para eu implementar o método ACBrECFVirtualNFCe1QuandoFecharDocumento(NFe: TNFe);

Posso fazer como abaixo ?

   With NFe do
   begin

      // INÍCIO : *************** DADOS DO CABEÇALHO/IDENTIFICADOR da NFCe ***************
      InfAdic.infCpl     :=  '';
      InfAdic.infAdFisco :=  '';
      Transp.modFrete    := mfSemFrete; // NFC-e não pode ter FRETE

      Ide.cNF       := E_NumNFe ; //Caso não seja preenchido será gerado um número aleatório pelo componente
      Ide.natOp     := 'VENDA';
      Ide.indPag    := E_IndicadorPagamento; // TpcnIndicadorPagamento = (ipVista, ipPrazo, ipOutras, ipNenhum);
      Ide.modelo    := 65      ;
      Ide.serie     := E_Serie ;
      Ide.nNF       := E_NumNFe;
      //
      Ide.dEmi      := now;
      Ide.dSaiEnt   := now;
      Ide.hSaiEnt   := now;
      Ide.tpNF      := tnSaida;          //  FIXO... NFCe será sempre SAÍDA ... TpcnTipoNFe = (tnEntrada, tnSaida);
      //
      Ide.tpEmis    := E_TipoEmissao   ; // TpcnTipoEmissao = (teNormal, teContingencia, teSCAN, teDPEC, teFSDA, teSVCAN, teSVCRS, teSVCSP, teOffLine);
      Ide.tpAmb     := E_TipoAmbiente  ; // TpcnTipoAmbiente = (taProducao, taHomologacao);
      //
      Ide.cUF       := UFtoCUF(  E_Dest_UF ); // UFtoCUF( Lb_EmitUF.Caption ) ;
      Ide.cMunFG    := StrToInt(Ret_CodMun_IBGE  )    ;      // cód do MUNICÍPIO ... do DESTINATÁRIO ...
      //
      Ide.finNFe    := E_FinalidadeNFe ;      // TpcnFinalidadeNFe = (fnNormal, fnComplementar, fnAjuste, fnDevolucao);
      Ide.tpImp     := E_TipoImpressao;       // tiNFCe...            TpcnTipoImpressao = (tiSemGeracao, tiRetrato, tiPaisagem, tiSimplificado, tiNFCe, tiMsgEletronica);
      Ide.indFinal  := E_ConsumidorFinal;     // cfConsumidorFinal... TpcnConsumidorFinal = (cfNao, cfConsumidorFinal); ... NÃO é ao CONSUMIDOR FINAL se for VENDA OFFLine
      Ide.indPres   := E_PresencaComprador ;  // PresencaComprador... TpcnPresencaComprador = (pcNao, pcPresencial, pcInternet, pcTeleatendimento, pcEntregaDomicilio, pcPresencialForaEstabelecimento, pcOutros);
      //
      // FINAL : *************** DADOS DO CABEÇALHO/IDENTIFICADOR da NFCe ***************


      

      // INÍCIO : *************** DADOS DO EMITENTE( Estabelecimento USUÁRIO do SOFTWARE ) ***************      
      //     Ide.dhCont := date;
      //     Ide.xJust  := 'Justificativa Contingencia';
      //
      // Caso exista inclusão de serviços na NFe
      If Const_ExisteServicoNaNota=True then
      Emit.IM                := Ret_IM
      Else
      Emit.IM                := '';     // Preencher no caso de existir serviços na nota
      //

      Emit.CNAE              := Ret_CNAE_Fiscal      ;
      Emit.CNPJCPF           := Ret_CNPJ             ;
      Emit.IE                := Ret_IE               ;
      //
      // Segundo explicado por ROGÉRIO, pelo SKYPE, dia 28/03/2019, às 9:27h
      // este é Inscrição Estadual Substituição Tributaria, (PARA O NOSSO CASo NÃO TEM)
      Emit.IEST              := '';
      //
      Emit.xNome             := Ret_RazSoc           ;
      Emit.xFant             := Ret_Nom_Fant         ;
      Emit.EnderEmit.fone    := Ret_Fone             ;
      //
      // Envia CEP com TRAÇOS, aqui RETORNA SOMENTE NÚMERO e transforma em INTEGER para carregar o campo ...
      Ret_CEP := Retorna_Numeros(Ret_CEP);
      If Ret_CEP='' then
      Emit.EnderEmit.CEP     := 0
      Else
      Emit.EnderEmit.CEP     := StrToInt(Ret_CEP) ; // 18270170;
      //
      Emit.EnderEmit.xLgr    := Ret_Logradouro       ;
      Emit.EnderEmit.nro     := Ret_Numero           ;
      Emit.EnderEmit.xCpl    := Ret_Complemento      ;
      Emit.EnderEmit.xBairro := Ret_Bairro           ;
      Emit.EnderEmit.cMun    := StrToInt( Ret_CodMun_IBGE );
      Emit.EnderEmit.xMun    := Ret_Cidade           ;
      Emit.EnderEmit.UF      := Ret_UF               ;
      Emit.enderEmit.cPais   := 1058                 ;
      Emit.enderEmit.xPais   := 'BRASIL'             ;
      //
      // TpcnCRT = (crtSimplesNacional, crtSimplesExcessoReceita, crtRegimeNormal);
      // CRT = RegimeNormal (DÉBITO e CRÉDITO)
      // CRT = SimplesNacional (OPTANTE PELO SIMPLES)
      // CRT = Simples ExcessoReceita (NUNCA USAMOS)
      If Eh_Simples_Nacional_periodo(  ZROQry_Livre_Farm, now ) then
      Emit.CRT := crtSimplesNacional
      Else
      Emit.CRT := crtRegimeNormal ;
      //
      // FINAL : *************** DADOS DO EMITENTE( Estabelecimento USUÁRIO do SOFTWARE ) ***************      


      

      // INÍCIO : *************** DADOS DO DESTINATÁRIO ***************
      // Dest.IE             := xxxx  //NFC-e não aceita IE
      Dest.CNPJCPF           := E_Dest_CNPJCPF           ; // '05481336000137';
      Dest.ISUF              := '';
      //
      Dest.xNome             := E_Dest_xNome_RazSoc      ; // 'D.J. COM. E LOCAÇÃO DE SOFTWARES LTDA - ME';
      Dest.EnderDest.Fone    := E_Dest_EnderDest_Fone    ; // '1533243333';
      //
      // Envia CEP com TRAÇOS, aqui RETORNA SOMENTE NÚMERO e transforma em INTEGER
      // para carregar o campo ...
      E_Dest_EnderDest_CEP := Retorna_Numeros(E_Dest_EnderDest_CEP);
      If E_Dest_EnderDest_CEP='' then
      Dest.EnderDest.CEP     := 0
      Else
      Dest.EnderDest.CEP     := StrToInt(E_Dest_EnderDest_CEP) ; // 18270170;
      //
      Dest.EnderDest.xLgr    := E_Dest_EnderDest_xLgr    ;  // 'Rua Coronel Aureliano de Camargo';
      Dest.EnderDest.nro     := E_Dest_EnderDest_nro     ;  // '973';
      Dest.EnderDest.xCpl    := E_Dest_EnderDest_xCpl    ;  // ''
      Dest.EnderDest.xBairro := E_Dest_EnderDest_xBairro ;  // 'Centro';
      //
      // Envia CÓD.MUNIC, aqui RETORNA SOMENTE NÚMERO e transforma em INTEGER para carregar o campo ...
      E_Dest_EnderDest_cMun := Retorna_Numeros(E_Dest_EnderDest_cMun);
      If E_Dest_EnderDest_cMun='' then
      Dest.EnderDest.cMun     := 0
      Else
      Dest.EnderDest.cMun     := StrToInt( E_Dest_EnderDest_cMun ) ; // 3554003;
      //
      Dest.EnderDest.xMun    := E_Dest_EnderDest_xMunl   ;  // 'Tatuí';
      Dest.EnderDest.UF      := E_Dest_EnderDest_UF      ;  // 'SP';
      Dest.EnderDest.cPais   := 1058                     ;
      Dest.EnderDest.xPais   := 'BRASIL'                 ;

      // FINAL : *************** DADOS DO DESTINATÁRIO ***************

      //Use os campos abaixo para informar o endereço de retirada quando for diferente do Remetente/Destinatário
      {      Retirada.CNPJCPF := '';
      Retirada.xLgr    := '';
      Retirada.nro     := '';
      Retirada.xCpl    := '';
      Retirada.xBairro := '';
      Retirada.cMun    := 0;
      Retirada.xMun    := '';
      Retirada.UF      := '';}

      //Use os campos abaixo para informar o endereço de entrega quando for diferente do Remetente/Destinatário
      {      Entrega.CNPJCPF := '';
      Entrega.xLgr    := '';
      Entrega.nro     := '';
      Entrega.xCpl    := '';
      Entrega.xBairro := '';
      Entrega.cMun    := 0;
      Entrega.xMun    := '';
      Entrega.UF      := '';}
   end;  //    with NFe do

 

Edited by EMBarbosa
layout do código
Link to comment
Share on other sites

  • Consultores
4 minutos atrás, ROGERIO EDVAR DE SOUZA disse:

E se for para eu implementar o método ACBrECFVirtualNFCe1QuandoFecharDocumento(NFe: TNFe);

Posso fazer como abaixo ? 

Acho que sim. Me parece correto.

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.