Track and categorize production waste across four distinct types
Tambo360’s waste management system (mermas) provides detailed tracking of product loss during production. The system categorizes waste into four distinct types to help identify inefficiencies and improve processes.
// schema.prisma:31-36enum TipoMerma { Natural // Natural loss during production Tecnica // Technical/equipment failures Administrativa // Administrative errors Danio // Damage to product}
Natural
Natural losses occur during normal production processes:
Evaporation during heating
Moisture loss during aging
Separation of whey in cheese production
Normal shrinkage
Tecnica
Technical waste results from equipment or process failures:
// Get waste by ID (mermaController.ts:27-37)GET /api/mermas/:idAuthorization: Bearer <jwt-token>// Response{ "idMerma": "merma-uuid", "tipo": "Tecnica", "cantidad": 12.0, "observacion": "Falla en el sistema de refrigeración", "fechaCreacion": "2026-03-08T10:15:00.000Z", "lote": { ... }}
// Update waste (mermaController.ts:39-46)PUT /api/mermas/:idAuthorization: Bearer <jwt-token>{ "cantidad": 6.0, "observacion": "Pérdida de humedad durante curado - ajustado"}// Response with updated record{ "idMerma": "merma-uuid", "tipo": "Natural", "cantidad": 6.0, "observacion": "Pérdida de humedad durante curado - ajustado", ...}
Update Validation
When updating waste quantity:
// mermaService.ts:142-161// Calculate sum of OTHER waste records for the same batchconst totalMermas = await prisma.merma.aggregate({ _sum: { cantidad: true }, where: { idLote: merma.idLote, NOT: { idMerma } // Exclude current record }});// Validate updated total doesn't exceed batchif (sumaMermas + Number(data.cantidad) > Number(lote.cantidad)) { throw new Error("La merma supera la cantidad disponible del lote");}
// Day 1: Initial batchPOST /api/lotes{ "cantidad": 100, "unidad": "kg", ... }// Day 7: Natural moisture lossPOST /api/mermas{ "idLote": "...", "tipo": "Natural", "cantidad": 2.5, "observacion": "Pérdida de humedad semana 1"}// Day 14: Additional natural lossPOST /api/mermas{ "idLote": "...", "tipo": "Natural", "cantidad": 1.8, "observacion": "Pérdida de humedad semana 2"}
Total natural waste: 4.3 kg (4.3%)
Technical Waste
Scenario: Equipment malfunction
POST /api/mermas{ "idLote": "...", "tipo": "Tecnica", "cantidad": 25.0, "observacion": "Falla en tanque de refrigeración - temperatura elevada por 4 horas"}
Track equipment failures to identify maintenance needs.
Administrative Waste
Scenario: Measurement error
POST /api/mermas{ "idLote": "...", "tipo": "Administrativa", "cantidad": 3.2, "observacion": "Error en pesaje inicial - sobreestimación de cantidad disponible"}
Identify process improvement opportunities in documentation.
Damage Waste
Scenario: Handling incident
POST /api/mermas{ "idLote": "...", "tipo": "Danio", "cantidad": 8.5, "observacion": "Caída de bandeja durante transporte a cámara de maduración"}
Track physical damage to improve handling procedures.