feat: New Open Tab dialog with search and optional customer email. Drinks are now grouped per order. Payments trigger cha-ching and money rain.

This commit is contained in:
2026-10-28 02:11:32 +01:00
parent 1aee0541c4
commit 29ceb51177
41 changed files with 2771 additions and 812 deletions
+8 -2
View File
@@ -4,11 +4,15 @@ class TabItemPurchase {
final DateTime purchasedAt;
final DateTime? removedAt;
/// The order it was rung up in; null for drinks from before orders.
final String? orderId;
const TabItemPurchase({
required this.id,
required this.tabItemId,
required this.purchasedAt,
this.removedAt,
this.orderId,
});
bool get isRemoved => removedAt != null;
@@ -20,8 +24,10 @@ class TabItemPurchase {
id == other.id &&
tabItemId == other.tabItemId &&
purchasedAt == other.purchasedAt &&
removedAt == other.removedAt;
removedAt == other.removedAt &&
orderId == other.orderId;
@override
int get hashCode => Object.hash(id, tabItemId, purchasedAt, removedAt);
int get hashCode =>
Object.hash(id, tabItemId, purchasedAt, removedAt, orderId);
}