Calcular Días Habiles

74 views
Skip to first unread message

Daniel Flores

unread,
Aug 25, 2016, 6:42:50 PM8/25/16
to Comunidad de Visual Foxpro en Español
Hola a todos: estoy desarrollando un sistema de expedientes para un tribunal de faltas. Como hago para calcular 5 días HABILES desde una fecha determinada. Cada Falta tiene un vencimiento, por ejemplo, desde que se carga la falta el sistema debe avisar a los 5 días habiles si el infractor no se presento.
Como se puede hacer esto?

Mil Gracias a todos 

micky khan

unread,
Aug 25, 2016, 8:50:03 PM8/25/16
to publice...@googlegroups.com
tienes que identificar cada dia que pases si es lunes marte miercoles jueves..etc... y segun eso validar si habil o no..
--
  <_>
 (o o)
 (  °  )
<>-<>
Micky Khan

Mario López

unread,
Aug 26, 2016, 8:20:05 AM8/26/16
to Comunidad de Visual Foxpro en Español

@Daniel: a buscar un poco en Google antes :) En el foro migrado de PortalFox hay una posible solución

HTH
Mario


Jairo Cedeño - GMail

unread,
Aug 26, 2016, 8:41:56 AM8/26/16
to publice...@googlegroups.com

Estimados, deben considerar cuales son los días habile, por decir si consideran de lunes a viernes o a sábado, nada mas les toca es hacer una funcion y contar cuantos días va pasando segun el día de la semana, obtengan el día de la semana con dow(fecha) condiserando 1=domingo ... 7=sabado (es lo correcto), entonces preguntar y contar si los días 1 + 1 estan contenidos en días del 2=Lunes hasta el 6=Viernes, y así contando cuando días habiles, el resto ya es ingenio y depende de la necesidad específica.

mapner

unread,
Aug 26, 2016, 9:09:42 AM8/26/16
to Comunidad de Visual Foxpro en Español
SET DATE DMY 

CREATE CURSOR Feriados (fecha d, motivo c(50))
INSERT INTO Feriados VALUES (DATE(2017,1,1),'AÑO NUEVO')

MESSAGEBOX(CalcDiasHab(DATE(),1))

**********
* CalcDiasHab(dFecha, nDiasHab )
* Calcula Días Hábiles
* <Mauricio Pistiner>
* Parámetros:
* dFecha: Fecha Inicio
* nDiasHab: Días hábiles a contabilizar 
* Retorna: Fecha Final
* utiliza cursor feriados -- CREATE CURSOR Feriados (fecha d, motivo c(50))
**********
FUNCTION CalcDiasHab
LPARAMETERS dFecha, nDiasHab 
LOCAL nDias, dFecha

IF !(USED('feriados') AND TYPE('feriados.fecha') = 'D')
MESSAGEBOX('El cursor Feriados no está disponible',64,'Atención - Error')
RETURN null 
ENDIF 

nDias = 0
DO WHILE nDias <= nDiasHab
dFecha = dFecha + nDias
* compruebo fin de semana (sábado y domingo)
IF INLIST(DOW(dFecha),7,1)
LOOP
ENDIF
* compruebo feriados
SELECT Feriados
LOCATE FOR fecha = dFecha
IF FOUND()
LOOP
ENDIF
nDias = nDias + 1 
ENDDO

RETURN  dFecha

ENDFUNC 

* Saludos

El jueves, 25 de agosto de 2016, 19:42:50 (UTC-3), Daniel Flores escribió:

Zarlu

unread,
Aug 26, 2016, 10:26:39 AM8/26/16
to Comunidad de Visual Foxpro en Español
Buenos días Daniel!
Buenos días a todos!
 
Voy a considerar que la aplicación es para usarse en México, sobre eso opinaré
 
Tendrías que tomar en cuenta, aparte de sábados y domingos, los días inhabiles de ley, más los días de vacaciones oficiales publicados para la dependencia (tribunal) que mencionas. Esta última información cambia cada año así que deberas preveer la actualización oportuna de la misma.
 
Considera también que en México algunos días feriados son el primer (segundo, tercer...) lunes de cada "x" mes, entonces deberás evaluar cada lunes incluido.
 
Toda esta información deberás tenerla definida ya sea en una tabla, para que puedas permitir la actualización por el usuario, o dentro de tu programa, en este caso tu deberás actualizar la aplicación.
 
Lo mencionado anteriormente te lleva a que cada día incluido en el periodo con el que estes trabajando deberás evaluarlo particularmente.
 
Espero que estos comentarios te ayuden
 
zarlu
Chetumal, Quintana Roo, México
Reply all
Reply to author
Forward
0 new messages