Acceso a multiples tablas (AJAX básico VI)


modulo de ventas completo

 

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

Captura de pantalla 2013-10-28 a la(s) 22.29.27

 

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:

 

Captura de pantalla 2013-10-28 a la(s) 22.29.45

 

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.

 

 

 

 

 

 

 

Anuncios

Acerca de sistemasumma

Blog dedicado a la tecnología y a todos los estudiantes de sistemas, informatica, computación y afines
Esta entrada fue publicada en Lenguajes de aplicaciones y etiquetada , , . Guarda el enlace permanente.

19 respuestas a Acceso a multiples tablas (AJAX básico VI)

  1. Oscar dijo:

    Después de hacer los cambios ya no ingresa ningún artículo 😦

    Me gusta

  2. Rouse dijo:

    y si quiero obtener datos de esta variable total.innerHTML = (parseFloat(subtotal.innerHTML)+ parseFloat(iva.innerHTML)).toFixed(2);
    } como lo obtengo por post

    Me gusta

  3. wajemiguel dijo:

    mm eh probado el mismo codigo y nada !!! quien puede ayudarme !!!

    Me gusta

  4. wajemiguel dijo:

    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 gusta

  5. wajemiguel dijo:

    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 gusta

  6. wajemiguel dijo:

    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 gusta

  7. Y si quiero modificar una venta ya hecha?

    Me gusta

    • sistemasumma dijo:

      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 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 gusta

        • sistemasumma dijo:

          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 gusta

  8. Creo, que la ultima captura de pantalla quedo incompleta.

    Me gusta

  9. Super Agradecido por el Post, cualquier cosa que pueda hacer por usted con gusto 🙂

    Me gusta

¿Qué estas pensando?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s