Ingresar

Volver al inicio

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 en ProductStockLot, acumulados hasta vencer; el POS suma lotes vigentes.

Ver también Flujo de Operación (7 pasos).

Producto no expirable

  1. PlanificaciónRecipeDay.planned_amount por sucursal y fecha.
  2. Producción — cocina registra salida_cocina (kitchen, branch_id nil).
  3. Distribución — se calcula por_entregar por sucursal (RecipeDay#recalculate_salida_cocina).
  4. Logística — conductor registra entregado.
  5. Recepción — sucursal registra recibido en Control de Stock.
  6. POSProduct#stock_available = recibido − ventas_tienda − cortesía − merma (mismo día).
  7. VentaSale#deduct_stock_from_branch incrementa ventas_tienda.

Producto expirable

En ficha de producto: expirable + expirable_days (días de vigencia desde la producción).

  1. Salida de cocina — al guardar salida_cocina, se recalcula por_entregar.
  2. Lote asignadoProductStockLotService.sync_from_production! crea/actualiza lotes con quantity_initial = por_entregar y expires_on = fecha producción + expirable_days.
  3. Recibido activa venta — al confirmar recibido, sync_from_recibido! setea quantity_sellable y quantity_remaining.
  4. POS — stock = suma de quantity_remaining en lotes no vencidos con stock vendible.
  5. Ventas / merma / cortesía — descuentan lotes en orden FIFO (expires_on, luego production_date).
  6. Vencimiento — tarea product_stock_lots:expire_due da de baja lotes vencidos y registra movimiento expiry.

Tabla de campos

RecipeDay (sucursal)ProductStockLot
planned_amount — plan semanal
por_entregar — asignado desde cocinaquantity_initial — mismo valor al sincronizar
entregado — entrega camión— (informativo; recibido activa lote)
recibido — inventario inicial díaquantity_sellable — activado al recibir
ventas_tienda — ventas POSquantity_remaining — disponible en lote
merma / cortesiamovimientos merma / cortesia
expires_on — fecha límite de venta

Pantallas del sistema

Producción diariaProducción Diario
Instrucciones camiónInstrucciones Camión
Control de stockControl de Stock
Cierre sucursalCierre Sucursal
POSPunto de Venta
AnálisisAná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 ajustan recibido.

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.