ALIAS CP_CSTFX
VARIAVEL #TEXTO_FONTE
   Private zCmdsDurante, zQtdDiv, zCodDiv, zDdesc, zCpNome, zVtotDiv, zQtdLan:=0, zTotCst:=0, lFgFornClosed:=select('sccpfor')=0, lFgDivClosed:=select('CP_DIVIS')=0

   // sFgDebugAlert:=.t.

   se lFgFornClosed entao Abra("0NOIDX",r_siga,"SCCPFOR","SCCPFOR")
   se lFgDivClosed entao Abra("0NOIDX",r_siga,"CP_DIVIS","CP_DIVIS") 
   zQtdDiv := Cp_Divis->( RecCount() ) + 1

   DbSelectArea('cp_cstfx')
   DbGoTop()

   // Inicio bloco fr3
   // oLst:lOutputFr3:=.t.
   oLst:cReport := 'cp_cstfx'
   oLst:cAlias_DataCols := '_cstfx'
   oLst:cAliasMaster := '_cstfx'
   oLst:SetDbLst('mem:_cstfx')   
   // FIM bloco fr3

   oLst:lPortrait := .t.

   oLst:Cab1( "CUSTOS FIXOS POR DIVISOES DE DESPESA")
   oLst:Cab4( "Emitida em "+Dtoc(s_datual)+" as "+time() )
 
   oLst:AddCab( '_LINHA_FINA_' )
   oLst:AddCab( '_CABCOLS_' )
   oLst:AddCab( '_LINHA_GROSSA_' )

   oLst:AddCol('cc;zCodDiv;P;999;3;;;Direita;NaoSome;')
   oLst:AddCol('Centro de Custo;zDdesc;P;@S25;25;;')
   oLst:AddCol('Comentario;Cp_Desc;C;@S30;30;;')
   oLst:AddCol('Valor;Cp_Valor;N;@e 99,999.99;9;;;Direita;Some;')

   oLst:AddCol('Fornecedor;zCpNome;P;@S30;30;;')
   oLst:AddCol('Forn;Cp_Cod_For;N;9999;4;;')
   oLst:AddCol('de;cp_diaemis;N;99;2;;')
   oLst:AddCol('dv;cp_diavenc;N;99;2;;')
   oLst:AddCol('pz;cp_pz_venc;N;99;2;;')

   // oLst:AddCol('Fornecedor;sccrcli->Cr_Nome;P;@s35;35;;') 

   BLOCO_TXT zCmdsDurante
      zCodDiv := IF(Cp_Divisao>0.and.Cp_Divisao<zQtdDiv, Cp_Divisao, zQtdDiv)
      Cp_Divis->( DbGoto( cp_cstfx->cp_divisao ) )
      SccpFor->( DbGoto( cp_cstfx->cp_cod_For ) )
      zDdesc := if(zCodDiv=zQtdDiv,"*SEM CENTRO DE CUSTO*",CP_DIVIS->Desc)
      zCpNome := SccpFor->(if(empty(cp_fantasi),cp_nome,cp_fantasi))
      zTotCst := zTotCst + Cp_Valor
      zQtdLan := zQtdLan + 1
   FIM_BLOCO_TXT

   debugalert('2')

   oLst:DbEval(zCmdsDurante, {||cp_valor>0} )

   debugalert('3')

   oLst:lFecharGruposAbertos := .t.
   oLst:SetFormatSomaCol(3, {||"** Total de "+lTrim(Str(zQtdLan,4))+" Lancamentos:"}, .t.)
   oLst:PrtD('_LINHA_GROSSA_')
   oLst:PrtD({"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_GLOBAL_' )

   debugalert('4')
   se lFgDivClosed entao Cp_Divis->(DbCloseArea())
   se lFgFornClosed entao SccpFor->(DbCloseArea())

   _cstfx->(DbGoTop(), oLst:GroupBy("mem:_div", {||zCodDiv}, "zCodDiv as char, zDdesc, Cp_Desc, Cp_Valor",,.t.), DbCloseArea())

debugalert('1 alias: '+alias())

   oLst:ResetCols()
   oLst:ZeraSomaCols(.t.) 

debugalert('2 alias: '+alias())
   oLst:lGeraDbTmp := .f.
   oLst:cAlias_DataCols := '_div'
//   oLst:sPrtLineLen := 0

   Abra("0NOIDX",r_siga,"mem:_div","_div")

debugalert('3 alias: '+alias())

   oLst:AddCab( {"style"=>"font:Helvetica-Bold#size:14", "COLS"=>"0,C"}, "RESUMO POR DIVISOES")
   oLst:AddCab( {"style"=>"font:Helvetica#size:11", "COLS"=>"0,C"}, 'Emitida em ' + dtoc (s_datual) + ' `as ' + time () + ' horas')

   oLst:AddCab( '_LINHA_FINA_' )
   oLst:AddCab( '_CABCOLS_' )
   oLst:AddCab( '_LINHA_GROSSA_' )
   oLst:AddCol('cc;zCodDiv;P;999;3;;;Direita;NaoSome;')
   oLst:AddCol('Centro de Custo;zDdesc;P;@S30;30;;')
   oLst:AddCol('Valor;Cp_Valor;N;@e 99,999.99;9;;;Direita;Some;')
   oLst:AddCol('%Total;100*Cp_Valor/zTotCst;P;999.99%;7;;;Direita;;')
   oLst:AddCol(';Space(20);P;@S20;20;;;Direita;NaoSome;')
   oLst:AddCol(';Space(20);P;@S20;20;;;Direita;NaoSome;')


   oLst:PrtD( '' )
   oLst:PrtD( '' )
   oLst:PrtD( '_LINHA_FINA_' )
   oLst:PrtD( '_CABCOLS_' )
   oLst:PrtD( '_LINHA_GROSSA_' )
  
   (dbGoTop(), oLst:dbEval())
   oLst:lFecharGruposAbertos := .t.
   oLst:SetFormatSomaCol(2, {||"** TOTAL GERAL"}, .t.)
   oLst:PrtD( '_LINHA_FINA_' )
   oLst:PrtD({"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_GLOBAL_' )

   // sFgDebugAlert:=.f.

   oLst:Run()
   oLst:End()
   se select('_cstfx')>0 entao _cstfx->(DbCloseArea())
   se select('_div')>0 entao _div->(DbCloseArea())
   dbDrop('mem:_cstfx')   
   dbDrop('mem:_div')   

#FIM_TEXTO_FONTE
