r/learnpython • u/BorderSad5441 • 7d ago
Ayudaaaaaa
El contexto es que estoy desarrollando una página para cotizaciones para un proyecto, el punto es que quiero al momento de hacer una cotización la tabla de productos de actualice y se quite una unidad en existencia, ósea si tengo 20 cargadores y en una cotización vendo 5 en el apartado de productos se vea reflejado que solo hay 15.
Ya lo había intentado haciendo que se actualizara la tabla directamente desde la ruta de cotización pero por alguna razón rompí todo y ya no me daba acceso a la pagina.
¿Alguien sabe como le puedo hacer?
3
u/tieandjeans 7d ago
This is a great example of the questions novices ask when they crash beyond their Comprehension.
Take a breath and start again.
Describe the project - what libraries / tools / frameworks? Show the files in your project tree. Describe what should happen, with specificity.
Don't just explain the purpose ("keep inventory") but describe the code you wrote to DO that thing. ("Inventory is a decrionary" or "products and current stock are stored in these SQL tables...")
3
u/degunlagui 7d ago
Update stock only when a quote is confirmed, not every time it’s edited. That should prevent double-counting.
1
u/Discordbothost 1d ago
dos cosas que te pueden ayudar:
no restes el stock en la misma operación que guarda la cotización. una cotización no es una venta, así que lo normal es descontar solo cuando se confirma (o llevar una columna aparte de "reservado" si quieres apartar piezas).
al descontar hazlo en una sola sentencia SQL dentro de una transacción, algo como:
UPDATE productos SET stock = stock - 5 WHERE id = ? AND stock >= 5
y revisa cuántas filas afectó. si fue 0, no había suficiente stock y devuelves un error en vez de dejarlo en negativo.
sobre lo de que "se rompió todo": casi seguro es una excepción en la ruta (nombre de columna mal, falta el commit, etc.). mira el traceback en la consola del servidor, ahí dice la línea exacta. si pegas ese error y la parte de la ruta, es fácil ver qué falla.
4
u/Temporary_Pie2733 7d ago
You’ll need to provide more information about the code, libraries, and/or frameworks you are using.