Zur Startseite Live-Demo

Waage & Gewichtsartikel

Wozu dient das?#

Das Modul für gewichtsbasierte Artikel ermöglicht Gastronomie- und Handelsbetrieben (z. B. Metzgereien, Bäckereien, Feinkosttheken, Unverpackt-Läden) den rechtssicheren Verkauf von Waren nach Gewicht (Kilogramm oder Gramm) gemäß den Vorgaben der Preisangabenverordnung (PAngV) und des Mess- und Eichgesetzes (MessEG). Die Kassensoftware zieht das im Artikel hinterlegte Taragewicht der Verpackung ab, übernimmt das Nettogewicht von einer geeichten Waage oder verarbeitet eine manuelle Eingabe, berechnet den Gesamtpreis mittels kaufmännischer Rundung auf Cent-Ebene und weist Grundpreis (€/kg) sowie Nettogewicht transparent auf dem Kundenbeleg aus.

Rollen & Rechte#

  • Administrator / Manager: Legen Waagengeräte mit Seriennummer, Eichstatus und Eichablaufdatum sowie gewichtsbasierte Artikel (pricing_type = "weight") mit Grundpreis in €/kg und Taragewicht an. Dafür gibt es im Backoffice keinen Bildschirm: Beides geschieht über die Schnittstelle (siehe Schritte 1 und 2). Nur sie dürfen (Vorgabe) ein Gewicht von Hand eingeben, wenn keine Waagenanbindung besteht.
  • Bedienung / Servicepersonal: Legt Waren auf die Kassenwaage, wählt den Artikel am Terminal aus, prüft die automatische Gewichtsauslesung, liest das Gewicht von der Waage und wiegt bei abweichender Verpackung mit der Waage neu (die Tara kommt aus dem Artikel, nicht aus dem Dialog).

Voraussetzungen#

  • Eine an das POS-Terminal oder das POS-Bridge/Device-Gateway angeschlossene, geeichte Handelswaage (Konformitätsbewertung nach MessEG § 31 der Klasse III mit sichtbarem Eichstempel) oder eine externe geeichte Waage für die manuelle Ablesung.
  • Ein registriertes Gerät vom Typ SCALE (Waage) mit Seriennummer (serial_number), aktiviertem Eichstatus (is_calibrated = True) und einem in der Zukunft liegenden Eichgültigkeitsdatum (calibration_verified_until).
  • Im Katalog eingerichtete Artikel mit Preistyp Gewicht (pricing_type = "weight"), Maßeinheit kg oder g (unit_of_measure = "kg"), Grundpreis in €/kg und optionalem Standard-Taragewicht.
  • Eine geöffnete Kassenschicht des Bedieners (→ Kapitel 12).

Eichrecht & Eichfristen (MessEG & PAngV)#

Welche Waagen qualifizieren sich?#

Im geschäftlichen Verkehr, bei dem der Preis einer Ware unmittelbar durch Wägung ermittelt wird, dürfen ausschließlich geeichte Handelswaagen (in der Regel Genauigkeitsklasse III / EU-Konformitätsbewertete Waagen) eingesetzt werden. Die Waage muss über ein Typenschild mit CE-Kennzeichnung, Metrologiekennzeichnung (M) und Seriennummer verfügen.

Ablauf der Eichung & Verlängerungsfristen#

Eichfristen werden von den staatlichen Eichämtern festgelegt und betragen in Deutschland für Handelswaagen in der Regel 2 Jahre. Nach Ablauf des auf der Eichmarke angegebenen Jahres/Monats erlischt die Eichung rechtlich.

Verhalten des Kassensystems bei abgelaufener Eichung#

Die Kassensoftware prüft vor jeder automatischen Gewichtsübernahme das hinterlegte Ablaufdatum (calibration_verified_until) sowie den Eichstatus (is_calibrated). Ist die Eichung abgelaufen oder als ungeeicht markiert, verweigert das Kassensystem die automatische Gewichtsübernahme strikt mit einer Fehlermeldung (HTTP 400 Bad Request). Automatische Verkäufe mit abgelaufener Waageneichung sind systemseitig gesperrt.

Betreiberpflichten & Haftung#

Schritt für Schritt#

1. Eichfähige Waage registrieren (Schnittstelle, kein Bildschirm)#

Im Backoffice gibt es keine Maske für Waagen: Der Bereich Geräte (Kapitel 22a) kennt weder den Gerätetyp Waage noch die Eichfelder. Die Waage wird über die Schnittstelle als Gerät vom Typ SCALE angelegt.

  1. Vergeben Sie eine eindeutige Bezeichnung (z. B. „Metzgerei Waage #1“) und tragen Sie die Seriennummer des Herstellers ein.
  2. Setzen Sie is_calibrated auf true und tragen Sie das vom Eichstempel abgelesene Datum in calibration_verified_until ein.
  3. Tragen Sie die ID der Waage im Gateway als SCALE_DEVICE_ID ein (siehe Schritt 3).

2. Gewichtsbasierte Artikel anlegen (Schnittstelle, kein Bildschirm)#

Auch der Menü-Editor (Kapitel 21) hat keine Felder für Preistyp, Maßeinheit oder Tara. Gewichtsartikel werden über die Schnittstelle angelegt:

  1. Setzen Sie pricing_type auf "weight" und unit_of_measure auf "kg" oder "g".
  2. Tragen Sie den Grundpreis in Cent pro kg ein (z. B. 1490 für 14,90 €/kg).
  3. Branch A (Mit Standard-Verpackung): Hinterlegen Sie im Feld tare_weight_g das Gewicht der Verpackung in Gramm (z. B. 10 für eine Plastikschale).
  4. Branch B (Ohne Verpackung): Belassen Sie tare_weight_g bei 0.

3. Gewichtsartikel an der Kasse verkaufen (Automatische Wägung)#

Automatisch gewogen wird mit einer preisrechnenden, geeichten Waage, die über das Protokoll Dialog06 (RS232 oder USB-seriell) am Geräte-Gateway hängt. Die Waage ist dabei die geeichte Rechenstelle: Sie rechnet den Verkaufspreis, und die Kasse übernimmt ihn unverändert.

  1. Rufen Sie die Kassenoberfläche an Ihrem POS-Terminal auf und öffnen Sie einen Tisch oder einen Bar-Bon.
  2. Legen Sie die Ware (z. B. Bio-Rinderhackfleisch in der Schale) auf die Waage.
  3. Tippen Sie auf die Kachel Bio-Rinderhackfleisch. Es öffnet sich der Gewichtsdialog.
  4. Tippen Sie auf Waage lesen. Die Kasse schickt Grundpreis und Tara des Artikels an die Waage; die Waage wiegt, zieht die Tara ab und rechnet den Preis.
  5. Branch A (Normale Wägung): Der Dialog zeigt das Nettogewicht in Gramm und den Preis der Waage. Mit Bestätigen wird die Position mit genau diesem Preis gebucht.
  6. Branch B (Waage wackelt / unruhig): Kommt die Waage innerhalb weniger Sekunden nicht zur Ruhe, meldet der Dialog „kein stabiles Gewicht“. Es wird nichts übernommen; tippen Sie erneut auf Waage lesen.
  7. Branch C (Unterlast, Überlast, Mindestlast): Der Dialog nennt den Grund der Waage. Ware auflegen bzw. teilen und erneut lesen.
  8. Auf dem Bon steht unter der Position eine Zeile mit Tara und, falls die Waage eine Wäge- bzw. Alibinummer liefert, mit „Wäge-Nr.“. Ohne beides fehlt die Zeile. Dialog 06 liefert keine Wäge-Nummer.
  9. Jede Wägung ist eine eigene Position und wird genau einmal gebucht. Die Menge einer gewogenen Position lässt sich nicht erhöhen; wiegen Sie die nächste Portion neu.

Die Schaltfläche Waage lesen erscheint, wenn am Standort genau eine aktive, geeichte Waage registriert ist. Gateway-Einstellungen für den Anschluss: SCALE_PORT (z. B. /dev/ttyUSB0), SCALE_DEVICE_ID (ID der registrierten Waage), SCALE_BAUD (9600), SCALE_PARITY (E für Mettler, O für Bizerba), SCALE_BYTESIZE (7), SCALE_STOPBITS (1).

4. Handeingabe des Gewichts an der Kasse (Fallback & Ausnahmeszenario)#

Die Handeingabe braucht ein eigenes Recht (orders.item.manual_weight). Vorgabe: Administrator und Manager; ein Betrieb kann es nur enger fassen, nicht weiter. Eine Bedienung ohne dieses Recht erhält eine Fehlermeldung (403) und es wird nichts gebucht. Jede Handeingabe schreibt einen unveränderlichen Eintrag in das Audit-Log (orders.manual_weight_entered: wer, welche Position, welches Gewicht).

  1. Ist die Waage nicht direkt an das POS-Terminal angeschlossen (z. B. externe Ladenwaage an einer separaten Theke) oder die Kabelverbindung unterbrochen, wiegen Sie die Ware auf der externen geeichten Waage ab.
  2. Tippen Sie auf der Kassenoberfläche auf den gewichtsgesteuerten Artikel.
  3. Es öffnet sich der Dialog Gewicht in Gramm.
  4. Geben Sie das exakt abgelesene Nettogewicht in Gramm über die Zifferntastatur ein (C löscht, die Rücktaste nimmt die letzte Ziffer zurück) (is_manual_weight = True). Bei der Handeingabe rechnet die Kasse Gewicht mal Grundpreis. Das ist kein eichrechtskonformer Waagenpreis; die Handeingabe ist der Notbehelf, wenn keine preisrechnende Waage angeschlossen ist.
  5. Audit-Konsequenz: Die Handeingabe wird unveränderlich im Audit-Log protokolliert und erscheint auf dem Kundenbeleg transparent mit dem Hinweis (Handeingabe). Der Offline-Abgleich des Gateways nimmt keine Handeingabe an: gewogene Positionen brauchen dort eine gültige Waagenlesung, sonst wird die Bestellung mit Begründung abgelehnt.
  6. Bestätigen Sie mit Bestätigen.

5. Taragewicht anpassen & die Verpackungs-Falle vermeiden#

  1. Das Risiko (Systematischer Übertragungsfehler): Wird für eine Ware eine schwerere Verpackung verwendet (z. B. ein Glas mit 150g statt einer Folie mit 10g), zahlt der Kunde ohne Anpassung das Gewicht des Glases zum Kilopreis der Ware! Dies ist ein gravierender Verstoß gegen die PAngV und führt zu systematischen Kundenreklamationen.
  2. Im Dialog gibt es kein Feld, um die Tara zu ändern. Die Kasse schickt die im Artikel hinterlegte Tara an die Waage. Verwenden Sie regelmäßig ein anderes Gefäß, legen Sie dafür einen eigenen Artikel mit passender Tara an (z. B. „Hackfleisch im Glas“, tare_weight_g = 150).
  3. Der Dialog zeigt die hinterlegte Tara neben dem Grundpreis an (z. B. „Tara: 10 g“). Prüfen Sie sie bei jeder Wägung gegen das Gefäß.

Bildschirm für Bildschirm#

Backoffice#

Für Waagen und Gewichtsartikel gibt es im Backoffice keinen Bildschirm (siehe Schritte 1 und 2).

POS-Terminal: Gewichtsdialog#

Der Dialog öffnet sich, wenn Sie einen Gewichtsartikel antippen.

Gewichtsdialog an der Kasse Dialog Gewicht in Gramm für den Artikel Bio-Rinderhackfleisch mit Gramm-Anzeige, Grundpreis mit Tara, Preis der Waage, Knopf Waage lesen, Zifferntastatur mit C, 0 und Rücktaste sowie Abbrechen und Bestätigen. Gewicht in Gramm Bio-Rinderhackfleisch 450 g 14,90 €/kg (Tara: 10 g) Preis der Waage 6,71 € Waage lesen 1 2 3 4 5 6 7 8 9 C 0 ⌫ Abbrechen Bestätigen 1 2 3 4 5 6 7
Gewichtsdialog mit Gramm-Anzeige, Preis der Waage und Zifferntastatur
  • 1 Anzeige des Gewichts in Gramm; oben steht die Überschrift Gewicht in Gramm mit dem Artikelnamen.
  • 2 Der Grundpreis des Artikels in €/kg mit der hinterlegten Tara in Klammern, z. B. „14,90 €/kg (Tara: 10 g)“.
  • 3 Preis der Waage: der Betrag, den die Waage gerechnet hat. Er erscheint nach dem Lesen und wird unverändert gebucht.
  • 4 Waage lesen: holt Gewicht und Preis von der geeichten Waage. Der Knopf erscheint nur, wenn am Standort genau eine aktive, geeichte Waage registriert ist; ohne Verbindung steht dort „Keine Waage verbunden“.
  • 5 Zifferntastatur mit C (löschen), 0 und der Rücktaste für die Handeingabe.
  • 6 Abbrechen schließt den Dialog ohne Position.
  • 7 Bestätigen bucht die Position.

POS-Terminal: Beleg & Ausgabedruck#

  • Auf dem Kundenbeleg und der Display-Vorschau wird die Zeile transparent aufgeschlüsselt:
    • Bio-Rinderhackfleisch
    • 0.450 kg @ 14.90 EUR/kg -> 6.71 EUR
    • (Bei manueller Wägung: 0.200 kg @ 12.00 EUR/kg (Handeingabe) -> 2.40 EUR).

Praxisbeispiel: Vollständiger Verkaufsvorgang mit echten Zahlen#

Ausgangslage#

Eine Metzgerei verkauft Bio-Rinderhackfleisch an einer Kassenwaage.

  • Artikel-Stammdaten: Grundpreis = 14,90 €/kg (1490 Cent/kg), Preistyp = weight, Maßeinheit = kg, Standard-Tara = 10 g.
  • Waagen-Status: Gerät scale-valid-1, Eichung gültig bis 31.12.2027 (is_calibrated = True).

Ablauf an der Kasse#

  1. Die Bedienung legt die gefüllte Hackfleischschale auf die Waage. Die Waage misst ein Bruttogewicht von 460 Gramm.
  2. Die Bedienung tippt auf dem Terminal auf Bio-Rinderhackfleisch.
  3. Das System übernimmt das Bruttogewicht (gross_weight_g = 460).
  4. Das System zieht das hinterlegte Taragewicht ab: $$\text{Nettogewicht} = 460 \text{ g} - 10 \text{ g} = 450 \text{ g} = 0,450 \text{ kg}$$
  5. Das System berechnet die Zeilensumme in Cent mittels kaufmännischer Rundung: $$\text{Zeilensumme (Cent)} = \left\lfloor \frac{1490 \text{ Cent/kg} \times 450 \text{ g} + 500}{1000} \right\rfloor = \left\lfloor \frac{670500 + 500}{1000} \right\rfloor = 671 \text{ Cent} = 6,71 \text{ €}$$
  6. Die Zeile wird im Bon erfasst. Der Gast zahlt bar oder mit Karte.
  7. Auf dem gedruckten Bon erscheint exakt die Zeile: 0.450 kg @ 14.90 EUR/kg -> 6.71 EUR

Was passiert im Hintergrund#

Beim Erfassen von Gewichtsartikeln laufen im Kassensystem folgende automatisierte Schritte ab:

  1. Automatische Wägung (Dialog06): Das Backend legt einen Befehl read_scale mit Grundpreis und Tara an, das Gateway liest die Waage und meldet Nettogewicht, Grundpreis und Verkaufspreis. Beim Buchen prüft die Kasse nur: Grundpreis der Waage gleich Grundpreis der Position, und Gewicht mal Grundpreis höchstens 1 Cent neben dem Verkaufspreis. Sonst lehnt sie die Position ab, statt zu korrigieren. Der Verkaufspreis steht als scale_total_price_cents an der Position und ist ihr Betrag; die Rundung unten gilt dann nicht.
  2. Nettogewichtsberechnung (Handeingabe): $\text{weight\_g} = \text{gross\_weight\_g} - \text{tare\_weight\_g}$. Ist das Ergebnis $\le 0$, wird der Vorgang abgebrochen.
  3. Ganzzahl-Cent-Rundung: Um Cent-Abweichungen auf Z-Berichten und in der Buchhaltung auszuschließen, verwendet das System strikt kaufmännische Ganzzahl-Arithmetik: $$\text{item\_total\_cents} = \text{round}\left( \frac{\text{unit\_price\_cents} \times \text{weight\_g}}{1000.0} \right)$$
  4. Datenmodell & Audit-Trail (OrderItem): Speichert unveränderlich:
    • weight_g: 450 (Nettogewicht in Gramm)
    • gross_weight_g: 460 (Bruttogewicht in Gramm)
    • tare_weight_g: 10 (Taragewicht in Gramm)
    • is_manual_weight: False (bzw. True bei manueller Eingabe)
    • scale_device_id: "scale-valid-1"
    • scale_calibration_verified_until: Audit-Snapshot des Ablaufdatums.
  5. Fiskalisierung (TSE): Die Position übermittelt den Gesamtbetrag (671 Cent) und den Steuersatz an den FiscalService. Das Nettogewicht wird als Positionsbeschreibung in der TSE-Signatur verankert.

Häufige Probleme#

1. Error: Automatische Waegung braucht eine Waagenlesung (scale_reading_id)#

  • Ursache: Die Position wurde als automatisch gewogen (is_manual_weight = False) gebucht, ohne vorher über Waage lesen eine Lesung zu holen.
  • Lösung: Tippen Sie im Gewichtsdialog auf Waage lesen. Ohne angeschlossene Waage geben Sie das Gewicht von Hand ein (is_manual_weight = True).

1a. Error: Grundpreis der Waage (…) weicht vom Preis des Artikels (…) ab oder Verkaufspreis der Waage (…) passt nicht zu …#

  • Ursache: Zwischen Wiegen und Buchen hat sich der Preis geändert (z. B. eine Aktion endete), oder Gewicht und Preis der Waage gehören nicht zusammen.
  • Lösung: Neu wiegen. Tritt der zweite Fehler wiederholt auf, die Waage vom Service prüfen lassen.

1b. Error: no scale driver: SCALE_PORT is not configured#

  • Ursache: Am Geräte-Gateway ist keine Waage eingerichtet.
  • Lösung: SCALE_PORT und SCALE_DEVICE_ID in der Umgebung des Gateways setzen und den Dienst neu starten.

2. Error: Scale device scale-expired-1 calibration verification missing or expired#

  • Ursache: Das Gültigkeitsdatum der Waageneichung (calibration_verified_until) liegt in der Vergangenheit. Aus rechtlichen Gründen (MessEG § 31) sperrt das System automatische Wägungen.
  • Lösung: Nach erfolgter Nacheichung durch das Eichamt tragen Sie das neue Gültigkeitsdatum über die Schnittstelle in calibration_verified_until ein (im Backoffice gibt es dafür keine Maske). Bis dahin müssen Wägungen extern abgelesen und manuell eingegeben werden.

3. Error: Scale device scale-uncalibrated-1 is not calibrated#

  • Ursache: Das angemeldete Waagengerät ist als ungeeicht markiert (is_calibrated = False).
  • Lösung: Überprüfen Sie, ob es sich um eine geeichte Handelswaage handelt, und setzen Sie is_calibrated erst nach vorliegender Konformitätsbewertung.

4. Error: Weight in grams (weight_g or gross_weight_g) is required for weight-priced items#

  • Ursache: Es wurde ein Artikel mit pricing_type = "weight" aufgerufen, ohne dass ein Gewicht übermittelt oder im Dialog eingegeben wurde.
  • Lösung: Vergewissern Sie sich, dass die Ware auf der Waage liegt oder geben Sie das Gewicht im Dialog Gewicht in Gramm von Hand ein.

5. Error: Quantity must be > 0#

  • Ursache: Bei der Gewichtseingabe wurde eine Menge von 0 oder ein negatives Gewicht eingegeben (z. B. wenn das Taragewicht größer als das gemessene Bruttogewicht war).
  • Lösung: Prüfen Sie, ob die Waage vor dem Auflegen der Ware ordnungsgemäß auf Null tariert war, oder korrigieren Sie die manuelle Eingabe.

6. Error: Product not found in your catalog#

  • Ursache: Die aufgerufene Produkt-ID des Gewichtsartikels existiert nicht im aktiven Katalog des Standorts oder wurde gelöscht.
  • Lösung: Laden Sie die Kasse neu oder prüfen Sie die Artikelstammdaten.

7. Error: Device not found#

  • Ursache: Die angegebene Waagen-Geräte-ID existiert nicht im System oder gehört zu einem anderen Standort/Mandanten.
  • Lösung: Legen Sie die Waage über die Schnittstelle für den aktuellen Standort neu an und tragen Sie die neue ID als SCALE_DEVICE_ID im Gateway ein.

8. Error: Cannot add items to this order#

  • Ursache: Der aktuelle Bon wurde bereits gesendet, storniert oder geschlossen (closed / finalized).
  • Lösung: Öffnen Sie eine neue Bestellung oder stornieren Sie den bestehenden Bon mit entsprechender Berechtigung, bevor Sie neue Gewichtsartikel hinzufügen.

Grenzen#

  • Keine automatische Eichamts-Anmeldung: Das Kassensystem nimmt keine automatische An- oder Abmeldung von Waagen beim zuständigen Eichamt (§ 32 MessEG) vor.
  • Keine automatische Eichfrist-Verlängerung: Das Ablaufdatum der Eichung muss nach jeder behördlichen Nacheichung manuell im Kassensystem (über die Schnittstelle) aktualisiert werden.
  • Kein Barcode-Gewichtsscanning: Das direkte Einlesen von Barcodes mit integriertem Gewicht (z. B. Inbound EAN-13 Gewichts-Barcodes von abgepackten Waren) ist in diesem Waagen-Direktmodul nicht enthalten.
  • Keine physikalische Justierung: Die Software führt keine Kalibrierung oder Justierung der physikalischen Waagen-Hardware durch.

Dieses Kapitel gehört zum Merkuron-Handbuch für Inhaber und Servicepersonal.