export function unitAskFor(displayUnit) { if (displayUnit === "unit") return "¿Cuántas unidades querés?"; if (displayUnit === "g") return "¿Cuántos gramos querés?"; return "¿Cuántos kilos querés?"; } export function unitDisplay(unit) { if (unit === "unit") return "unidades"; if (unit === "g") return "gramos"; return "kilos"; } export function inferDefaultUnit({ name, categories }) { const n = String(name || "").toLowerCase(); const cats = Array.isArray(categories) ? categories : []; const hay = (re) => cats.some((c) => re.test(String(c?.name || "")) || re.test(String(c?.slug || ""))) || re.test(n); if ( hay(/\b(vino|vinos|bebida|bebidas|cerveza|cervezas|gaseosa|gaseosas|whisky|ron|gin|vodka|fernet)\b/i) ) { return "unit"; } return "kg"; } export function normalizeUnit(unit) { if (!unit) return null; const u = String(unit).toLowerCase(); if (u === "kg" || u === "kilo" || u === "kilos") return "kg"; if (u === "g" || u === "gramo" || u === "gramos") return "g"; if (u === "unidad" || u === "unidades" || u === "unit") return "unit"; return null; } export function resolveQuantity({ quantity, unit, displayUnit }) { if (quantity == null || !Number.isFinite(Number(quantity)) || Number(quantity) <= 0) return null; const q = Number(quantity); const u = normalizeUnit(unit) || (displayUnit === "unit" ? "unit" : displayUnit === "g" ? "g" : "kg"); if (u === "unit") { return { quantity: Math.round(q), unit: "unit", display_quantity: Math.round(q), display_unit: "unit" }; } if (u === "g") return { quantity: Math.round(q), unit: "g", display_quantity: Math.round(q), display_unit: "g" }; // kg -> gramos enteros return { quantity: Math.round(q * 1000), unit: "g", display_unit: "kg", display_quantity: q, }; }