Tu Carrito

El carrito está vacío.

Total: $0.00
Acción realizada
Volver al Blog
Publicidad

Dominando el Inventario: Lógica de Recetas y Producción en PHP/MySQL

Dominando el Inventario: Lógica de Recetas y Producción en PHP/MySQL

El reto de la producción: Más allá de una simple venta

En el desarrollo de sistemas para restaurantes en Barquisimeto, nos enfrentamos a un problema común: ¿Cómo descontar del inventario una Arepa de Queso si lo que realmente compramos es bultos de harina, bloques de queso y aceite? Aquí entra la tabla productosxingredientes.

Para resolver esto, no podemos simplemente restar "una unidad" al vender. Necesitamos una receta digital que le diga al sistema exactamente qué cantidad de materia prima consume cada plato final. Esta es la base de la automatización que ofrecemos en Solution Stark.

💡 Tip Stark: La integridad de la base de datos es vital. En el estado Lara, los apagones pueden corromper una transacción a mitad de proceso. Por eso, siempre usamos MySQL Transactions para asegurar que el stock solo se descuente si la venta se registra con éxito.

¿Cómo funciona la lógica? (El paso a paso)

  1. Definición de Receta: Vinculamos el ID de la "Arepa" con el ID de la "Harina P.A.N" en la tabla productosxingredientes, definiendo una proporción (ej. 0.25kg).
  2. Ejecución de Acción: Al presionar "Producir" o completar una venta, un script de PHP (como ejecutar_produccion_actions.php) busca todos los insumos asociados a ese plato.
  3. Actualización Automática: El sistema recorre cada ingrediente y resta la cantidad exacta del stock global, notificando al usuario en tiempo real.

Simulador de Código en Vivo

Selecciona una pestaña para ver el código fuente y observa en la derecha cómo el mensaje de éxito aparece directamente en el HTML sin necesidad de molestos alerts.

<div class="inventario-card">
  <h4>Harina P.A.N</h4>
  <p class="stock" id="stock-harina">25.50 kg</p>
  <button class="btn-producir" onclick="descontarStock('harina', 0.25)">
    Producir Arepa (-0.25kg)
  </button>
  <!-- Contenedor para el mensaje visual -->
  <div id="msg-harina" class="mensaje-exito"></div>
</div>
.inventario-card {
  background: #2a2a35;
  border: 1px solid #00d2ff;
  border-radius: 10px;
  padding: 20px;
  text-align: center;
}
.stock { 
  font-weight: bold; 
  color: #00ff88; 
  font-size: 1.5rem; 
}
.btn-producir {
  background: #00d2ff;
  color: black;
  width: 100%;
}
.mensaje-exito {
  color: #00ff88;
  font-size: 0.85rem;
  margin-top: 10px;
  font-weight: bold;
  min-height: 20px;
}
function descontarStock(item, cant) {
  // Actualizamos el número en pantalla
  const stockEl = document.getElementById('stock-' + item);
  let actual = parseFloat(stockEl.innerText);
  stockEl.innerText = (actual - cant).toFixed(2) + ' kg';
  
  // Mostramos el mensaje en el HTML directamente
  const msgEl = document.getElementById('msg-' + item);
  msgEl.innerHTML = '¡Stock actualizado correctamente!';
  
  // Lo borramos automáticamente en 2.5 segundos
  setTimeout(() => {
    msgEl.innerHTML = '';
  }, 2500);
}
-- Ejemplo de consulta que ejecuta el sistema
BEGIN; 

UPDATE stock_materias 
SET cantidad = cantidad - 0.25 
WHERE nombre = 'Harina P.A.N';

INSERT INTO log_produccion (plato, cantidad, fecha) 
VALUES ('Arepa', 1, NOW());

COMMIT; 
Vista del Usuario Final
Harina P.A.N
Materia Prima

25.50 kg

Interactúa con el botón para probar la lógica.

Conclusión

Llevar un inventario automatizado por recetas no es un lujo en la Barquisimeto actual, es la única forma de conocer la rentabilidad real de tu negocio de comida y evitar mermas por falta de supervisión.

¿Quieres profesionalizar tu negocio con un sistema POS a medida? Contáctanos en Solution Stark y convertimos tu flujo de trabajo manual en un proceso digital eficiente, robusto y seguro.

¿Te gustó este tutorial? Compártelo o contáctanos para asesoría de software en Barquisimeto.

Publicidad