Foros del Web » Programando para Internet » PHP »

Comparar datos antes de insertar

Estas en el tema de Comparar datos antes de insertar en el foro de PHP en Foros del Web. Hola compañeros, tengo una tabla que se crea dinamicamente en la cual se enumeran diferentes productos con su respectiva cantidad @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver ...
  #1 (permalink)  
Antiguo 20/01/2015, 17:30
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 10 años, 8 meses
Puntos: 4
Comparar datos antes de insertar

Hola compañeros, tengo una tabla que se crea dinamicamente en la cual se enumeran diferentes productos con su respectiva cantidad

Código MySQL:
Ver original
  1. TABLA ENVIO
  2. IDP | CANT
  3.  1 | 90
  4.  2 | 100
  5.  3 |  81
  6. ESTAS SON LAS CANTIDADES QUE SE ESTAN SACANDO DE BODEGA

La cuestion es que tengo otra tabla de donde salen esos datos pero quisiera comparar que las cantidades no exedan las cantidades que se estan ingresando

Código MySQL:
Ver original
  1. TABLA PEDIDO
  2. IDP | CANT
  3.  1 | 100
  4.  2 | 150
  5.  3 |  80
  6. ESTAS SON LAS CANTIDADES QUE EL CLIENTE SOLICITO
Si se dan cuenta el Producto 3 esta enviando mas de lo que solicito, por lo que quisiera que lo detectara antes de insertar en la tabla

(se que es preferible que se inserten y despues compare pero quiero agotar primero este recurso)

lo que tengo hasta ahora es esto
Código PHP:
Ver original
  1. <?php
  2. $ida=$_POST['ida'];
  3. $idd=$_POST['idd'];
  4. $cant=$_POST['cant'];
  5. $pres=$_POST['pres'];
  6. foreach ($idd as $v=>$va){
  7. $q1=$cn->query("SELECT count(*) FROM sys_presupuesto_detalle WHERE (idpresupuesto_detalle='{$idd[$v]}' AND cantidad>='{$cant[$v]}')");
  8. $count=$q1->num_rows;
  9. }
  10.     /*while($r1=$q1->fetch_array()){
  11.         echo $r1['count(*)'].'<br>';
  12.     }*/
  13. while($r1=$q1->fetch_array()){
  14.         $cosa=$r1['count(*)'].'<br>';
  15.     }
  16. if($cosa==1) {
  17. echo '<h3>CORRECTOS</h3>';
  18. }
  19. elseif($cosa==0) {
  20. echo '<h3>NADA QUE VER</h3>';
  21. }
  22. ?>
El cual me devuelve un 1 aunque le cambie la cantidad ( si le cambio la cantidad a todos me devuelve el 0)

De antemano gracias
  #2 (permalink)  
Antiguo 21/01/2015, 05:56
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Comparar datos antes de insertar

Segun entiendo estas haciendo un presupuesto de una posible venta, la forma correcta sería al agregar cada item de tu presupuesto corroborar primero con el stock y luego aceptar el producto, claro que esto no te garantiza que el producto al momento de convertir el presupuesto a factura exista o cuente con existencia en el stock, para eso debes utilizar TRANSACCIONES.
Explicando un poco al intentar convertir tu presupuesto a factura debes asegurarte de que cada item de tu presupuesto no supere a la existencia en el stock,
1 Inicias transaccion START TRANSACTION
2 Traes el primer item de tu presupuesto y descuentas del stock, registras en la ficha de E/S producto y detalles de factura.
Si falla o no cubre el stock simplemente envias un ROLLBACK y finaliza todo el proceso.
Si fue exitoso sigue con el siguiente item de tu presupuesto haciendo lo del paso 2.
3 Si no hubo fallos en tu presupuesto confirmas lso cambios con COMMIT.

OBS: al hacer ROLLBACK toda la base de datos te queda intacta por mas de que hayas hecho insert update y delete, y con COMMIT confirmas todos estos cambios.
  #3 (permalink)  
Antiguo 21/01/2015, 17:24
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 10 años, 8 meses
Puntos: 4
Respuesta: Comparar datos antes de insertar

Cita:
Iniciado por orodrf Ver Mensaje
Segun entiendo estas haciendo un presupuesto de una posible venta, la forma correcta sería al agregar cada item de tu presupuesto corroborar primero con el stock y luego aceptar el producto, claro que esto no te garantiza que el producto al momento de convertir el presupuesto a factura exista o cuente con existencia en el stock, para eso debes utilizar TRANSACCIONES.
Explicando un poco al intentar convertir tu presupuesto a factura debes asegurarte de que cada item de tu presupuesto no supere a la existencia en el stock,
1 Inicias transaccion START TRANSACTION
2 Traes el primer item de tu presupuesto y descuentas del stock, registras en la ficha de E/S producto y detalles de factura.
Si falla o no cubre el stock simplemente envias un ROLLBACK y finaliza todo el proceso.
Si fue exitoso sigue con el siguiente item de tu presupuesto haciendo lo del paso 2.
3 Si no hubo fallos en tu presupuesto confirmas lso cambios con COMMIT.

OBS: al hacer ROLLBACK toda la base de datos te queda intacta por mas de que hayas hecho insert update y delete, y con COMMIT confirmas todos estos cambios.
Entiendo pero el problema es que la mayoria de los presupuestos que se facturan se deben fabricar aun, es decir no hay STOCK, la intención de que la facturacion o envio no sobrepase lo presupuestado es para que el que hace la venta no cobre de más al cliente.
  #4 (permalink)  
Antiguo 18/02/2015, 05:26
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 9 años, 3 meses
Puntos: 1
Respuesta: Comparar datos antes de insertar

Cita:
Iniciado por oscurogt Ver Mensaje
Entiendo pero el problema es que la mayoria de los presupuestos que se facturan se deben fabricar aun, es decir no hay STOCK, la intención de que la facturacion o envio no sobrepase lo presupuestado es para que el que hace la venta no cobre de más al cliente.
Perfecto entonces no debes controlar el stock al momento de crear el presupuesto, pero si al facturar, es decir debes grabar todos los datos de tu presupuesto para poder convertirlo a factura y al hacerlo descontar y controlar el stock, salvo que quieras manejar stock en negativo que no te recomiendo por lo complejo del tema.

Recuerda que al hacer el presupuesto no debes alterar la base de datos excepto grabar los datos del presupuesto, y en otro procesos o interfaz hacer la conversión a factura y ahi si hacer los registros, controles y descuentos de stock mediante transaccion.

Etiquetas: Ninguno
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 11:03.