16 Mar 2015 10:22
16 Mar 2015 11:22
//------------------------------ MONTAR AGENDA
#INCLUDE "FiveWin.ch"
#Include "VOGET.ch"
FUNCTION MONTAR()
CLOSE DATABASE
ABRIRAR()
SELECT DEFIN1
IF RECCOUNT() = 0
APPE BLAN
ENDIF
//------------------- INTERVALO
SELECT DEFIN1
xINTERVALO := INTERVALO1
//------------------- MANHÃ
xSEGINICMA := SEGINICMA1
xSEGFINAMA := SEGFINAMA1
xTERINICMA := TERINICMA1
xTERFINAMA := TERFINAMA1
xQUAINICMA := QUAINICMA1
xQUAFINAMA := QUAFINAMA1
xQUIINICMA := QUIINICMA1
xQUIFINAMA := QUIFINAMA1
xSEXINICMA := SEXINICMA1
xSEXFINAMA := SEXFINAMA1
//------------------- TARDE
xSEGINICTA := SEGINICTA1
xSEGFINATA := SEGFINATA1
xTERINICTA := TERINICTA1
xTERFINATA := TERFINATA1
xQUAINICTA := QUAINICTA1
xQUAFINATA := QUAFINATA1
xQUIINICTA := QUIINICTA1
xQUIFINATA := QUIFINATA1
xSEXINICTA := SEXINICTA1
xSEXFINATA := SEXFINATA1
//-------------------
DEFINE FONT oFontAC1 NAME "LUCIDA CONSOLE" SIZE 0,-(12*1.33)
DEFINE DIALOG TECL21 RESOURCE "DEFICAO1" TITLE "# DEFINIÇÕES DA AGENDA #"
//------------------- INTERVALO
REDEFINE GET zINTERVALO VAR xINTERVALO ID 101 PICTURE "@E 99" FONT oFontAC1 VALID VERINTERV(xINTERVALO,"xINTERVALO","zINTERVALO") // VALID xINTERVALO > 0 .AND. xINTERVALO < 61
//------------------- MANHÃ
REDEFINE GET zSEGINICMA VAR xSEGINICMA ID 102 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xSEGINICMA,"xSEGINICMA","zSEGINICMA")
REDEFINE GET zSEGFINAMA VAR xSEGFINAMA ID 103 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xSEGFINAMA,"xSEGFINAMA","zSEGFINAMA")
REDEFINE GET zTERINICMA VAR xTERINICMA ID 104 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xTERINICMA,"xTERINICMA","zTERINICMA")
REDEFINE GET zTERFINAMA VAR xTERFINAMA ID 105 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xTERFINAMA,"xTERFINAMA","zTERFINAMA")
REDEFINE GET zQUAINICMA VAR xQUAINICMA ID 106 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xQUAINICMA,"xQUAINICMA","zQUAINICMA")
REDEFINE GET zQUAFINAMA VAR xQUAFINAMA ID 107 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xQUAFINAMA,"xQUAFINAMA","zQUAFINAMA")
REDEFINE GET zQUIINICMA VAR xQUIINICMA ID 108 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xQUIINICMA,"xQUIINICMA","zQUIINICMA")
REDEFINE GET zQUIFINAMA VAR xQUIFINAMA ID 109 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xQUIFINAMA,"xQUIFINAMA","zQUIFINAMA")
REDEFINE GET zSEXINICMA VAR xSEXINICMA ID 110 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xSEXINICMA,"xSEXINICMA","zSEXINICMA")
REDEFINE GET zSEXFINAMA VAR xSEXFINAMA ID 111 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMIMA(xSEXFINAMA,"xSEXFINAMA","zSEXFINAMA")
//------------------- TARDE
REDEFINE GET zSEGINICTA VAR xSEGINICTA ID 112 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xSEGINICTA,"xSEGINICTA","zSEGINICTA")
REDEFINE GET zSEGFINATA VAR xSEGFINATA ID 113 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xSEGFINATA,"xSEGFINATA","zSEGFINATA")
REDEFINE GET zTERINICTA VAR xTERINICTA ID 114 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xTERINICTA,"xTERINICTA","zTERINICTA")
REDEFINE GET zTERFINATA VAR xTERFINATA ID 115 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xTERFINATA,"xTERFINATA","zTERFINATA")
REDEFINE GET zQUAINICTA VAR xQUAINICTA ID 116 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xQUAINICTA,"xQUAINICTA","zQUAINICTA")
REDEFINE GET zQUAFINATA VAR xQUAFINATA ID 117 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xQUAFINATA,"xQUAFINATA","zQUAFINATA")
REDEFINE GET zQUIINICTA VAR xQUIINICTA ID 118 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xQUIINICTA,"xQUIINICTA","zQUIINICTA")
REDEFINE GET zQUIFINATA VAR xQUIFINATA ID 119 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xQUIFINATA,"xQUIFINATA","zQUIFINATA")
REDEFINE GET zSEXINICTA VAR xSEXINICTA ID 120 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xSEXINICTA,"xSEXINICTA","zSEXINICTA")
REDEFINE GET zSEXFINATA VAR xSEXFINATA ID 121 PICTURE "@E 99.99" FONT oFontAC1 VALID VERHOMITA(xSEXFINATA,"xSEXFINATA","zSEXFINATA")
REDEFINE BUTTON ID 124 cancel ACTION TECL21:End()
ACTIVATE DIALOG TECL21 CENTERED
oFontAC1:END()
RETURN .T.
//--------------------- VALIDAR INTERVALO
FUNCTION VERINTERV(HORMIN,_CAMPO,_ATUALI)
IF xINTERVALO <> 15 .AND. xINTERVALO <> 30 .AND. xINTERVALO <> 45
MSGSTOP("O intervalo deve ser de 15, 30 ou 45 minutos.","# Erro no intervalo #")
RETURN .F.
ENDIF
SELECT DEFIN1
REPLACE INTERVALO1 WITH HORMIN
&_CAMPO := HORMIN
&_ATUALI:VARPUT(&_CAMPO)
&_ATUALI:REFRESH()
RETURN .T.
//--------------------- VALIDAR HORA / MINUTOS MANHÃ
FUNCTION VERHOMIMA(HORMIN,_CAMPO,_ATUALI)
IF HORMIN = 0
HORMIN := 0
GRAVADEF()
HORA1 := SUBSTR(STR(HORMIN),1,2)
HORA2 := VAL(HORA1)
MINU1 := SUBSTR(STR(HORMIN),4,2)
MINU2 := VAL(MINU1)
&_CAMPO := HORMIN // STRZERO(HORA2,2)+":"+STRZERO(MINU2,2)
&_ATUALI:VARPUT(&_CAMPO)
&_ATUALI:REFRESH()
RETURN .T.
ENDIF
HORA1 := SUBSTR(STR(HORMIN),1,2)
HORA2 := VAL(HORA1)
IF HORA2 < 6 .OR. HORA2 > 12
MSGSTOP("A hora deve estar entre 6 e 12.","# Erro na hora #")
RETURN .F.
ENDIF
MINU1 := SUBSTR(STR(HORMIN),4,2)
MINU2 := VAL(MINU1)
IF MINU2 < 0 .OR. MINU2 > 59
MSGSTOP("Os mimutos devem estar entre 0 e 59.","# Erro nos minutos #")
RETURN .F.
ENDIF
GRAVADEF()
&_CAMPO := VAL(STRZERO(HORA2,2)+"."+STRZERO(MINU2,2))
&_ATUALI:VARPUT(&_CAMPO)
&_ATUALI:REFRESH()
RETURN .T.
//--------------------- VALIDAR HORA / MINUTOS TARDE
FUNCTION VERHOMITA(HORMIN,_CAMPO,_ATUALI)
IF HORMIN = 0
HORMIN := 0
GRAVADEF()
HORA1 := SUBSTR(STR(HORMIN),1,2)
HORA2 := VAL(HORA1)
MINU1 := SUBSTR(STR(HORMIN),4,2)
MINU2 := VAL(MINU1)
&_CAMPO := HORMIN //STRZERO(HORA2,2)+":"+STRZERO(MINU2,2)
&_ATUALI:VARPUT(&_CAMPO)
&_ATUALI:REFRESH()
RETURN .T.
ENDIF
HORA1 := SUBSTR(STR(HORMIN),1,2)
HORA2 := VAL(HORA1)
IF HORA2 < 13 .OR. HORA2 > 20
MSGSTOP("A hora deve estar entre 13 e 20.","# Erro na hora #")
RETURN .F.
ENDIF
MINU1 := SUBSTR(STR(HORMIN),4,2)
MINU2 := VAL(MINU1)
IF MINU2 < 0 .OR. MINU2 > 59
MSGSTOP("Os mimutos devem estar entre 0 e 59.","# Erro nos minutos #")
RETURN .F.
ENDIF
GRAVADEF()
&_CAMPO := VAL(STRZERO(HORA2,2)+"."+STRZERO(MINU2,2) )
&_ATUALI:VARPUT(&_CAMPO)
&_ATUALI:REFRESH()
RETURN .T.
//------------------------------ GRAVAR DEFINIÇOES
FUNCTION GRAVADEF()
SELECT DEFIN1
//------------------- MANHÃ
REPLACE SEGINICMA1 WITH xSEGINICMA
REPLACE SEGFINAMA1 WITH xSEGFINAMA
REPLACE TERINICMA1 WITH xTERINICMA
REPLACE TERFINAMA1 WITH xTERFINAMA
REPLACE QUAINICMA1 WITH xQUAINICMA
REPLACE QUAFINAMA1 WITH xQUAFINAMA
REPLACE QUIINICMA1 WITH xQUIINICMA
REPLACE QUIFINAMA1 WITH xQUIFINAMA
REPLACE SEXINICMA1 WITH xSEXINICMA
REPLACE SEXFINAMA1 WITH xSEXFINAMA
//------------------- TARDE
REPLACE SEGINICTA1 WITH xSEGINICTA
REPLACE SEGFINATA1 WITH xSEGFINATA
REPLACE TERINICTA1 WITH xTERINICTA
REPLACE TERFINATA1 WITH xTERFINATA
REPLACE QUAINICTA1 WITH xQUAINICTA
REPLACE QUAFINATA1 WITH xQUAFINATA
REPLACE QUIINICTA1 WITH xQUIINICTA
REPLACE QUIFINATA1 WITH xQUIFINATA
REPLACE SEXINICTA1 WITH xSEXINICTA
REPLACE SEXFINATA1 WITH xSEXFINATA
RETURN .T.
//---------------------------- CRIAR AGENDA
FUNCTION CRIAR()
CLOSE DATABASE
ABRIRAR()
SELECT DEFIN1
tore:=RECCOUNT()
IF tore = 0
MSGSTOP("NÃO HÁ DEFINIÇÕES PARA MONTAR ESTA AGENDA."," # AVISO #")
RETURN .T.
ENDIF
SELECT DEF_TEM
ZAP
APPE BLAN
REPLACE INTERVALOT WITH DEFIN1->INTERVALO1 // INTERVALO
//------------------- MANHÃ
REPLACE SEGINICMAT WITH DEFIN1->(SUBSTR(STRZERO(SEGINICMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEGINICMA1),4,2)) // HORA INICIO MANHA
REPLACE SEGFINAMAT WITH DEFIN1->(SUBSTR(STRZERO(SEGFINAMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEGFINAMA1),4,2)) // HORA FINAL MANHA
REPLACE TERINICMAT WITH DEFIN1->(SUBSTR(STRZERO(TERINICMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(TERINICMA1),4,2)) // HORA INICIO MANHA
REPLACE TERFINAMAT WITH DEFIN1->(SUBSTR(STRZERO(TERFINAMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(TERFINAMA1),4,2)) // HORA FINAL MANHA
REPLACE QUAINICMAT WITH DEFIN1->(SUBSTR(STRZERO(QUAINICMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUAINICMA1),4,2)) // HORA INICIO MANHA
REPLACE QUAFINAMAT WITH DEFIN1->(SUBSTR(STRZERO(QUAFINAMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUAFINAMA1),4,2)) // HORA FINAL MANHA
REPLACE QUIINICMAT WITH DEFIN1->(SUBSTR(STRZERO(QUIINICMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUIINICMA1),4,2)) // HORA INICIO MANHA
REPLACE QUIFINAMAT WITH DEFIN1->(SUBSTR(STRZERO(QUIFINAMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUIFINAMA1),4,2)) // HORA FINAL MANHA
REPLACE SEXINICMAT WITH DEFIN1->(SUBSTR(STRZERO(SEXINICMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEXINICMA1),4,2)) // HORA INICIO MANHA
REPLACE SEXFINAMAT WITH DEFIN1->(SUBSTR(STRZERO(SEXFINAMA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEXFINAMA1),4,2)) // HORA FINAL MANHA
//------------------- TARDE
REPLACE SEGINICTAT WITH DEFIN1->(SUBSTR(STR(SEGINICTA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEGINICTA1),4,2)) // HORA INICIO TARDE
REPLACE SEGFINATAT WITH DEFIN1->(SUBSTR(STR(SEGFINATA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEGFINATA1),4,2)) // HORA FINAL TARDE
REPLACE TERINICTAT WITH DEFIN1->(SUBSTR(STR(TERINICTA1),1,2))+":"+DEFIN1->(SUBSTR(STR(TERINICTA1),4,2)) // HORA INICIO TARDE
REPLACE TERFINATAT WITH DEFIN1->(SUBSTR(STR(TERFINATA1),1,2))+":"+DEFIN1->(SUBSTR(STR(TERFINATA1),4,2)) // HORA FINAL TARDE
REPLACE QUAINICTAT WITH DEFIN1->(SUBSTR(STR(QUAINICTA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUAINICTA1),4,2)) // HORA INICIO TARDE
REPLACE QUAFINATAT WITH DEFIN1->(SUBSTR(STR(QUAFINATA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUAFINATA1),4,2)) // HORA FINAL TARDE
REPLACE QUIINICTAT WITH DEFIN1->(SUBSTR(STR(QUIINICTA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUIINICTA1),4,2)) // HORA INICIO TARDE
REPLACE QUIFINATAT WITH DEFIN1->(SUBSTR(STR(QUIFINATA1),1,2))+":"+DEFIN1->(SUBSTR(STR(QUIFINATA1),4,2)) // HORA FINAL TARDE
REPLACE SEXINICTAT WITH DEFIN1->(SUBSTR(STR(SEXINICTA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEXINICTA1),4,2)) // HORA INICIO TARDE
REPLACE SEXFINATAT WITH DEFIN1->(SUBSTR(STR(SEXFINATA1),1,2))+":"+DEFIN1->(SUBSTR(STR(SEXFINATA1),4,2)) // HORA FINAL TARDE
SELECT AGEND1
ORDSETFOCUS( "CONS101" ) // DATA
GO BOTT
IF AGECONS = CTOD("")
din:=DATE()
else
DIN := AGECONS + 1
ENDIF
adin:=din+1
DFI := DIN + 180
TDM:=0
RTR:= DFI - DIN
DEFINE FONT oFontAC1 NAME "LUCIDA CONSOLE" SIZE 0,-(12*1.33)
DEFINE DIALOG TECL1 RESOURCE "MONTAG1" TITLE "# MONTAR AGENDA #"
REDEFINE SAY oSAY2 PROMPT "Total de "+STRZERO(TDM,4)+" dias incluídos na agenda de "+STRZERO(RTR,4) ID 3 FONT oFontAC1 Update
REDEFINE GET zDIN VAR DIN ID 101 FONT oFontAC1
REDEFINE GET zDFI VAR DFI ID 102 VALID VERPO(DFI,DIN) FONT oFontAC1
REDEFINE BUTTON oBOTAS1 ID 103 cancel ACTION (MONTARA(DIN,DFI),TECL1:End())
REDEFINE BUTTON ID 104 cancel ACTION TECL1:End()
ACTIVATE DIALOG TECL1 CENTERED ON INIT oBOTAS1:HIDE()
oFontAC1:END()
CLOSE DATABASE
RETURN .T.
//-------------------
FUNCTION VERPO(DFI,DIN)
IF DFI < DIN
RETURN .T.
ENDIF
IF DFI > DATE()
oBOTAS1:SHOW()
ELSE
oBOTAS1:HIDE()
ENDIF
RETURN .T.
//---------------------- MONTAR
FUNCTION MONTARA(DI,DF)
RTR := DF - DI
MDIA := " "
AGEND := "AGEND1"
di := di-1
df := df-1
DO WHILE DI-1 <> DF
DI++
IF DOW(DI) = 1 .or. DOW(DI) = 7
LOOP
ENDIF
//----------------- SEGUNDA
IF DOW(DI) = 2
if val(DEF_TEM->SEGINICMAT) <> 0
SELECT &AGEND
APPE BLAN
//-------------- MANHA - PRIMEIRA
REPLACE AGE_DIA WITH "SEG"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->SEGINICMAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- MANHA - DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "SEG"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->SEGFINAMAT,1,2)+"."+SUBSTR(DEF_TEM->SEGFINAMAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "SEG"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "******* HORÁRIO DE ALMOÇO ******"
endif
if val(DEF_TEM->SEGINICTAT) <> 0
//-------------- TARDE - PRIMEIRA
APPE BLAN
REPLACE AGE_DIA WITH "SEG"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->SEGINICTAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- TARDE - DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "SEG"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->SEGFINATAT,1,2)+"."+SUBSTR(DEF_TEM->SEGFINATAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
endif
ENDIF
//----------------- TERÇA
IF DOW(DI) = 3
if val(DEF_TEM->TERINICMAT) <> 0
SELECT &AGEND
APPE BLAN
//-------------- MANHA PRIMEIRA
REPLACE AGE_DIA WITH "TER"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->TERINICMAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- MANHA DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "TER"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->TERFINAMAT,1,2)+"."+SUBSTR(DEF_TEM->TERFINAMAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "TER"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "******* HORÁRIO DE ALMOÇO ******"
endif
if val(DEF_TEM->TERINICTAT) <> 0
//-------------- TARDE - PRIMEIRA
APPE BLAN
REPLACE AGE_DIA WITH "TER"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->TERINICTAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- TARDE - DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "TER"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->TERFINATAT,1,2)+"."+SUBSTR(DEF_TEM->TERFINATAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
endif
ENDIF
//----------------- QUARTA
IF DOW(DI) = 4
if val(DEF_TEM->QUAINICMAT) <> 0
SELECT &AGEND
APPE BLAN
REPLACE AGE_DIA WITH "QUA"
REPLACE AGECONS WITH DI
//-------------- MANHA PRIMEIRA
REPLACE AGEHORA WITH DEF_TEM->QUAINICMAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- MANHA DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "QUA"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->QUAFINAMAT,1,2)+"."+SUBSTR(DEF_TEM->QUAFINAMAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "QUA"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "******* HORÁRIO DE ALMOÇO ******"
endif
//-------------- TARDE - PRIMEIRA
if val(DEF_TEM->QUAINICTAT) <> 0
APPE BLAN
REPLACE AGE_DIA WITH "QUA"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->QUAINICTAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- TARDE - DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "QUA"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->QUAFINATAT,1,2)+"."+SUBSTR(DEF_TEM->QUAFINATAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
endif
ENDIF
//----------------- QUINTA
IF DOW(DI) = 5
if val(DEF_TEM->QUIINICMAT) <> 0
SELECT &AGEND
APPE BLAN
REPLACE AGE_DIA WITH "QUI"
REPLACE AGECONS WITH DI
//-------------- MANHA PRIMEIRA
REPLACE AGEHORA WITH DEF_TEM->QUIINICMAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- MANHA DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "QUI"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->QUIFINAMAT,1,2)+"."+SUBSTR(DEF_TEM->QUIFINAMAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "QUI"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "******* HORÁRIO DE ALMOÇO ******"
endif
if val(DEF_TEM->QUIINICTAT) <> 0
//-------------- TARDE - PRIMEIRA
APPE BLAN
REPLACE AGE_DIA WITH "QUI"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->QUIINICTAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- TARDE - DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "QUI"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->QUIFINATAT,1,2)+"."+SUBSTR(DEF_TEM->QUIFINATAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
endif
ENDIF
//----------------- SEXTA
IF DOW(DI) = 6
if val(DEF_TEM->SEXINICMAT) <> 0
SELECT &AGEND
APPE BLAN
REPLACE AGE_DIA WITH "SEX"
REPLACE AGECONS WITH DI
//-------------- MANHA PRIMEIRA
REPLACE AGEHORA WITH DEF_TEM->SEXINICMAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- MANHA DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "SEX"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->SEXFINAMAT,1,2)+"."+SUBSTR(DEF_TEM->SEXFINAMAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "SEX"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "******* HORÁRIO DE ALMOÇO ******"
endif
if val(DEF_TEM->SEXINICTAT) <> 0
//-------------- TARDE - PRIMEIRA
APPE BLAN
REPLACE AGE_DIA WITH "SEX"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH DEF_TEM->SEXINICTAT
REPLACE AGEPACI WITH "LIVRE"
//-------------- TARDE - DEMAIS
DO WHILE .T.
cNovo := SomaTempo(AGEHORA,DEF_TEM->INTERVALOT)
APPE BLAN
REPLACE AGE_DIA WITH "SEX"
REPLACE AGECONS WITH DI
REPLACE AGEHORA WITH cNovo
REPLACE AGEPACI WITH "LIVRE"
FIMMAN := VAL(SUBSTR(DEF_TEM->SEXFINATAT,1,2)+"."+SUBSTR(DEF_TEM->SEXFINATAT,4,2))
ULTMHO := VAL(SUBSTR(cNovo,1,2)+"."+SUBSTR(cNovo,4,2))
IF FIMMAN > ULTMHO
LOOP
ELSE
EXIT
ENDIF
ENDDO
endif
ENDIF
TDM++
atutxt(TDM,oSAY2,RTR)
WaitSeconds(0.01)
ENDDO
RETURN .T.
//------------------------ ATUALIZAR
function atutxt(TDM,o2,RTR)
o2:SetText("Total de "+STRZERO(TDM,4)+" dias incluídos na agenda de "+STRZERO(RTR,4)) ; o2:Refresh()
sysRefresh()
RETURN .T.
//------------------------ CALCULAR PRÓXIMO HORÁRIO
Function SomaTempo( cTempo,_PULA )
nNovo := Secs(cTempo) + (_PULA*60)
If nNovo > (24*60*60)
nNovo -= (24*60*60)
End
cNovo := TString( nNovo )
Return cNovo
AGENDA01
AGE_PAS','C',004,000 // PASTA DO PACIENTE
AGE_DIA','C',003,000 // DIA DA SEMANA
AGEHORA','C',005,000) // HORA DA CONSULTA
AGECONS','D',008,000 // DATA DA CONSULTA
AGEPACI','C',050,000 // NOME DO PACIENTE
AGECONV','C',010,000 // CONVENIO
AGENUCO','C',020,000 // NUMERO DO CONVENIO
AGETEFI','C',009,000 // TELEFONE FIXO
AGETECE','C',015,000 // TELEFONE CELULAR
AGEMARC','D',008,000 // DATA DA MARCAÇÃO
AGEMOTI','C',003,000 // MOTIVO
AGEBLOC','C',001,000 // DIA BLOQUEADO
AGEDAMO','D',008,000 // DATA DE CRIAÇÃO
AGECONF','C',003,000 // CONFIRMOU
DEFINI01
//------------------- MANHÃ
SEGINICMA1','N',005,002 // HORA INICIO MANHA
SEGFINAMA1','N',005,002 // HORA FINAL MANHA
//
TERINICMA1','N',005,002 // HORA INICIO MANHA
TERFINAMA1','N',005,002 // HORA FINAL MANHA
//
QUAINICMA1','N',005,002 // HORA INICIO MANHA
QUAFINAMA1','N',005,002 // HORA FINAL MANHA
//
QUIINICMA1','N',005,002 // HORA INICIO MANHA
QUIFINAMA1','N',005,002 // HORA FINAL MANHA
//
SEXINICMA1','N',005,002 // HORA INICIO MANHA
SEXFINAMA1','N',005,002 // HORA FINAL MANHA
//------------------- TARDE
SEGINICTA1','N',005,002 // HORA INICIO TARDE
SEGFINATA1','N',005,002 // HORA FINAL TARDE
//
TERINICTA1','N',005,002 // HORA INICIO TARDE
TERFINATA1','N',005,002 // HORA FINAL TARDE
//
QUAINICTA1','N',005,002 // HORA INICIO TARDE
QUAFINATA1','N',005,002 // HORA FINAL TARDE
//
QUIINICTA1','N',005,002 // HORA INICIO TARDE
QUIFINATA1','N',005,002 // HORA FINAL TARDE
//
SEXINICTA1','N',005,002 // HORA INICIO TARDE
SEXFINATA1','N',005,002 // HORA FINAL TARDE
//------------------- INTERVALO
INTERVALO1','N',002,000 // INTERVALO
16 Mar 2015 14:36
DEFINE DIALOG TECL21 RESOURCE "DEFICAO1" TITLE "# DEFINIÇÕES DA AGENDA #"
16 Mar 2015 14:59
FUNCTION Gerar_Agenda()
Hora := 8:00
WHILE DataInicial < DataFinal
Hora := Hora + .30 // 30 minutos
// Como eu somo 30 minutos em 8:00 - 8:30, 9:00
// em um intervalo de 30 dias de agenda
// exemplo: DataInicial := 01/03/2015 a 31/03/2015
ENDDO
16 Mar 2015 15:35
Agenda
AGENDA0 DIALOG 6, 15, 680, 378
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
FONT 8, "MS Sans Serif"
{
CTEXT "Marcar da fila", -1, 259, 335, 90, 12
CTEXT "Desmarcar consulta", -1, 259, 360, 90, 10
CTEXT "Incluir horário", -1, 368, 360, 90, 10
CTEXT "Marcar falta", -1, 477, 360, 90, 10
CTEXT "Imprimir dia", -1, 586, 335, 90, 12
LTEXT "F2 = Cadastrar consulta.", 1, 6, 356, 142, 8
LTEXT "ENTER = Marcar ou alterar uma consulta. ", 2, 6, 336, 142, 8
LTEXT "2 cliques = Confirmar a consulta.", 3, 6, 346, 142, 8
RTEXT "Localizar", -1, 2, 5, 38, 8
LISTBOX IDC_LISTBOX3, 2, 19, 676, 322, LBS_STANDARD
PUSHBUTTON "&Bloquear dia", IDC_PUSHBUTTON14, 368, 331, 90, 18
PUSHBUTTON "&Desbloquear dia", IDC_PUSHBUTTON15, 368, 331, 90, 18
PUSHBUTTON "Localizar &vaga", IDC_PUSHBUTTON18, 477, 331, 90, 18
PUSHBUTTON "&Imprimir dia", IDC_PUSHBUTTON19, 586, 331, 90, 18
PUSHBUTTON "D&esmarcar consulta", IDC_PUSHBUTTON20, 259, 356, 90, 18
PUSHBUTTON "Inclui&r horário", IDC_PUSHBUTTON21, 368, 356, 90, 18
PUSHBUTTON "&Marcar falta", IDC_PUSHBUTTON22, 477, 356, 90, 18
PUSHBUTTON "Marcar da &fila", IDC_PUSHBUTTON23, 259, 331, 90, 18
PUSHBUTTON "&Fechar janela", IDC_PUSHBUTTON24, 586, 356, 90, 18
CONTROL "113", IDC_EDIT29, "EDIT", ES_UPPERCASE | WS_BORDER | WS_TABSTOP, 45, 3, 297, 12
CONTROL "114", IDC_EDIT30, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 348, 3, 69, 12
AUTORADIOBUTTON " Paciente", IDC_RADIOBUTTON9, 541, 3, 50, 12
AUTORADIOBUTTON " Data", IDC_RADIOBUTTON10, 614, 3, 34, 12
CTEXT "Legenda (MOT)", -1, 153, 335, 91, 43, SS_CENTER | WS_BORDER | WS_GROUP
LTEXT "CON = Consulta", -1, 155, 344, 86, 8
LTEXT "RET = Retorno", -1, 155, 352, 86, 7
LTEXT "FAL = Faltou", -1, 155, 360, 86, 8
LTEXT "CJL = consulta já lançada", -1, 155, 368, 86, 8
LTEXT "F3 - Remarcar consulta", -1, 6, 366, 142, 8
}
Definições
DEFICAO1 DIALOG 14, 15, 306, 132
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "DIALOG_1"
FONT 8, "MS Sans Serif"
{
CTEXT "Dia ", -1, 83, 30, 52, 9
CTEXT "Primeiro horário", -1, 141, 20, 36, 19
CTEXT "Último horário", -1, 180, 20, 36, 19
RTEXT "Segunda feira", -1, 83, 44, 52, 8
RTEXT "Terça feira", -1, 83, 61, 52, 8
RTEXT "Quarta feira", -1, 83, 78, 52, 8
RTEXT "Quinta feira", -1, 83, 96, 52, 8
RTEXT "Sexta feira", -1, 83, 112, 52, 8
CTEXT "Intervalo entre as consultas em minutos", -1, 2, 16, 78, 38, SS_CENTER | WS_BORDER | WS_GROUP
CTEXT "Primeiro horário", -1, 227, 16, 36, 19
CTEXT "Último horário", -1, 266, 16, 36, 19
CONTROL "101", IDC_EDIT31, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 30, 37, 22, 12
CONTROL "102", IDC_EDIT32, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 141, 42, 36, 12
CONTROL "103", IDC_EDIT33, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 180, 42, 36, 12
CONTROL "112", IDC_EDIT42, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 226, 42, 36, 12
CONTROL "113", IDC_EDIT43, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 265, 42, 36, 12
CONTROL "104", IDC_EDIT34, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 141, 59, 36, 12
CONTROL "105", IDC_EDIT35, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 180, 59, 36, 12
CONTROL "114", IDC_EDIT44, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 226, 59, 36, 12
CONTROL "115", IDC_EDIT45, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 265, 59, 36, 12
CONTROL "106", IDC_EDIT36, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 141, 76, 36, 12
CONTROL "107", IDC_EDIT37, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 180, 76, 36, 12
CONTROL "116", IDC_EDIT46, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 226, 76, 36, 12
CONTROL "117", IDC_EDIT47, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 265, 76, 36, 12
CONTROL "108", IDC_EDIT38, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 141, 94, 36, 12
CONTROL "109", IDC_EDIT39, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 180, 94, 36, 12
CONTROL "118", IDC_EDIT48, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 226, 94, 36, 12
CONTROL "119", IDC_EDIT49, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 265, 94, 36, 12
CONTROL "110", IDC_EDIT40, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 141, 110, 36, 12
CONTROL "111", IDC_EDIT41, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 180, 110, 36, 12
CONTROL "120", IDC_EDIT50, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 226, 110, 36, 12
CONTROL "121", IDC_EDIT51, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 265, 110, 36, 12
GROUPBOX " Tarde ", IDC_GROUPBOX1, 222, 4, 82, 123, BS_GROUPBOX
GROUPBOX " Manhã ", IDC_GROUPBOX2, 138, 4, 82, 123, BS_GROUPBOX
PUSHBUTTON "&Fechar janela", IDC_PUSHBUTTON16, 2, 109, 78, 18
}
Informar data inicial e final
MONTAG1 DIALOG 6, 15, 315, 66
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "DIALOG_1"
FONT 8, "MS Sans Serif"
{
RTEXT "Data inicial :", -1, 12, 10, 50, 8
RTEXT "Data final :", -1, 12, 27, 50, 8
LTEXT "REGISTOR DE 3", 3, 137, 6, 171, 29
CONTROL "101", IDC_EDIT52, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 63, 5, 70, 12
CONTROL "102", IDC_EDIT53, "EDIT", ES_CENTER | WS_BORDER | WS_TABSTOP, 63, 22, 70, 12
PUSHBUTTON "&Iniciar", IDC_PUSHBUTTON17, 149, 44, 72, 18
PUSHBUTTON "&Cancelar", IDC_PUSHBUTTON25, 236, 44, 72, 18
}
16 Mar 2015 16:02
#include "FiveWin.ch"
FUNCTION Main()
SET CENTURY ON // 4 DIGITOS PARA O ANO
SET DATE BRITISH // FORMATO DD/MM/AAAA
SET EPOCH TO YEAR( DATE() ) - 50
Gerar_Agenda()
RETURN NIL
FUNCTION Gerar_Agenda()
LOCAL cDataIni := CTOD( "01/03/2015" )
LOCAL cDataFin := CTOD( "10/03/2015" )
LOCAL cIntervalo, aAgenda, cTime, cHoraInicial, cHoraFinal
cIntervalo := '30' // intervalo entre os horarios 30 min
cHoraInicial := "8:00"
cTime := cHoraInicial
aAgenda := { }
While cDataIni < cDataFin //.t.
IF cDataIni > cDataFin
EXIT
ENDIF
cTime := SecToTime( Secs( cTime ) + (Val( cIntervalo )*60) ) // Aqui soma o ultimo horario com o intervalo
? cTime, cDataIni
// AQUI SERA O REPLACE... NO BD.
// AADD(aAgenda, { cTime, .... }
/* // AQUI A CONDICAO E POR DATA INICIAL E FINAL.
If cTime = cHoraFinal
exit
EndIf
*/
++cDataIni
EndDo
RETURN NIL