Jump to content
Fivewin Brasil

Erro gerarPdfDANFE FlexDocs


aferra

Recommended Posts

Tarde....

é o seguinte, fazendo o processo normal de emissão de nota é criado e visualizado perfeitamente, mas se preciso criar novamente o pdf não e mando direto para o method não funciona, entrei em contato com a flexdocs e me retornaram o seguinte:

"Existe um problema no reports.dll que aciona uma exceção do .NET, o problema acontece com o compilador da Borland, o Sr. deve estar utilizando o c++ Builder para compilar a sua aplicação, no caso do Delphi basta desativar o FPU exception

A melhor opção seria o Sr. tentar desativar o FPU exception no c++ Builder ou utilizar o compilador da MS"


Floating point exceptions must be turned to Off in C++ Builder by using:
#include <WTypes.h>
Set8087CW(0x133f);

me passaram dois links

http://flexdocs.com.br/FAQ/viewtopic.php?f=22&t=352&p=419&hilit=fpu#p419

http://guides.gdpicture.com/content/Using%20GdPicture.NET%20COM%20Edition%20like%20an%20ActiveX.html

mas quem disse que entendi alguma coisa.. rsrsrsrsrsrs

alguém sabe como solucionar esse problema?

agradeço desde já

Link to comment
Share on other sites

Como fazes, assim?



FUNCTION CriaPdfDanfe( cChaveNFe, lTela, lNotSumatra ) // USANDO A FLEXDOCS.

LOCAL OrigDadosEmissor := "", quadroRecibo := "I", quadroFatura := "S", ;
quadroISSQN := "S", DPEC := "", separadorItem := "T"


LOCAL GravaPDF := "C:\NFEPDF\NFE"+Alltrim(cChaveNFe)+".PDF",;
cResultado:=0, msgResultado := "", objNfeUtil := NIL
LOCAL oNFeUtil, cCertificado, cLogo, lIeAtivo := .F.

LOCAL cFileXmlAssinado, nRet, nPrn

PUBLIC lNaoImpXmlVazio

//http://www.flexdocs.com.br/guiaNFe/funcao.utilidades.geraDANFE.html

cLogo := "LOGOPDF.JPG" // Conforme Modelo da FlexDocs

IF CADNFE->STATUS = [IMP] .OR. CADNFE->STATUS = [APR]

cXmlAlterado:= "REMESSA\PROTOCOLOS\"+Alltrim(cChaveNFe)+".xml" // alterado em 27/03/2014 - Paulo

IF FILE("&cXmlAlterado")
cFileXmlAssinado := "REMESSA\PROTOCOLOS\"+Alltrim(cChaveNFe)+".xml"
ELSE
cFileXmlAssinado := "REMESSA\PROTOCOLOS\"+Alltrim(cChaveNFe)+"nfe.xml"
ENDIF

IF .NOT. FILE( cFileXmlAssinado )
ARQUIVO_XML_NAO_ENCONTRADO()
RETURN NIL
ENDIF

ELSEIF CADNFE->STATUS = [CAN]

cXmlAlterado:= "REMESSA\PROTOCOLOS\"+Alltrim(cChaveNFe)+".xml" // alterado em 27/03/2014 - Paulo

IF FILE("&cXmlAlterado")
cFileXmlAssinado := "REMESSA\ENVIADAS\"+Alltrim(cChaveNFe)+".xml"
ELSE
cFileXmlAssinado := "REMESSA\ENVIADAS\"+Alltrim(cChaveNFe)+"nfe.xml"
ENDIF

IF .NOT. FILE( cFileXmlAssinado )
ARQUIVO_XML_NAO_ENCONTRADO()
RETURN NIL
ENDIF

ELSE

RETURN NIL

ENDIF

Default lNotSumatra := .t.

IF LEN(cChaveNFe) < 44

MsgAlert("Chave NFe inválida.", "Alerta!")

Return nil

ENDIF

cCertificado := IF( EMPTY(CADPARAM->CERTIF), "", ALLTRIM(CADPARAM->CERTIF ) )

oNFEUtil := tVoNFeUtil2G():New(CADPARAM->UF,val(cTpAmb),IIF(VAL(cCertificado)>1, .F., .T.), wProxy,wUsuario,wSenha,cLicenca,.F.) // .F. NAO POR .T. DA PAU

If oNFeUtil == Nil
Return nil
Endif

objNfeUtil := CreateObject( "NFe_Util_2G.util" )

//http://www.flexdocs.com.br/guiaNFe/funcao.utilidades.geraDANFE.html
IF .NOT. EMPTY( cLogo ) // Mostra o Logo conforme modelo da Flexdocs

OrigDadosEmissor := cLogo

ELSE // Mostra os dados do Emitente do .XML da nfe

OrigDadosEmissor := "" // cLogo

ENDIF

cFileXmlAssinado:=oNfeUtil:ReadXml(cFileXmlAssinado)

cFileXmlAssinado:=objNfeUtil:IdentaXML( cFileXmlAssinado, @cResultado, @msgResultado )

IF EMPTY( cFileXmlAssinado ) .OR. cResultado != 7310

ARQUIVO_XML_NAO_ENCONTRADO() // EM: DBMANUT2.PRG

lNaoImpXmlVazio := .F. // IMPEDE QUE SE IMPRIMA UM .XML VAZIO EM GERAPNFE.PRG

RETURN NIL

ELSE

// VAI GERAR O .PDF, USANDO A FLEXDOCS AUTOMATICAMENTE. 06/05/2013
cResultado := objNfeUtil:GeraPdfDANFE(cFileXmlAssinado, OrigDadosEmissor,;
quadroRecibo, quadroFatura, ;
quadroISSQN, DPEC, separadorItem, ;
gravaPDF, msgResultado)

ENDIF

IF FILE( GravaPDF )

MsgWait( "ARQUIVO *.PDF GERADO EM C:\NFEPDF", ;
"AGUARDE UM MOMENTO POR FAVOR... ", 2.5 )

ELSE

MsgWait( "NAO FOI POSSIVEL GERAR O *.PDF... ", ;
"TEM ALGUM PROBLEMA COM O SEU MICRO.", 3.5 )

ENDIF

lMostraMensa := .F. // SE FOR 1 SO E EXISTIR

// SOMENTE QUERO QUE GERE O .PDF E NAO IMPRIMA - NAO PRECISO DO SUMATRAPDF.EXE
IF lNotSumatra

// PERGUNTAR NA TELA DE IMPRESSAO DA NF-E
IF ltela // Visualiza o .PDF na tela, usando o SUMATRA.EXE

IF .NOT. FILE( cDirExe+"SUMATRA\SUMATRAPDF.EXE" )

MsgStop( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ;
OemToAnsi( "O PROGRAMA DA NOTA FISCAL ELETRâNICA" )+CRLF+ ;
OemToAnsi( "DETECTOU A FALTA DE UM COMPONENTE " )+CRLF+ ;
OemToAnsi( "NECESSµRIO PARA SE PODER VISUALIZAR " )+CRLF+ ;
OemToAnsi( "O ARQUIVO NO FORMATO *.PDF. " )+CRLF+ ;
OemToAnsi( "POR FAVOR, ENTRE EM CONTATO COM A " )+CRLF+ ;
OemToAnsi( "CONTATO SISTEMAS E PROC. LTDA. E " )+CRLF+ ;
OemToAnsi( "INFORME QUE FALTA O SUMATRAPDF.EXE " )+CRLF+ ;
OemToAnsi( "NA PASTA, C:\INST_NFE\SUMATRA\ " ), ;
OemToAnsi( "Faltando Componente de Visualiza‡Æo " ) )

RETURN NIL

ENDIF

WinExec( cDirExe+"sumatra\sumatrapdf.exe -reuse-instance -lang pt "+gravaPDF) //-restrict -fullscreen

ELSE // somente imprime - Direto na Impressora

//WinExec( cDirExe+"sumatra\sumatrapdf.exe -print-to-default -reuse-instance -lang pt "+gravaPDF) //-restrict -fullscreen
// Se eu quisesse que a impressao fosse direto para impressora.
/* // causou problemas na Qualy - Helenice.
nRet := PrinterSetUp()

nPrn := PrnGetName()

IF(nRet#0)

//WinExec(PastaSistema+"\sumatrapdf.exe -print-to "+nPrn+" -reuse-instance -lang br "+cArq) // sem preview
WinExec( cDirExe+"sumatra\sumatrapdf.exe -print-to "+nPrn+" -reuse-instance -lang pt "+gravaPDF) //-restrict -fullscreen

ENDIF
*/

ENDIF

ENDIF

RETURN NIL


Link to comment
Share on other sites

Ate hoje não consegui usar a funcao gerapdfdanfe da nova dll somente ate a versao 2.0

A maquina trava na hora de executar a funcao

ja mandei um monte de email para pessoal do flexdocs e nao resolveu porisso eles disponibilizarão um programa feito por eles chamado danfe.exe que estou usando

para gerar a danfe em pdf

È oque estou usando

dizem que é uma incompatibilidade reports.dll com xharbour

Link to comment
Share on other sites

é como disse, funciona se fizer a nota direto, ou seja carrega os tvonfeutil tvonfe2g e transmite vai tudo de boa. ai tenho que cliente que deleta o pdf e tem cliente do cliente que se perder e deleta o que foi enviado no dia, então tenho que criar novamente o pdf ai que dá o pau...não vai....a informação da flexdocs é desativar o FPU do compilador bcc mas não vai...rsrsrsrsrs

outra solução que passaram é eu mudar para o MSVC mas não consegui, já resolvi o problema usando a fastreport, mas é estranho todo esse funcionamento de hora funciona hora não funciona...

Link to comment
Share on other sites

Realmente Kapi em alguns maquinas isso não ocorre é alguma coisa no fivewin+xharbour

ja peguei a minha rotina mandei para um amigo e compilou e funcionou ja na minha maquina nao vai

e nem na maquina do cliente porisso eu acho que algum arquivo que falta ou precisa ser substituido no projeto

Link to comment
Share on other sites

Eduardo, me envie a função por email para eu dar uma lida nela, as vezes é um pelo em ovo. Esta função que eu postei acima, roda em mais de 100 máquinas e em rwindows diferentes e ninguém reportou problemas, eu recrio o PDF da nota na impressão e na reimpressão e além disso tem um botão para gerar os pdfs, independente de imprimir ou não. Não trava e não quebra.

Link to comment
Share on other sites

Function GeraDanfe()

local cFileXmlAssinado:= ""

LOCAL OrigDadosEmissor := "", quadroRecibo := "I", quadroFatura := "S", quadroISSQN := "S", DPEC := "", separadorItem := "T"

LOCAL gravaPDF := "[RODAPE=][VISUALIZAR][QUADROPRODUTO]"

LOCAL cResultado:=1, msgResultado := ""

LOCAL cfilexmlAssinado2,cFilePdf

LOCAL cDestino := vp_pathnfe+"PDF"

LOCAL cMarcaDagua := vp_pathnfe+"Marcadagua.jpg"

*

if !isDirectory( vp_pathnfe+"PDF" )

MakeDir( vp_pathnfe+"PDF" )

Endif

cFileXmlAssinado:= vp_pathnfe+"remessa\protocolos\"+Alltrim(fat->chavenfe)+"-nfe.xml"

If !file(cfileXmlassinado)

cFileXmlAssinado:= vp_pathnfe+"remessa\protocolos\"+Alltrim(fat->chavenfe)+"nfe.xml"

If !file(cfileXmlassinado)

cFileXmlAssinado:= vp_pathnfe+"remessa\protocolos\"+Alltrim(fat->chavenfe)+".xml"

If !file(cfileXmlassinado)

msginfo("Arquivo nao Encontrado !!! ")

retur(.t.)

Endif

Endif

Endif

oNfeUtil := CreateObject( "NFe_Util_2G.util" )

if vp_emp = "1"

OrigDadosEmissor:= vp_PATHNFE+"LOGO.Jpg"

Elseif vp_emp = "2"

OrigDadosEmissor:= vp_PATHNFE+"LOGO1.Jpg"

Elseif vp_emp = "3"

OrigDadosEmissor:= vp_PATHNFE+"LOGO2.Jpg"

Elseif vp_emp = "4"

OrigDadosEmissor:= vp_PATHNFE+"LOGO3.Jpg"

Elseif vp_emp = "5"

OrigDadosEmissor:= vp_PATHNFE+"LOGO4.Jpg"

Endif

quadroRecibo := "I"

quadroFatura := "S"

quadroISSQN := "S"

DPEC := ""

separadorItem := "L"

*

IF VP_CNPJ = "00.605.813/0001-05" .or. vp_cnpj = "59.796.946/0001-59"

quadroRecibo := "S"

Endif

if VP_CNPJ = "05.820.869/0001-04" .OR. VP_CNPJ = "05.258.432/0001-10"

quadroRecibo := "S"

Endif

IF VP_CNPJ = "17.488.265/0001-83" // ACEMET

quadroRecibo := "S"

Endif

IF FAT->STATUS = "C"

cgravaPDF := "[RODAPE=CANCELADA][VISUALIZAR][ARQUIVO=+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7))+".PDF"+][PASTA=+cDestino+][QUADROPRODUTO][MENSAGEM=CANCELADA]"

ELSE

if !file(cMarcaDagua)

cgravaPDF := "[RODAPE=][VISUALIZAR][ARQUIVO=+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7))+".PDF"+][PASTA=+cDestino+][QUADROPRODUTO][MOSTRARICMSST]"

Else

cgravaPDF := "[RODAPE=][VISUALIZAR][ARQUIVO=+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7)) +".PDF"+][PASTA=+cDestino+][QUADROPRODUTO][MOSTRARICMSST][MarcaDagua=<MarcaDagua><Item> <cxMM>100</cxMM><cyMM>150</cyMM><imagem>"+VP_PATHNFE+"MarcadAgua.jpg</imagem><largMM>100</largMM><altMM>100</altMM></Item></MarcaDagua>]"

* gravaPDF := "[RODAPE=][VISUALIZAR][ARQUIVO=+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7)) +".PDF"+][PASTA=+cDestino+][QUADROPRODUTO][MarcaDagua=<MarcaDagua><Item><cxMM>100</cxMM><cyMM>150</cyMM><imagem>"+VP_PATHNFE+"MarcadAgua.jpg</imagem><largMM>100</largMM><altMM>100</altMM></Item></MarcaDagua>][COLUNAVALORPRODUTO]"

Endif

ENDIF

ENDIF

cFileXmlAssinado2:=memoread(cFileXmlAssinado)

cResultado := oNfeUtil:geraPdfDANFE(cFileXmlAssinado2,OrigDadosEmissor,quadroRecibo,quadroFatura, quadroISSQN, DPEC, separadorItem, gravaPDF, msgResultado)


na ultima linha trava a maquina



Return(Nil)
Link to comment
Share on other sites

Edu, teste agora e reporte a reacao da função.




Function GeraDanfe()

local cFileXmlAssinado:= ""

LOCAL OrigDadosEmissor := "", quadroRecibo := "I", quadroFatura := "S", ;
quadroISSQN := "S", DPEC := "", separadorItem := "T"

// TROQUE PELA SUA CHAVE
LOCAL GravaPDF := "C:\NFEPDF\NFE"+Alltrim(cChaveNFe)+".PDF",;
cResultado:=0, msgResultado := "", objNfeUtil := NIL

//LOCAL gravaPDF := "[RODAPE=][VISUALIZAR][QUADROPRODUTO]" //????

// LOCAL cResultado:=1, msgResultado := "" //???

LOCAL cfilexmlAss2,cFilePdf
LOCAL cDestino := vp_pathnfe+"PDF"
LOCAL cMarcaDagua := vp_pathnfe+"Marcadagua.jpg"

*
if !isDirectory( vp_pathnfe+"PDF" )
MakeDir( vp_pathnfe+"PDF" )
Endif

cFileXmlAssinado:= vp_pathnfe+"remessa\protocolos\"+Alltrim(fat->chavenfe)+"-nfe.xml"

If !file(cfileXmlassinado)

cFileXmlAssinado:= vp_pathnfe+"remessa\protocolos\"+Alltrim(fat->chavenfe)+"nfe.xml"

If !file(cfileXmlassinado)

cFileXmlAssinado:= vp_pathnfe+"remessa\protocolos\"+Alltrim(fat->chavenfe)+".xml"

If !file(cfileXmlassinado)
msginfo("Arquivo nao Encontrado !!! ")
retur(.t.)
Endif

Endif

Endif

//oNfeUtil := CreateObject( "NFe_Util_2G.util" )
objNfeUtil := CreateObject( "NFe_Util_2G.util" )

if vp_emp = "1"

OrigDadosEmissor:= vp_PATHNFE+"LOGO.Jpg"

Elseif vp_emp = "2"

OrigDadosEmissor:= vp_PATHNFE+"LOGO1.Jpg"

Elseif vp_emp = "3"

OrigDadosEmissor:= vp_PATHNFE+"LOGO2.Jpg"

Elseif vp_emp = "4"

OrigDadosEmissor:= vp_PATHNFE+"LOGO3.Jpg"

Elseif vp_emp = "5"

OrigDadosEmissor:= vp_PATHNFE+"LOGO4.Jpg"

Endif

/* // JA ESTA DEFINIDO NA LOCAL
quadroRecibo := "I"
quadroFatura := "S"
quadroISSQN := "S"
DPEC := ""
separadorItem := "L" //??? L CORRETO: T
*/

*
IF VP_CNPJ = "00.605.813/0001-05" .or. vp_cnpj = "59.796.946/0001-59"
quadroRecibo := "S"
Endif

if VP_CNPJ = "05.820.869/0001-04" .OR. VP_CNPJ = "05.258.432/0001-10"
quadroRecibo := "S"
Endif

IF VP_CNPJ = "17.488.265/0001-83" // ACEMET
quadroRecibo := "S"
Endif

IF FAT->STATUS = "C"

cgravaPDF := "[RODAPE=CANCELADA][VISUALIZAR][ARQUIVO="+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7))+".PDF"+"][PASTA="+cDestino+"][QUADROPRODUTO][MENSAGEM=CANCELADA]"

ELSE

if !file(cMarcaDagua)
cgravaPDF := "[RODAPE=][VISUALIZAR][ARQUIVO="+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7))+".PDF"+"][PASTA="+cDestino+"][QUADROPRODUTO][MOSTRARICMSST]"
Else
cgravaPDF := "[RODAPE=][VISUALIZAR][ARQUIVO="+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7)) +".PDF"+"][PASTA="+cDestino+"][QUADROPRODUTO][MOSTRARICMSST][MarcaDagua=<MarcaDagua><Item> <cxMM>100</cxMM><cyMM>150</cyMM><imagem>"+VP_PATHNFE+"MarcadAgua.jpg</imagem><largMM>100</largMM><altMM>100</altMM></Item></MarcaDagua>]"
* gravaPDF := "[RODAPE=][VISUALIZAR][ARQUIVO="+"NFE_"+ALLTRIM(STR(FAT->NRONFISCAL,7)) +".PDF"+"][PASTA="+cDestino+"][QUADROPRODUTO][MarcaDagua=<MarcaDagua><Item><cxMM>100</cxMM><cyMM>150</cyMM><imagem>"+VP_PATHNFE+"MarcadAgua.jpg</imagem><largMM>100</largMM><altMM>100</altMM></Item></MarcaDagua>][COLUNAVALORPRODUTO]"
Endif

ENDIF

// ENDIF ???

//cFileXmlAss2:=memoread(cFileXmlAssinado)

cFileXmlAss2:=oNfeUtil:ReadXml(cFileXmlAssinado)

cFileXmlAss2:=objNfeUtil:IdentaXML( cFileXmlAssinado, @cResultado, @msgResultado )

IF EMPTY( cFileXmlAss2 ) .OR. cResultado != 7310

? [arquivo nao encontrado]

ELSE

/*
cResultado := oNfeUtil:geraPdfDANFE(cFileXmlAss2,OrigDadosEmissor, ;
quadroRecibo,quadroFatura, ;
quadroISSQN, DPEC, separadorItem, ;
gravaPDF, msgResultado)
*/

cResultado := objNfeUtil:GeraPdfDANFE(cFileXmlAss2, OrigDadosEmissor,;
quadroRecibo, quadroFatura, ;
quadroISSQN, DPEC, separadorItem, ;
gravaPDF, msgResultado)

ENDIF

Return(Nil)

Link to comment
Share on other sites

Poste o código modificado e qual é a versão do seu FiveWin e xHarbour?

Eduardo, o que eu notei aqui, é que se eu não instanciar a classe, ele trava. Veja onde eu comentei.
A resposta do programa é: "Programa parou de funcionar".
   /*
   cCertificado := IF( EMPTY(CADPARAM->CERTIF), "", ALLTRIM(CADPARAM->CERTIF ) )
 
   // ORIGINAL BY SISTEM
   //oNFeUtil  := TVoNFeUtil2g():New(Empr->Est_Empr, Empr->Mod_Empr, cCertificado,,,, Empr->Cha_Empr, .t., Iif(Val(Empr->Ctg_Empr)>1, .t., .f.))
 
   oNFEUtil := tVoNFeUtil2G():New(CADPARAM->UF,val(cTpAmb),IIF(VAL(cCertificado)>1, .F., .T.), wProxy,wUsuario,wSenha,cLicenca,.F.)  // .F. NAO POR .T. DA PAU
 
   If oNFeUtil == Nil
      Return nil
   Endif
   */
 
 
   objNfeUtil := CreateObject( "NFe_Util_2G.util" )
 
   IF .NOT. EMPTY( cLogo ) // Mostra o Logo conforme modelo da Flexdocs
 
      OrigDadosEmissor := cLogo
 
   ELSE  // Mostra os dados do Emitente do .XML da nfe
 
      OrigDadosEmissor := "" // cLogo
 
   ENDIF
 
   //cFileXmlAssinado:=oNfeUtil:ReadXml(cFileXmlAssinado)
 
   //cXml := oDanfe:IdentaXML(cXml,@cResultado,@msgResultado)
   //cFileXmlAssinado:=objNfeUtil:IdentaXML( cFileXmlAssinado, @cResultado, @msgResultado )
 
   cFileXmlAssinado := MemoRead( cFileXmlAssinado )
 
   // Travou o programa aqui, pois a classe nao foi instanciada
      cResultado := objNfeUtil:GeraPdfDANFE(cFileXmlAssinado, OrigDadosEmissor,;
                                            quadroRecibo, quadroFatura,        ;
                                            quadroISSQN, DPEC, separadorItem,  ;
                                            gravaPDF, msgResultado)
 
 
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...