/*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ Empresa.: Sistema de Contabilidade P£blica
\ Programa: REL_B009.PRG
\ Data....: 05-03-05
\ Sistema.: CONTABILIDADE PéBLICA - SCP05
\ Funcao..: IX    -Pagamento Realizados
\ Analista: Clodoaldo Monteiro
\ Criacao.: GAS-Pro v4.0o
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
*/

#pragma -w0
#pragma -es0

#include "PDF.CH"     // inicializa constantes manifestas
#include "GAS.CH"     // inicializa constantes manifestas
#include "winuser.ch"
Procedure REL_B009
   Local cRun, nWidth, nTab, nI, nJ, nK, nRow, aStyle, aFonts
   Private nTop, nLeft, nBottom, nRight

   Parameters lin_menu, col_menu
   Private dele_atu, cur_atual, getlist := {}
   Private  tem_borda := .t., op_menu := VAR_COMPL, l_s := 01, c_s := 01, l_i := 25, c_i := 110
   Private nCol, nMaxli, nLpi := 9, sTpo
   nucop=1

   IF nivelop< 2
      msgAtencao( msg_auto )
      Return                                                      // retornamos ao menu
   EndIf

   If AbreJanela( 'ANEXO 9 - RELAÇÃO DE PAGAMENTOS REALIZADOS', l_s, c_s, l_i, c_i,, .t., .t., ) = 0
      MsgError( "Erro ao abrir Janela de dados." )
      Return
   EndIf

   BEGIN SEQUENCE
      Do While .T.
         SetColor(drvtittel)
         vr_memo := NovaPosi(@l_s,@c_s,@l_i,@c_i)     // pega posicao atual da tela

         Caixa(mold, l_s, c_s, l_i, c_i)               // monta caixa da tela

         @ l_s + 08, c_s + 0 Say Replicate('Ä', c_i)

         SetColor(drvcortel)
         @ l_s + 02, c_s + 1 Say " Fundo(GestÆo).:"
         @ l_s + 04, c_s + 1 Say " Assinatura....:"
         @ l_s + 05, c_s + 1 Say " Mˆs...........: "

         Private mFUNDO := '0'
         Private mMesRel := pe_mm

         cod_sos := 56
         SetColor(drvcortel + ", " + drvcorGet + ",,, " + corcampo)

         @ l_s + 02, c_s + 18 Get mFUNDO;
          Picture "!";
          Valid CRIT("PTAB(mFUNDO, 'FUN', 1) .or. mFUNDO='0'~CODIGO n„o existe na tabela de FUNDOS(GESTÇO).")
         AJUDA "Escolha um FUNDO(GESTÇO) para filtragem|" +;
          "no relat¢rio de PAGAMENTOS. Deixe em branco para|" +;
          "listar todos os PAGAMENTOS."
         CMDF8 "VDBF(11,11,20,77, 'FUN', {'fun_codigo', 'fun_titulo'}, 1, 'fun_codigo', [])"
         MOSTRA {"If(mFUNDO#'0', If(ptab(MFUNDO, 'FUN', 1), SubStr(FUN->fun_titulo,1,41), Space(41)), 'TODOS OS FUNDOS(GESTåES)')", 2, 20 }

         @ l_s + 04, c_s + 20 Get MMVASSRODA;
          Picture "!";
          Valid CRIT("MMVASSRODA $ '012'~Valor n„o aceit vel.")
         AJUDA 'Informe como deseja a assinatura do rodap‚.|' +;
          '0.Sem IMAGEM Assinatura      |' +;
          '1.Assinar em TODAS as p ginas|' +;
          '2.Somente na éLTIMA p gina   '
         GetDefault "'1'"

         @ l_s + 05, c_s + 18 Get mMesRel;
          Picture "99";
          Valid CRIT("mMesRel $ '01.02.03.04.05.06.07.08.09.10.11.12'~Informe um mês válido")
         AJUDA 'Informe o mˆs de processamento.'
         GetDefault "pe_mm"

         READ

         IF LastKey() = K_ESC                                        // se quer cancelar
            BREAK
         EndIf

         //Verifica a validade da licença de uso do sistema
         if M->par_AA + mMesRel > nDataFim .and. pe_mm <> '01'
            msg := "impossível prosseguir com o processo." + CRLF +;
             'A Licença de uso está expirada para este mês.' + CRLF +;
             'Mês inicial: ' + Transform(nDataIni, '@R 9999/99') + CRLF +;
             'Mês Final: ' + Transform(nDataFim, '@R 9999/99')

            wvw_messagebox(, msg, 'ATENÇÃO ' + UserName, MB_ICONWARNING|MB_OK )

            Break
         EndIf

         cur_atual := SetCursor(0)
         dele_atu  := Set(_SET_DELETED, .t.)

         If !USEARQ("PG1", .f.,10,1)                                // se falhou a abertura do arq
            BREAK
         EndIf
         PTAB(pag_numero, "PAG",1, .t.)
         PTAB(PAG->ccr_codigo, "CCR",1, .t.)
         PTAB(cap_codigo, "CAP",1, .t.)
         PTAB(emp_codigo, "EMP",1, .t.)
         SET Relation;
          TO pag_numero INTO PAG,;
          TO PAG->ccr_codigo INTO CCR,;
          TO cap_codigo INTO CAP,;
          TO emp_codigo INTO EMP

         titrel := criterio := ""                                    // inicializa variaveis
         cpord := "emp_numero"
         chv_rela := chv_1 := chv_2 := ""
         tps := op_x := ccop := 1
         fil_ini := "mMesRel = PAG->pag_mm .and. If(mFUNDO='0', .t., mFUNDO = PAG->fun_codigo)"

         IF !opcoes_rel2(1, 65, 20,11,fil_ini)           // nao quis configurar...
            DbCloseAll()                                               // fecha arquivos e
            LOOP                                                   // volta ao menu
         EndIf

         Poe_Gauge("Colhendo dados para o relat¢rio em PDF. [ESC] Interrompe", "AGUARDE...", "Emitidos:", l_s + 09, c_s + 1)

         INI_ARQ()                                              // acha 1o. reg valido do arquivo
         aDados := {}

         Do While ! Eof() .and. Poe_Gauge()

            If IN_KEY() = K_ESC                                   // se quer cancelar
               IF canc()                                        // pede confirmacao
                  BREAK                                         // confirmou...
               EndIf
            EndIf

            mDoc := Upper( pag_docume )
            If Left(mDoc, 3) = 'CCR'
               mDoc := Trim(Subs(mDoc, 12, 50))
               mDoc := StrTran(mDoc, 'BANCO:', '')  // 001|01428-1|000000
               mDoc := StrTran(mDoc, 'AG:', '')
               mDoc := StrTran(mDoc, 'CONTA:000', '')
            Endif

            hLinha := { ;
             "fun_codigo"  => EMP->fun_codigo, ;
             "emp_numero"  => emp_numero, ;
             "emp_dd"      => EMP->emp_dd, ;
             "emp_mm"      => EMP->emp_mm, ;
             "pag_valor"   => pag_valor, ;
             "retencao"    => 0.00, ;
             "pag_dd"      => pag_dd, ;
             "pag_mm"      => pag_mm, ;
             "pla_codpla"  => pla_codpla, ;
             "cap_banco"   => CAP->cap_banco, ;
             "cap_agN"     => CAP->cap_agN, ;
             "cap_contaN"  => CAP->cap_contaN, ;
             "pag_docume"  => mDoc, ;
             "ccr_cpfcnp"  => CCR->ccr_cpfcnp, ;
             "ccr_nome"    => CCR->ccr_nome, ;
             "qdd_uo"      => PAG->qdd_uo, ;
             "qdd_fg"      => PAG->qdd_fg, ;
             "tpa_pa"      => PAG->tpa_pa, ;
             "qdd_ed"      => PAG->qdd_ed ;
             }

            AAdd(aDados, hLinha)  // Adiciona o hash na array

            SKIP                                                // pega proximo registro

         EndDo
         Set Relation To
         DbCloseAll()

         ///////////////////////////////////////////////////////////////////////
         If !USEARQ("PG2", .f.,10,1)                                // se falhou a abertura do arq
            BREAK
         EndIf
         PTAB(pag_numero, "PAG",1, .t.)
         PTAB(PAG->ccr_codigo, "CCR",1, .t.)
         PTAB(cap_codigo, "CAP",1, .t.)
         PTAB(emp_codigo, "EMP",1, .t.)
         SET Relation;
          TO pag_numero INTO PAG,;
          TO PAG->ccr_codigo INTO CCR,;
          TO cap_codigo INTO CAP,;
          TO emp_codigo INTO EMP

         Set Filter To mMesRel = PAG->pag_mm .and. If(mFUNDO='0', .t., mFUNDO = PAG->fun_codigo)
         Go Top

         Do While ! Eof() .and. Poe_Gauge()

            If IN_KEY() = K_ESC                                   // se quer cancelar
               IF canc()                                        // pede confirmacao
                  BREAK                                         // confirmou...
               EndIf
            EndIf

            hLinha := { ;
             "fun_codigo"  => EMP->fun_codigo, ;
             "emp_numero"  => emp_numero, ;
             "emp_dd"      => EMP->emp_dd, ;
             "emp_mm"      => EMP->emp_mm, ;
             "pag_valor"   => ret_valor, ;
             "retencao"    => 0.00, ;
             "pag_dd"      => pag_dd, ;
             "pag_mm"      => pag_mm, ;
             "pla_codpla"  => pla_codpla, ;
             "cap_banco"   => CAP->cap_banco, ;
             "cap_agN"     => CAP->cap_agN, ;
             "cap_contaN"  => CAP->cap_contaN, ;
             "pag_docume"  => cap_codRet + '-' + cl_ItemArray(aRetencaoTipo, cap_codRet, 2), ;
             "ccr_cpfcnp"  => CCR->ccr_cpfcnp, ;
             "ccr_nome"    => CCR->ccr_nome, ;
             "qdd_uo"      => PAG->qdd_uo, ;
             "qdd_fg"      => PAG->qdd_fg, ;
             "tpa_pa"      => PAG->tpa_pa, ;
             "qdd_ed"      => PAG->qdd_ed ;
             }

            AAdd(aDados, hLinha)  // Adiciona o hash na array

            SKIP                                                // pega proximo registro

         EndDo
         Set Relation To
         DbCloseAll()


         ///////////////////////////////////////////////////////////////////////
         If !USEARQ("LQ2", .f.,10,1)                                // se falhou a abertura do arq
            BREAK
         EndIf
         PTAB(liq_numero, "LIQ",1, .t.)
         PTAB(LIQ->ccr_codigo, "CCR",1, .t.)
         PTAB(cap_codigo, "CAP",1, .t.)
         PTAB(emp_codigo, "EMP",1, .t.)
         SET Relation;
          TO liq_numero INTO LIQ,;
          TO LIQ->ccr_codigo INTO CCR,;
          TO cap_codigo INTO CAP,;
          TO emp_codigo INTO EMP

         Set Filter To mMesRel = LIQ->liq_mm .and. If(mFUNDO='0', .t., mFUNDO = LIQ->fun_codigo)
         Go Top

         Do While ! Eof() .and. Poe_Gauge()

            If IN_KEY() = K_ESC                                   // se quer cancelar
               IF canc()                                        // pede confirmacao
                  BREAK                                         // confirmou...
               EndIf
            EndIf

            hLinha := { ;
             "fun_codigo"  => EMP->fun_codigo, ;
             "emp_numero"  => emp_numero, ;
             "emp_dd"      => EMP->emp_dd, ;
             "emp_mm"      => EMP->emp_mm, ;
             "pag_valor"   => liq_valor, ;
             "retencao"    => 0.00, ;
             "pag_dd"      => liq_dd, ;
             "pag_mm"      => liq_mm, ;
             "pla_codpla"  => pla_codpla, ;
             "cap_banco"   => CAP->cap_banco, ;
             "cap_agN"     => CAP->cap_agN, ;
             "cap_contaN"  => CAP->cap_contaN, ;
             "pag_docume"  => cap_codRet + '-' + cl_ItemArray(aRetencaoTipo, cap_codRet, 2), ;
             "ccr_cpfcnp"  => CCR->ccr_cpfcnp, ;
             "ccr_nome"    => CCR->ccr_nome, ;
             "qdd_uo"      => LIQ->qdd_uo, ;
             "qdd_fg"      => LIQ->qdd_fg, ;
             "tpa_pa"      => LIQ->tpa_pa, ;
             "qdd_ed"      => LIQ->qdd_ed ;
             }

            AAdd(aDados, hLinha)  // Adiciona o hash na array

            SKIP                                                // pega proximo registro

         EndDo
         Set Relation To
         DbCloseAll()

         aSort( aDados, , , { |x, y| x["fun_codigo"] + x["qdd_uo"] + x["emp_numero"] < y["fun_codigo"] + y["qdd_uo"] + y["emp_numero"] } )


         ///////////////////////////////////////////////////////////////////////
         aRap := {}
         If !USEARQ("LRP", .f.,10,1)                                // se falhou a abertura do arq
            BREAK
         EndIf
         PTAB(rap_codigo, "RAP",1, .t.)
         PTAB(RAP->ccr_codigo, "CCR",1, .t.)
         SET Relation;
          TO rap_codigo INTO RAP,;
          TO RAP->ccr_codigo INTO CCR

         Set Filter To pag_tipoL $ [1] .and. mMesRel = LRP->pag_mm .and. If(mFUNDO='0', .t., mFUNDO = RAP->fun_codigo)
         Go Top

         Do While ! Eof() .and. Poe_Gauge()

            If IN_KEY() = K_ESC                                   // se quer cancelar
               IF canc()                                        // pede confirmacao
                  BREAK                                         // confirmou...
               EndIf
            EndIf

            For i:= 0 To 9

               a := Str(i, 1)

               If !Empty(pag_cd&a)

                  Ptab(cap_cd0, 'CAP', 1)

                  If Left(pag_cd&a, 4) = '2188'
                     mDoc := CAP->cap_codRet + '-' + cl_ItemArray(aRetencaoTipo, CAP->cap_codRet, 2)
                  Else
                     mDoc := Upper(pag_cheque)
                     If Left(mDoc, 3) = 'CCR'
                        mDoc := Trim(Subs(mDoc, 12, 50))
                        mDoc := StrTran(mDoc, 'BANCO:', '')  // 001|01428-1|000000
                        mDoc := StrTran(mDoc, 'AG:', '')
                        mDoc := StrTran(mDoc, 'CONTA:000', '')
                     Endif

                  Endif

                  hLinha := { ;
                   "fun_codigo"  => RAP->fun_codigo, ;
                   "emp_numero"  => RAP->rap_nempen, ;
                   "emp_dd"      => RAP->rap_dd, ;
                   "emp_mm"      => RAP->rap_mm, ;
                   "emp_aa"      => RAP->rap_ano, ;
                   "valor"       => pag_vd&a, ;
                   "pag_dd"      => pag_dd, ;
                   "pag_mm"      => pag_mm, ;
                   "pla_codpla"  => pag_cd&a, ;
                   "cap_banco"   => CAP->cap_banco, ;
                   "cap_agN"     => CAP->cap_agN, ;
                   "cap_contaN"  => CAP->cap_contaN, ;
                   "pag_docume"  => mDoc, ;
                   "ccr_cpfcnp"  => CCR->ccr_cpfcnp, ;
                   "ccr_nome"    => CCR->ccr_nome,;
                   "qdd_uo"      => RAP->rap_uo,;
                   "qdd_fg"      => RAP->rap_fg,;
                   "tpa_pa"      => RAP->rap_pa,;
                   "qdd_ed"      => RAP->rap_ed ;
                   }
               Endif
            Next

            AAdd(aRap, hLinha)  // Adiciona o hash na array

            SKIP                                                // pega proximo registro

         EndDo
         Set Relation To
         DbCloseAll()

         aSort( aRap, , , { |x, y| x["fun_codigo"] + x["qdd_uo"] + x["emp_numero"] < y["fun_codigo"] + y["qdd_uo"] + y["emp_numero"] } )


         ARQ_ := pathPdf + MCARAC( NetName() ) + '_' +  cl_GetNomeArq() + '-REL_B009.PDF'

         Poe_Gauge("Gerando o relat¢rio em PDF. [ESC] Interrompe", "AGUARDE...", "Emitidos:", l_s + 09, c_s + 1)

         nCol     := 06
         sOrient  := 'R'

         nLBrasao := 07
         nCBrasao := 13

         nLeft    := 32
         nRight   := 820
         nHeight  := 09

         nFonte   := 08
         nLpi     := 08
         nMAXLI   := 53

         nLAss    := 170
         nCAss1   := 22
         nCAss2   := 190
         nPosBras := 3

         pdfOpen( Arq_, 200, .t.,;
          'Balancete da Despesa',;
          HB_OemToAnsi( par_escrit ),;
          'Balancetes ' +  HB_OemToAnsi( par_resol ),;
          'Relação Pagamentos Realizados',;
          'SCP21H-Sistema de Contabilidade Pública')

         pdfMargins( 1, 3, 100 )   //alterar as margens do PDF

         If     MMVASSRODA $ '0'
            lAssina1 := .t.
            lAssina2 := .f.

         ElseIf MMVASSRODA $ '1'
            lAssina1 := .t.
            lAssina2 := .t.

         Else
            lAssina1 := .f.
            lAssina2 := .f.

         EndIf

         pg_=1; cl=50000

          sFundo := 'x'

         ult_imp=0                                              // ultimo reg impresso
         qqu101=0                                               // contador de registros
         SUB101=0
         MVLPAG := MVLDESC := MVLDESCT := mTotPag := 0

         mUo := 'xx'
         mCab := 1
         For i := 1 To Len(aDados)

            Poe_Gauge()

            If IN_KEY() = K_ESC                                   // se quer cancelar
               IF canc()                                        // pede confirmacao
                  BREAK                                         // confirmou...
               EndIf
            EndIf

            sFundo := aDados[i]["fun_codigo"]

            REL_CAB(1, .t.)                                      // soma cl/imprime cabecalho

            If mUo <> aDados[i]["qdd_uo"]
               pdfSetFont( "Times", 0, nFonte +2 )

               Ptab(aDados[i]["qdd_uo"], 'TUO', 1)

               cl++
               PdfAtSay( Transform(aDados[i]["qdd_uo"], '@R 99.99.99') + ' - ' + HB_OemToAnsi(CaseCapital( TUO->tuo_titulo )), cl, nCol, "R" )

               pdfSetFont( "Courier", 0, nFonte )
               cl++
            Endif

            PdfAtSay( Transform(aDados[i]["emp_numero"], '@R 999.999'), cl, nCol, "R" )  // N° Empenho
            PdfAtSay( Space(008) + Transform(aDados[i]["emp_dd"], "99"), cl, nCol, "R" )  // DD - Dia do Empenho
            PdfAtSay( Space(010) + "/", cl, nCol, "R" )
            PdfAtSay( Space(011) + Transform(aDados[i]["emp_mm"], "99"), cl, nCol, "R" )  // MM - Mês do Empenho

            MVLPAG += aDados[i]["pag_valor"]
            PdfAtSay( Space(014) + Transform(aDados[i]["pag_valor"], "@EZ 99,999,999.99"), cl, nCol, "R" )  // Valor Pagamento

            PdfAtSay( Space(028) + Transform(aDados[i]["pag_dd"], "99"), cl, nCol, "R" )
            PdfAtSay( Space(030) + "/", cl, nCol, "R" )
            PdfAtSay( Space(031) + Transform(aDados[i]["pag_mm"], "99"), cl, nCol, "R" )

            PdfAtSay( Space(034) + Transform(aDados[i]["pla_codpla"], '@R 99999.99.99'), cl, nCol, "R" )
            PdfAtSay( Space(046) + aDados[i]["cap_agN"], cl, nCol, "R" )
            PdfAtSay( Space(052) + aDados[i]["cap_contaN"], cl, nCol, "R" )

            PdfAtSay( Space(063) + Left( HB_OemToAnsi( aDados[i]["pag_docume"] ), 21), cl, nCol, "R" )

            If aDados[i]["ccr_cpfcnp"] = '00000000000000'
               PdfAtSay( Space(086) + Left( ALLTrim(HB_OemToAnsi(aDados[i]["ccr_nome"])), 49), cl, nCol, "R" )
            Else
               PdfAtSay( Space(086) + Left( '[' + Transform(aDados[i]["ccr_cpfcnp"], CCR_MaskCpfCnpj(aDados[i]["ccr_cpfcnp"], .t.) ) + ']' +;
                ALLTrim(HB_OemToAnsi(aDados[i]["ccr_nome"])), 49), cl, nCol, "R" )
            Endif

            PdfAtSay( Space(137) + Transform(aDados[i]["qdd_uo"], '@R 99.99.99'), cl, nCol, "R" )
            PdfAtSay( Space(146) + aDados[i]["qdd_fg"], cl, nCol, "R" )
            PdfAtSay( Space(149) + Transform(aDados[i]["tpa_pa"], '@R 9.999'), cl, nCol, "R" )
            PdfAtSay( Space(155) + Transform(aDados[i]["qdd_ed"], '@R 99.99.99'), cl, nCol, "R" )

            mUo := aDados[i]["qdd_uo"]

            qqu101++
            SUB101++

            lFim := .f.
            If i = Len(aDados)
               lFim := .t.
            Else
               If aDados[i+1]["fun_codigo"] # sFUNDO
                  lFim := .t.
               Endif
            Endif

            If lFim
               cl++
               pdfBox( ((cl)*nHeight) + 2, nLeft, ((cl + 1)*nHeight) + 3, nRight, 0.2, 1, "D", '' )
               PdfAtSay( Space( 014 ) + Transform(MVLPAG, "@E 99,999,999.99"), cl, nCol, "R" )      // total Valor Empenhado
               IF QQU101#0
                  PdfAtSay( Space( 045 ) + "*** Quantidade Fundo " + Transform(qqu101, "@E 9,999"), cl, nCol, "R" )
               Else
                  PdfAtSay( Space( 045 ) + "*** ANEXO SEM MOVIMENTO", cl, nCol, "R" )
               EndIf

               mTotPag += MVLPAG

               mUo := 'xx'
               MVLPAG := MVLDESCT := 0
               QQU101 := 0
               If i < Len(aDados)
                  CL     := 500
               Endif

            EndIf

         Next

         IF SUB101 = 0
            REL_CAB(0, .t.)                                      // nao cabe nesta pagina

            pdfBox( ((cl)*nHeight) + 2, nLeft, ((cl + 1)*nHeight) + 3, nRight, 0.2, 1, "D", '' )
            PdfAtSay( Space( 014 ) + Transform(MVLPAG, "@E 99,999,999.99"), cl, nCol, "R" )      // total Valor Empenhado
            PdfAtSay( Space( 045 ) + "*** ANEXO SEM MOVIMENTO NESTE MÊS ***", cl, nCol, "R" )
         Else
            cl++
            cl++
            pdfBox( ((cl)*nHeight) + 2, nLeft, ((cl + 1)*nHeight) + 3, nRight, 0.2, 1, "D", '' )
            PdfAtSay( Space( 014 ) + Transform(mTotPAG, "@E 99,999,999.99"), cl, nCol, "R" )      // total Valor Empenhado

            PdfAtSay( Space( 045 ) + "*** Quantidade total " + Transform(SUB101, "@E 9,999"), cl, nCol, "R" )

         EndIf
         aDados := {}
         i := 0

         ///////////////////////////////////////////////////////////////////////
         MVLPAG := 0
         QQU101 := 0
         cl := 500
         mCab := 2
         mUo := 'xx'

         For i := 1 To Len(aRap)

            Poe_Gauge()

            If IN_KEY() = K_ESC                                   // se quer cancelar
               IF canc()                                        // pede confirmacao
                  BREAK                                         // confirmou...
               EndIf
            EndIf

            sFundo := aRap[i]["fun_codigo"]

            REL_CAB(1, .t.)                                      // soma cl/imprime cabecalho

            If mUo <> aRap[i]["qdd_uo"]
               pdfSetFont( "Times", 0, nFonte +2 )

               Ptab(aRap[i]["qdd_uo"], 'TUO', 1)

               cl++
               PdfAtSay( Transform(aRap[i]["qdd_uo"], '@R 99.99.99') + ' - ' + HB_OemToAnsi(CaseCapital( TUO->tuo_titulo )), cl, nCol, "R" )

               pdfSetFont( "Courier", 0, nFonte )
               cl++
            Endif

            PdfAtSay( Transform(aRap[i]["emp_numero"], '@R 999.999'), cl, nCol, "R" )  // N° Empenho
            PdfAtSay( Space(008) + Transform(aRap[i]["emp_dd"]+aRap[i]["emp_mm"]+aRap[i]["emp_aa"], "@R 99/99/9999"), cl, nCol, "R" )  // DD - Dia do Empenho

            MVLPAG += aRap[i]["valor"]
            PdfAtSay( Space(020) + Transform(aRap[i]["valor"], "@EZ 99,999,999.99"), cl, nCol, "R" )  // Valor Pagamento

            PdfAtSay( Space(034) + Transform(aRap[i]["pag_dd"]+aRap[i]["pag_mm"], "@R 99/99"), cl, nCol, "R" )

            //PdfAtSay( Space(041) + Transform(aRap[i]["pla_codpla"], '@R 99999.99.99'), cl, nCol, "R" )
            PdfAtSay( Space(041) + aRap[i]["cap_banco"], cl, nCol, "R" )
            PdfAtSay( Space(045) + aRap[i]["cap_agN"], cl, nCol, "R" )
            PdfAtSay( Space(051) + aRap[i]["cap_contaN"], cl, nCol, "R" )

            PdfAtSay( Space(063) + Left( HB_OemToAnsi( aRap[i]["pag_docume"] ), 21), cl, nCol, "R" )

            If aRap[i]["ccr_cpfcnp"] = '00000000000000'
               PdfAtSay( Space(086) + Left( ALLTrim(HB_OemToAnsi(aRap[i]["ccr_nome"])), 49), cl, nCol, "R" )
            Else
               PdfAtSay( Space(086) + Left( '[' + Transform(aRap[i]["ccr_cpfcnp"], CCR_MaskCpfCnpj(aRap[i]["ccr_cpfcnp"], .t.) ) + ']' +;
                ALLTrim(HB_OemToAnsi(aRap[i]["ccr_nome"])), 49), cl, nCol, "R" )
            Endif

            PdfAtSay( Space(137) + Transform(aRap[i]["qdd_uo"], '@R 99.99.99'), cl, nCol, "R" )
            PdfAtSay( Space(146) + aRap[i]["qdd_fg"], cl, nCol, "R" )
            PdfAtSay( Space(149) + Transform(aRap[i]["tpa_pa"], '@R 9.999'), cl, nCol, "R" )
            PdfAtSay( Space(155) + Transform(aRap[i]["qdd_ed"], '@R 99.99.99'), cl, nCol, "R" )

            mUo := aRap[i]["qdd_uo"]

            qqu101++
            SUB101++

            lFim := .f.
            If i = Len(aRap)
               lFim := .t.
            Else
               If aRap[i+1]["fun_codigo"] # sFUNDO
                  lFim := .t.
               Endif
            Endif

            If lFim
               cl++
               pdfBox( ((cl)*nHeight) + 2, nLeft, ((cl + 1)*nHeight) + 3, nRight, 0.2, 1, "D", '' )
               PdfAtSay( Space( 014 ) + Transform(MVLPAG, "@E 99,999,999.99"), cl, nCol, "R" )      // total Valor Empenhado
               IF QQU101#0
                  PdfAtSay( Space( 045 ) + "*** Quantidade Fundo " + Transform(qqu101, "@E 9,999"), cl, nCol, "R" )
               Else
                  PdfAtSay( Space( 045 ) + "*** ANEXO SEM MOVIMENTO", cl, nCol, "R" )
               EndIf

               mTotPag += MVLPAG

               mUo := 'xx'
               MVLPAG := 0
               QQU101 := 0
               If i < Len(aRap)
                  CL     := 500
               Endif

            EndIf

         Next


         If MMVASSRODA $ '2'
            lAssina1 := .t.
            lAssina2 := .t.
         EndIf

         REL_RDP(If(SUB101=0, .f., .t.))                                           // imprime rodape' do relatorio

         pdfClose(.t.)                                                  //Fecha o PDF

         vDestino := pathPdfMes + AlLTrim(par_rota) + '_Balancetes_' + par_aa  +;       //Novo nome do arquivo gerado
          '-' + HB_OemToAnsi( AlLTrim(nMes(Val(mMesRel))))  +;
          '_Anexo-09_Relação_Pagamentos_realizados-Fundo_' + alLTrim(mFundo) + '.PDF'

         If FileCopyPDF( Arq_, vDestino ) = .f.                            //faz cópia de arquivo
            AlertaM('Não consegui copiar arquivos para a pasta de PDF deste mês.'  + CRLF +;
             'Caminho do arquivo: ' + vDestino)
         Else

            if AbreArquivo( Arq_ ) < 3                                   //abre o arquivo gerado
               msg := "ATEN€ÇO!|NÆo encontrei o Adobe Reader(R) instalado nesse computador" +;
                "|ou houve algum erro na cria‡Æo do arquivo PDF."
               DBOX (msg,10,,, .t.,,,,)          // FAZ O BOX
               Break
            EndIf

         EndIf
         /*
         If File("C:\SimplesInfo\pdflib.dll")

            hLib := hb_LibLoad("C:\SimplesInfo\pdflib.dll")

            IF hLib == NIL
               MsgAtencao( "Erro ao carregar PDFLib DLL" )
               Break
            ENDIF

            // Cria um novo objeto PDF
            hPDF := hb_LibCall(hLib, "PDF_new")

            IF hPDF == 0
               ? "Erro ao criar o objeto PDF!"
               RETURN
            ENDIF

            // Abre o PDF original
            hInputDoc := hb_LibCall(hLib, "PDF_open_pdi_document", hPDF, vDestino, 0, NIL)

            IF hInputDoc == -1
               MsgAtencao( "Erro ao abrir o arquivo input.pdf!" + CRLF + vDestino )
               hb_LibCall(hLib, "PDF_delete", hPDF)
               hb_LibFree(hLib)
               Break
            ENDIF

            hb_LibFree(hLib)

         Endif
         */
         GRELA(20)                                                    // grava variacao do relatorio

         Set(_SET_DELETED, dele_atu)                                   // os excluidos serao vistos
      EndDo

   END SEQUENCE

   FechaJanela()

   Return

STATIC Procedure REL_RDP(volta_reg)                               // rodape'
   LOCAL reg_atual := RecNo()

   If pg_ > 1
      If lAssina1
         PdfAtSay( Space( 010 ) + "________________________________________                                                              ________________________________________", nMaxli + 5, nCol, "R" )

         PdfAtSay( Space( 010 ) + PadC2(HB_OemToAnsi(sGestor1), 40),    nMaxli + 6, nCol, "R" )      // Nome do Gestor 1
         PdfAtSay( Space( 112 ) + PadC2(HB_OemToAnsi(M->par_con1), 40), nMaxli + 6, nCol, "R" )        // Nome do Contador 1____

         PdfAtSay( Space( 010 ) + PadC2(HB_OemToAnsi(sGestor2), 40),    nMaxli + 7, nCol, "R" )      // Nome do Gestor 2______
         PdfAtSay( Space( 112 ) + PadC2(HB_OemToAnsi(M->par_con2), 40), nMaxli + 7, nCol, "R" )        // Nome do Contador 2____

         PdfAtSay( '          ' + PadC2( sGestor3, 40), nMaxli + 8, nCol, "R" )                       // Nome do Gestor 3
         PdfAtSay( Space( 112 ) + PadC2( PAR_ContadorDoc(), 40), nMaxli + 8, nCol, "R" )                       // Nome do Contador 2
      EndIf
      If lAssina2
         IF File( DrvDbf + StrTran(AlLTrim(mAcento( sGestor1 )),    ' ', '_') + '.JPG')
            pdfImage( DrvDbf + StrTran(AlLTrim(mAcento( sGestor1 )), ' ', '_') + '.JPG', nLAss, nCAss1, "M", nGestor3, nGestor4 )
         EndIf

         IF File( DrvDbf + StrTran(AlLTrim(mAcento( M->par_con1 )),    ' ', '_') + '.JPG ')
            pdfImage( DrvDbf + StrTran(AlLTrim(mAcento( M->par_con1 )), ' ', '_') + '.JPG', nLAss, nCAss2, "M", M->par_con3, M->par_con4 )
         EndIf
      EndIf
      mCor := PDFcolor( 'e9e9e9' )
      pdfBox( ((nMaxli + 09) * nHeight) + 2, nLeft, ((nMaxli + 10) * nHeight) + 3, nRight, 0.2, 1, "D", mCor )

      PdfAtSay( HB_OemToAnsi(mEmpAut),        nMaxli + 09, nCol, "R" )
      PdfAtSay( Space( 136 ) + 'www.simplesinformatica.com', nMaxli + 09, nCol, "R" )

      Rel_RodapeInfo( nMaxli + 10, 6 )

   EndIf

   Return

STATIC Procedure REL_CAB(qt, volta_reg)                           // cabecalho do relatorio
   volta_reg=If(volta_reg=NIL, .f.,volta_reg)
   If qt > 0                                                      // se parametro maior que 0
      cl := cl + qt                                                  // soma no contador de linhas
   EndIf

   If cl > nmaxli .or. qt = 0                                        // quebra de pagina

      REL_RDP(volta_reg)                                        // imprime rodape' do relatorio

      sCnpj       =''
      sTituloFundo=''

      sGestor1 =''
      sGestor2 =''
      sGestor3 =''
      nGestor3 =0
      nGestor4 =0

      sSec1    = ''
      sSec2    = ''
      nSec3    = 0
      nSec4    = 0

      sAlm1   = ''
      sAlm2   = ''
      nAlm3   = 0
      nAlm4   = 0

      PegaAssinatura( sFundo )

      pdfNewPage( "A4", sOrient, nFonte )            //nova p gina
      pdfSetFont( "Courier", 0, nFonte )
      aReport[ LPI ] := nLpi                 //altura da linha, em linha por polegadas

      IF File( DrvDbf + 'brasao.jpg' )
         pdfImage( DrvDbf + 'brasao.jpg', nLBrasao, nCBrasao, "M",16, MMVBrasao1 + (nPosBras*1) ) // file, row, col, units, height, width
      Else
         nPosBras := MMVBrasao1 * -1
      EndIf

      pdfBox( (02 * nHeight) + 1, nLeft, (07 * nHeight) + 3, nRight, 0.5,, "D", '' )

      PdfAtSay( HB_OemToAnsi(cl_GetNomeUf( M->par_UF, .t. )), 02, nCol + MMVBrasao1 + nPosBras, "R" )                                      // UF
      PdfAtSay( Space( 104 ) + "Página: " + Transform(pdfPageNumber(), "999") + '/   ', 02, nCol, "R" ) //                                // n£mero da p gina

      PdfAtSay( HB_OemToAnsi( nEmp ), 03, nCol + MMVBrasao1 + nPosBras, "R" )                                   // Raz„o Social
      PdfAtSay( Space( 104 ) + "LEI Nº 4.320/64", 03, nCol, "R" )

      PdfAtSay( "C.N.P.J.: " + Transform(sCNPJ, "@R 99.999.999/9999-99"), 04, nCol + MMVBrasao1 + nPosBras, "R" )
      PdfAtSay( Space( 104 ) + ALLTrim(HB_OemToAnsi(M->PAR_RESOL)), 04, nCol, "R" )

      If mCab = 1
         PdfAtSay( "PAGAMENTOS ORÇAMENTÁRIOS REALIZADOS ", 05, nCol + MMVBrasao1 + nPosBras, "R" )

      ElseIf mCab = 2
         PdfAtSay( "PAGAMENTOS DE RESTOS A PAGAR REALIZADOS ", 05, nCol + MMVBrasao1 + nPosBras, "R" )

      Endif

      PdfAtSay( Space( 104 ) + "ANEXO IX", 05, nCol, "R" )

      PdfAtSay( HB_OemToAnsi(sTITULOFundo), 06, nCol + MMVBrasao1 + nPosBras, "R" )
      PdfAtSay( Space( 104 ) + "Competência: " + alLTrim(HB_OemToAnsi(nmes(Val(mMesRel)))) + ' / ' + par_aa, 06, nCol, "R" )

      mCor := PDFcolor( 'd3d3d3' )
      pdfBox( (08 * nHeight) + 2, nLeft, (10 * nHeight) + 2, nRight, 0.2, 1, "D", mCor )

      If mCab = 1
         PdfAtSay( " N. do | Data|Valor pago ou| Data| Conta pagadora             |   Nº do              | CREDOR / FORNECEDOR                              |Unidade |FG|Proj.|Elemen", 08, nCol, "R" )
         PdfAtSay( "Empenho|Empen|   Retenção  | Pago| PCASP      Ag.   Conta     | Documento            |                                                  |Orçament|  |Ativ.|Despes", 09, nCol, "R" )

      ElseIf mCab = 2
         PdfAtSay( " N. do |   Data   | Valor pago ou| Data| Conta pagadora       |   Nº do              | CREDOR / FORNECEDOR                              |Unidade |FG|Proj.|Elemen", 08, nCol, "R" )
         PdfAtSay( "Empenho|  Empenho |    Retenção  | Pago|      Ag.   Conta     | Documento            |                                                  |Orçament|  |Ativ.|Despes", 09, nCol, "R" )

      Endif

      cl := qt + 09; pg_++
    EndIf
   Return

   * \\ Final de REL_B009.PRG
