Pesquisar na Comunidade
Showing results for tags 'fast'.
Encontrado 19 registros
-
Boa tarde, estou com problema para encontrar um valor padrão de margem, para utilizar o modo do FAST utilizo a seguinte configuração : Superior, Direita : 7 Inferior 5 Esquerda: 6 Para realizar a configuração do Fortes é necessário seguir as seguintes configurações: Superior, Direita : 7 Inferior 5 Esquerda: 7. Ocorrendo uma diferença apenas na margem esquerda. Existe algum valor padrão para funcionar nos 2 modelos ?
-
Alterações no layout DANFCe Fast Report Bobina
um tópico no fórum postou Túlio de Pádua NFC-e - Nota Fiscal do Consumidor Eletrônica
Olá, realizei algumas alterações no layout do DANFCe bobina desenvolvido em Fast. Renomeei o arquivo para "DANFeNFCe5_00.fr3", o adaptando conforme o Manual de Padrões versão 5.0, o último liberado pelo Encat. Foram necessárias algumas alterações na unit ACBrNFeDANFEFRDM.pas também. No seguintes locais: 1) Na geração do valor a pagar, conforme: Antes: FieldByName('ValorApagar').AsFloat := VProd - VDesc - vICMSDeson + VOutro; Agora: FieldByName('ValorApagar').AsFloat := VProd + FNFe.Total.ISSQNtot.vServ; Deixei como já está no modelo EscPos, que imagino ser o mais usado e consequentemente o mais apurado. Não concordo com fazer cálculos na impressão do Danfe, os cálculos já devem ser feitos ao gerar o XML. 2) No preenchimento do nome do cliente: Antes: if EstaVazio(FieldByName('CNPJCPF').AsString) then FieldByName('Consumidor').AsString := ACBrStr('CONSUMIDOR NÃO IDENTIFICADO') else FieldByName('Consumidor').AsString := IfThen(Length(CNPJCPF) = 11, 'CPF: ', 'CNPJ: ') + Trim(FieldByName('CNPJCPF').AsString) + ' ' + trim(FieldByName('XNome').AsString); Agora: if EstaVazio(FieldByName('CNPJCPF').AsString) then FieldByName('Consumidor').AsString := ACBrStr('CONSUMIDOR NÃO IDENTIFICADO') else FieldByName('Consumidor').AsString := IfThen(Length(CNPJCPF) = 11, 'CONSUMIDOR CPF: ', 'CONSUMIDOR CNPJ: ') + Trim(FieldByName('CNPJCPF').AsString) + ' ' + trim(FieldByName('XNome').AsString); Apenas inseri o prefixo "CONSUMIDOR" antes do CPF ou do CNPJ do cliente. 3) Na geração do texto da área de mensagem fiscal: Antes: if (FNFe.Ide.Modelo = 65) then begin FieldByName('DEmi').AsString := FormatDateTimeBr(FNFe.Ide.DEmi); if FNFe.Ide.TpAmb = taHomologacao then FieldByName('MensagemFiscal').AsString := ACBrStr('EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL') else begin if (FNFe.Ide.tpEmis <> teNormal) and EstaVazio(FNFe.procNFe.nProt) then FieldByName('MensagemFiscal').AsString := ACBrStr('EMITIDA EM CONTINGÊNCIA'+LineBreak+'Pendente de autorização') else FieldByName('MensagemFiscal').AsString := ACBrStr('ÁREA DE MENSAGEM FISCAL'); end; . . . . Agora: if (FNFe.Ide.Modelo = 65) then begin FieldByName('DEmi').AsString := FormatDateTimeBr(FNFe.Ide.DEmi); if (FNFe.Ide.tpEmis <> teNormal) and EstaVazio(FNFe.procNFe.nProt) then FieldByName('MensagemFiscal').AsString := ACBrStr('EMITIDA EM CONTINGÊNCIA'+LineBreak+'Pendente de autorização'); if FNFe.Ide.TpAmb = taHomologacao then FieldByName('MensagemFiscal').AsString := FieldByName('MensagemFiscal').AsString+LineBreak+LineBreak+ACBrStr('EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL'); if EstaVazio(FieldByName('MensagemFiscal').AsString) then FieldByName('MensagemFiscal').AsString := ACBrStr('ÁREA DE MENSAGEM FISCAL'); . . . . Alterei para que a frase "EMITIDA EM CONTINGÊNCIA Pendente de autorização" seja gerada sempre que a NFCe estiver pendente, independente do ambiente utilizado (produção ou homologação) Se alguém puder validar e encaminhar ao repositório. ACBrNFeDANFEFRDM.pas DANFeNFCe5_00.fr3 -
Boa tarde a todos. Compilo e instalo tudo sem nenhum erro utilizando o instalador do acbr, porém ao colocar no form um componente ACBrNFeDANFeFR ocorre o erro da imagem abaixo: Imagem do erro pesquisei um forum e já existe um topico com este erro, porem a solução encontrada lá, não resolveu o meu aqui; Alguém já passou por isso e poderia me ajudar?
-
Encontramos um erro na impressão da Guia da GNRE no campo "Período de Referência" em Fast Report. Está sendo impresso somente o código da referência, ex."0" sem constar a data. Pelo que foi verificado, a impressão em Fortes já está correta. Segue a correção para Fast. GNRE_GUIA.fr3 ACBrGNREGuiaFRDM.pas
-
Boa noite, Alguém saberia o porque no Layout do Boleto de Fatura com o Fast Report existe Recebemos através do cheque número do banco Esta quitação só terá validade após o pagamento do cheque pelo banco sacado E qual a propriedade para remover essa informação? Obrigado! Obs.: Layout Boleto_Fatura_Novo.fr3
-
Olá Bom dia Todos os meus arquivos de Danfe fr3 não mostram os Dados Complementares. Existe alguma propriedade que defina isso? Gostaria de mostralos na NFe. Obrigado
-
Ola Pessoal, Existe um tópico com este assunto de 2016, porém o mesmo se encontra encerrado e aparentemente sem solução. Migrei o Danfe de Rave para o Fast Report e após a migração não aparece mais a tarja 'NFE CANCELA' nas notas canceladas. i) Estou em ambiente de produção ii) Xml da nota carregado - xml da homolação do evento OK iii) propriedade Danfe.NFeCancelada := true iv) propiedade Danfe.ProtocoloNFe carregado com o protocolo de cancelamento v) propiedade Danfe,MarcaDaguaMsg := 'Nota cancelada' (chute....) Mesmo assim não aparece a tarja. Se alguém puder ajudar agradeço!
-
Impressão de NFe com a unidade comercial e tributável (FastReport)
um tópico no fórum postou Wanderson Paiva ACBrNFe
Bom dia senhores! Gostaria de saber se a alteração que foi feita no tópico abaixo, foi mantida para a Danfe em FastReport no trunk2. Caso tenha sido mantida, gostaria de saber como proceder para conseguir imprimir as duas unidades (comercial e tributável). Grato! -
Caros estou usando o DANFE da NFC-e com Fast Report e não consegui fazer funcionar as propriedades Sistema,Site e campos de tributos (Vtribest,vtribfed,VtribMun) eu preencho os campos porem quando visualizo não encontro eles preenchidos no danfe.
-
Impressão de Evento(FAST) sempre mostrando a seleção de impressoras
um tópico no fórum postou mbbortolini ACBrNFe
Bom dia colegas, por dias estive buscando uma solução para a situação a seguir (breve história) : com o fim do suporte ao delphi 7, a solução mais viável foi desenvolver um agente (no X10) para ler as instruções e emitir as notas, eventos e afins. Até ai tudo OK, ele fica bonitinho no 'tray' emite as advertências quando necessário, manda as impressões das notas todas corretas. No entanto ao entrar na parte dos eventos, me deparei com a situação que o evento nunca era impresso diretamente, sempre aparecia a seleção da impressora(mostraPreview = False), problema???, nem tanto, a não ser pelo fato de a seleção da impressora não aparecer ao usuário, uma vez que ela fica 'dentro' do agente o qual está minimizado no 'tray'. Fuçando o fonte me deparei com as seguintes situações: na imagem 'passaParametro.png' é mostrado como estava a opção do preview, na imagem 'carregamentodaOpImpressao.png' é onde o parâmetro vinha sempre pra verdadeiro. SOLUÇÃO: após longa pesquisa no processo de impressão da NFe, uma das diferenças era o parâmetro "FdmDanfe.frxReport.PrintOptions.ShowDialog" o qual não era alterado quando executava a procedure 'PrepareReportEvento' da unit "ACBrNFeDANFEFR", isso é mostrado na imagem 'Alteração.pmg'. Após isso a impressão é disparada diretamente para a impressora configurada no componente. Segue o fonte alterado para análise, se a alteração for válida espero que ajude. Desde já obrigado ACBrNFeDANFEFR.pas -
Olá pessoal, estou com uma situação aonde eu adiciono 2 ou mais nfe's e quando eu mando efetuar a impressão do danfe pelo fast report o campo FOLHA está mostrando (na minha opinião) errado. Na imagem anexada segue exemplo de 2 nfe's que geram somente 1 página cada uma (FOLHA 1/1), e quando efetuo o procedimento descrito acima o campo FOLHA mostra o total de paginas do relatório, pelo fonte vi que é exibido a variável PAGES do relatório. No meu entendimento como são nfe's distintas, não deveria exibir 1/2 e sim 1/1. Alguém já percebeu isso ? Conto com a ajuda dos nobres colegas. Estou utilizando o arquivo DANFeRetrato.fr3 e DANFeRetratoNovo.fr3 do trunk2 (atualizado) e em ambos acontece a mesma coisa. Grato.
-
Pessoal, desculpem a ignorância, gostaria de editar meu DANFE da NFCe, antigamente usava o arquivo ACBrNFeDANFEFRDM.pas, carregava o template e editava, mas o arquivo DFM não está mais na pasta ACBr\trunk2\Fontes\ACBrDFe\ACBrNFe\DANFE\NFe\Fast Ainda é por este arquivo que faço a edição ? Teria outra forma ? Desde já obrigado
-
Problemas com impressão da DANFE NFC-e do FAST
um tópico no fórum postou mbbortolini NFC-e - Nota Fiscal do Consumidor Eletrônica
Bom dia pessoal, estou com um problema na impressão do Danfe da NFCe após atualizar o projeto com o trunk2, ocorre que o danfe é impresso 'cortando' as informações das laterais +- 4 caracteres na esquerda e +- 2 na direita. Já testei alterações na impressora, mas não resolveu. No projeto apenas foram removidas as propriedades extintas dos paths e alguns eventos que não existem mais, no demais o componente é configurado da mesma forma, adicionado impressora, danfe, o path do arquivo fast. Ocorre que com o exe com a versão do trunk imprime normal e do trank2 'corta' a impressão, independente de usar o arquivo do fast que está no repositório ou usar o que já estava no pc. Impressora Epson TM-T20, mas ocorre tbm na Daruma. ImpressãoExeTrunk.pdf ImpressãoExeTrunk2.pdf -
Boa tarde pessoal... esse é o primeiro tópico aberto por mim... vamos la... Utilizava o ACBR e Danfe Fast Report para geração de meus NFCe no trunk1 e funcionava perfeitamente com spool e drie do fabricante. Após eu migrar para Trunk2 não consegui mais imprimir desta forma... ao abrir meu transmissor da um erro ao chamar a função de impressão do AcbrDanfe... ai resolvi migrar para o EscPos... li vários outros tópicos... consegui imprimir e o que ocorre de erros: a impressão saiu toda desconfigurada... os itens não cabem em duas linhas e utilizam 3.. os espaçamentos estão todos incorretos... não sai mais o logotipo do cliente... mesmo carregando todos os parâmetros.... e Tb não imprime o QRCODE.... e no final no lugar do mesmo sai o endereço que era para sair no qrcode.... estou perdido... vários clientes meus travados.... preciso de socorroooo!!!!
-
Pessoal, boa tarde. Gostaria de saber se a propriedade ExpandirLogoMarca para o DANFe no FastReport (Trunk2) funciona? if FilesExists(ExtractFilePath(Application.ExeName) + 'Logos\logo_danfe.jpg') then begin ACBrNFe1.DANFE.ExpandirLogoMarca := true; ACBrNFe1.DANFE.Logo := ExtractFilePath(Application.ExeName) + 'Logos\logo_danfe.jpg'; end; Estou usando a imagem da logo com o endereço do emissor (339 x 114), portanto ela vai ocupar todo o espaço. Quando faço o teste, a imagem está muito pequena e ocupa menos da metade do espaço. Se, no caso, a propriedade não funciona para o FastReport, qual seria então as dimensões corretas da imagem menor? Grato.
-
Olá estou com um problema e preciso embutir o fast da DANF dentro do meu aplicativo ao invés de chamar o DANFE.fr3 Queria saber se é possível se alguém já fez isso e uma ajuda nessa situação Estive procurando sobre o assunto mas não achei nada que me ajudasse
-
Sugestão de alteração na função PrepareReportEvento da unit ACBrNFeDANFEFR
um tópico no fórum postou Fabiano Ribeiro ACBrNFe
Olá pessoal, Apenas uma sugestão, ja existe um codigo similiar na função TACBrNFeDANFEFR.PrepareReport para poder fazer o "LoadFromStream", só colocar a mesma opção para a função TACBrNFeDANFEFR.PrepareReportEvento. Segue como ficaria a sugestão: function TACBrNFeDANFEFR.PrepareReportEvento: Boolean; Var wProjectStream: TStringStream; begin if Trim(FastFileEvento) <> '' then begin if not (uppercase(copy(FastFileEvento,length(FastFileEvento)-3,4))='.FR3') then begin wProjectStream:=TStringStream.Create(FastFileEvento); fdmDanfe.frxReport.FileName := ''; fdmDanfe.frxReport.LoadFromStream(wProjectStream); wProjectStream.Free; end else begin if FileExists(FastFileEvento) then fdmDanfe.frxReport.LoadFromFile(FastFileEvento) else raise EACBrNFeDANFEFR.CreateFmt('Caminho do arquivo de impressão do EVENTO "%s" inválido.', [FastFileEvento]); end; end else raise EACBrNFeDANFEFR.Create('Caminho do arquivo de impressão do EVENTO não assinalado.'); FdmDanfe.frxReport.PrintOptions.Copies := NumCopias; // preparar relatorio if Assigned(ACBrNFe) then begin if assigned(TACBrNFe(ACBrNFe).EventoNFe) then begin FdmDanfe.Evento := TACBrNFe(ACBrNFe).EventoNFe; FdmDanfe.CarregaDadosEventos; end else raise EACBrNFeDANFEFR.Create('Evento não foi assinalado.'); if TACBrNFe(ACBrNFe).NotasFiscais.Count > 0 then begin FdmDanfe.frxReport.Variables['PossuiNFe'] := QuotedStr('S'); FdmDanfe.NFe := TACBrNFe(ACBrNFe).NotasFiscais.Items[0].NFe; FdmDanfe.CarregaDadosNFe; end; Result := FdmDanfe.frxReport.PrepareReport; end else raise EACBrNFeDANFEFR.Create('Propriedade ACBrNFe não assinalada.'); end; Obrigado. Fabiano -
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,' ','',[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