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 zSaldoInicial  := 0
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 #TEXTO_FONTE
   Private zSxConta, zCodDiv,zDivDesc,zctde,zctpara,zStrSld0,zBlkData,zStrSldFinal,zDesc,zAux,nvCred,nvDeb,ztCred:=0,ztDeb:=0, zDeb:=0, zCred:=0

   DbCloseAll()
   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')
   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(zSxConta)", "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", "", zBlkData} ) 
   // 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
   zSxConta := Val(zSxConta)
   // 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

   oLst:bInitFr3 := {||
      DbCloseAll()
      oLst:ReOpenTempFiles()
      if l0FgGerou_Dataset_Prods
         Select _prods
         Index on str(fVendedor,4) + pDesc Tag _prods to _prods
         oLst:AddMasterDetail( '_sfvend', '_prods', 'str(fVendedor,4)') 
      endif
      if l1FgGerou_Dataset_Dupls
         Select _dupls
         Index on str(fVendedor,4) + cr_nome Tag _dupls to _dupls
         oLst:AddMasterDetail( '_sfvend', '_dupls', 'str(fVendedor,4)') 
      endif
      if l0FgGerou_Dataset_Prods .or. l1FgGerou_Dataset_Dupls
         oLst:AtiveMasterDetail()
      endif
      oLst:oFr3:AddVariable( 'vCiga', 'Filtros_Da_Query_Produtos', oQbeProd:ExpressaoDeFiltragemParaImprimir)
      oLst:oFr3:AddVariable( 'vCiga', 'Filtros_Da_Query_Vendas',   oQbeMov:ExpressaoDeFiltragemParaImprimir)

      if Select('_sfvend')>0
         Select _sfvend
      endif
      Return 
   }
   //  METHOD LoadTemplateRpt(cReport, cAliasMaster) CLASS tCvRpt
   oLst:LoadTemplateRpt('vb_r12', '_sfvend') 

   zSaldoInicial := if(zSxConta>0,sx_caixa("SALDO_INICIAL",zSxConta,z_de),0)
   z0SldDia := zSaldoInicial
   zSaldoAcum := zSaldoInicial
   // zFgContaVales := (zSxConta=997.or.zSxConta=501) 

   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:lPortrait := .t.
   // oLst:nLinesPorPagina := 40
   // oLst:lPortrait := .t.
   // oLst:nLinesPorPagina := 99

   oLst:cAlias_DataCols := 'tesou'
   oLst:cAliasMaster := 'tesou'
   oLst:lGeraDbTmp := .t.  
   oLst:lOutputFr3 := .t.

   If !zFgSoResumoDespesas

      oLst:Cab1( "Extrato Da Conta Tesouraria "+str(zSxConta,3) )
      oLst:Cab3( {|| "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('Credito;zCred;P;({|x|if(ValType(x)="N", transform(x,"@E 99,999.99"),"")});10;;;Direita;Some;Imprima;Credito;')
      oLst:AddCol('Debito;zDeb;P;({|x|if(ValType(x)="N", transform(x,"@E 99,999.99"),"")});10;;;Direita;Some;Imprima;Debito;')
      oLst:AddCol('Saldo;transform(zSaldoAcum,"@E 999,999,999.99")+if(zSaldoAcum>0,"+","-");P;@S15;15;;;Direita;NaoSome;Imprima;Saldo;')
      oLst:AddCol('Categoria;zComplemento;P;@S30;30;;;Direita;NaoSome;Imprima;Categoria;')

      oLst:AddCol('Descricao Detalhada;zDesc;P;@S100;100;;;Direita;NaoSome;NaoImprima;Descricao;')
      oLst:AddCol('CCustoCod;CP_SUBDIV;P;XXXXX;5;;;Direita;NaoSome;NaoImprima;CCustoCod;')
      oLst:AddCol('CCustoDesc;zDivDesc;P;XXXXX;35;;;Esquerda;NaoSome;NaoImprima;CCustoDesc;')
      oLst:AddCol('Descricao Detalhada;zDesc;P;@S100;100;;;Esquerda;NaoSome;NaoImprima;complement;')

      // oLst:AddCol('Cxa;zCtDe;P;@E 9999;4;;')
      // oLst:AddCol('c/f;zCtPara;P;@E 999999;6;;')
      // oLst:AddCol('g;Grupo;N;99;2;;;Direita;Some;')
      // oLst:AddCol('Pt St CCust Obs;zComplemento;P;@S45;45;;')
   
      oLst:AddRodape( '_LINHA_FINA_', "", {|| "Pagina "+Str(++pag,4)+" / ####"} )

      oLst:SetFormatSomaCol(2, {||"** SubTotais do dia "+Dtoc(oLst:GroupKeyOld)+" :"})

      oLst:AddGroup( { "KEY"=>{||Data} } )
      oLst:AddGroup( { "FOOTER"=>{ {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_' } } )
      oLst:AddGroup( { "FOOTER"=>{ {||oLst:ZeraSomaCols(),'_LINHA_FINA_'} } } )

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

      zStrSld0 := if(zFgContaVales, " *** Saldo anterior Adiant.Pendentes:", " ***** Saldo Anterior (de Transporte)")
      zStrSld0 += space(34)+Transform(zSaldoInicial,"@E 99999,999.99")+if(zSaldoInicial>0,"+","-")
      
      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)
         zDeb           := if(tipo="S","-",Valor) 
         zCred          := if(tipo="S",Valor,"-")
         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)+") "+zDivDesc
               endif
            endif
         else 
            zCodDiv      := VAL(LEFT(CP_SUBDIV,3))
            zDivDesc     := cp_divis->( DbSeek(zCodDiv), Pad( Left(Desc,1)+Lower(SubStr(desc,2)), 30) )
            zComplemento := zDivDesc 
            // if(!empty(zDivDesc),Str(Cp_Local,2)+" "+Str(Cp_Situaca,2)+" "+Cp_SubDiv+" "+zDivDesc,"")
         endif
      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()

      // 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
   
   EndIf
   DbCloseAll()
   Abra('0NOIDX',r_siga,'help','help')
   DbGoBottom()
#FIM_TEXTO_FONTE