Jump to content

Recommended Posts

Posted (edited)

Bom dia,

Tenho um evento no ecrã sPR (Ao Gravar) que pretende gerar PDF do recibo de vencimento e enviar por email automaticamente, usando a função IduToPdf.

No módulo BO (Encomendas a Fornecedor) funciona corretamente com:

IduToPdf("BO", "BI", "BOCAMPOS", "BICAMPOS", "BOIDUC", "BOIDUL", 93, "Enc. Fornecedor", cDir, "", "NO", .F., "ONETOMANY")

No módulo PR (Recibos de Vencimento) dá sempre erro:

"A expressão do SELECT do IDU está incorrecta"

"Error instantiating cursor object. Cannot find c:\phc202504.dbf"

"File is in use" no Local: IDUTOPDF

Já tentei várias combinações de parâmetros sem sucesso.
Quais são os parâmetros correctos do IduToPdf para gerar PDF de recibos de vencimento (tabela PR)? Especificamente: tabela de detalhe, nomes dos cursores (campos, IDU cabeçalho, IDU linhas), número do IDU e título do template.

PHC Evolution Premium, versão 202504.

Obrigado 

Edited by joao pinto
Posted (edited)
Em 09/02/2026 às 07:29, joao pinto disse:

Bom dia,

Tenho um evento no ecrã sPR (Ao Gravar) que pretende gerar PDF do recibo de vencimento e enviar por email automaticamente, usando a função IduToPdf.

No módulo BO (Encomendas a Fornecedor) funciona corretamente com:

IduToPdf("BO", "BI", "BOCAMPOS", "BICAMPOS", "BOIDUC", "BOIDUL", 93, "Enc. Fornecedor", cDir, "", "NO", .F., "ONETOMANY")

No módulo PR (Recibos de Vencimento) dá sempre erro:

"A expressão do SELECT do IDU está incorrecta"

"Error instantiating cursor object. Cannot find c:\phc202504.dbf"

"File is in use" no Local: IDUTOPDF

Já tentei várias combinações de parâmetros sem sucesso.
Quais são os parâmetros correctos do IduToPdf para gerar PDF de recibos de vencimento (tabela PR)? Especificamente: tabela de detalhe, nomes dos cursores (campos, IDU cabeçalho, IDU linhas), número do IDU e título do template.

PHC Evolution Premium, versão 202504.

Obrigado 

o código que estou a usar é o abaixo, mas não retorna as linhas:


 

#Define MAILITEM 0

If (Pergunta("Pretende enviar o recibo por email?"))
   Local cTitIDU, cDir, cEmail, nNo, nRecibo, nAno, cStamp, nConn, nConn2

   nNo = pr.no
   nRecibo = pr.recibo
   nAno = pr.ano
   cStamp = pr.prstamp

   * Criar cursor PRLINHAS via SQL
   nConn2 = SQLSTRINGCONNECT("Driver={SQL Server};Server=SRVSQL\PHC;Database=xxxx;Uid=sa;Pwd=AQUI_A_PASSWORD;")
   IF nConn2 > 0
      SQLEXEC(nConn2, "SELECT r.rem, r.rqtt, r.ervu, r.ere, ISNULL(d.des,'') as des, ISNULL(d.dqtt,0) as dqtt, ISNULL(d.ede,0) as ede FROM (SELECT rem, rqtt, ervu, ere, ROW_NUMBER() OVER(ORDER BY prrestamp) as rn FROM prre (nolock) WHERE prstamp = '" + cStamp + "') r FULL OUTER JOIN (SELECT des, dqtt, ede, ROW_NUMBER() OVER(ORDER BY prdestamp) as rn FROM prde (nolock) WHERE prstamp = '" + cStamp + "') d ON r.rn = d.rn ORDER BY ISNULL(r.rn, d.rn)", "PRLINHAS")
      SQLDISCONNECT(nConn2)
   ENDIF

   SELECT pr

   cDir = "C:\PHC_RECIBOS\Recibo_" + ALLTRIM(STR(nRecibo)) + "_" + ALLTRIM(STR(nNo)) + ".pdf"
   IF !DIRECTORY("C:\PHC_RECIBOS")
      MKDIR("C:\PHC_RECIBOS")
   ENDIF
   IF FILE(cDir)
      DELETE FILE (cDir)
   ENDIF

   cTitIDU = "Recibo em Euros "
   IduToPdf("PR","PRRE","PRCAMPOS","PRRECAMPOS","PRIDUC","PRIDUL",0,cTitIDU,cDir,"","NO",.F.,"ONETOMANY")

   IF FILE(cDir)
      cEmail = ""
      nConn = SQLSTRINGCONNECT("Driver={SQL Server};Server=xxxxxxxxxxxx;")
      IF nConn > 0
         SQLEXEC(nConn, "SELECT pe2.email FROM pe INNER JOIN pe2 ON pe2.pe2stamp = pe.pestamp WHERE pe.no = " + ALLTRIM(STR(nNo)), "crsEmail")
         IF USED("crsEmail") AND RECCOUNT("crsEmail") > 0
            SELECT crsEmail
            cEmail = ALLTRIM(crsEmail.email)
         ENDIF
         SQLDISCONNECT(nConn)
      ENDIF
      SELECT pr

   

Assunto acima resolvido, problema agora, Quais os parâmetros correctos para chamar IduToPdf no módulo PR (Recibos de Vencimento)? Estou a usar: IduToPdf("PR","PRRE","PRCAMPOS","PRRECAMPOS","PRIDUC","PRIDUL",0,"Recibo em Euros ",cDir,"","NO",.F.,"ONETOMANY") — gera PDF com cabeçalho completo mas as secções Remunerações e Descontos ficam vazias. O template internamente referencia o cursor PRLINHAS. Como preencher as linhas de detalhe

Edited by joao pinto

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.