Products
The Products page manages the catalog of items your internet cafe or gaming center sells. This includes food, beverages, snacks, accessories, and any other physical goods offered to customers. Each product has a defined price, category, tax rate, and stock level. Products integrate with the order system, enabling cashiers to create orders, track sales, and manage inventory.
Product Fields
Each product record contains the following information:
| Field | Description |
|---|---|
name |
The product name displayed in the order interface. Must be unique (case-insensitive). |
category |
A text label grouping related products (e.g., "Beverages", "Snacks", "Accessories"). Used for filtering and reporting. |
unit |
The unit of measurement for stock tracking (e.g., "piece", "kg", "liter", "can", "bottle"). |
barcode |
An optional barcode value for scanner integration. Cashiers can scan a product's barcode to quickly add it to an order. |
sale_price |
The selling price in minor currency units (e.g., cents). This is the amount charged to the customer per unit. |
vat_rate |
The VAT (Value Added Tax) percentage applied to this product (e.g., 18 for 18% VAT). Used to calculate the tax component of each sale. |
stock |
The current stock level as a decimal quantity. Updated automatically when orders are placed and when inventory purchases are recorded. |
active |
A toggle that controls whether the product appears in the order interface. Inactive products are hidden from cashiers but retained in the database for historical reporting. |
description |
An optional text description for additional product details. |
Active / Inactive Toggle
Products can be toggled between active and inactive states:
- Active products appear in the order interface and can be added to new orders.
- Inactive products are hidden from the order interface but remain in the database. Past orders that included the product retain their references so historical sales data is preserved.
This is useful for seasonal items, discontinued products, or items that are temporarily out of stock and should not be offered to customers.
Stock Tracking
HandyCafe maintains a running stock count for every product. This value is automatically updated by the system in response to:
- Sales: When a product is sold through an order, the stock decreases by the quantity ordered.
- Inventory purchases: When new stock is received and recorded in the Inventory page, the stock increases accordingly.
- Manual adjustments: Cashiers or administrators can manually adjust the stock level to account for spoilage, breakage, miscounts, or other discrepancies.
Product Stock Log
Every change to a product's stock level is recorded in the product stock log, creating a complete audit trail:
| Reason | Description |
|---|---|
sale |
Stock decreased due to a customer order. Links to the specific order record. |
purchase |
Stock increased due to an inventory purchase. Links to the specific inventory entry. |
adjustment |
Stock was manually adjusted by a cashier or administrator. |
waste |
Stock decreased due to spoilage, breakage, or write-off. |
return |
Stock increased due to a customer return or order cancellation. |
Each log entry records the quantity change (positive for increases, negative for decreases), the new stock level after the change, who made the change, and an optional note explaining the reason.
Product Categories
Products are grouped by category using a free-text field. Common categories include:
- Beverages (soft drinks, water, energy drinks)
- Hot Drinks (coffee, tea, hot chocolate)
- Snacks (chips, candy, chocolate bars)
- Food (sandwiches, wraps, hot meals)
- Accessories (headsets, USB drives, mouse pads)
Categories are used for filtering in the order interface. Cashiers can quickly switch between categories to find the right product. Categories also serve for grouping in sales reports.
There is no separate category management interface. Categories are created implicitly when you assign a category name to a product. To rename a category, update the category field on all products that use the old name.
Creating a Product
To add a new product to the catalog:
- Navigate to the Products page from the sidebar.
- Click the Add Product button in the toolbar.
- Enter the name (must be unique).
- Select or type a category.
- Choose the unit of measurement.
- Set the sale price (the amount charged to customers, in minor currency units).
- Set the VAT rate (as a decimal, e.g., 0.08 for 8%).
- Optionally enter a barcode for scanner support.
- Set the initial stock level if applicable.
- Click Save.
Editing a Product
Select a product from the list to open its detail view. You can update any field including name, price, category, VAT rate, stock level, and active status. Changes take effect immediately. If you update the price, the new price applies to all future orders.
Past orders are not affected by price changes. Each order item stores the unit_price at the time of sale as a snapshot.
Integration with Orders
When a cashier creates an order and adds a product:
- The product's current selling price and VAT rate are copied into the order item as snapshots.
- The line total is calculated as
unit_price * qty. - When the order is completed, the product's stock level is decremented by the ordered quantity.
- A stock log entry is created with
reason = 'sale'linking to the order.
If the order is later cancelled or refunded, the stock can be restored through a return stock log entry.