Ir para conteúdo
  • Cadastre-se

dev botao

Criar componentes ACBrNfe em runtime


  • Este tópico foi criado há 3395 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Prezados,

Gostaria de implementar uma classe para NFe usando o ACBrNFe e ACBrNfeDanfeRave.

Ocorre que se mantenho estes componentes em um DM funciona tudo perfeitamente, mas se tento implementá-los na classe

tenho access violation ao tentar imprimir o danfe e gerar email.

Imagino que deva ser um problema na criação dos componentes em runtime.

Fiz assim:


type

  TNotaFiscalEletronica = class

  private

    fACBrNfe: TACBrNFe;                    //Componente gera e transmite a NFe

    fACBrNfeDanfeRave: TACBrNFeDANFERave;  //Componente que emite o Danfe

    procedure NFeStatusChange(Sender: TObject);

  public

    constructor Create; virtual;

    destructor Destroy; override;

    property ACBrNfe: TACBrNFe read fACBrNfe write fACBrNfe;

    property ACBrNfeDanfeRave: TACBrNFeDANFERave read fACBrNfeDanfeRave write fACBrNfeDanfeRave;

  end;


constructor TNotaFiscalEletronica.Create;

begin

  If not Assigned(ACBrNfe) then ACBrNfe:= TACBrNFe.Create(nil);

  If not Assigned(ACBrNfeDanfeRave) then ACBrNfeDanfeRave:= TACBrNFeDANFERave.Create(nil);

  With ACBrNfe do begin

    Configuracoes.Certificados.NumeroSerie:= ArqIni.ReadString('NOTAFISCALELETRONICA','Certificado','');

    Configuracoes.Geral.PathSalvar:= ArqIni.ReadString('NOTAFISCALELETRONICA','PathSalvar','');

    Configuracoes.WebServices.UF:= 'SP';

    Configuracoes.WebServices.AguardarConsultaRet:= 0;

    Configuracoes.WebServices.IntervaloTentativas:= 1000;

    Configuracoes.WebServices.AjustaAguardaConsultaRet:= False;

    Configuracoes.WebServices.Ambiente:= StrToTpAmb(Ok,ArqIni.ReadString('NOTAFISCALELETRONICA','Ambiente','2'));

    Configuracoes.Arquivos.Salvar := True;

    Configuracoes.Arquivos.EmissaoPathNFe := True;

    Configuracoes.Arquivos.PastaMensal := True;

    Configuracoes.Arquivos.PathNFe := IncludeTrailingPathDelimiter(ACBrNfe.Configuracoes.Geral.PathSalvar+'Nfe');

    Configuracoes.Arquivos.PathCan := IncludeTrailingPathDelimiter(ACBrNfe.Configuracoes.Geral.PathSalvar+'Can');

    Configuracoes.Arquivos.PathInu := IncludeTrailingPathDelimiter(ACBrNfe.Configuracoes.Geral.PathSalvar+'Inu');

    Configuracoes.Arquivos.PathDPEC:= IncludeTrailingPathDelimiter(ACBrNfe.Configuracoes.Geral.PathSalvar+'Dpec');

    OnStatusChange:= NFeStatusChange;

    DANFE:= ACBrNfeDanfeRave;

    DANFE.Logo:= ArqIni.ReadString('NOTAFISCALELETRONICA','LogoMarca','');

  end;

  with ACBrNfeDanfeRave do begin

    ACBrNFe:= ACBrNFe;

    PathPDF:= '.\PDF\';

    MostrarPreview:= True;

    MostrarStatus:= True;

    TipoDANFE:= tiRetrato;

    NumCopias:= 1;

    ImprimirDescPorc:= False;

    ImprimirTotalLiquido:= False;

    MargemInferior:= 0.800000000000000000;

    MargemSuperior:= 0.800000000000000000;

    MargemEsquerda:= 0.600000000000000000;

    MargemDireita:= 0.510000000000000000;

    CasasDecimais._qCom:= 3;

    CasasDecimais._vUnCom:= 3;

    ExibirResumoCanhoto:= False;

    FormularioContinuo:= False;

    TamanhoFonte_DemaisCampos:= 10;

    ProdutosPorPagina:= 0;

    ImprimirDetalhamentoEspecifico:= True;

    NFeCancelada:= False;

    RavFile:= ExtractFilePath(Application.ExeName) + '\Report\NotaFiscalEletronica.rav';

    EspessuraBorda:= 1;

    TamanhoFonte_RazaoSocial:= 12;

  end;//With

end;


destructor TNotaFiscalEletronica.Destroy;

begin

  If Assigned(ACBrNfe) then begin

    ACBrNfe.NotasFiscais.Clear;

    ACBrNfe.Free;

    ACBrNfe:= Nil;

  end;

  If Assigned(ACBrNfeDanfeRave) then begin

    ACBrNfeDanfeRave:= Nil;

    ACBrNfeDanfeRave.Free;

  end;

  inherited;

end;

Agradeço antecipadamente pela atenção dos colegas,

Marcello.

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...

Olá Juliomar, estou tentando implementar do mesmo jeito e não estou conseguindo, tá igual a do Marcello, mas ele não me mostra o que foi passado na configuração, exemplo:

 

var a: Integer;

   zzz: string;

begin

  try

    MyNFE := TMyNFE.Create(Self, TabCfg);

    zzz := MyNFE.Configuracoes.Arquivos.PathNFe;

 

o zzz esta em branco, sendo que dentro do create tem uma procedure que configura os dados no componente.

 

Pode me ajudar ???

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3395 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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