Página 1 de 1

Rotina p/ transportar produtos obsoletos

Enviado: 05 Nov 2021 21:18
por Itamar M. Lins Jr.
Olá!
Para achar e mover/apagar produtos com ano(s) sem movimentação -> Entradas no Estoque e QTD = ZERO!

Código: Selecionar todos

**********************************
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.

Rotina p/ transportar produtos obsoletos

Enviado: 06 Nov 2021 18:55
por JoséQuintas
Na prática não é isso, porque não está movimentando nada.
Mas entendi que é um exemplo que pode até ser comparado a uma tela de login.
E que pode ter 1001 utilidades.