POS Domain
UML diagrams for point of sale, transactions, kitchen display, and table management
POS Domain
The POS (Point of Sale) domain handles in-person transactions, kitchen operations, table management, and restaurant service workflows.
Domain Overview
graph TB
subgraph "POS Operations"
TERMINAL[Terminals]
TRANSACTION[Transactions]
PAYMENT[Payments]
end
subgraph "Restaurant"
TABLE[Tables]
ORDER[Orders]
KITCHEN[Kitchen Display]
end
subgraph "Staff"
EMPLOYEE[Employees]
SHIFT[Shifts]
DRAWER[Cash Drawers]
end
subgraph "Configuration"
HARDWARE[Hardware]
MENU[Menu Items]
MODIFIER[Modifiers]
end
TERMINAL --> TRANSACTION
TRANSACTION --> PAYMENT
TRANSACTION --> ORDER
ORDER --> TABLE
ORDER --> KITCHEN
EMPLOYEE --> TERMINAL
EMPLOYEE --> SHIFT
SHIFT --> DRAWER
MENU --> ORDER
MODIFIER --> ORDER
style TERMINAL fill:#e1f5fe
style ORDER fill:#fff3e0
style KITCHEN fill:#e8f5e9Entity Relationship Diagram
erDiagram
TENANT ||--o{ POS_TERMINAL : has
TENANT ||--o{ FLOOR_SECTION : has
TENANT ||--o{ POS_EMPLOYEE : has
POS_TERMINAL ||--o{ POS_TRANSACTION : processes
POS_TERMINAL }o--|| FLOOR_SECTION : located_in
POS_TRANSACTION ||--o{ TRANSACTION_ITEM : contains
POS_TRANSACTION ||--o{ TRANSACTION_PAYMENT : paid_by
POS_TRANSACTION }o--o| TABLE : for
POS_TRANSACTION }o--|| POS_EMPLOYEE : created_by
FLOOR_SECTION ||--o{ TABLE : contains
TABLE ||--o{ TABLE_SESSION : has
POS_EMPLOYEE ||--o{ SHIFT : works
SHIFT ||--|| CASH_DRAWER : uses
PRODUCT ||--o{ TRANSACTION_ITEM : ordered_as
PRODUCT ||--o{ PRODUCT_MODIFIER : has
POS_TERMINAL {
string id PK
string tenantId FK
string name
string deviceId
enum status
string floorSectionId FK
json configuration
timestamp lastPing
}
POS_TRANSACTION {
string id PK
string terminalId FK
string employeeId FK
string tableId FK
enum status
enum type
decimal subtotal
decimal tax
decimal discount
decimal total
timestamp openedAt
timestamp closedAt
}
TABLE {
string id PK
string floorSectionId FK
string number
int capacity
enum status
json position
}Transaction States
stateDiagram-v2
[*] --> OPEN: Create Transaction
OPEN --> ITEMS_ADDED: Add Items
ITEMS_ADDED --> ITEMS_ADDED: Add/Remove Items
ITEMS_ADDED --> PAYMENT_PENDING: Proceed to Pay
PAYMENT_PENDING --> PARTIAL_PAID: Partial Payment
PARTIAL_PAID --> PARTIAL_PAID: Additional Payment
PARTIAL_PAID --> PAID: Final Payment
PAYMENT_PENDING --> PAID: Full Payment
PAID --> COMPLETED: Close Transaction
OPEN --> VOIDED: Void Transaction
ITEMS_ADDED --> VOIDED: Void Transaction
COMPLETED --> REFUNDED: Refund
REFUNDED --> [*]
COMPLETED --> [*]
VOIDED --> [*]
note right of OPEN
Transaction opened
at terminal
end note
note right of PAID
All payments
received
end noteTable States
stateDiagram-v2
[*] --> AVAILABLE: Table Ready
AVAILABLE --> RESERVED: Reservation Made
RESERVED --> SEATED: Party Arrives
RESERVED --> AVAILABLE: No Show/Cancel
AVAILABLE --> SEATED: Walk-in Seated
SEATED --> OCCUPIED: Order Placed
OCCUPIED --> OCCUPIED: Additional Orders
OCCUPIED --> CHECK_REQUESTED: Request Check
CHECK_REQUESTED --> PAID: Payment Received
PAID --> CLEANING: Party Leaves
CLEANING --> AVAILABLE: Table Reset
note right of OCCUPIED
Active dining
session
end noteKey Business Processes
Transaction Flow
Complete POS transaction processing. View Transaction Details
Kitchen Display System
Order routing and kitchen workflow. View Kitchen Display Details
Table Management
Reservations, seating, and floor plan. View Table Management Details
Transaction Types
| Type | Description | Example |
|---|---|---|
| DINE_IN | Table service | Restaurant meal |
| TAKEOUT | Order for pickup | Phone order |
| DELIVERY | Order for delivery | Third-party delivery |
| BAR_TAB | Running tab | Bar service |
| QUICK_SALE | No table assignment | Counter service |
Payment Methods
pie title Payment Methods Distribution
"Credit Card" : 45
"Debit Card" : 25
"Cash" : 15
"Mobile Pay" : 10
"Gift Card" : 5POS System Architecture
flowchart TB
subgraph "Frontend Devices"
TABLET[POS Tablets]
KIOSK[Self-Service Kiosk]
KDS[Kitchen Display]
end
subgraph "Hardware"
PRINTER[Receipt Printer]
DRAWER[Cash Drawer]
SCANNER[Barcode Scanner]
CARD[Card Reader]
end
subgraph "Backend"
API[POS API]
SYNC[Sync Engine]
DB[(Database)]
end
subgraph "Integrations"
PAYMENT_GW[Payment Gateway]
INVENTORY[Inventory System]
LOYALTY[Loyalty Program]
end
TABLET --> API
KIOSK --> API
KDS --> API
TABLET --> PRINTER
TABLET --> DRAWER
TABLET --> SCANNER
TABLET --> CARD
API --> DB
API --> SYNC
API --> PAYMENT_GW
API --> INVENTORY
API --> LOYALTY
style API fill:#e1f5feShift Management
flowchart TD
START[Start Shift] --> CLOCK_IN[Clock In]
CLOCK_IN --> DRAWER_COUNT[Count Cash Drawer]
DRAWER_COUNT --> ASSIGN[Assign to Terminal]
ASSIGN --> WORK[Process Transactions]
WORK --> BREAK{Break?}
BREAK -->|Yes| CLOCK_OUT_BREAK[Clock Out for Break]
CLOCK_OUT_BREAK --> CLOCK_IN_BREAK[Clock In from Break]
CLOCK_IN_BREAK --> WORK
BREAK -->|No| WORK
WORK --> END_SHIFT{End Shift?}
END_SHIFT -->|No| WORK
END_SHIFT -->|Yes| CLOSE_DRAWER[Close Cash Drawer]
CLOSE_DRAWER --> FINAL_COUNT[Final Drawer Count]
FINAL_COUNT --> RECONCILE{Balanced?}
RECONCILE -->|Yes| APPROVE[Approve Closeout]
RECONCILE -->|No| VARIANCE[Record Variance]
VARIANCE --> APPROVE
APPROVE --> CLOCK_OUT[Clock Out]
CLOCK_OUT --> REPORT[Generate Shift Report]
style APPROVE fill:#e8f5e9
style VARIANCE fill:#fff3e0