Fix invalid unit_of_measure 'dozen' causing 422 API errors
**Issue:** Creating ingredients failed with 422 error: ``` Input should be 'kg', 'g', 'l', 'ml', 'units', 'pcs', 'pkg', 'bags' or 'boxes' input: "dozen" ``` **Root Cause:** Frontend was using units not supported by backend UnitOfMeasure enum: - "dozen" (docena) - "cup" (taza) - "tbsp" (cucharada) - "tsp" (cucharadita) - "piece" → should be "pcs" - "package" → should be "pkg" - "bag" → should be "bags" - "box" → should be "boxes" **Backend Supported Units (inventory.ts:28-38):** kg, g, l, ml, units, pcs, pkg, bags, boxes **Solution:** Replaced all invalid units with backend-compatible ones across codebase. **Files Modified:** 1. **UploadSalesDataStep.tsx:604** - Before: ['kg', 'g', 'L', 'ml', 'units', 'dozen'] - After: ['kg', 'g', 'l', 'ml', 'units', 'pcs', 'pkg', 'bags', 'boxes'] 2. **BatchAddIngredientsModal.tsx:53** - Before: ['kg', 'g', 'L', 'ml', 'units', 'dozen'] - After: ['kg', 'g', 'l', 'ml', 'units', 'pcs', 'pkg', 'bags', 'boxes'] 3. **QuickAddIngredientModal.tsx:69** - Before: ['kg', 'g', 'L', 'ml', 'units', 'dozen'] - After: ['kg', 'g', 'l', 'ml', 'units', 'pcs', 'pkg', 'bags', 'boxes'] 4. **inventory/index.ts:51-62** - Removed: 'piece', 'package', 'bag', 'box', 'dozen', 'cup', 'tbsp', 'tsp' - Added: 'units', 'pcs', 'pkg', 'bags', 'boxes' - Added comment: "must match backend UnitOfMeasure enum exactly" 5. **ingredientHelpers.ts:168** - Eggs unit changed from 'dozen' → 'units' 6. **utils/constants.ts:77-87** - Removed volume units: cup, tbsp, tsp - Removed count units: piece, dozen, package, bag, box - Added: units, pcs, pkg, bags, boxes - Now matches backend enum exactly **Also Fixed:** - Changed 'L' to lowercase 'l' for consistency with backend **Impact:** ✅ All ingredient creation now uses valid backend units ✅ No more 422 validation errors ✅ Frontend/backend unit enums synchronized **Build Status:** ✓ Successful in 22.23s
This commit is contained in:
@@ -77,16 +77,13 @@ export const UNITS_OF_MEASURE = {
|
||||
volume: {
|
||||
l: { label: 'Litro', symbol: 'l', factor: 1000 },
|
||||
ml: { label: 'Mililitro', symbol: 'ml', factor: 1 },
|
||||
cup: { label: 'Taza', symbol: 'taza', factor: 240 },
|
||||
tbsp: { label: 'Cucharada', symbol: 'cda', factor: 15 },
|
||||
tsp: { label: 'Cucharadita', symbol: 'cdta', factor: 5 },
|
||||
},
|
||||
count: {
|
||||
piece: { label: 'Pieza', symbol: 'pz', factor: 1 },
|
||||
dozen: { label: 'Docena', symbol: 'doc', factor: 12 },
|
||||
package: { label: 'Paquete', symbol: 'paq', factor: 1 },
|
||||
bag: { label: 'Bolsa', symbol: 'bolsa', factor: 1 },
|
||||
box: { label: 'Caja', symbol: 'caja', factor: 1 },
|
||||
units: { label: 'Unidades', symbol: 'ud', factor: 1 },
|
||||
pcs: { label: 'Piezas', symbol: 'pz', factor: 1 },
|
||||
pkg: { label: 'Paquetes', symbol: 'paq', factor: 1 },
|
||||
bags: { label: 'Bolsas', symbol: 'bolsa', factor: 1 },
|
||||
boxes: { label: 'Cajas', symbol: 'caja', factor: 1 },
|
||||
},
|
||||
} as const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user