HandyCafe Docs
owner cashier

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:

  1. Navigate to the Products page from the sidebar.
  2. Click the Add Product button in the toolbar.
  3. Enter the name (must be unique).
  4. Select or type a category.
  5. Choose the unit of measurement.
  6. Set the sale price (the amount charged to customers, in minor currency units).
  7. Set the VAT rate (as a decimal, e.g., 0.08 for 8%).
  8. Optionally enter a barcode for scanner support.
  9. Set the initial stock level if applicable.
  10. 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:

  1. The product's current selling price and VAT rate are copied into the order item as snapshots.
  2. The line total is calculated as unit_price * qty.
  3. When the order is completed, the product's stock level is decremented by the ordered quantity.
  4. 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.