The Point of Sale (POS) module is the main workstation for cashiers and front-of-house staff. It combines a live menu catalog with a full cart and checkout panel, letting staff capture customer details, choose an order type, review IVA-inclusive totals, and submit the order to the kitchen — all in a single split-screen view. After submission a WhatsApp comanda link is generated automatically, and the ticket number can be used to print a paper comanda.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/teofilobetancourt/Tradiciones-y-Sabores/llms.txt
Use this file to discover all available pages before exploring further.
Accessing the POS
Navigate to the staff system and select Caja / POS from the sidebar. The POS is the default view when the app loads without a?view URL parameter.
Order Workflow
Fill in Customer Information
Enter the client’s details in the Datos del Cliente panel on the right side of the screen:
| Field | Required | Notes |
|---|---|---|
nombre | ✅ Yes | Stored in uppercase automatically |
cedula | No | National ID or RIF (e.g. V-12345678) |
telefono | No | Used in the WhatsApp comanda link |
Select Order Type
Choose how the order will be fulfilled. Each type unlocks an additional required field:
The type is sent directly to the backend as the
| Type | Label | Additional Field |
|---|---|---|
mesa | Mesa | Table number (integer) |
pickup | Para Llevar | None — customer picks up at the counter |
delivery | Delivery | Full delivery address (text) |
tipo field on the Pedido record.Browse the Menu Catalog
The left panel shows the full product catalog grouped by category tab. Click a tab to filter the grid:
- Entrada
- Plato Principal
- Postre
- Bebida
- Acompañante
disponible = false) are displayed but cannot be added to the cart.Build the Cart
Click any available product card to add it to the cart. In the cart panel you can:
- Increase or decrease quantity using the
+/−controls. - Add special notes per item (e.g. sin cebolla, término 3/4). Notes are stored on
DetallePedidoand appear on the Kitchen display. - Remove an item entirely using the trash icon.
Review Totals
The order summary is calculated automatically:All three values are shown in the footer of the cart panel and are stored in the
Factura record linked to the order.Confirm the Order
Click Confirmar Pedido. The POS will:
POST /api/v1/ordenes— creates thePedido(state:recibido), persists theDetallePedidorows, and auto-generates aFactura.- Open a pre-filled WhatsApp link (
wa.me) in a new tab so the cashier can send the comanda to the restaurant’s WhatsApp number. - Display a success toast with the ticket number and customer name.
- Reset the cart, customer fields, and delivery inputs.
Totals Calculation Reference
| Value | Formula | Example |
|---|---|---|
| Subtotal | Σ precio × cantidad | $25.00 |
| IVA (16%) | subtotal × 0.16 | $4.00 |
| Total | subtotal + IVA | $29.00 |
impuesto column in the Factura table stores the IVA amount. The total column stores the grand total including IVA.
Order Types and Required Fields
tipo | Customer Sees | Required in Form | Stored On |
|---|---|---|---|
mesa | 🪑 Mesa | Table number (mesa integer) | Pedido.id_mesa |
pickup | 🛍️ Para Llevar | — | Pedido.tipo_pedido = pickup |
delivery | 🛵 Delivery | Delivery address (text) | Pedido.direccion_envio |
For mesa orders, the table number you enter is stored as
id_mesa on the Pedido record and is prominently displayed on the Kitchen order card. Make sure to enter the correct table number before confirming.Backend API Reference
The POS communicates with two endpoints:Fetch the Menu Catalog
Producto objects. Items that do not have a disponible flag are treated as available by default.
The
x-api-key header is sent by the frontend using the VITE_API_KEY environment variable, but the backend does not validate it — no authentication middleware is enforced server-side. The header is included for forward-compatibility and does not restrict access to this endpoint.Create an Order
id_producto to a Plato record, calculates the subtotal per line, and creates a linked Factura with estado_pago = pendiente. The response includes the generated num_ticket.
Order Response
WhatsApp Integration
After a successful order submission, the POS generates a formatted WhatsApp message and opens it in a new tab viahttps://wa.me/<WA_NUMERO>. The restaurant phone number is configured through the environment variable: