@company-manager/docs

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:#e8f5e9

Entity 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 note

Table 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 note

Key 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

TypeDescriptionExample
DINE_INTable serviceRestaurant meal
TAKEOUTOrder for pickupPhone order
DELIVERYOrder for deliveryThird-party delivery
BAR_TABRunning tabBar service
QUICK_SALENo table assignmentCounter service

Payment Methods

pie title Payment Methods Distribution
    "Credit Card" : 45
    "Debit Card" : 25
    "Cash" : 15
    "Mobile Pay" : 10
    "Gift Card" : 5

POS 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:#e1f5fe

Shift 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