este ejemplo veremos como restar dos fechas que ingresan por parámetro, para obtener la cantidad de días como resultado.
Pasemos a lo parámetros...
Rules:
parm(in:&DFechaFin, in:&DFechaInicio, out:&NTotalDias, out:&NAnios, out:&NMes, out:&NDias);
Variables:
&DFechaAuxiliar de tipo Date
&DFechaProximoMes de tipo Date
&DFechaFin de tipo Date
&DFechaInicio de tipo Date
&NTotalDias de tipo Numeric (10)
&NAnios de tipo Numeric (4) En
&NMes de tipo Numeric (2)
&NDias de tipo Numeric (2)
&DFechaProximoMes de tipo Date
&DFechaFin de tipo Date
&DFechaInicio de tipo Date
&NTotalDias de tipo Numeric (10)
&NAnios de tipo Numeric (4) En
&NMes de tipo Numeric (2)
&NDias de tipo Numeric (2)
Source:
&NTotalDias = &DFechaFin - &DFechaInicio
&NAnios = 0
&NMeses = 0
&NDias = 0
&NAnios = 0
&NMeses = 0
&NDias = 0
if &NTotalDias > 29
&DFechaAuxiliar = &DFechaInicio
&DFechaProximoMes = &DFechaInicio // Años
do while &DFechaProximoMes <= &DFechaFin
&DFechaProximoMes = AddYr(&DFechaAuxiliar, 1)
if &DFechaProximoMes <= &DFechaFin
&NAnios += 1
&DFechaAuxiliar = &DFechaProximoMes
endif
enddo
&DFechaProximoMes =&DFechaAuxiliar // Meses
do while &DFechaProximoMes <= &DFechaFin
&DFechaProximoMes = AddMth(&DFechaAuxiliar, 1)
if &DFechaProximoMes <= &DFechaFin
&NMeses += 1
&DFechaAuxiliar = &DFechaProximoMes
endif
enddo
&NDias = &DFechaFin- &DFechaAuxiliar
if &NDias < 0
&NDias = 0
endif
else
&NDias = &NTotalDias
endif
Como se puede apreciar es un sencillo procedimiento que se puede utilizar en donde se lo requiera dentro de nuestra KB. El nombre del mismo es a criterio de cada uno.
Como digo siempre se puede mejorar y cualquier crítica es bienvenida, siempre que sea constructiva.
No hay comentarios:
Publicar un comentario