Buenos días:
Es mi primer post aquí. Espero que me puedan ayudar. Estoy bastante cansada y por eso temo que no puedo encontrar la solución a mi problema. Se trata de lo siguiente. Tengo un formulario que requiere validación y procesamiento de datos en algunos campos. Si se ingresan los datos en orden no hay problema pues calcula todo perfectamente bien.
El problema viene cuando se cambia el primer dato dejando los demás como estan. Ahí simplemente no funciona. Calcula el valor llamado TARA pero de ahí no pasa, no actualiza los valores en Neto, Total y S/.
No obstante si luego vuelvo a poner el valor original en el campo JABAS, me calcula todo COMO si hubiera mantenido en memoria el anterior valor. Si por ejemplo en JABAS ingresaba 6 (valor original) y luego de ingresar todos los valores, decido cambiar 6 por 10, el único campo que se actualiza es TARAS, pero el resto no. Ahora, si como paso siguiente cambio el 10 por el 6, entonces si actualiza todo PERO con el valor de 10, no de 6.
Sin embargo si cambio los datos en los demás campos normal, recalcula. Este es el script:
function calcular(num)
{
if (num==1) //ROJAS
{
//inicializando variables
var valorJabasRojas;
var valorBrutoRojas;
var valorNumDevolucionesRojas;
var valorDevolucionesRojas;
var valorPrecioRojas;
var valorTaraRojas;
var valorTotalRojas;
var original1TR;
var resultado1TR;
var original1TNR;
var valorNetoRojas;
var original2TNR;
var valorTotalRojas;
var originalS1;
var resultadoS1;
//capturando valores que se ingresan
valorJabasRojas=document.formulario.jabasR.value;
valorBrutoRojas=document.formulario.brutoR.value;
valorNumDevolucionesRojas=document.formulario.nume roR.value;
valorDevolucionesRojas=document.formulario.devoluc ionesR.value;
valorPrecioRojas=document.formulario.precioR.value ;
//capturando valores que se calculan
valorTaraRojas=document.formulario.taraR.value;
valorTotalRojas=document.formulario.totalR.value;
//validando devoluciones
if (valorDevolucionesRojas > 0)
{
if (valorNumDevolucionesRojas=="")
{
alert("No se puede ingresar peso de Devoluciones sin haber ingresado las unidades primero.");
document.formulario.devolucionesR.value=0;
formulario.numeroR.focus();
return;
}
}
//calculando TARA (# de jabas por valor de jabas)
original1TR=parseFloat(valorJabasRojas*<%= varValorTara %>);
resultado1TR=Math.round(original1TR*100)/100;
document.formulario.taraR.value=resultado1TR;
//calculando NETO (bruto menos tara)
original1TNR=parseFloat(valorBrutoRojas - valorTaraRojas);
valorNetoRojas=Math.round(original1TNR*100)/100;
if (valorNetoRojas < 0)
{
alert("El valor NETO no puede ser un número negativo.n\Por favor rectifique los valores ingresados.");
formulario.brutoR.focus();
return;
}
else
{document.formulario.netoR.value=valorNetoRojas;}
//calculando TOTAL (neto menos peso de devoluciones)
original2TNR=parseFloat(valorNetoRojas - valorDevolucionesRojas);
valorTotalRojas=Math.round(original2TNR*100)/100;
document.formulario.totalR.value=valorTotalRojas;
//calculando SOLES (total por precio)
originalS1=parseFloat(valorPrecioRojas*valorTotalR ojas);
resultadoS1=Math.round(originalS1*100)/100;
document.formulario.solesR.value=resultadoS1;
}
}
El formulario pueden verlo en esta dirección
http://www.mastersdesigners.com/pruebas/calculo/
Al costado de cada campo estan los valores de prueba para que tengan una guía así como los calculos que se realizan que como ven no son nada del otro mundo.
Por favor necesito ayuda urgente porque no debería de usar el servidor de la empresa para esta cosas aún (estan en rediseño) pero como les dije, estoy cansada, una semana agotadora y tengo hecho pure el cerebro, así que seguramente es una cosa de marras y no logro darme cuenta.
Muchas pero muchas gracias
Un saludo desde el Perú
MCS