Aca pongo todo el html para que lo prueben, pongo solo los 20 primeros pero llega hasta 99 (me refiero al los vencimientos) la fecha final es 26
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript"> var fechaVenc = vencimientos = new Array();
vencimientos["00"] = 02;
vencimientos["01"] = 02;
vencimientos["02"] = 02;
vencimientos["03"] = 02;
vencimientos["04"] = 03;
vencimientos["05"] = 03;
vencimientos["06"] = 03;
vencimientos["07"] = 03;
vencimientos["08"] = 04;
vencimientos["09"] = 04;
vencimientos["10"] = 04;
vencimientos["11"] = 04;
vencimientos["12"] = 05;
vencimientos["13"] = 05;
vencimientos["14"] = 05;
vencimientos["15"] = 05;
vencimientos["16"] = 06;
vencimientos["17"] = 06;
vencimientos["18"] = 06;
vencimientos["19"] = 06;
vencimientos["20"] = 07;
function calcular( numero, pago ){
var cifras = numero.substr( numero.length - 2 );
var fecha = vencimiento(cifras);
var hoy = new Date();
var dia = hoy.getDate();
var esteMes = hoy.getMonth();
var sgteMes = 0;
var esteAno = hoy.getFullYear();
var sgteAno = 0;
if(dia >= fecha){
if(esteMes == 11){
sgteMes = 0;
sgteAno = esteAno + 1;
}else{
sgteMes = esteMes + 1;
sgteAno = esteAno;
}
}else{
sgteMes = esteMes;
sgteAno = esteAno;
}
var fechaVenc = new Date();
fechaVenc.setFullYear(sgteAno);
fechaVenc.setMonth(sgteMes);
fechaVenc.setDate(fecha);
var diasFaltan = 1 + fechaVenc.valueOf() - hoy.valueOf();
diasFaltan = diasFaltan / (1000 * 60 * 60 * 24);
if (diasFaltan > 30){
diasFaltan = 30
}
var faltaPagar = pago / 30 * parseInt(diasFaltan);
document.getElementById('fracc').value = faltaPagar.toFixed(4);
}
function vencimiento(cifras){
return vencimientos[cifras];
}
<p><input type="text" value="" name="num" ></p> <p><input type="text" value="" name="pag" ></p> <p><input type="text" value="" name="bolivares" id="fracc" disabled></p> <p><input type="button" onClick="calcular(this.form.num.value, this.form.pag.value);" value="Calcular">
El problema que tengo es el siguiente, coloco lo que debe cancelar un cliente, los cuales solo deben cancelar segun su ultimo numero id cierta cantidad de dinero segun la fecha actual y segun su fecha de cobro que son los vencimientos, lo que ocurre es que cuando pasa del dia 29 al dia 31 no puedo usar esta herramienta ya que me colaca que todos deben pagar lo mismo.
por ejemplo, los que terminan en 00 deben cancelar completo todos los dias 2 de cada mes, pero si estamos en 29 de enero la herramienta lanza que deben cancelar lo mismo que todos (completo), cosa que no debería ser.
En cambio con otras fechas por ejemplo desde el 1 hasta el 28 me dice perfectamente todo.
No se que sucede.
Ojo tengo este condicionante que ya se que afecta,
Código Javascript
:
Ver originalif (diasFaltan > 30){
diasFaltan = 30
}
pero si no lo coloco me dan 31 dias o mas, que tampoco deberia ser
en si el error es el siguiente, al momento de asignar la fecha, si por ejemplo para los 00 siendo 29 de enero deberian faltar 5 dias, pero la funcion me da mas de 31 dias por eso me da 30 en todos
AYUDA!!!!!!!!!!!!!