Cake Orders
Cake Orders is the bakery's order desk for custom and advance cakes — capture full design specs (size, flavour, shape, tiers, message, decoration notes), collect a deposit and track the balance, move the order through a clear status pipeline, and bill it into POS or schedule its production run without leaving the page.
Overview
Each order tracks Customer details, Delivery (date, slot, address), Cake Specs (size, flavour, shape, tiers, message, design notes, photo reference), and Pricing (base price, customization charge, total, advance collected, balance due) — total and balance are always calculated automatically, never typed directly.
Orders move through a 6-step status pipeline — Received → Design Confirmed → In Production → Ready → Delivered → Paid — plus a separate Cancelled state; each status has its own colour badge, and the table row highlights amber (due today) or red (overdue) based on delivery date.
From the row actions you can record a partial or full payment against the balance, bill the order straight into POS billing (auto-carrying the price and any already-collected advance as a discount), print the resulting invoice once billed, or schedule a production run for the cake with one click — the suggested production date defaults to one day before delivery.
When an order reaches Ready and has a phone number on file, a share button appears to send the customer a ready-for-pickup notice referencing the correct delivery slot and any balance due.
Before You Start
- No plan-tier restriction.
- Billing an order into POS requires normal Sales/Billing permission, since it hands off to the same billing screen used for any other sale.
- The Schedule Production Run shortcut only appears while an order is not yet Ready, Delivered, Paid or Cancelled.
Step-by-Step Guide
1 Create a new cake order
Customer Name is required and can be searched from your existing customer list; Balance Due is never a manually typed field — it is always Total minus Advance.
- Click New Order.
- Fill Delivery Date * and Delivery Slot (Morning 9am–12pm, Afternoon 12pm–4pm, Evening 4pm–8pm, or Pickup) and an optional Delivery Address.
- Under Cake Specifications, choose Size (250g up to 5 Kg, or Custom with a free-text weight), Flavour, Tiers (1–4) and Shape.
- Optionally add a Message on Cake (max 60 characters), Design / Decoration Notes and a Photo Reference.
- Under Pricing, enter Base Price * and any Customization Charge — Total is calculated automatically; enter Advance Collected and Balance Due is calculated automatically from the two.
- Add any Internal Notes — staff-only, never printed on the customer-facing order card.
- Click Create Order.
2 Advance the order's status
- Click the green status button in the Actions column — its label always matches the next status (Design Confirmed, In Production, Ready, Delivered, or Paid) — to move the order one step along the pipeline.
3 Collect a deposit or the remaining balance
- Click the balance amount in the Balance column, or the payment icon in Actions, to open Record Payment.
- Enter the Amount Received (capped at the remaining balance) and pick a Payment Method — Cash, UPI, Card, Cheque, or Bank Transfer — plus an optional note, e.g. a UPI reference number.
- Click Record Payment — the order's advance and balance update immediately, and the payment method/note are appended to the order's notes.
4 Bill the order into POS
- Click the invoice icon (only shown before the order has been billed) to send the order straight into POS billing as a single custom line item priced at the order total, with any advance already collected pre-applied as a line discount, so the cashier only has to collect the true remaining balance.
- Once billed, the invoice icon becomes a printer icon — click it any time to reprint that invoice.
5 Schedule the production run for a cake order
- Click the factory icon, shown on any order that is not yet Ready, Delivered, Paid or Cancelled, to open Schedule Production Run.
- It arrives pre-filled with an Item/Recipe name built from the flavour and size, a Production Date defaulting to one day before the delivery date, and a note referencing the order and customer.
- Adjust Qty if needed and click Schedule — the run then appears on the Production Schedule page.
6 Notify the customer when the cake is Ready
- Once an order is marked Ready and has a phone number on file, use the inline share button to send a ready-for-pickup message that includes the delivery slot, date, and any balance still due.
7 Search and filter orders
- Use the search box to find an order by customer name or phone.
- Use the status chip row — All, Received, Design Confirmed, In Production, Ready, Delivered, Paid, Cancelled — to narrow the table.
- Rows due today are highlighted amber, and overdue rows (past delivery date, not yet Delivered, Paid or Cancelled) are highlighted red automatically.
8 Edit or delete an order
- Click the edit icon to reopen the full order form for changes.
- Click the × icon and confirm to permanently delete an order — reserve this for orders created in error, since delivered or paid orders should normally stay on record.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
New Order | Opens the cake order form. |
Due Today / Active Orders / Balance Pending stat tiles | Summary counts and totals across all current orders. |
Search customer name or phone… | Filters the order table. |
Status filter chips | All plus the 7 individual statuses. |
Customer / Cake / Delivery / Amount / Advance / Balance / Status columns | The order table. |
Delivery Date * / Delivery Slot / Delivery Address | When and where the cake is delivered or collected. |
Size / Flavour / Tiers / Shape | Core cake specifications. |
Custom Weight | Only shown when Size is set to Custom. |
Message on Cake | Max 60 characters, printed on the piping/topper. |
Design / Decoration Notes | Free-text instructions for fondant work, theme, colours etc. |
Photo Reference | URL or description of a reference image for the design. |
Base Price * / Customization Charge | The two components that sum to the order Total. |
Total (auto) / Advance Collected / Balance Due (auto) | Total and Balance Due are always calculated, never typed directly. |
Internal Notes | Staff-only notes, never printed on the customer-facing order card. |
Status advance button | Label always matches the next status in the pipeline. |
Record Payment icon | Opens the deposit/balance payment modal. |
Bill via POS icon | Shown before an order is billed; sends it to POS billing as a pre-priced custom line item. |
Print Invoice icon | Replaces the Bill via POS icon once the order has a linked sale; reprints that invoice. |
Schedule production run icon | Opens a pre-filled Production Schedule form for this cake. |
Share button | Only shown at Ready status with a phone number on file; sends a ready-for-pickup notification. |
Edit icon | Reopens the full order form. |
Delete (×) icon | Permanently deletes the order after confirmation. |
Amount Received * (Record Payment) | Capped at the order's current balance due. |
Payment Method chips | Cash, UPI, Card, Cheque, Bank Transfer. |
Tips & Best Practices
- Always collect at least a partial Advance on custom cake orders — the Balance Pending tile makes it easy to spot which orders still need to be chased before delivery.
- Use the factory icon to schedule production the moment an order is confirmed rather than remembering to do it later — the 1-day-before-delivery default keeps timing consistent across every order.
- Fill Design / Decoration Notes and Photo Reference in detail for anything with custom fondant work — it is the only record the kitchen team sees once the customer has left.
- Watch the Due Today tile every morning — combined with the amber/red row highlighting, it is the fastest way to see which cakes must be ready today.
Troubleshooting & FAQ
The invoice icon disappeared after I billed an order.
I can't find the production-scheduling icon on some orders.
Balance Due looks wrong after I edited the order.
The share button isn't showing even though the order is Ready.
Recording a payment says the amount exceeds the balance due.
🧑💻 Developer Notes
Source component(s):
frontend-app/pos-app-backery/src/pages/bakery/CakeOrdersPage.jsxfrontend-app/packages/pos-react-lib (GenericOrderModal, DocumentShareBar, openInBilling)
Backend endpoints used:
GET /bakery/cake-ordersPOST /bakery/cake-ordersPUT /bakery/cake-orders/:idPATCH /bakery/cake-orders/:id/statusDELETE /bakery/cake-orders/:idGET /sales/:idGET /settingsPOST /bakery/production
Related tables (db-core repositories):
CakeOrderSaleProductionRunCustomer
Redux slices:
None directly — dispatches to Redux only via openInBilling when handing an order to POS billing
Feature flag key: cake_orders
A local, bakery-only component that composes several shared pos-react-lib primitives: GenericOrderModal (the tabbed order form), DocumentShareBar (the ready-for-pickup share button) and openInBilling (hands the order to POS billing with the order pre-loaded as a single custom line item, tagged so billing can return here afterwards via a sourceOrder reference of type "CAKE").