⏱️ 3 minutos de lecturaÚltima actualización: Enero 2025

Actualizar Costos de Ingredientes

Aprende a modificar precios de ingredientes y entiende el impacto automático en todos tus productos.

💡 Impacto automático: Cuando actualizas el costo de un ingrediente, el sistema recalcula automáticamente TODOS los productos que lo usan. Esto garantiza que tus reportes financieros siempre reflejen costos reales.

¿Cuándo Actualizar Costos?

📈 Aumento de precios

Tu proveedor subió el precio de un ingrediente y necesitas reflejarlo en tus costos.

📉 Reducción de costos

Conseguiste un mejor precio o proveedor más económico y quieres actualizar.

🔄 Cambio de proveedor

Nuevo proveedor con precios diferentes requiere actualización masiva.

✏️ Corrección de error

Detectaste que ingresaste un costo incorrecto y necesitas corregirlo.

Paso 1: Acceder a la Lista de Ingredientes

  1. Inicia sesión como Administrador
  2. Selecciona la sucursal en el selector del header
  3. Ve a Ingredientes en el menú lateral
  4. Verás la lista completa de ingredientes de esa sucursal

Paso 2: Editar el Ingrediente

  1. Busca el ingrediente que quieres actualizar (puedes usar el buscador)
  2. Haz clic en el botón "Editar" (ícono de lápiz ✏️)
  3. Se abrirá un modal con todos los campos del ingrediente

Paso 3: Modificar el Costo por Unidad

En el modal de edición:

Campos editables:

  • nameNombre del ingrediente (opcional cambiar)
  • unitUnidad de medida: g, ml o unidad (opcional cambiar)
  • costPerUnit← ESTE es el campo crítico que dispara el recálculo
  • stockOnHandStock actual (ajuste manual si necesitas)
  • lowStockThresholdUmbral mínimo para alertas (opcional cambiar)

⚠️ Importante: Modifica el costPerUnit con cuidado. Este cambio afectará el costo calculado de todos los productos que usan este ingrediente.

Ejemplo de Actualización

❌ Antes

Nombre:Mozzarella
Unidad:g
Costo/unidad:$3.00
Stock:2000 g
Umbral:400 g

✅ Después

Nombre:Mozzarella
Unidad:g
Costo/unidad:$3.50
Stock:2000 g
Umbral:400 g

⚡ Cambio detectado: $3.00 → $3.50 (+16.67%)

Paso 4: Guardar y Confirmar

  1. Revisa que el nuevo costo sea correcto
  2. Haz clic en "Guardar cambios"
  3. El sistema validará que el valor sea numérico y positivo
  4. Verás un mensaje de confirmación

Paso 5: Recálculo Automático (Hook)

Inmediatamente después de guardar, el sistema ejecuta:

Proceso automático en backend:

  1. Detección: Hook detecta que costPerUnit fue modificado
    if (this.isModified('costPerUnit')) { ... }
  2. Búsqueda: Encuentra todos los productos que tienen este ingrediente en su receta
    const products = await Product.find({ 'recipe.ingredientId': doc._id });
  3. Recálculo: Para cada producto, ejecuta calculateCostFromRecipe()
    newCost = SUM(ingredient.costPerUnit × recipe.qty)
  4. Actualización: Guarda el nuevo productCost en cada producto
  5. Log: Registra en consola:
    ✅ Actualizados 23 productos que usan Mozzarella

Paso 6: Verificar el Impacto

Para ver qué productos fueron afectados:

  1. Ve a Productos en el menú lateral
  2. Busca productos que usan el ingrediente que modificaste
  3. Verás que el campo "Costo" se actualizó automáticamente
  4. Compara con el costo anterior para entender el impacto

📊 Ejemplo de impacto en productos:

Pizza Margarita: Usa 150g de mozzarella
Antes: $711 → Después: $711 + (150 × $0.50) = $786 (+$75)
Pizza 4 Quesos: Usa 200g de mozzarella
Antes: $950 → Después: $950 + (200 × $0.50) = $1,050 (+$100)
Empanada de Mozzarella: Usa 80g de mozzarella
Antes: $320 → Después: $320 + (80 × $0.50) = $360 (+$40)

Paso 7: Ajustar Precios de Venta (Opcional)

Después de actualizar costos, considera ajustar precios de venta para mantener márgenes:

Estrategia de ajuste de precios:

  1. Calcula el nuevo margen:
    Margen anterior = (Precio - Costo anterior) / Precio × 100 Margen nuevo = (Precio - Costo nuevo) / Precio × 100
  2. Decide si ajustar:
    • Si el margen bajó significativamente (>5%), considera subir precio
    • Si el margen sigue siendo bueno, puedes mantener el precio
  3. Actualiza precios selectivamente:
    • Productos premium: mantén margen alto
    • Productos populares: reduce margen para competitividad

Ejemplo de ajuste de precio:

Producto:Pizza Margarita
Costo anterior:$711
Costo nuevo:$786
Precio de venta actual:$2,000
Margen anterior:($2,000 - $711) / $2,000 = 64.45%
Margen nuevo (sin ajustar precio):($2,000 - $786) / $2,000 = 60.70%
Opción 1: Mantener margen 64.45%Nuevo precio: $2,195
Opción 2: Aceptar margen 60.70%Mantener precio: $2,000

Auditoría del Cambio

Todos los cambios quedan registrados automáticamente:

  • Stock Movement: Si modificaste el stock, se crea un registro con tipo "adjustment"
  • Logs del servidor: El hook registra en consola cuántos productos fueron actualizados
  • Timestamp: El campo updatedAt del ingrediente refleja cuándo fue modificado
  • Usuario responsable: El sistema sabe quién hizo el cambio (según la sesión activa)

¿Qué sigue?

✅ Ahora sabes:

  • Cómo editar el costo de un ingrediente
  • Que el cambio dispara recálculo automático en todos los productos
  • Cómo verificar el impacto en cada producto
  • Cuándo y cómo ajustar precios de venta para mantener márgenes

Solución de Problemas

Actualicé el costo pero los productos no se recalcularon

Posibles causas:

  • El hook no está habilitado en el backend (verifica código en ingredient/model.js)
  • Hubo un error en el backend (revisa logs del servidor)
  • El ingrediente no está asignado a ninguna receta
  • Modificaste otro campo pero no el costPerUnit

Solución temporal: Edita cada producto manualmente y guarda de nuevo para forzar recálculo.

¿Puedo deshacer un cambio de costo?

No hay función de "deshacer" automática, pero puedes:

  • Volver a editar el ingrediente y poner el costo anterior
  • El hook se ejecutará de nuevo y volverá a recalcular todos los productos
  • Si no recuerdas el costo anterior, revisa el historial de Stock Movements
¿Los cambios afectan órdenes pasadas?

NO. Las órdenes ya creadas conservan el productCost que tenían al momento de crearse. Solo se afectan:

  • El costo actual de los productos (para nuevas ventas)
  • Reportes futuros que usen estos productos

Esto garantiza que los reportes históricos sean precisos.

¿Cómo actualizo costos en todas las sucursales a la vez?

Los ingredientes son independientes por sucursal. Para actualizar en múltiples sucursales:

  1. Selecciona la primera sucursal
  2. Actualiza el ingrediente
  3. Cambia a la segunda sucursal
  4. Repite el proceso

Contacta a soporte si necesitas ayuda con actualizaciones masivas en múltiples sucursales.

¿Qué pasa si pongo un costo negativo o cero?

El sistema validará que el costo sea un número positivo:

  • Costo negativo: Rechazado con error
  • Costo cero: Aceptado (útil para ingredientes sin costo, como agua del grifo)
  • El productCost resultante puede ser $0 si todos los ingredientes tienen costo $0
Centro de ayuda: guías y tutoriales | Nandu