ALIAS HELP
variavel zaLinhasDaTela := {}
variavel zFgConfirmouFiltros := .f.
VARIAVEL LST_TP = 60
VARIAVEL znil = SetDebugInfo( .t. )
VARIAVEL z_de = ctod( "01."+SubStr(Dtoc(S_Datual),4) )
VARIAVEL z_ate = s_datual
VARIAVEL zComplemento = ""
VARIAVEL zAux = ""
VARIAVEL Z_VDIVIS = {}
VARIAVEL Z_VSUBD = {}
VARIAVEL zFgContaVales = .f. 
VARIAVEL zFgParaCtaCxa = .f.
variavel oQbe=""
VARIAVEL zFgSoResumoDespesas = .f.
VARIAVEL zFgPrtResumosDiarios = .t.
VARIAVEL zCodDiv = 0
VARIAVEL z0StrSldAnt      := ''
VARIAVEL z0StrSuprimentos := ''
VARIAVEL z0StrRetiradas   := ''
VARIAVEL z0StrSaldo       := ''
VARIAVEL zoProgressBar    := ''
VARIAVEL zCmdsDurante     := ''
VARIAVEL zSaldoAcum := 0
VARIAVEL z0SldDia := 0
VARIAVEL zSinalAnt:=''
VARIAVEL ztSupDia:=0
VARIAVEL ztRetDia:=0

VARIAVEL zSaldoInicial = 0
VARIAVEL ztSupGeral:=0
VARIAVEL ztRetGeral:=0
VARIAVEL zSaldoFinal = 0

VARIAVEL #TEXTO_FONTE
   Private zSxConta, zCodDiv,zDivDesc,zctde,zctpara,zStrSld0,zBlkData,zStrSldFinal,zDesc,zAux,nvCred,nvDeb,ztCred:=0,ztDeb:=0, zSxContaNome 

   DbCloseAll()
   
   xfErase( r_siga,'sx_caixa' + ordbagext() )
   
   Abra('0NOIDX',r_siga,'cp_subd', 'cp_subd', 'cp_subd', 'sdcod')
   Abra('0NOIDX',r_siga,'cp_divis','cp_divis','cp_divis','cp_divisao')
   Abra ("0NOIDX",r_siga,"sx_conta","sx_conta","sx_conta","sx_conta")
   Abra('0NOIDX',r_siga,'sx_caixa','sx_caixa','sx_caixa', 'str(Sx_Conta,3)+dtos(data)+str(cod_adiant)')
   zSxConta := Str(GetCtaTesou('ES'),3)
   // zBlkData:="DbSeek(zSxConta+dtos(z_de),.t.),(Val(zSxConta)=sx_conta.and.Data<=z_ate).or.(Alert('A conta '+AllTrim(zSxConta)+' nao tem Lancamentos no periodo informado!',,'R/W'),.f.)"

   oQbe:=oQbe():New('tesou01')

   oQbe:AddFiltro(" 9;3;Divisao de Despesas :", {||cp_divisao} ,, 'cp_divis;qbe_pcpdivis', {'Todas','Algumas'})

   oQbe:AddFiltro("10;3;Grupo de Lancamentos:", {||grupo} )
   oQbe:AddFiltro("11;3;Fornecedor / Cliente:", {||cp_cod_for} )
   oQbe:AddFiltro("12;3;Tipo Lancto    (S/R):", {||tipo} )

   aAdd( zaLinhasDaTela, {"2;3;Conta Tesouraria..:", "@zSxConta",  @zSxConta,  "999", "MyShowListbox()", "LISTBOX 25,5,sx_conta->(DbArray({||str(sx_conta,3)+' '+ct_titulo}))"} )
   aAdd( zaLinhasDaTela, {"3;3;Vencimento inicial:", "@z_De",  @z_De,  "99.99.9999", "", "" } )
   aAdd( zaLinhasDaTela, {"4;3;Vencimento final..:", "@z_Ate", @z_Ate, "99.99.9999", "", "" } ) 
   aAdd( zaLinhasDaTela, {"6;3;CHECKBOX 'Apenas o Resumo das &Despesas ?'", "@zFgSoResumoDespesas",  @zFgSoResumoDespesas,  "!", "", ""} )
   aAdd( zaLinhasDaTela, {"7;3;CHECKBOX 'Imprime os &Resumos Diarios   ?'", "@zFgPrtResumosDiarios", @zFgPrtResumosDiarios, "!", "", ""} )
  
   if .not. oQbe:QuickDialog("Qbe_tesou01_extrato", "70;13;Caixa Diario", zaLinhasDaTela)
      DbCloseAll()
      Return
   endif
   wCab3 := oQbe:ExpressaoDeFiltragemParaImprimir

   zSxConta := Val(zSxConta)
   zSxContaNome := Alltrim( sx_conta->(DbSeek(zSxConta), ct_titulo) )
   // zSxConta := oQbe:hFiltros[oQbe:cAlias][1][3]
   // z_de     := oQbe:hFiltros[oQbe:cAlias][2][3]
   // z_ate    := oQbe:hFiltros[oQbe:cAlias][2][4]

   // outroarq sx_conta sx_conta sx_conta
   
   zSaldoInicial := if(zSxConta>0,sx_caixa("SALDO_INICIAL",zSxConta,z_de),0)

   z0SldDia := zSaldoInicial
   zSaldoAcum := zSaldoInicial
   // zFgContaVales := (zSxConta=val(xGetEnv("TESOUAD")))
   
   z0StrSldAnt      := if(zFgContaVales, "(Pendencia Anterior)",       "(Sld.Ant)")
   z0StrSuprimentos := if(zFgContaVales, "(Adiantado no Dia)",         "(Suprimentos)")   
   z0StrRetiradas   := if(zFgContaVales, "(Contas prestadas no dia)",  "(Retiradas)")
   z0StrSaldo       := if(zFgContaVales, "(Pendente de Prest.Contas)", "(Saldo)")

   // oLst:nFontSize := 10
   // oLst:nLinesPorPagina := 40
   oLst:lOutputPDF := .t.
   oLst:lPortrait := .t.
   // oLst:nLinesPorPagina := 99

   oLst:lOutputFr3:=.t.
   oLst:cAlias_DataCols := 'tesou'
   oLst:cAliasMaster := 'tesou'
   oLst:cReport := 'tesou01'
   if oLst:lOutputFr3 
      oLst:SetDbLst('mem:tesou')
      oLst:cTemplateFr3 := 'skel_' + 'ListaComGrp' +'.fr3'
   endif

      oLst:Cab1( wCab1:="Extrato Da Conta "+str(zSxConta,3)+" "+zSxContaNome )
      oLst:Cab4( {|| wCab2:="Periodo: "+Dtoc(z_de)+" a "+Dtoc(z_ate)+", emitido em "+Dtoc(s_datual)+" as "+Time() } )
   
      oLst:AddCab( '_LINHA_FINA_' )
      oLst:AddCab( '_CABCOLS_' )
      oLst:AddCab( '_LINHA_GROSSA_' )
   
      oLst:AddCol('Data;data;D;99.99.9999;10;;')
      oLst:AddCol('Descricao;zDesc;P;@S35;35;;')

      oLst:AddCol('Cxa;zCtDe;P;@E 9999;4;;;Direita;NaoSome;NaoImprima;ctade;')
      oLst:AddCol('c/f;zCtPara;P;@E 999999;6;;;Direita;NaoSome;NaoImprima;ctapara;')
      oLst:AddCol('g;Grupo;N;9;1;;;Direita;NaoSome;')
      oLst:AddCol('Pt St CCust Obs;zComplemento;P;@S45;45;;')

      oLst:AddCol('Deb/Cred;Valor;N;{||transform(Valor,"@E 99,999.99")+if(tipo="S","+",if(tipo="R","-","B"))};12,2;;;Direita;;')
      oLst:AddCol('Saldo;zSaldoAcum;P;{||transform(zSaldoAcum,"@E 99,999.99")+if(zSaldoAcum>0,"+","-")};12,2;;;Direita;NaoSome;NaoImprima;Saldo;')

      if oLst:lOutputFr3
         oLst:AddCol('tipo;tipo;C;X;1;;;Direita;NaoSome;NaoImprima;tipo;')
         oLst:AddCol('Cus;cp_divisao;N;999;3;;;Direita;NaoSome;NaoImprima;cp_divisao;')
         oLst:AddCol('Centro de Custo;zDivDesc;P;@S34;34;;;Esquerda;NaoSome;NaoImprima;ccusto;')
         oLst:AddCol('CCust;cp_subdiv;C;99999;5;;;Direita;NaoSome;NaoImprima;cp_subdiv;')
         oLst:AddCol('Centro de Custo;zDivDesc;P;@S34;34;;;Esquerda;NaoSome;NaoImprima;zDivDesc;')
      endif
   
      oLst:AddRodape( '_LINHA_FINA_', "", {|| "Pagina "+Str(++pag,4)+" / ####"} )

      oLst:AddGroup( { "KEY"=>{||Data} } )
      if !zFgPrtResumosDiarios
         oLst:AddGroup( { "FOOTER"=>{ {|| " "} } } )
      else
         oLst:AddGroup( { "FOOTER"=>{ '_PULE_1LINHA_', {|| zAux:="........  SubTotal do dia "+Dtoc(oLst:GroupKeyOld)+" :",zAux + Transform(abs(z0SldDia),"@E 999,999,999.99")+" "+if(z0SldDia<0,"-","+")+"  "+z0strsldant} } } )
         oLst:AddGroup( { "FOOTER"=>{ {|| Pad(" ",len(zAux))          + Transform(ztSupDia,"@E 999,999,999.99")+" +  "+z0strsuprimentos} } } )
         oLst:AddGroup( { "FOOTER"=>{ {|| Pad(" ",len(zAux))          + Transform(ztRetDia,"@E 999,999,999.99")+" -  "+z0strretiradas} } } )
         oLst:AddGroup( { "FOOTER"=>{ {|| zAux:=Pad(" ",len(zAux)) + Transform(zSaldoAcum,"@E 999,999,999.99") +" T  "+z0strsaldo, ztSupDia:=0,ztRetDia:=0,z0SldDia:=zSaldoAcum, zAux}, '_PULE_1LINHA_' } } )
      endif

      oLst:AddGroup( { "SOMAS"=> {||nvCred:=if(tipo="S",valor,0), nvDeb:=if(tipo="R",valor,0), ztSupDia+=nvCred, ztRetDia+=nvDeb, ztCred+=nvCred, ztDeb+=nvDeb, zSaldoAcum+=nvCred-nvDeb } } )

      zStrSld0 := if(zFgContaVales, " *** Saldo anterior Adiant.Pendentes:", " ***** Saldo Anterior (de Transporte)")
      zStrSld0 += space(18)+Transform(zSaldoInicial,"@E 99999,999.99")+if(zSaldoInicial>0,"+","-")
      
      // oLst:EvalLineBlocks('DETALHE', !zFgSoResumoDespesas, {"ROWCOL" => "oLst:oPdf:pRow,0"}, {||zStrSld0}, '_PULE_1LINHA_')
      oLst:EvalLineBlocks('DETALHE', {||zStrSld0}, '_PULE_1LINHA_')
      
      BLOCO_TXT zCmdsDurante
         zoProgressBar:Step()
         zDesc := LEFT(desc,1)+lower(Substr(desc,2))
         zctde := if(tipo="S",cp_cod_for,Sx_Conta)
         zctpara := if(tipo="S",Sx_Conta,cp_cod_for)
         zFgParaCtaCxa:=(cp_cod_for=999.or.cp_cod_for=500)
         if zFgContaVales 
            zComplemento := ""
            if tipo="S"
               if abs(valor-sld_adiant)<=.5
                  zComplemento := "Prestou Contas"
               else
                  if sld_adiant>valor
                     zComplemento := "Prestou contas. Reembolsar "+str(sld_adiant-valor,7,2)
                  else
                     if sld_adiant>0
                        zComplemento := "Prest.Cta Pendente: "+str(valor-sld_adiant,7,2)
                     else
                        zComplemento := "Nao prestou contas"
                     endif
                  endif
               endif
            else
               if zFgParaCtaCxa
                  zComplemento := "Devolucao de Adiantamento"
               else
                  zComplemento := "(ad:"+Str(cod_adiant,6)+") "+zDesc
               endif
            endif
         else 
            zCodDiv := VAL(LEFT(CP_SUBDIV,3))
            zDivDesc := cp_divis->( DbSeek(zCodDiv), Pad( Left(Desc,1)+Lower(SubStr(desc,2)), 30) )
            zComplemento := if(!empty(zDivDesc),Str(Cp_Local,2)+" "+Str(Cp_Situaca,2)+" "+Cp_SubDiv+" "+zDivDesc,"")
         endif
         
			ztSupGeral += if( tipo="S", Valor, 0)
			ztRetGeral += if( tipo="R", Valor, 0)
         
      FIM_BLOCO_TXT
   
      zoProgressBar := myhProgressBar():Create('Processando Lancamentos...')
      sx_caixa->( DbSeek(Str(zSxConta,3)+dtos(z_de),.t.), oLst:DbEval(zCmdsDurante, {|| zSxConta=Sx_Conta .and. Data>=z_de .and. DATA<=z_ate .and. oQbe:Filtro_ok()}) )
      zoProgressBar:Close()
      if select('tesou')=0
         oLst:lOutputPdf:=.f.
         oLst:lOutputFr3:=.f.
         oLst:lOutputMatricial:=.f.
         Alert("A Conta "+str(zSxConta,3)+" nao tem lancamentos entre "+Dtoc(z_de)+" a "+Dtoc(z_ate) )
      endif

		if ztSupGeral+ztRetGeral>0
			zSaldoFinal := zSaldoInicial + ztSupGeral - ztRetGeral
		   oLst:lFecharGruposAbertos := .t.
			oLst:PrtD("")
			oLst:PrtD('_LINHA_FINA_')
			oLst:PrtD("Resumo:  Saldo Inicial:"+lTrim(Transform(zSaldoInicial,"@E 99999,999.99"))+"  Retiradas:"+lTrim(Transform(ztRetGeral,"@E 99999,999.99"))+"  Suprimentos:"+lTrim(Transform(ztSupGeral,"@E 99999,999.99"))+"   Sld.Final:"+lTrim(Transform(zSaldoFinal,"@E 99999,999.99")) )
		endif

      // oLst:EvalLineBlocks('DETALHE', '_DATACOLS_')
      // zStrSldFinal:=IF(zSaldoAcum>0,if(zFgContaVales,"PENDENTE PREST.CONTAS","POSITIVO"),if(zSaldoAcum=0,if(zFgContaVales,"SEM PENDENCIAS","ZERADO"),if(zFgContaVales,"A REEMBOLSAR AO PORTADOR","NEGATIVO")) )

      // if !zFgSoResumoDespesas
      //   oLst:EvalLineBlocks('DETALHE', if(zFgContaVales, " *** Saldo Final ADIANTAMENTOS:", " ***** Saldo Final             "), Transform(zSaldoAcum,"@E 999,999,999.99"))
      // endif
   
   DbCloseAll()
   Abra('0NOIDX',r_siga,'help','help')
   DbGoBottom()
#FIM_TEXTO_FONTE