New question

Question:

Date: 31-03-2017 02:54:54 (In Spanish)

Tengo problemas con la lógica de un inventario[Resolved]

Buenos días, se trata de un proyecto para la universidad, lo estoy programando con php y postgresql. Tengo una tabla almacén y entrada_insumo, en almacén tengo cod_insumo, fecha_vencimiento y cantidad y en entrada_insumo tengo codigo, fecha_vencimiento y cantidad.

Ahora bien, cuando inserto los valores en entrada_insumo simultáneamente se insertan en almacén, hasta ahí todo bien, pero necesito que cuando se repita el proceso de inserción Si la fecha de vencimiento que estoy ingresando es igual a la que ya existe y es del mismo producto que está en entrada_insumos la cantidad que está en almacén se sume con la que estoy metiendo nueva.

Se que es una respuesta que debería conseguir por mi mismo pero llevo un par de días y aún no encuentro la respuesta, no estoy muy docto en programación y eso me frustra. Estoy mortificado porque se trata de mi tesis de año escolar y necesito una buena nota este trimestre si quiero pasar al otro año. Espero que puedan ayudarme.
Tags: PHP - PostgreSQL - Question Votes: 0 - Answers: 6 - Views: 22 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 31-03-2017 16:41:18 Solo necesitas una tabla, almacen con entradas(+) y salidas(-) en la misma columna, columna movimientos por ej.   Votes: 0 - Link answer
     
  • Date: 02-04-2017 11:20:06 Como respuesta rápida, solo haría una sola tabla (entrada_almacen), inserto todo lo que me va llegando, aún con la misma fecha y para saber cuanto tengo por código y fecha, lo haría con SQL

    SELECT codigo, fecha, SUM(cantidad) FROM entrada_almacen GROUP BY codigo, fecha

    Esto es solo para las entradas y resolver el problema puntual pero me inclinaría por lo que dice Fernando Garcia o algo así o tener una de entradas y otra de salidas o de un montón de maneras.

    Otra consideración es que no podés rendirte si no podés por "un par de días" no resolver algo. Me ha llevado algunos "pares de días" más resolver ciertas cuestiones. La idea no es como lo hagas sino resolverlo a tu manera y ahí va intervenir tu lógica de pensamiento (codificarlo en un lenguaje es lo más fácil).

    Te aconsejo que aproveches ahora que estás estudiando a pensar y resolver las cosas de las formas más imaginativas que tengas porque tenés tiempo. Cuando te dediques a esto no vas a tener "un par de días" para resolver algunas cosas, a veces vas a tener solo "un par de horas" o "un par de minutos" y las cosas se hacen con resultado, después con tiempo, lo vas mejorando y se hacen con calidad y resultados

    Saludos
      Votes: 2 - Link answer
     
  • Date: 02-04-2017 12:59:46 El problema es que según la lógica de nuestro tutor deben existir esas dos tablas, en el comentario inicial resumí pero en realidad la tabla entrada_insumos tiene otros campos como precio, procedencia, fecha_entrada. Esa es la finalidad de su existencia, representa un historial de la entrada del producto.

    Ahora bien, en la tabla almacén se almacenan los datos que solo interesan para cuestión de almacenamiento y distribución (código_insumo, cantidad, fecha_vencimiento). Existe otra tabla que gestiona la salidas pero eso ya es otro problema. El asunto es lógico, mis inserciones se hacen geniales e incluso registro en ambas tablas en simultaneo porque es requisito.

    Acá les dejo el código que he trabajado por si pueden echarme una mano.

    $prueba="SELECT codigo from insumos where nombre_in='$_REQUEST[select]'";
    $prueba2=pg_query($prueba);
    $prueba3=pg_fetch_array($prueba2);
    $prueba4 = $prueba3[0];
    
    $busqueda=pg_fetch_array(pg_query("SELECT fecha_ven FROM almacen where fecha_ven='$REQUEST[fv]' and cod_insumo='$prueba4'"));
    
    
    if($busqueda['fecha_ven']==null)
    {
    
    $stop="INSERT INTO almacen (cod_insumo,cantidad,fecha_ven) VALUES ('$prueba4','$_REQUEST[cant]','$_REQUEST[fv]')";
    $stop1=pg_query($stop);
    
    $p1="SELECT max(id) from almacen";
    $p2=pg_query($p1);
    $p3=pg_fetch_array($p2);
    $p4=$p3[0];
    
    $histo="INSERT INTO entrada_in (cod_insumo,cantidad,procedencia,lote,precio,cod_almacen,fecha_v) VALUES ('$prueba4','$_REQUEST[cant]','$_REQUEST[procedencia]','$_REQUEST[lote]','$_REQUEST[precio]','$p4','$_REQUEST[fv]')";
    
    
    $histo1=pg_query($histo);
    
    }
    else
    {
    
    
    $almacen=pg_query("UPDATE almacen SET  cant=cant+'$_REQUEST[cant]' where fecha_ven='$_REQUEST[fv]' and cod_insumo='$prueba4'");
    
    $p1="SELECT max(id) from almacen";
    $p2=pg_query($p1);
    $p3=pg_fetch_array($p2);
    $p4=$p3[0];
    
    $histo="INSERT INTO entrada_in (cod_insumo,cantidad,procedencia,lote,precio,cod_almacen,fecha_v) VALUES ('$prueba4','$_REQUEST[cant]','$_REQUEST[procedencia]','$_REQUEST[lote]','$_REQUEST[precio]','$p4','$_REQUEST[fv]')";
    
    $histo1=pg_query($histo);
    
    }
    
    
      Votes: 1 - Link answer
     
  • Date: 04-04-2017 07:59:04 La mejor manera de hacer eso, es trabajar por lotes, como hacen los supermercados.   Votes: 0 - Link answer
     
  • Date: 04-04-2017 14:26:42 ¡Lo resolví! Siempre se trató de una cuestión de condiciones, pero le conseguí la lógica en la mañana. El método fue relajarme y no ahogarme en un vaso de agua; gracias a todos por su apoyo y colaboración, ya vendré por acá con otra duda porque a este sistema ahora es que le falta.   Votes: 1 - Link answer
     
  • Date: 04-04-2017 15:10:53 Gracias por compartir la solución: relajarte y no ahogarte en un vaso de agua. XD.   Votes: 3 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com