Ir para conteúdo
  • Cadastre-se

dev botao

Recuperar valor da propriedade do ACBrNFe que acabei de ALTERAR


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

Recommended Posts

Postado

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

 

 

 

  • Moderadores
  • Solution
Postado

Bom dia

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

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

 

  • Curtir 2
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Consultores
Postado
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.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Postado
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...

  • Curtir 2
  • Consultores
Postado
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;

 

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Postado (editado)
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...

Editado por ROGERIO EDVAR DE SOUZA
adicionando informações ao meu comentário
  • Consultores
Postado
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
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Postado (editado)

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

 

Editado por EMBarbosa
layout do código
  • Consultores
Postado
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.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
×
×
  • 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.

The popup will be closed in 10 segundos...