Flujo de Stock en Bakerfy
Ciclo de vida del inventario vendible: desde la producción en cocina hasta la venta en POS, con lógica de la aplicación.
Resumen
Bakerfy maneja dos modelos de stock para productos terminados:
- No expirable: stock del mismo día en
RecipeDay(recibido − ventas − cortesía − merma). - Expirable (
expirable): lotes por día de producción enProductStockLot, acumulados hasta vencer; el POS suma lotes vigentes.
Ver también Flujo de Operación (7 pasos).
Producto no expirable
- Planificación —
RecipeDay.planned_amountpor sucursal y fecha. - Producción — cocina registra
salida_cocina(kitchen,branch_idnil). - Distribución — se calcula
por_entregarpor sucursal (RecipeDay#recalculate_salida_cocina). - Logística — conductor registra
entregado. - Recepción — sucursal registra
recibidoen Control de Stock. - POS —
Product#stock_available= recibido − ventas_tienda − cortesía − merma (mismo día). - Venta —
Sale#deduct_stock_from_branchincrementaventas_tienda.
Producto expirable
En ficha de producto: expirable + expirable_days (días de vigencia desde la producción).
- Salida de cocina — al guardar
salida_cocina, se recalculapor_entregar. - Lote asignado —
ProductStockLotService.sync_from_production!crea/actualiza lotes conquantity_initial= por_entregar yexpires_on= fecha producción + expirable_days. - Recibido activa venta — al confirmar
recibido,sync_from_recibido!seteaquantity_sellableyquantity_remaining. - POS — stock = suma de
quantity_remainingen lotes no vencidos con stock vendible. - Ventas / merma / cortesía — descuentan lotes en orden FIFO (
expires_on, luegoproduction_date). - Vencimiento — tarea
product_stock_lots:expire_dueda de baja lotes vencidos y registra movimientoexpiry.
Tabla de campos
| RecipeDay (sucursal) | ProductStockLot |
|---|---|
planned_amount — plan semanal | — |
por_entregar — asignado desde cocina | quantity_initial — mismo valor al sincronizar |
entregado — entrega camión | — (informativo; recibido activa lote) |
recibido — inventario inicial día | quantity_sellable — activado al recibir |
ventas_tienda — ventas POS | quantity_remaining — disponible en lote |
merma / cortesia | movimientos merma / cortesia |
| — | expires_on — fecha límite de venta |
Pantallas del sistema
| Producción diaria | Producción Diario |
| Instrucciones camión | Instrucciones Camión |
| Control de stock | Control de Stock |
| Cierre sucursal | Cierre Sucursal |
| POS | Punto de Venta |
| Análisis | Análisis Stock |
Integraciones WooCommerce
- Push: envía
stock_available(lotes vigentes para expirables). - Inbound: expirables ajustan lotes vía
ProductStockLotService.sync_woocommerce_stock!; no expirables ajustanrecibido.
Preguntas frecuentes
¿Por qué el POS muestra 0 si ya hubo salida de cocina?
En productos expirables falta confirmar recibido en Control de Stock para activar el lote.
¿Qué pasa al vencimiento?
El lote deja de contar en POS; la tarea diaria registra baja por vencimiento y puede incrementar merma del día.
¿Puedo vender más de lo recibido hoy?
Sí, en expirables el stock acumula lotes de varios días de producción mientras no hayan vencido.