En esta ocasión y a pedido de un lector retomamos un viejo proyecto para hacer una modificación, en este caso se trata de un punto de ventas que mostramos hace mucho, en el cual agregábamos en un tabla HTML los artículos que se proporcionaban, pero el punto que nos preguntaba @carlox_luna era ¿como podíamos agregar articulos a la lista cuando este estaba repetido en la tabla?, pues bien, veamos como sería.
Antes de comenzar recomendamos leer los anteriores post de la serie «Acceso a múltiples tablas»
como los datos son leídos de una tabla y se usa AJAX para incorporarlos a la pagina de venta, estos están disponibles para ser manipulados a través de Javascript, por lo que al darle clic al botón marcado con «+» estos se agregan a la tabla de HTML, esto lo hace en nuestro ejemplo, la función listado().
Por lo que es esta función la que vamos a modificar para que quede como a continuación se muestra
a partir de la linea 161 creamos una variable «encuentra» que es una bandera que usaremos para saber si después de la búsqueda hay que agregar el producto a la lista o si esta ya fue modificada.
En la 162 hacemos uso de un ciclo for que va de la linea 1(recuerde que en tablas de HTML todo se numera a partir de 0) porque en el 0 están los encabezados, con el recorremos toda la tabla, verificando en la linea 167 si el código del producto que esta en la variable a1 ya esta en la tabla, si lo esta lo sumamos a la cantidad de articulos, si gustan pueden dejarlo en que se le suma «1»m después de eso, en la variable st recalculamos el subtotal, pero se nos olvido actualizarlo en la tabla HTML, pero aun así lo que sigue es actualizar la bandera, para evitar que se agregue una nueva linea, por lo que lo que si en esa funciono es lo siguiente:
Si la variable de bandera no cambia, se continua el proceso de forma normal, agregando el producto y su subtotal al final de la tabla.
Bien, pues este es el cambio que hacia falta y por el que nos habían preguntado, recuerden que aceptamos sus dudas y sugerencias, así mismo esperamos nos disculpen si nos tardamos.
buenas noches alguien tiene el codigo fuente parece ser que esta roto el enlace, esta muy bueno el sistemas que vamos desarrolando
Me gustaMe gusta
Después de hacer los cambios ya no ingresa ningún artículo 😦
Me gustaMe gusta
y si quiero obtener datos de esta variable total.innerHTML = (parseFloat(subtotal.innerHTML)+ parseFloat(iva.innerHTML)).toFixed(2);
} como lo obtengo por post
Me gustaMe gusta
tendras que enviarla a traves del AJAX
Me gustaMe gusta
mm eh probado el mismo codigo y nada !!! quien puede ayudarme !!!
Me gustaMe gusta
si mil disculpas iia encontre el error !!! Estan muy buenos los tutos !!!
Me gustaMe gusta
mas bien una disculpa a ti por no haberte respondido es que el trabajo a estado algo apretado y no hemos podido estar al 100% en los comentarios
Me gustaMe gusta
function listado(){
var c=document.getElementById(«codigo»);
var can=document.getElementById(«cantidad»);
var des=document.getElementById(«descripcion»);
var tam=document.getElementById(«tamano»);
var exi=document.getElementById(«existencia»);
var pre=document.getElementById(«precio»);
var x=parseInt(can.value,10);
var y=parseInt(exi.value,10);
if (x > y){
alert («Existencia del producto insuficiente»);
}
else{
var encuentra = 0;
for(var linea=1;linea<t.rows.length;linea++){
var a1=t.rows[linea].cells[0].innerHTML;
var a2=t.rows[linea].cells[1].innerHTML;
var a3=t.rows[linea].cells[4].innerHTML;
if(a1==c.value){
var nuevoa2 =x+parseInt(a2);
t.rows[linea].cells[0].innerHTML=nuevoa2;
var st=nuevoa2*parseInt(pre.value);
encuentra=1;
}
}
if(encuentra == 0){
var st=x*parseFloat(pre.value);
var t=document.getElementById("listado");
var l=t.rows.length;
t.insertRow(l);
var c1=document.createElement("td");
c1.innerHTML=c.value;
var c2=document.createElement("td");
c2.innerHTML=can.value;
var c3=document.createElement("td");
c3.innerHTML=des.value;
var c4=document.createElement("td");
c4.innerHTML=tam.value;
var c5=document.createElement("td");
c5.innerHTML=pre.value;
var c6=document.createElement("td");
c6.innerHTML=st;
t.rows[l].appendChild(c1);
t.rows[l].appendChild(c2);
t.rows[l].appendChild(c3);
t.rows[l].appendChild(c4);
t.rows[l].appendChild(c5);
t.rows[l].appendChild(c6);
var p=document.getElementById("pago");
var dinero= parseFloat(p.value);
p.value=dinero+st;
}
}
}
Ing ese es el codigo que en este caso ud coloco en las imagenes, he seguido tal y kmo ud lo ha hecho pero no entiendo por q no me agrega con esta nueva modificacion q ud ha hecho el de no ingresar productos repetidos, si no mas bien ir sumando su cantidad .. espero su respuesta de antemano se lo agradesco
Me gustaMe gusta
por favor alguien puede ayudarme con el ultimo post el de ingresar producto no repetidos he revisado y probado , peero en realidad no me agrega nada ?? quien puede orientarme
Me gustaMe gusta
si no te agrega nada puede ser que tengas mas el ID de la tabla
Me gustaMe gusta
Hola ing esta muy bueno su tutorial estoy muy agradecido , ya que ud si comparte sus conocimientos !! solo tengo una pregunta se podria añadir un boton eliminar item o en en este caso eliminar un producto agregado a la venta ? quedo muy agradecido espero su respuesta !!
Me gustaMe gusta
Y si quiero modificar una venta ya hecha?
Me gustaMe gusta
Usualmente no se maneja la posibilidad de modificar una venta, por cuestiones de seguridad y fiscales, lo que se maneja es que se cancela la venta y la vuelves a hacer con los datos correctos, al cancelarla, usualmente recurrimos a agregar un campo a la tabla de ventas en el que indicamos si la venta esta activa o cancelada de esa forma no desaparecen los folios y se mantiene la integridad y la seguridad.
Me gustaMe gusta
Pero en el caso de que se necesite modificar, que me recomiendas borrar los datos del detalle de la compra y despues insertar los nuevos correctamente, o de plano hacer un ciclo que recorra todos los articulos del detalle y actualizarlos.
Me gustaMe gusta
las dos son opciones viables, pero si lo vemos en función del numero de operaciones, la primera seria un deleite mas varios insert, y la segunda serian varios update, es decir, hay una operación menos en la ultima forma, pero al final será mas bien en cual se te haga mas fácil de programar.
Me gustaMe gusta
Creo, que la ultima captura de pantalla quedo incompleta.
Me gustaMe gusta
lo que ocurre es que como retomamos del post anterior, no quisimos complicar mas el ejemplo y cortamos solamente hasta donde llegamos con los cambios al código, el resto queda como esta en el post anterior
Me gustaMe gusta
Ok, a seguir el consejo del que sabe.
Me gustaMe gusta
Super Agradecido por el Post, cualquier cosa que pueda hacer por usted con gusto 🙂
Me gustaMe gusta
por nada, es un placer ayudarles y con que nos recomienden o nos den sugerencias para nuevos post estamos mas que servidos
Me gustaMe gusta