Zum Inhalt springen

SQL Views

Für Systeme, die APRO-Daten in großem Volumen konsumieren — BI-Tools, Data Warehouses, Buchhaltungsexporte — stellt die Kassendatenbank drei lesende Views bereit, die den transaktionalen Kern abdecken:

Alle drei joinen über ReceiptId, ein vollständiges Belegbild ist also ein Drei-Tabellen-Query.

1. vw_Receipts

Eine Zeile pro Geschäftsvorfall. Die Spalte TransactionTypeId unterscheidet, was die Zeile repräsentiert.

SpalteTypBeschreibung
IdGUIDEindeutige ID des Geschäftsvorfalls.
TransactionIdGUIDEindeutige ID der Transaktion.
TransactionTypeIdenumSiehe Transaktionstypen.
DateTimedatetimeTransaktionszeitpunkt.
ReceiptNrstringBeleg-/Rechnungsnummer.
TotalAmountdecimalBelegsumme / Rechnungsbetrag.
TipAmountdecimalTrinkgeld (bei Abrechnung).
DiscountAmountdecimalRabattbetrag, gewährter Gesamtrabatt.
BusinessDaydateVirtueller Tag des Geschäftsvorfalls.
BusinessIdintegerID des durchführenden Unternehmens.
BusinessNamestringName des Unternehmens.
TableIdintegerID des zugeordneten Tisches.
TableNrintegerTischnummer.
TableNamestringTischname.
StaffIdintegerID des Mitarbeiters.
StaffNrintegerPersonalnummer.
StaffNamestringMitarbeitername.
CustomerIdintegerKunden-ID.
CustomerNrintegerKundennummer.
CustomerNamestringKundenname.
DeviceIdintegerGerät, das die Transaktion ausgeführt hat.

Transaktionstypen

TransactionTypeIdBedeutung
1Bestellung (Eingabe am Tisch oder SB).
2Verschiebung (Tischwechsel).
3Abrechnung (Abschluss mit Zahlung).
4Storno (Umkehr von Bestellung).
5Rechnung zurückholen (Umkehr von Abrechnung).
14Ausgangsrechnung erstellt.
25Ausgangsrechnung bezahlt.

2. vw_Receipt_Items

Belegpositionen. Über ReceiptId mit vw_Receipts verknüpfen.

SpalteTypBeschreibung
ReceiptIdGUIDBeleg-ID (Join auf vw_Receipts.Id).
TransactionIdGUIDTransaktions-ID.
ReceiptItemIdGUIDEindeutige Positions-ID.
ProductCategoryIdintegerSparten-ID.
ProductCategoryNrintegerSparten-Nummer.
ProductCategoryNamestringSparten-Name.
ProductIdintegerProdukt-ID.
ProductNrintegerProduktnummer.
ProductNamestringProduktname.
QuantitydecimalStückzahl.
OriginalPricedecimalUrsprünglicher Einzelpreis zum Ausführungszeitpunkt.
EffectivePricedecimalTatsächlicher Einzelpreis.
OriginalAmountdecimalStück × Originalpreis.
EffectiveAmountdecimalStück × Originalpreis × Rabattfaktor.
DiscountAmountdecimalRabattbetrag.
DiscountPercentagedecimalRabatt in Prozent des Originalpreises.
TaxIdintegerSteuersatz-ID.
TaxNamestringSteuersatz-Name.
TaxAmountdecimalSteuersatz als Dezimalwert.

3. vw_Payments

Zahlungen zu Belegen. Über ReceiptId mit vw_Receipts verknüpfen.

SpalteTypBeschreibung
TransactionIdGUIDTransaktions-ID.
ReceiptIdGUIDBeleg-ID.
PaymentIdGUIDEindeutige Zahlungs-ID.
PredecessorReceiptIdGUIDVorheriger Beleg, den diese Zahlung aufhebt (z. B. bei Rückholung).
DateTimedatetimeZeitpunkt der Zahlung.
TotalAmountdecimalGezahlter Betrag.
PaymentTypeIdintegerZahlungsmittel-ID.
PaymentTypeNrintegerZahlungsmittel-Nummer.
PaymentTypeNamestringZahlungsmittel-Name.

Beispiel-Query

Umsatz pro Geschäftstag, aufgeteilt nach Steuersatz:

SELECT
r.BusinessDay,
ri.TaxName,
SUM(ri.EffectiveAmount) AS netto_umsatz
FROM vw_Receipts AS r
JOIN vw_Receipt_Items AS ri ON ri.ReceiptId = r.Id
WHERE r.TransactionTypeId = 3 -- nur Abrechnungen
AND r.BusinessDay BETWEEN @from AND @to
GROUP BY r.BusinessDay, ri.TaxName
ORDER BY r.BusinessDay, ri.TaxName;