*** Calcular Atributo Antiguedad Nomina 1.2
** formato P10Y8M15D &&&& 10 años, 8 meses, 15 días,
*** Observaciones:
*** La fecha que se debe tomar en cuenta para calcular la antiguedad es: FechaInicioRelLaboral Y ...
*** NO es el atributo: FechaPago = Es la fecha en que efectivamente el empleador realizó el pago (erogación) de la nómina al trabajador
*** SI es el atributo: FechaFinalPago = Es la fecha final del período de pago, debe ser mayor o igual a la FechaInicialPago.
_DFecIniRelLab = CTOD("27/02/2013")
_DFecfinPer = CTOD("15/04/2017")
_Antiguedad = Calcula_Antiguedad( _DFecIniRelLab, _DFecfinPer )
?
?"Antiguedad: ", _Antiguedad, " Fec Ini Rel LAB= " + DTOC(_DFecIniRelLab)+ " Fec Fin Per = " + DTOC( _DFecfinPer )
RETURN
Procedure Calcula_Antiguedad
LPARAMETERS tdFecha1,tdFecha2
***************************
*tdFecha1 es la fecha inferior Fec Ini Rel Laboral
*tdFecha2 es la fecha superior o Date()
************************************
Store 0 to nDetanos,nMeses,nDias
Store "" to cTiempo, cAno,cmes,cdia
Store 0 to zDias1,zDias2, xmMes,xmAno
nDetanos =Year(tdFecha2)-Year(tdFecha1) - 1
nMeses =12-Month(tdFecha1) + Month(tdFecha2) - 1
IF DAY(tdFecha2)>=DAY(tdFecha1)
nMeses=nMeses + 1
ENDIF
if nMeses >= 12
nMeses =nMeses - 12
nDetanos =nDetanos + 1
endif
if Day(tdFecha1)=Day(tdFecha2)
nDias = 1
else
if Day(tdFecha2) > Day(tdFecha1)
nDias =Day(tdFecha2)-Day(tdFecha1)
nDias = nDias + 1
else
zDias1 =Day(tdFecha1)
zDias2 =Day(tdFecha2)
** Apartir de la tdFecha1 calcula la ultima fecha del mes 28, 29, 30,31 para esto utilizo la
** Funcion GOMONTH()
** Ejemplos:
** tdFecha1= 16/02/2016 FecFinMesx= 29/02/2016
FecFinMesx = ( GOMONTH( (tdFecha1 - dAY(tdFecha1))+1 ,1 )) -1
zFin1= DAY( FecFinMesx )
ndias = ((zFin1 - zDias1)+ 1) + zDias2
endif
ENDIF
*** Atributo Antiguedad
_AntiguedadZ = "P"
IF nDetanos>0
_AntiguedadZ = _AntiguedadZ + Allt(sTR(nDetanos)) + "Y"
ENDIF
IF nmeses>0
_AntiguedadZ = _AntiguedadZ + Allt(sTR(nmeses)) + "M"
endif
IF ndias>0
_AntiguedadZ = _AntiguedadZ + Allt(sTR(ndias)) + "D"
ENDIF
*Antigüedad= P10Y8M15D &&&& 10 años, 8 meses, 15 días,
RETURN _AntiguedadZ