Para achar e mover/apagar produtos com ano(s) sem movimentação -> Entradas no Estoque e QTD = ZERO!
**********************************
FUNCTION TransportarProdutos(oBrw)
**********************************
*
*
LOCAL oFont,oDlg,lOk := .f.,cTitulo:='Transporte de produtos descontinuados'
LOCAL nAno := Year(Date())-2, cPhantom:="", nSoma := 0, nRefresh := 0, nRec:=0, nTRec:=eq->(RecCount()), oBar
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -16
INIT DIALOG oDlg CLIPPER TITLE cTitulo Font oFont AT 0,0 SIZE 340,180 STYLE DS_CENTER + WS_VISIBLE + WS_SYSMENU
@ 020,035 say 'Ano base:' size 100,25
@ 110,030 get oAno VAR nAno picture '9999' size 60,25 STYLE ES_RIGHT
@ 110,050 get oPhantom VAR cPhantom size 0,0
@ 020,090 ButtonEx oBtOff Caption 'Cancelar' Size 110,30 BITMAP HBitmap():AddResource('EXIT'):handle TRANSPARENT ON CLICK {||hwg_EndDialog()}
@ 200,090 ButtonEx oBtOn Caption 'Confirmar' Size 110,30 BITMAP HBitmap():AddResource('RUN'):handle TRANSPARENT ON CLICK {||lOk:=.t.,hwg_EndDialog()}
oDlg:Activate()
if !lOk
RETURN .T.
endif
oBar := HProgressBar():NewBox( "Processando, "+lTrim(str(nRec,9))+" De "+lTrim(Str(nTRec,9))+" Registro(s)",,,350,,nTRec)
eq->(dbGoTop())
DO WHILE eq->(!Eof())
tp54e->(ordSetFocus(8)) //cod_mercad+DESCEND(dtos(DATA))
tp54e->(OrdScope(0,eq->cod_mercad) )
tp54e->(OrdScope(1,eq->cod_mercad) )
tp54e->(DbGoTop())
IF Empty(eq->quantidade)
IF Year(tp54e->data) < nAno
nSoma++
ENDIF
ENDIF
eq->(dbSkip())
IF ++nRefresh == 100
oBar:Set("Movendo "+lTrim(Str(nRec+=nRefresh,9))+" De "+lTrim(Str(nTRec,9))+" Registro(s)",nRec)
hwg_processmessage()
nRefresh := 0
ENDIF
ENDDO
oBar:Close()
hwg_msginfo("Total de produto(s) encontrado(s): " + AllTrim(Transform(nSoma,"9999,999,999")) + " Ano base: " + Str(nAno) )
RETURN .T.
Saudações,
Itamar M. Lins Jr.