Se me ocurrió hacer esto:
Código:
vencimiento = function(plazo) {
/* Declaro las variables y convierto las de tipo fecha en tipo numérico */
var fechav:Date = new Date();
var fechastr:String = (fechav.getDate() + "/" + (fechav.getMonth()+1) + "/" + fechav.getFullYear());
var vencim:Number = Number(fechav.getDate());
var vencimd:Number = Number(fechav.getDate()) + Number(plazo);
var vencimm:Number = Number(fechav.getMonth()+1);
var vencima:Number = Number(fechav.getFullYear());
/* Verifico el número de días para el tipo de cálculo */
trace("vencim " + vencim);
if (plazo > 0){
if(vencim <= 30){ /* Enero/Marzo/Mayo/Julio/Agosto/Octubre/Diciembre*/
do{
vencimd = vencimd - 30;
vencimm = vencimm + 1;
if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
}while(vencimd > 30);
} else if (vencim = 31){ /* Abril/Julio/Septiembre/Noviembre */
do{
vencimd = vencimd - 31;
vencimm = vencimm + 1;
if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
}while(vencimd > 31);
}
}else{
fvencim = fechastr;
}
fvencim = (String(vencimd) + "/" + String(vencimm) + "/" + String(vencima));
trace("vencim " + vencimd + "/" + vencimm + "/" + vencima);
trace("vencim " + fvencim);
}
Al ejecutarlo con un plazo de 45 días y 0 días hace esto:
A 45 días...
Cita: vencim 1
vencim 16/10/2011
vencim 16/10/2011
A 0 días...
Cita: vencim 1
vencim 1/9/2011
vencim 1/9/2011
Lo cual es correcto, sin embargo se me ocurrió ponerle 1 día de crédito y paso lo siguiente:
Cita: vencim 1
vencim -28/10/2011
vencim -28/10/2011
Opte por sustituir esta parte...
Código:
do{
vencimd = vencimd - 30;
vencimm = vencimm + 1;
if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
}while(vencimd > 30);
Por eso...
Código:
do{
vencimd = vencimd - vencim;
vencimm = vencimm + 1;
if ((fechav.getMonth()+1) == 12) vencima = vencima + 1;
}while(vencimd > 30);
y me arroja la siguiente información:
Cita: vencim 1
vencim 30/25/2011
vencim 30/25/2011
A estas horas ya no pienso bien... alguien tiene alguna idea de donde estoy fallando?
Saludos!!