Das Modul Barkarten- & Pauschalen-Kalkulation (/admin/bar/menu) ermöglicht die Konzeption, mathematisch fundierte Preiskalkulation und gesetzeskonforme Allergenkennzeichnung (LMIV) von Getränkekarten und Getränkepauschalen für Veranstaltungen, Bankette und stationäre Barbetriebe.
CaterOS unterscheidet zwischen drei klar abgegrenzten Menü-Typen, die den unterschiedlichen Anforderungen im Gastronomie- und Eventgeschäft gerecht werden:
Kuratierte Barkarte (ALACARTE): Fokussiert auf den klassischen Einzelverkauf oder Cash-Bar-Betrieb. Jeder Position kann ein individueller Netto-Verkaufspreis zugewiesen werden.
Getränkepauschale (FLAT_RATE): All-Inclusive-Pauschale für Events mit dynamischer Zeitsteuerung (). Berechnet den optimalen Pauschalpreis pro Gast anhand einer gastronomischen Konsumkurve und ermittelt den metrischen Eis- und Gläserbedarf.
Wein- & Menübegleitung (WINE_PAIRING): Gang-korrespondierende Begleitung mit strukturierter Zuordnung von Aperitif, Weinbegleitung zu Vorspeise, Hauptgang, Dessert sowie Digestifs.
Bei zeitbasierten Getränkepauschalen verläuft der Getränkekonsum von Veranstaltungsgästen nicht linear. CaterOS implementiert eine empirisch fundierte, deterministische Konsumkurve zur exakten Wareneinsatz- und Mengenermittlung:
Die Bepreisung von Getränkepauschalen erfolgt auf Basis des durchschnittlichen Wareneinsatzes der enthaltenen Positionen und der mandantenweiten Kalkulationsprofile aus /admin/pricing-strategy.
: Standardmäßig im Bar- und Getränkebereich (im Vergleich zu in der Speisenproduktion).
Profil-Schnellauswahl: Über das Dropdown-Menü im Kalkulator kann direkt auf die zentralen Bepreisungsprofile (z. B. „Getränke Standard“) zugegriffen werden.
CaterOS berechnet den logistischen Vorbereitungs- und Packbedarf unter strikter Einhaltung der Grammatur-Doktrin und thermodynamischer Umgebungsfaktoren:
Klarglas-Eiswürfel (): Festes physikalisches Kalibrierungsgewicht von pro Stück. Der Bedarf wird positionsgenau für alle Drinks mit Klarglas-Einsatz summiert.
Hoshizaki Schüttel- und Rühreis: pro geschütteltem/gerührtem Drink plus Schmelzwasser- und Kühlpuffer.
Temperatur-Korrekturfaktor: An heißen Veranstaltungstagen steigt der Schmelzverlust. Das System skaliert den Eisbedarf deterministisch:
Zur Vermeidung von Engpässen bei Gläserspülgängen und Bruch wird der Gläserbedarf pro Glastyp mit einem Sicherheitsfaktor von () auf den Packlisten ausgewiesen:
In Übereinstimmung mit der EU-Lebensmittelinformationsverordnung (LMIV EU-VO 1169/2011) gewährleistet das Modul eine lückenlose Deklaration:
Gattungsbezeichnungs-Pflicht (Art. 17): Markennamen („Monkey 47“, „Aperol“) werden auf Speisekarten und Allergenausweisen automatisch durch ihre amtliche Verkehrsbezeichnung („Distilled Gin (47% Vol.)“, „Aperitif-Bitter (Farbstoff, chininhaltig)“) ergänzt.
Kaskadierende Allergen-Extraktion: Sämtliche Allergene von Unterrezepturen (z. B. Sulfite SUL in Wermut/Wein, Schalenfrüchte SCH in Mandelsirup/Orgeat, Milch MIL in Milk-Punches, Eiweiß EI in Sours) fließen automatisch in den LMIV-Ausweis der Menükarte ein.
Zusatzstoff-Kennzeichnung: Gesetzliche Pflichtangaben für Farbstoffe (), Chininhaltigkeit (Tonic) und Koffeingehalt (Espresso Martini) werden standardisiert deklariert.
Die Einbindung von Menükarten in operative Veranstaltungen erfolgt nahtlos und manipulationssicher:
1-Klick-Übernahme in Angebote (offers/[offerId]/edit): Menükarten werden als vollständige Position mit versiegeltem JSONB-Snapshot (menuSnapshot) in das Event übernommen. Nachträgliche Änderungen an Stammrezepten verfälschen historische Veranstaltungsdaten nicht.
PostgreSQL GIN-Index: Die JSONB-Snapshots sind über einen Generalized Inverted Index indexiert, wodurch Auswertungen über tausende Events in Millisekunden erfolgen.
Asynchroner Bar-Vorbereitungsplan (POST /api/events/:id/export-bar-prep): Über den Button 🍸 Bar-Übergabe in der Event-Zentrale wird ein asynchroner BullMQ-Worker (bar-prep-queue) gestartet. Dieser aggregiert alle benötigten Halbfabrikate (Sirupe, Säfte, Klarglas-Eisblöcke), skaliert die Mengen für die Gästeanzahl ( Sicherheitsreserve) und generiert atomare Bar-Chargennummern nach dem Standard BAR-YYYYMMDD-XXX im Vorbereitungsplan (/admin/bar/prep).