Foros del Web » Programando para Internet » PHP »

Restar Salidas de almacen!!

Estas en el tema de Restar Salidas de almacen!! en el foro de PHP en Foros del Web. Hola amigos, estoy atorado en esta parte del sistemita y la verdad no le encuentro por donde, el lenguaje es php y mysql!! tengo una ...
  #1 (permalink)  
Antiguo 20/12/2012, 13:13
 
Fecha de Ingreso: diciembre-2012
Ubicación: Veracruz, Mexico
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Pregunta Restar Salidas de almacen!!

Hola amigos, estoy atorado en esta parte del sistemita y la verdad no le encuentro por donde, el lenguaje es php y mysql!!

tengo una tabla llamada productos con los siguientes campos:

id= id del producto
nombre_producto= nombre del producto
serie= no serie del producto
factura= factura del producto
existencias= existencias en stock del producto
fecha_entrada=fecha de entrada del producto

y la tabla salidas:

id_salida: id de salida
producto: nombre del producto
cantidad: cantidad a retirar
fecha_salida: fecha de salida
comentarios: comentarios

Agradeceria mucho la ayuda q me puedan dar, ya que la verdad no soy muy buen programador , lo que quiero es q se resten las existencias cada vez q valla a sacar un producto y que compare en caso de q la cantidad a sacar sea mayor que las existencias, no se si me falte algun campo en las tablas para poder llevar a cabo esto si no, pues se las agrego. muchas gracias y espero sus respuestas.

Encontre un tema parecido en el buscador del foro, pero ya esta demasiado antiguo y no lo quize revivir, tome codigo de ahi, pero no lo entiendo muy bien y no me funciono.

Salu2.
  #2 (permalink)  
Antiguo 20/12/2012, 14:51
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 5 meses
Puntos: 1532
Respuesta: Restar Salidas de almacen!!

¿y que tan dificil puede ser comparar cantidades?, al menos muestra parte del código que llevas hecho para verificar si tienes errores, recuerda usar el highlight
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 21/12/2012, 10:29
 
Fecha de Ingreso: diciembre-2012
Ubicación: Veracruz, Mexico
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: Restar Salidas de almacen!!

si amigo mira te comento q es mi primera aplicacion en php y mysql y la verdad q ando un poco perdido jeje, pero leyendo tutoriales y manuales e salido de algunas, pero con esta no e podido, mira aca tengo el codigo q tengo hasta ahora.

Código PHP:
Ver original
  1. if(isset($_POST["producto"])) {
  2.         $serie2 = $_POST["producto"];
  3.         $cantidad = $_POST["cantidad"];
  4.         // obtengo la cantidad de stock del producto
  5.         $query = mysql_query("SELECT existencias FROM producto WHERE serie2 = $serie2");
  6.         list($existencias) = mysql_fetch_row($query);
  7.         // verifico que sea menor o igual el pedido al stock
  8.         if($cantidad > $existencias) {
  9.             echo "La cantidad es superior a lo que hay en la tienda";
  10.         }else{ // actualizo la db con los datos nuevos!
  11.             mysql_query("UPDATE productos SET existencias = existencias - $cantidad WHERE serie2 = $serie2");
  12.         }
  13.     }

serie2 es un nuevo campo q agrege a la tabla salidas, en donde pongo el numero de serie del producto, q es igual a serie, de la tabla productos, ese codigo lo tome precisamente de un post de aca, pero no lo logro adaptar a los datos de mis tabla, me manda error, o no se si estoy haciendo algo mal!! agradeceria mucho de tu ayuda amigo!! gracias y saludos!!
  #4 (permalink)  
Antiguo 22/12/2012, 14:13
Avatar de javiertroya  
Fecha de Ingreso: mayo-2009
Ubicación: Valencia
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Restar Salidas de almacen!!

Hola que tal? Lo primero que te recomendaría sería cambiar la tabla salida de la siguiente forma:

Código MySQL:
Ver original
  1. CREATE TABLE  `salida` (
  2.  `id_producto` INT( 11 ) NOT NULL ,
  3.  `cantidad` DECIMAL( 7, 2 ) NOT NULL ,
  4.  `fecha` DATETIME NOT NULL ,
  5.  `comentarios` VARCHAR( 255 ) NOT NULL
  6. ) ENGINE = MYISAM ;

Esto con la finalidad de que si cambias el nombre del producto, no debas cambiarlo en todas las tablas en donde el nombre del producto sea la relacion, lo mismo con el campo serie.

Lo más recomendable en estos casos siempre es usar el campo ID.

Ahora en cuanto a tu consulta para restar y comparar, puedes hacer lo siguiente:

Código PHP:
Ver original
  1. $id_producto = $_POST["id_producto"];
  2. $cantidad_vendida = mysql_query("SELECT SUM(cantidad) FROM salida WHERE id_producto = " . $id_producto); // Esta línea te dará como resultado un número con la suma de todas las salidas del producto

Ese simple código sería para obtener la cantidad vendida hasta ahora del producto, lo debes colocar antes de que se guarde la venta/salida en la tabla salida.

Para la comparación simplemente obtienes la fila con el id del producto también y ejecutas una resta simple, algo como:

Código PHP:
Ver original
  1. // Usemos los datos anteriores
  2. $info_producto = mysql_fetch_row ( mysql_query ( "SELECT * FROM productos WHERE id = " . $_POST["id"] ) );
  3.  
  4. $cantidad_disponible = $info_producto["cantidad"] - $cantidad_vendida;
  5.  
  6. // Ahora con esta variable ya almacenada puedes hacer funciones que permitan o no la venta
  7.  
  8. if ( $cantidad_disponible == 0 ) // Si no hay disponibilidad
  9.  echo "No se puede vender este producto, debido a que no existe disponibilidad";
  10. elseif( $_POST["cantidad"] > $cantidad_disponible ) // Si la venta actual es mayor a la disponibilidad
  11.  echo "No se puede vender más cantidad de la disponible del producto";

Y así sucesivamente puedes ir generando funciones que hagan a tu aplicación más inteligente.

Espero te funcione todo, un saludo!

Etiquetas: mysql, restar, salidas, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:01.