Ir para conteúdo
  • Cadastre-se

dev botao

Impressão De Danfe Fast Report


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

Recommended Posts

Boa tarde a todos.

 

Fiz umas alterações no RecuperarXML e inclui a possibilidade de abrir um xml para consulta dos itens e se o usuário quiser imprimir o danfe para conferir ou outras finalidades internas.  O problema é que só consigo mostrar o danfe na tela quando executo no meu notebook.  Quando rodo o executável em outro pc tenho um erro do tipo "violation access..."   bla, bla, bla....  Pesquisei muito no forum para saber se outros usuários do ACBR/FASTREPORT tinham algum problema e vi que os resultados de minha pesquisa apontavam para erros no patch referente ao "FastFile" o que não me ajudou, pois usando patch declarado em variável ou em string para o caminho ocorria o erro do mesmo modo.  Vou colocar meu código inteiro para ver se algum amigo pode me auxiliar.... Usando o Delphi XE4 e o projeto foi alterado para rodar a partir de: "C:\XML\".


unit principal;

interface

uses GifImage ,UrlMon, MSHtml, ACBrUtil, pcnAuxiliar,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, ComCtrls, WinInet, Menus,
  ACBrNFe, Vcl.Grids, Vcl.Buttons, frxClass, ACBrNFeDANFEClass, ACBrNFeDANFEFR,
  frxExportPDF,ShellAPI,Types;


type
  TfrmPrincipal = class(TForm)
    WebBrowser1: TWebBrowser;
    ProgressBar1: TProgressBar;
    lblStatus: TLabel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Image1: TImage;
    btnPegarHTML: TButton;
    btnNovaConsulta: TButton;
    btnGerarXML: TButton;
    Label1: TLabel;
    edtChaveNFe: TEdit;
    Label2: TLabel;
    edtCaptcha: TEdit;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Memo2: TMemo;
    Panel1: TPanel;
    WBXML: TWebBrowser;
    Button1: TButton;
    Label3: TLabel;
    TabSheet3: TTabSheet;
    Label4: TLabel;
    Label5: TLabel;
    TabSheet4: TTabSheet;
    ACBrNFe1: TACBrNFe;
    Edit1: TEdit;
    StringGridProdutos: TStringGrid;
    BtImprimir: TBitBtn;
    Label6: TLabel;
    DANFEFR: TACBrNFeDANFEFR;
    BtAbrirXml: TBitBtn;
    OpenDialog1: TOpenDialog;
    frxPDFExport: TfrxPDFExport;
    EdChave: TEdit;
    Label7: TLabel;
    Button2: TButton;
    procedure btnPegarHTMLClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure WebBrowser1ProgressChange(Sender: TObject; Progress,
      ProgressMax: Integer);
    procedure btnNovaConsultaClick(Sender: TObject);
    procedure btnGerarXMLClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure BtImprimirClick(Sender: TObject);
    procedure BtAbrirXmlClick(Sender: TObject);
    procedure edtChaveNFeKeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    function DownloadFile(SourceFile, DestFile: string): Boolean;
    function StripHTML(S: string): string;
    procedure DeleteIECache;
    procedure PegarHTML;
    procedure GeraXml;
    procedure NovaConsulta;
    procedure carregaItens;

  public
    { Public declarations }
    FPath,caminho,DanfeRetrato,Dirxml,Dirpdf,Dirxmlfor: string;
  end;

var
  frmPrincipal: TfrmPrincipal;
  TpcnCSTIcms: string;


implementation

uses ACBrNFeUtil, ACBrHTMLtoXML, pcnConversao;

{$R *.dfm}


procedure TfrmPrincipal.DeleteIECache;
var
  lpEntryInfo: PInternetCacheEntryInfo;
  hCacheDir: LongWord;
  dwEntrySize: LongWord;
begin { DeleteIECache }
  dwEntrySize := 0;

  FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);

  GetMem(lpEntryInfo, dwEntrySize);

  if dwEntrySize>0 then
    lpEntryInfo^.dwStructSize := dwEntrySize;

  hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);

  if hCacheDir<>0 then
  begin
    repeat
      DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
      FreeMem(lpEntryInfo, dwEntrySize);
      dwEntrySize := 0;
      FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
      GetMem(lpEntryInfo, dwEntrySize);
      if dwEntrySize>0 then
        lpEntryInfo^.dwStructSize := dwEntrySize;
    until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)
  end; { hCacheDir<>0 }
  FreeMem(lpEntryInfo, dwEntrySize);

  FindCloseUrlCache(hCacheDir)
end; { DeleteIECache }


function TfrmPrincipal.DownloadFile(SourceFile, DestFile: string): Boolean;
const BufferSize = 1024;
var
  hSession, hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: string;
begin
 sAppName := ExtractFileName(Application.ExeName);
 hSession := InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
 try
   hURL := InternetOpenURL(hSession,PChar(SourceFile),nil,0,0,0);
   try
     AssignFile(f, DestFile);
     Rewrite(f,1);
     repeat
       InternetReadFile(hURL, @Buffer,SizeOf(Buffer), BufferLen);
       BlockWrite(f, Buffer, BufferLen)
     until BufferLen = 0;
     CloseFile(f);
     Result := True;
   finally
     InternetCloseHandle(hURL)
   end
 finally
   InternetCloseHandle(hSession)
 end;
end;
procedure TfrmPrincipal.edtChaveNFeKeyPress(Sender: TObject; var Key: Char);
begin
//Acbrnfe1.NotasFiscais.LoadFromFile := (ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe);
BtImprimir.Enabled:= True;
end;

{begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0,
      nil) = 0;
  except
    Result := False;
  end;
end;   }

function TfrmPrincipal.StripHTML(S: string): string;
var
  TagBegin, TagEnd, TagLength: integer;
begin
  TagBegin := Pos( '<', S);      // search position of first <

  while (TagBegin > 0) do begin  // while there is a < in S
    TagEnd    := Pos('>', S);              // find the matching >
    TagLength := TagEnd - TagBegin + 1;
    Delete(S, TagBegin, TagLength);     // delete the tag
    TagBegin := Pos( '<', S);            // search for next <
  end;

  Result := S;                   // give the result
end;

procedure TfrmPrincipal.btnPegarHTMLClick(Sender: TObject);
begin
  PegarHTML;
end;

procedure TfrmPrincipal.PegarHTML;
begin
      //edtChaveNFe.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
     // EdChave.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);

  if not ValidarChave('NFe'+edtChaveNFe.Text) then
   begin
     MessageDlg('Chave Inválida.',mtError,[mbok],0);
     edtChaveNFe.SetFocus;
     exit;
   end;

  if trim(edtCaptcha.Text) = '' then
   begin
     MessageDlg('Digite o valor da imagem.',mtError,[mbok],0);
     edtCaptcha.SetFocus;
     exit;
   end;

  Memo2.Lines.Clear;

  Button1.Enabled         := False;
  btnPegarHTML.Enabled    := False;
  btnNovaConsulta.Enabled := False;
  btnGerarXML.Enabled     := False;
  try
     WebBrowser1.OleObject.Document.all.Item('ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta', 0).value := edtChaveNFe.Text;
     WebBrowser1.OleObject.Document.all.Item('ctl00$ContentPlaceHolder1$txtCaptcha', 0).value := edtCaptcha.Text;
     WebBrowser1.OleObject.Document.all.Item('ctl00$ContentPlaceHolder1$btnConsultar', 0).click;
  except
     btnNovaConsulta.Enabled := True;
     raise;
  end;
  PageControl1.ActivePageIndex := 0;
end;

procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
  Dirxml := 'C:\XML\';
  Dirpdf := 'C:\XML\\PDF\';
  Dirxmlfor := 'C:\XML\XML_FORNECEDOR\';
  DANFEFR.PathPDF := 'C:\XML\PDF\';
    if not DirectoryExists(Dirpdf) then
    ForceDirectories(Dirpdf);
    if not DirectoryExists(Dirxmlfor) then
  ForceDirectories(Dirxmlfor);
  StringGridProdutos.ColWidths[0] := 20;  // vazio
  StringGridProdutos.ColWidths[1] := 80; // código
  StringGridProdutos.ColWidths[2] := 100; // barras
  StringGridProdutos.ColWidths[3] := 260; // produto
  StringGridProdutos.ColWidths[4] := 30;  // unidade
  StringGridProdutos.ColWidths[5] := 30;  // cst
  StringGridProdutos.ColWidths[6] := 38;  // Qtd
  StringGridProdutos.ColWidths[7] := 80; // valor unitario
  StringGridProdutos.ColWidths[8] := 80; // valor total
  StringGridProdutos.ColWidths[9] := 70;  // % icms
  StringGridProdutos.ColWidths[10] := 100;  // valor icms
  StringGridProdutos.ColWidths[11] := 50;  // %IPI
  StringGridProdutos.ColWidths[12] := 70;  // valor IPI
  //inicio do titulo das colunas
  StringGridProdutos.Cells[1,0] := 'Código';
  StringGridProdutos.Cells[2,0] := 'Cód. Barras';
  StringGridProdutos.Cells[3,0] := 'Descrição';
  StringGridProdutos.Cells[4,0] := 'Und.';
  StringGridProdutos.Cells[5,0] := 'CST';
  StringGridProdutos.Cells[6,0] := 'Qtd.';
  StringGridProdutos.Cells[7,0] := 'Valor Unit.';
  StringGridProdutos.Cells[8,0] := 'Valor Total';
  StringGridProdutos.Cells[9,0] := '% ICMS ST';
  StringGridProdutos.Cells[10,0] := 'Valor ICMS ST';
  StringGridProdutos.Cells[11,0] := '% IPI';
  StringGridProdutos.Cells[12,0] := 'Valor IPI';
  NovaConsulta;
  //DANFEFR.PathPDF.Empty;
  //DANFEFR.PathPDF := 'C:\XML\PDF\';
  //DANFEFR.FastFile := 'C:\XML\DANFeRetrato_ti.fr3';
end;

procedure TfrmPrincipal.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  k, i: Integer;
  Source, dest: string;
  textoNFe : IHTMLDocument2;
begin
  Application.ProcessMessages;
  if WebBrowser1.LocationURL = 'http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=' then
  begin
    for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
     begin
       Source := WebBrowser1.OleObject.Document.Images.Item(k).Src;
       if (Source = 'http://www.nfe.fazenda.gov.br/scripts/srf/intercepta/captcha.aspx?opt=image') then
       begin
         dest := ExtractFilePath(ParamStr(0)) + 'captcha.gif';
         DownloadFile(Source, dest);
       end;
     end;
     Image1.Picture.LoadFromFile(dest);
     btnPegarHTML.Enabled := True;
  end
  else if WebBrowser1.LocationURL = 'https://www.nfe.fazenda.gov.br/portal/visualizacaoNFe/completa/Default.aspx' then
  begin
    WebBrowser1.Navigate('https://www.nfe.fazenda.gov.br/PORTAL/visualizacaoNFe/completa/impressao.aspx');
  end
  else if WebBrowser1.LocationURL = 'http://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8=' then
  begin
    textoNFe := WebBrowser1.Document as IHTMLDocument2;
    repeat
       Application.ProcessMessages;
    until Assigned(textoNFe.body);
    Memo2.Lines.Text := StripHTML(textoNFe.body.innerHTML);
    Memo2.Lines.Text := StringReplace(Memo2.Lines.Text,'&nbsp;','',[rfReplaceAll, rfIgnoreCase]);

    i := 0;
    while i < memo2.Lines.Count-1 do
    begin
      if trim(Memo2.Lines[i]) = '' then
      begin
        Memo2.Lines.Delete(i);
        i := i - 1;
      end;
      if pos('function',Memo2.lines[i])>0 then
      begin
        Memo2.Lines.Delete(i);
        i := i - 1;
      end;
      if pos('document',Memo2.lines[i])>0 then
      begin
        Memo2.Lines.Delete(i);
        i := i - 1;
      end;
      if pos('{',Memo2.lines[i])>0 then
      begin
        Memo2.Lines.Delete(i);
        i := i - 1;
      end;
      if pos('}',Memo2.lines[i])>0 then
      begin
        Memo2.Lines.Delete(i);
        i := i - 1;
      end;

      i := i + 1;
    end;
    Image1.Picture      := nil;
    btnGerarXML.Enabled := True;
    GeraXml;
  end
  else if WebBrowser1.LocationURL = 'https://www.nfe.fazenda.gov.br/portal/inexistente_completa.aspx' then
  begin
    MessageDlg('NF-e INEXISTENTE na base nacional, favor consultar esta NF-e no site da SEFAZ de origem.',mtError,[mbok],0);
    Image1.Picture          := nil;
    btnGerarXML.Enabled     := True;
    btnNovaConsulta.Enabled := True;
  end
  else
  begin
    MessageDlg('Erro carregando URL: '+WebBrowser1.LocationURL,mtError,[mbok],0);
    Image1.Picture          := nil;
    btnGerarXML.Enabled     := True;
    btnNovaConsulta.Enabled := True;
  end;
end;

procedure TfrmPrincipal.WebBrowser1ProgressChange(Sender: TObject; Progress,
  ProgressMax: Integer);
begin
 if ProgressMax = 0 then
  begin
    ProgressBar1.Visible := False;
    lblStatus.Visible    := False;
    exit;
  end
 else
  begin
    ProgressBar1.Visible := True;
    lblStatus.Visible    := True;
    try
       ProgressBar1.Max := ProgressMax;
       if (Progress <> -1) and (Progress <= ProgressMax) then
          ProgressBar1.Position := Progress
       else
        begin
          ProgressBar1.Visible := False;
          lblStatus.Visible    := False;
        end;
    except
       on EDivByZero do
         exit;
    end;
  end;
end;

procedure TfrmPrincipal.btnNovaConsultaClick(Sender: TObject);
begin
  NovaConsulta;
end;

procedure TfrmPrincipal.NovaConsulta;
begin
  btnNovaConsulta.Enabled := False;
  btnGerarXML.Enabled     := False;
  edtcaptcha.Text:='';
  Button1.Enabled         := True;
//  DeleteIECache;
  Memo2.Lines.Clear;
  WebBrowser1.Navigate('http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=');
end;


procedure TfrmPrincipal.BtImprimirClick(Sender: TObject);
begin
//if FilesExists Acbrnfe1.NotasFiscais('C:\XML\XML_FORNECEDOR\'+(edtChaveNFe.Text)+'-nfe.xml') then
//DANFEFR.FastFile := '';
//DANFEFR.PathPDF := '';
DANFEFR.FastFile := ExtractFileDir(application.ExeName) + '\DANFeRetrato_ti.fr3';
DANFEFR.PathPDF := 'C:\XML\PDF\';
ACBrNFe1.NotasFiscais.ImprimirPDF;
//frxReport1.PrepareReport;
//frxReport1.ShowPreparedReport;
ACBrNFe1.NotasFiscais.Imprimir;
ACBrNFe1.DANFE.MostrarPreview:= True;
//carregaItens;
//Acbrnfe1.NotasFiscais.LoadFromFile('');
//DANFEFR.PathPDF := EmptyStr;
end;


procedure TfrmPrincipal.BtAbrirXmlClick(Sender: TObject);
var
I: Integer;
   begin
   if OpenDialog1.Execute then
   begin
   caminho := ExtractFilePath(ParamStr(0));
      ACBrNFe1.NotasFiscais.Clear;
      Acbrnfe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
      Acbrnfe1.NotasFiscais.SaveToFile('C:\XML\XML_FORNECEDOR\');
      BtImprimir.Enabled := True;
      Edit1.Text := ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.xNome;
      edtChaveNFe.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
      EdChave.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
      //edtChaveNFe.Text := caminho+'PDF\';
      DANFEFR.PathPDF :=  'C:\XML\PDF\';
      //DANFEFR.dmDanfe.frxPDFExport.Start;
      //frxPDFExport.Start;
      DANFEFR.FastFile := ExtractFileDir(application.ExeName) + '\DANFeRetrato_ti.fr3';
      //DANFEFR.FastFile :=  'C:\XML\DANFeRetrato_ti.fr3';
      //ACBrNFe1.NotasFiscais.Imprimir;
      carregaItens;

  end;


end;

procedure TfrmPrincipal.btnGerarXMLClick(Sender: TObject);
var
L: Integer;
begin
  ACBrNFe1.NotasFiscais.Clear;
  GeraXML;
  ACBrNFe1.NotasFiscais.LoadFromFile(FPath);
  Acbrnfe1.NotasFiscais.SaveToFile(Dirxmlfor);
  Edit1.Text := ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.xNome;
  edtChaveNFe.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
  EdChave.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
  carregaItens;
end;

procedure TfrmPrincipal.GeraXml;
  var
    i: integer;
begin
  FPath:=GerarXML(Memo2.Lines.Text);
  WBXML.Navigate(FPath);
  MessageBox(0,PChar('XML '+FPath+' gerado com sucesso!'),'Informação',
    MB_ICONINFORMATION+MB_TASKMODAL);
  btnNovaConsulta.Enabled := True;
  btnPegarHTML.Enabled    := True;
  ACBrNFe1.NotasFiscais.LoadFromFile(FPath);
  Edit1.Text := ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.xNome;
  edtChaveNFe.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
  EdChave.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
  carregaItens;
  PageControl1.ActivePageIndex := 3;
end;

procedure TfrmPrincipal.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=vk_escape then
  Close;
end;

procedure TfrmPrincipal.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TfrmPrincipal.Button1Click(Sender: TObject);
begin
  PegarHTML;
  BtImprimir.Enabled := True;
  DANFEFR.PathPDF := 'C:\XML\PDF\';
  DANFEFR.FastFile := ExtractFileDir(application.ExeName) + '\DANFeRetrato_ti.fr3';
  ACBrNFe1.DANFE.MostrarPreview:= True;
 { frxPDFExport.Creator := 'Ti Management';
  frxPDFExport.Producer := 'Ti Management';
  frxPDFExport.Title := 'DANFE PDF';
  frxPDFExport.Subject := 'DANFE PDF';
  frxPDFExport.Keywords := 'DANFE PDF';
  frxPDFExport.ShowDialog := False; }
end;

procedure TfrmPrincipal.Button2Click(Sender: TObject);
var
lerpdf: string;
ler: WideChar;
begin
//lerpdf:= ExtractFileDir(application.ExeName) + '\PDF\'+(EdChave.Text)+'.pdf';
//ReadState('\PDF\'+(EdChave.Text)+'.pdf');
{ler:= StringToWideChar('C:\XML\PDF\'+(EdChave.Text)+'.pdf');
lerpdf:= (ler);
   ShellExecute(Handle, nil, (lerpdf), nil, nil, SW_SHOWNORMAL);}
end;

procedure TfrmPrincipal.carregaItens;
  var
    i: integer;
    orig,cst,x: string;
    peripi,valipi,valpro,vcem,a,b,c: Double;
begin
   //s := IntToStr(n);
   StringGridProdutos.RowCount := ACBrNFe1.NotasFiscais.Items[0].NFe.Det.Count+1;
   for i := 0 to ACBrNFe1.NotasFiscais.Items[0].NFe.Det.Count - 1 do
   begin
      orig := OrigToStr(ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.ICMS.orig);
      cst :=  CSTICMSToStr(ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.ICMS.CST);
      peripi:= (ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.pIPI);
      valipi:= (ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.vIPI);
      valpro:= (ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.vProd);
      vcem:=100;
      StringGridProdutos.Cells[1,i+1] := ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.cProd;
      StringGridProdutos.Cells[2,i+1] := ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.cEANTrib;
      StringGridProdutos.Cells[3,i+1] := ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.xProd;
      StringGridProdutos.Cells[4,i+1] := ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.uCom;
      StringGridProdutos.Cells[5,i+1] := (orig+cst);
      StringGridProdutos.Cells[6,i+1] := FormatFloat('###,###,###0', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.qCom);
      StringGridProdutos.Cells[7,i+1] := FormatFloat('R$ ###,###,###0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.vUnCom);
      StringGridProdutos.Cells[8,i+1] := FormatFloat('R$ ###,###,###0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Prod.vProd);
      StringGridProdutos.Cells[9,i+1] := FormatFloat('###,###,###0.00 %', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.ICMS.pICMSST);
      StringGridProdutos.Cells[10,i+1] := FormatFloat('R$ ###,###,###0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.ICMS.vICMSST);
      //StringGridProdutos.Cells[10,i+1] := FormatFloat('###,###,###0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.pIPI);
      StringGridProdutos.Cells[12,i+1] := FormatFloat('R$ ###,###,###0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.vIPI);
      if ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.vIPI > 0 then
      a:= (valipi / valpro);
      b:= (a * vcem);
      x:= (FloatToString( );
         if (  > Trunc(b ) then
     x:=  FloatToStr(Trunc(b ))
   else
      x:=  FloatToStr(Trunc(b ));
      //c:= (a / ;
      //peripi:= b;
      StringGridProdutos.Cells[11,i+1] := x+' %';

       //if not ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.vIPI > 0 then

      //StringGridProdutos.Cells[10,i+1] := FormatFloat('###,###,###0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Det[i].Imposto.IPI.pIPI);

      BtImprimir.Enabled := True;
       end;
   end;

procedure TfrmPrincipal.Label3Click(Sender: TObject);
begin
  NovaConsulta;

end;

end.

Desde já agradeço e peço desculpas, caso tenha infringido alguma das regras do forum.

RecuperarXML.rar

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Solution

Resolvido conforme orientações da TCNoSpeed recebidas da Embarcadero como segue:

 

Para resolver o problema basta apagar o arquivo midas.dll do system32/syswow64 (versao 10.0.2151.25345) e adicionar novamente o arquivo que se encontra na pasta do Delphi (C:\Arquivos de programas\Embarcadero\RAD Studio\11.0\bin\midas.dll) (versão 18.0.4905.60485)

 

Fonte: http://tsdn.tecnospeed.com.br/comunicao-tecnospeed/activity/15058

 

Apliquei a solução proposta e estou abrindo o danfe no preview normalmente.

 

Agradeço aos que se dedicaram em buscar uma solução.

parecer-delphi-xe4-1.pdf

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 10 meses depois ...

Boa Noite, desculpem aminha santa ignorancia, mas alguém pode me dizer onde fica essa função "GerarXML" usa no fonte do amigo usada na função abaixo em destaque?, pq ja rodei tudo e nao consigo resolver eu problema

 

procedure TfrmPrincipal.GeraXml;
  var
    i: integer;
begin
  FPath:=GerarXML(Memo2.Lines.Text);
  WBXML.Navigate(FPath);
  MessageBox(0,PChar('
XML '+FPath+' gerado com sucesso!'),'Informação',
    MB_ICONINFORMATION+MB_TASKMODAL);
  btnNovaConsulta.Enabled := True;
  btnPegarHTML.Enabled    := True;
  ACBrNFe1.NotasFiscais.LoadFromFile(FPath);
  Edit1.Text := ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.xNome;
  edtChaveNFe.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
  EdChave.Text := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
  carregaItens;
  PageControl1.ActivePageIndex := 3;
end;

 

 

Eloi Filho

Programador de Sistemas

EMail: [email protected]

Fone: (92) 99130-5174

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

Este codigo era do antigo recuperarxml, que não tem mais vínculo com o acbr favor procurar no sourceforge que tem um projeto com esse nome .

Topico fechado

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3489 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...