Acceso a multiples tablas (AJAX básico V )


Una vez que tenemos todo el código que hara las consultas a las tablas de la base de datos, falta el mecanismo que almacenara toda esta información, así que lo primero sera agregar un botón de cobrar.

Ademas de agregar el botón de cobrar, se agrego una nueva función AJAX que se encargara del envio de los datos al php que almacenara la información, en esta función no vamos a explicar todo ya que es un AJAX como las demás, pero explicaremos como tomamos los datos de la tabla para enviarlos.

Lo primero sera saber que hay 3 datos principales a enviar folio, fecha y clave del cliente, así que lo primero es construir una cadena de texto con estos datos, dentro del bloque marcado con azul hacemos esto, la variable de cadena se llama envió, luego en el bloque verde accedemos a la tabla, usando un ciclo for desde 1 hasta la longitud en renglones que tenga la tabla accedemos a las celdas que contienen el código del producto, la cantidad y el precio, esta información la agregamos a la cadena, creando nombres de variable en «&w»+linea, esto crea la variable o mas bien el parámetro w1 para el primer producto y w2 para el segundo producto, lo mismo hacemos con los demás datos, las razones para usar nombre de variables tan cortas son:

  1. Que estas no tengan una relación nemotecnica con el dato que almacenan, cosa que no hice con folio, fecha y clave de cliente (se me olvido)
  2. La limitante que imponen los navegadores para la longitud de las URL, la cual es en promedio de unos 2000 caracteres, así que necesito acortar lo mas que pueda la longitud de los parametros.

En dado caso de que la longitud de los parámetros que estimemos para las ventas de la empresa sea mas de esta longitud convendrá enviarlos en grupos, de lo contrario la lista de artículos se truncaria y habria perdida de datos.

Una vez creada la cadena se envía como en los demás AJAX, así que ahora toca el turno de analizar el PHP que recibe los datos para guardarlos.

Como podemos ver hemos recurrido a una técnica que ya habíamos usado antes, al no saber con exactitud la cantidad de variables a recibir no podemos designar variables especificas, así que usamos las instrucciones list y each para leer los datos directamente del arreglo HTTP_POST_VARS.

Como sabemos que las primeras tres variables corresponden al folio, fecha y clave de cliente podemos usar un contador para asignar cada valor a una variable y usar una consulta insert que guarde dicha información en la tabla de facturas.

Después de la factura 4 contaremos repetidamente 4,5 y 6 para tomar los valores de código, cantidad y precio, para almacenarlas junto con el folio en la tabla de detalle con lo que sabremos que productos vendimos en cada factura, después de eso usaremos una consulta update que restara al campo existencia del producto correspondiente las unidades vendidas.

Con esto hemos terminado este modulo de ventas y el ejemplo de acceso a múltiples tablas, con lo visto hasta el momento podrán completar este modulo con un reporte  o nota de venta impresa en pdf a traves de la libreria fpdf.

Apreciaciones adicionales:

  • Un modulo punto de venta no verifica la existencia ya que solo pasan por el escaner de códigos de barras los productos que están físicamente en la tienda.
  • Otra técnica para asegurar la integridad de las existencias seria ir descontando las unidades directamente de la tabla cada vez que se agregue un producto a la lista y en caso de cancelación reintegrarlos.

Para terminar les dejo el código fuente para que lo descarguen

http://db.tt/VrwdBmYX

 

 

 

9 Comentarios

  1. ing. tengo un nuevo problemita, quiero que el programa ya no inserte la clave del cliente si no que inserte solo el nombre, hize un input de tipo text, al hacer la factura esta el campo para que el usuario ingrese el nombre pero al mirar la factura no ingresa el nombre, y la fecha la ingresa en este formato 0000-00-000 gracias espero pronta respuesta

    Me gusta

        1. Gracias por el comentario y procurare colocar instrucciones para los de otras plataformas ya que aun usando el mismo servidor algunos directorios cambian, e indudablemente la mejor manera de aprender a programar es haciéndolo, he visto a muchos que usan templates para hacer mas rápido el trabajo pero que al momento de tener que hacer modificaciones no saben como ubicarse dentro del código del template.

          Me gusta

Replica a lys Cancelar la respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.