Tengo la siguiente duda o consulta, tengo una ventana HTML que llama un JS, lo que pasa es que cuando ingreso el "costo" y el "Precio de Venta"y escojo el Tipo de Impuesto de Venta (son 2 opciones: Gravado 13% y Exento 0%), me realiza unas formulas donde me llena automaticamente los campos: Impuesto de Venta, Utilidad Colones y Utilidad Porcentual, hasta aqui todo marcha perfecto.
El problema es que si yo cambio por ejemplo el "costo" y le doy click a cualquier parte de la ventana HTML, automaticamente me cambia los valores de I.V y utilidades, hace algun tipo de formula que a veces pone el doble del valor de los campos, o mucho mas alto el valor. Y solamente funciona si yo vuelvo al tipo de impuesto y hago el cambio de pasar de Gravado 13% a exento 0% y volver a Gravado 13%.
Que me aconsejan, para que, si yo cambio el valor del costo o precio venta, me obligue a cambiar el tipo de impuesto de venta (Gravado o Exento).
Les paso el codigo, para ver si me doy a entender mas.
1.
Código HTML:
Ver original
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="text" name="articulo" placeholder="Articulo" /> <input type="text" name="pVenta" placeholder="Precio de Venta"/> <input type="text" name="costo" placeholder="Costo"/> <select id="imp"> </select> <input type="text" name="utilidad" placeholder="Utilidad Colones"/> <input type="text" name="utilidadP" placeholder="Utilidad Porcentual"/> </body> </html>
2.
Código Javascript:
Ver original
$(document).on("ready", function(){ /*Verificamos el valor del impuesto seleccionado y llamamos a la funcion que realiza el calculo*/ $("select[id=imp]").on("change", function(){ $("input[name=impVenta]").val($(this).val()); calcula(); }); /*Calcula la utilidad basado en el impuesto seleccionado*/ function calcula(){ if($("input[name=impVenta]").val()=== "Seleccione Impuesto"){ $("input[name=utilidad]").val(0); $("input[name=utilidadP]").val(0); }else{ var pv = parseInt($("input[name=pVenta]").val()); var costo = parseInt($("input[name=costo]").val()); var iv = parseInt($("input[name=costo]").val() * $("input[name=impVenta]").val()/100); var utilidad = parseInt($("input[name=pVenta]").val() - ($("input[name=costo]").val() * $("input[name=impVenta]").val()/100) - $("input[name=costo]").val()); $("input[name=impVenta]").val(iv); $("input[name=utilidad]").val(utilidad); $("input[name=utilidadP]").val((utilidad * 100)/pv); } } /*Verifica en tiempo real si hay algun cambio en el campo costo para recalcular la utilidad de este nuevo monto*/ $("input[name=costo]").on("change", function(){ calcula(); }); });
De antemano muchas gracias compañeros.