Overview
POS Kasir implements a comprehensive Point of Sale (POS) system with support for dine-in and takeaway orders, real-time order tracking, item modifications, and multi-step order workflow.Order Types
The system supports two order types:internal/orders/dto.go:27-29
- dine_in - Customer dining at the restaurant
- takeaway - Order for pickup
Order Statuses
internal/orders/dto.go:32-36
- open - Order created, waiting to be processed
- in_progress - Order is being prepared
- served - Order has been served to customer
- paid - Payment completed, order finalized
- cancelled - Order cancelled
Creating Orders
Create Order
Create a new order with multiple items and options. Endpoint:POST /orders
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:381-421
Get Order
Endpoint:GET /orders/{id}
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:423-458
List Orders
Retrieve orders with filtering and pagination. Endpoint:GET /orders
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:311-379
page- Page numberlimit- Items per page (max: 100)statuses- Filter by statuses (array)user_id- Filter by user (UUID)
Order Modifications
Update Order Items
Modify items in an existing open order. Endpoint:PUT /orders/{id}/items
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:210-253
Update Order Status
Update the operational status of an order. Endpoint:POST /orders/{id}/update-status
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:95-150
open→in_progressin_progress→servedserved→paid
Order Cancellation
Cancel Order
Endpoint:POST /orders/{id}/cancel
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:255-309
Promotions
Apply Promotion
Apply a promotion discount to an order. Endpoint:POST /orders/{id}/apply-promotion
Required Role: Admin, Manager, Cashier
internal/orders/handler.go:40-93
Data Transfer Objects
internal/orders/dto.go:16-56
Order Response Structure
internal/orders/dto.go:74-90
Workflow Example
Complete Order Flow
-
Create Order - Cashier creates order with items
-
Apply Promotion (Optional) - Apply discount if available
-
Update to In Progress - Kitchen starts preparing
-
Update to Served - Order delivered to customer
-
Process Payment - Complete payment and finalize
Best Practices
- Stock Validation - Always verify product availability before creating orders
- Price Snapshot - Prices are captured at order creation time (price_at_sale)
- Status Transitions - Follow the defined workflow for status updates
- Cancellation Tracking - Always provide a reason when cancelling orders
- Role-Based Filtering - Cashiers should only access their own orders
- Real-Time Updates - Consider WebSocket integration for live order status updates