ALIAS SE_LOTES
// outroarq se_prod seip_c pcod
COMANDO ANTES #TEXTO_FONTE
   Private oQbe, znLotes:=0, aFieldsDaTela:={}, wFgSldInic:=.f., wFgQtdComp:=.f., wFgQtdVend:=.f.

   se select('se_prod')=0 entao se_lotes->( Abra('0NOIDX',r_siga,'se_prod','se_prod','seip_c','pcod') )

   aAdd( aFieldsDaTela, {"2;5;CHECKBOX 'Imprime Saldos Iniciais  ?'", "@wFgSldInic", @wFgSldInic, "!", "", ""} )
   aAdd( aFieldsDaTela, {"3;5;CHECKBOX 'Imprime Quant. Compradas ?'", "@wFgQtdComp", @wFgQtdComp, "!", "", ""} )
   aAdd( aFieldsDaTela, {"4;5;CHECKBOX 'Imprime Quant. Vendidas  ?'", "@wFgQtdVend", @wFgQtdVend, "!", "", ""} )
   
   oQbe:=oQbe():New('_lotes')
   oQbe:AddFiltro("6;5;CHECKBOX 'Somente com saldos &SNGPC   ? '", {||peatbal+Mquant-Mqatend>0}  ,,,{'Checkbox', .t.})
   oQbe:AddFiltro("7;5;CHECKBOX 'Somente com estoque &Real   ? '", {||se_prod->(SE_LOTES->pCod=pCod.or.DbSeek(SE_LOTES->pCod),peatual>0)}  ,,,{'Checkbox', .f.})
   oQbe:AddFiltro("8;2;Selecao de Produtos:", { ;
                      {'&1. Antibioticos+Controlados SNGPC       ', {||se_prod->(SE_LOTES->pCod=pCod.or.DbSeek(SE_LOTES->pCod),!pFgControl$' ')} } ,;
                      {'&2. Somente Antibioticos SNGPC           ', {||se_prod->(SE_LOTES->pCod=pCod.or.DbSeek(SE_LOTES->pCod),pFgControl$'aA')} } ,;
                      {'&3. Somente Controlados  SNGPC           ', {||se_prod->(SE_LOTES->pCod=pCod.or.DbSeek(SE_LOTES->pCod),!pFgControl$' aA')} } ,;
                      {'&4. Sem SNGPC. Com Controle de Vencimento', {||se_prod->(SE_LOTES->pCod=pCod.or.DbSeek(SE_LOTES->pCod),pFgControl=' ')} } ;
                      } )
   if .not. oQbe:QuickDialog("Qbe_LstSeLotes", "56;14;Saldos de Lotes", aFieldsDaTela)
      Return .f.
   endif

   oLst:cAlias_DataCols := '_lotes'
   oLst:cAliasMaster := '_lotes'
   oLst:lPortrait := .t.
   
   oLst:lGeraDbTmp := .f.
   oLst:lOutputFr3 := .f.
   oLst:lOutputPdf := .t.
   
   // oLst:lOutputFr3 := .t.

   oLst:Cab1( "Relacao de Lotes Disponiveis")
   se !empty(oQbe:ExpressaoDeFiltragemParaImprimir) entao (oLst:AddCab( "" ) , oLst:Cab4( oQbe:ExpressaoDeFiltragemParaImprimir ))
   oLst:Cab4( "Impressao em "+Dtoc(s_datual)+" as "+time() )
  
   oLst:AddCab( '_LINHA_FINA_' )
   oLst:AddCab( '_CABCOLS_' )
   oLst:AddCab( '_LINHA_GROSSA_' )

   oLst:AddCol('*;se_prod->pFgControl;P;X;1;;') 
   oLst:AddCol('Codigo;pCod;N;999999;6;;')
   oLst:AddCol('REGMS e Descricao;se_prod->(pregms+" "+pdesc);P;@s40;40;;') 
   oLst:AddCol('Lote;plote;C;@S10;10;;') 

   se wFgSldInic entao oLst:AddCol('Saldo\nInicial;peatbal;N;999999;8;S;')
   se wFgQtdComp entao oLst:AddCol('Entradas;mquant;N;999999;8;S;')
   se wFgQtdVend entao oLst:AddCol('Saidas;mqatend;N;999999;8;S;')

   oLst:AddCol('Saldo\nSNGPC;peatbal+Mquant-Mqatend;P;999999;6;S;')
   oLst:AddCol('Saldo\nEstoq;se_prod->peatual;P;999999;6;S;')

   oLst:AddRodape( '_LINHA_FINA_', "", {|| "Pagina "+Str(++pag,4)+" / ####"} )
   
   debugalert('1')
   se_lotes->( dbgotop(),  oLst:DbEval({||++znLotes}, {||oQbe:Filtro_ok()} ) )
   
   oLst:PrtD( '_LINHA_GROSSA_' )
   oLst:PrtD( 'Lotes Listados: '+Transform(znLotes,'@E 999,999') )
   debugalert('3')

#FIM_TEXTO_FONTE