ALIAS SCCRCLI

VARIAVEL zCodCli := sccrcli->(DbGoTo(w_fcli),Recno())
VARIAVEL #TEXTO_FONTE
   Private zQtdCli:=0, z_totrec:=0, zoProgressBar, zCmdsDurante, zCmdsDepois, zVndNome, zPrepNome, zValAditivo
   
   Abra('0NOIDX',r_siga, 'vb_pref','vb_pref')
   Abra("0NOIDX",r_siga,"se_prod","se_prod","seip_c","pcod")
   Use ('mem:_movnf') New Exclusive
      ordCondSet(,,,,,, RECNO()) 
      ordCreate( ("mem:_movnf"), "_movnf", "Str(mCodForc,6)+str(fObraNoCli,2)+Str(fAditivo,2)", {||Str(mCodForc,6)+str(fObraNoCli,2)+Str(fAditivo,2)}, )

   oLst:lOutputFr3 := .f.
   oLst:cTemplateFr3 := 'skel_' + 'ListaComGrp' +'.fr3'
   oLst:lPortrait  := .t.

   oLst:cAlias_DataCols := '_lstloc'
   oLst:cAliasMaster := oLst:cAlias_DataCols
   oLst:SetDbLst('mem:_lstloc')

   oLst:Cab1( "Locacoes do Cliente "+AllTrim(sccrcli->cr_nome) )
   oLst:Cab3( 'Locacoes por Obras e Datas' )
   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('Obra.Ad;lTrim(Str(fObraNoCli,2))+"."+lTrim(str(fAditivo,2))+".0";P;@S7;5;;')
   oLst:AddCol('DataLoc;mData;D;99.99.9999;10;;')
   oLst:AddCol('Descricao;se_prod->(dbseek(_movnf->pCod),pdesc);P;@S30;30;;')
   oLst:AddCol('Locadas;mQuant;N;99999999;8;S;;Direita;Some;')
   oLst:AddCol('Devol;mQdevol;N;99999999;8;S;;Direita;Some;')
   oLst:AddCol('Saldo;mQuant-mQdevol;P;99999999;8;;;Direita;Some;')
   oLst:AddCol('Val.Loc;pValLoca;N;9999.99;7;;')
   oLst:AddCol('Un;se_prod->pUNIDADE;P;XXX;3;;')
   oLst:AddCol('*;if(mTipoVen="C","Cancelado","");P;@S9;9;;')
   oLst:AddCol('Controle;StrZero(mFnum,8);P;99999999;8;S;')
   oLst:AddCol('Prod;Pcod;N;999999;6;;;')
   oLst:AddCol('l;mFgEs;C;X;1;;')

   oLst:AddGroup( { "KEY"    => {||Str(mCodForc,6)+str(fObraNoCli,2)} ,; 
                    "HEADER" => { {"style"=>"font:Courier-BoldOblique"}, {||vb_pref->(DbGoTo(_movnf->fObra), 'Obra: '+cr_fantasi)}} ,;
                    "FOOTER" => { '_LINHA_FINA_', {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_', '_PULE_1_LINHA_'} ;
                  })
   oLst:SetFormatSomaCol(3, {||"** Unidades Totais:"})

   //_movnf->( DbGoTop(), oLst:DbEval(, {||mFgEs="S"} ) )
   _movnf->( DbSetFilter({||mFgEs="S"},'mFgEs="S"'),  DbGoTop(), oLst:DbEval() )
   oLst:PrtD('_LINHA_FINA_', {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_', '_PULE_1_LINHA_')
   oLst:ResetCols()
   oLst:ZeraSomaCols() 
   oLst:ZeraSomaCols(.t.) 



   oLst:cAlias_DataCols := '_lstdev'
   oLst:cAliasMaster := oLst:cAlias_DataCols
   oLst:SetDbLst('mem:_lstdev')
   oLst:Cab1( "Locacoes do Cliente "+AllTrim(sccrcli->cr_nome) )
   oLst:Cab2( 'Analitico das Devolucoes de Produtos' )
   oLst:AddCab( {"style"=>"font:Helvetica#size:11", "COLS"=>"0,C"}, 'Emitida em ' + dtoc (s_datual) + ' `as ' + time () + ' horas')

   oLst:AddCol('Obra.Ad;lTrim(Str(fObraNoCli,2))+"."+lTrim(str(fAditivo,2))+".0";P;@S7;5;;')
   oLst:AddCol('DataDev;mData;D;99.99.9999;10;;')
   oLst:AddCol('Descricao;se_prod->(dbseek(_movnf->pCod),pdesc);P;@S30;30;;')
   oLst:AddCol('Qt.Devol;mQuant;N;99999999;8;S;;Direita;Some;')
   oLst:AddCol('Un;se_prod->pUNIDADE;P;XXX;3;;')
   oLst:AddCol('Controle;StrZero(mFnum,8);P;99999999;8;S;')
   oLst:AddCol('Prod;Pcod;N;999999;6;;;')
   oLst:AddCol('l;mFgEs;C;X;1;;')
   oLst:AddCol('*;if(mTipoVen="C","Cancelado","");P;@S9;9;;')

   oLst:PrtD( '' )
   oLst:PrtD( {"style"=>"font:Courier-BoldOblique", "COLS"=>"0,C"}, 'Analitico das Devolucoes de Produtos' )
   oLst:PrtD( '_LINHA_FINA_' )
   oLst:PrtD( '_CABCOLS_' )
   oLst:PrtD( '_LINHA_GROSSA_' )

   ordCreate( ("mem:_movnf"), "_movnf", "Str(mCodForc,6)+str(fObraNoCli,2)+Dtos(mData)", {||Str(mCodForc,6)+str(fObraNoCli,2)+Dtos(mData)}, )

   oLst:AddGroup( { "KEY"    => {||Str(mCodForc,6)+str(fObraNoCli,2)} ,; 
                    "HEADER" => { {"style"=>"font:Courier-BoldOblique"}, {||vb_pref->(DbGoTo(_movnf->fObra), 'Obra: '+cr_fantasi)}} ,;
                    "FOOTER" => { '_LINHA_FINA_', {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_', '_PULE_1_LINHA_'} ;
                  })
   oLst:SetFormatSomaCol(3, {||"** Totais Devolvidos:"})
   _movnf->( DbSetFilter({||mFgEs="E"},'mFgEs="E"'),  DbGoTop(), oLst:DbEval() )
   oLst:PrtD('_LINHA_FINA_', {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_', '_PULE_1_LINHA_')
   oLst:ResetCols()
   oLst:ZeraSomaCols() 
   oLst:ZeraSomaCols(.t.)



   oLst:cAlias_DataCols := '_lstprd'
   oLst:cAliasMaster := oLst:cAlias_DataCols
   _movnf->(DbSetFilter({||mFgEs="S"},'mFgEs="S"'),  DbGoTop(), olst:GroupBy("mem:_tprd", {||pcod}, 'pCod as char, mQuant, mQdevol',{||mFgEs="S"}, .t. ))
   Use ('mem:_tprd') New Exclusive
debugalert('--lst4')

   oLst:Cab1( "Locacoes do Cliente "+AllTrim(sccrcli->cr_nome) )
   oLst:Cab2( 'Resumo dos Produtos Locados' )
   oLst:AddCab( {"style"=>"font:Helvetica#size:11", "COLS"=>"0,C"}, 'Emitida em ' + dtoc (s_datual) + ' `as ' + time () + ' horas')

   oLst:AddCol('Cod;pCod;N;999999;6;;;Direita;NaoSome;Imprima;pCod;')
   oLst:AddCol('Descricao;se_prod->(dbseek(_tprd->pCod),pdesc);P;@S30;30;;;Direita;NaoSome;Imprima;pDesc;')
   oLst:AddCol('Locadas;mQuant;N;99999999;8;S;;Direita;Some;Imprima;Locadas;')
   oLst:AddCol('Devol;mQdevol;N;99999999;8;S;;Direita;Some;Imprima;Devolvidas;')
   oLst:AddCol('Saldo;mQuant-mQdevol;P;99999999;8;;;Direita;Some;Imprima;Saldo;')

   oLst:PrtD( '' )
   oLst:PrtD( {"style"=>"font:Courier-BoldOblique", "COLS"=>"0,C"}, 'Resumo dos Produtos Locados' )
   oLst:PrtD( '_LINHA_FINA_' )
   oLst:PrtD( '_CABCOLS_' )
   oLst:PrtD( '_LINHA_GROSSA_' )
   _tprd->(DbGoTop(), oLst:DbEval() )

   oLst:lFecharGruposAbertos := .t.
   oLst:SetFormatSomaCol(2, {||"** Unidades Totais:"}, .t.)
   oLst:PrtD( '_LINHA_GROSSA_')
   oLst:PrtD( {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_GLOBAL_' )
   oLst:ResetCols()
   oLst:ZeraSomaCols() 
   oLst:ZeraSomaCols(.t.) 
   


   Use ('mem:_recfx') New Exclusive
   oLst:cAlias_DataCols := '_lstadit'
   oLst:SetDbLst('mem:_lstadit')

   oLst:Cab1( "Locacoes do Cliente "+AllTrim(sccrcli->cr_nome) )
   oLst:Cab2( 'Resumo Financeiro por Aditivos' )
   oLst:AddCab( {"style"=>"font:Helvetica#size:11", "COLS"=>"0,C"}, 'Emitida em ' + dtoc (s_datual) + ' `as ' + time () + ' horas')
   oLst:AddCab( '_LINHA_FINA_' )
   oLst:AddCab( '_DB:_lstadit', '_CABCOLS_' )
   oLst:AddCab( '_LINHA_GROSSA_' )

   oLst:AddCol('Aditivo;lTrim(Str(fObraNoCli,2))+"."+lTrim(str(fAditivo,2))+" "+Cr_Obs;P;@S40;40;;;Esquerda;NaoSome;Imprima;Aditivo;')
   oLst:AddCol('Valor da\nLocacao;fValLoca;P;@e 99,999.99;9;;;Direita;Some;Imprima;ValLocacao;')
   oLst:AddCol('Valor\nDevolvido;if(cr_valor<fValLoca,fValLoca-cr_valor,0);P;@e 99,999.99;9;;;Direita;Some;Imprima;ValDevolv;')
   oLst:AddCol('Valor\nem Uso;if(cr_valor>0,cr_valor,0);P;({|x|if(valType(x)="N",Transform(x,"@e 99,999.99"),x)});9;S;;Direita;Some;Imprima;ValEmUso;')
   oLst:AddCol('Dia\nFixo;if(cr_valor>0,if(FgFixoVar=" ","Dia Variavel","Dia Fixo"),"Ja Devolvido");P;@S12;12;;;Direita;NaoSome;Imprima;DiaCobranc;')

   debugalert('2')
   oLst:PrtD( '' )
   oLst:PrtD( {"style"=>"font:Courier-BoldOblique", "COLS"=>"0,C"}, 'Resumo Financeiro por Aditivos' )
   oLst:PrtD( '_LINHA_FINA_' )
   oLst:PrtD( '_CABCOLS_' )
   oLst:PrtD( '_LINHA_GROSSA_' )
   _recfx->(DbGoTop(), oLst:DbEval() )
   oLst:lFecharGruposAbertos := .t.
   oLst:SetFormatSomaCol(1, {||"** Totais Locados/Devolvidos:"}, .t.)
   oLst:PrtD( '_LINHA_GROSSA_')
   oLst:PrtD( {"style"=>"font:Courier-BoldOblique"}, '_SOMACOLS_GLOBAL_' )


   debugalert('vai run ...')
   oLst:Run()
   oLst:End()

   debugalert('5')

   _tprd->(DbCloseArea())
   DbDrop('mem:_tprd')

   DbSelectArea('sccrcli')
   debugalert('6')

#FIM_TEXTO_FONTE