Home / Help Center / pos-app-bakery / bakery / Festival Orders
📅 bakery

Festival Orders

Festival Orders runs an entire festival advance-order campaign (Diwali sweets, Christmas cakes, and similar) in one place — set target production quantities per product, log every customer order with an advance payment, and watch fulfilment progress toward each target.

📍 Menu path: Bakery → Festival Orders
👤 Who uses it: Staff/managers coordinating festival bulk advance orders
🏷️ Plan tier: advanced+

Overview

You start by creating a Festival — its name, Event Date, an optional Order Cutoff Date, and a list of Products with a target production Quantity and price for each.

Selecting a festival from the left-hand list opens its Orders panel: summary cards for total Orders, Advance collected, Total value and Balance pending, plus a Production Needs section showing an ordered-vs-target progress bar for every product in the festival.

Each customer order moves through a fixed status flow — Received → Confirmed → Ready → Delivered (or Cancelled at any point) — using a single "advance status" button that always shows the next step.

Orders can be billed straight into POS (once, via a "Bill via POS" action) and, after billing, the printed invoice can be reopened directly from the order row.

Before You Start

Step-by-Step Guide

1 Set up a festival and its production targets

  1. Click New Festival, enter the Festival Name (e.g. "Diwali 2026") and Event Date, and optionally an Order Cutoff Date and Notes.
  2. Under Products & Target Quantities, search for and select each product you plan to sell for this festival (or type a custom name), set its Target Qty and Price, and click Add for more rows.
  3. Click Create Festival — it appears in the left-hand festival list, selected automatically if it's the first one.

2 Log a customer's festival order

  1. Select the festival from the left list, then click Add Order in the Orders panel.
  2. Enter the customer's name and phone, then enter a Quantity against each product already defined for the festival (only products with a quantity greater than zero are included).
  3. Enter any Advance Amount collected and Notes, then click Add Order — the order is added with status Received.

3 Track fulfilment status and production needs

  1. Review the Production Needs progress bars — each shows Ordered vs. Target quantity for a product, turning green once the target is fully met.
  2. On each order card, click the "→ [Next Status]" button to advance it one step: Received → Confirmed → Ready → Delivered.
  3. Watch the summary cards (Orders / Advance / Total / Balance) update as orders are added or their amounts change.

4 Bill an order and print its invoice

  1. On an order that hasn't been billed yet (no linked sale), click the invoice icon (Bill via POS) to open Billing pre-loaded with that order's items, customer and a note referencing the festival and advance collected.
  2. Once a sale exists for the order, the invoice icon is replaced with a print icon — click it to reopen and print that sale's invoice directly from this page.

5 Edit or delete a festival

  1. Click the pencil icon on a festival in the left list to edit its name, dates, notes or product targets.
  2. Click the ✕ icon to delete a festival — you are warned this also deletes every order logged against it, and must confirm.

Every Field & Button, Explained

Field / ButtonWhat it does
New FestivalOpens the form to create a new festival campaign with its name, event date, cutoff date, notes and product targets.
Festival list (left panel)Every festival created, showing its event date, a "Order cutoff passed" warning once relevant, and its product count; click one to view its orders.
Orders / Advance / Total / Balance summary cardsLive totals for the selected festival — order count, advance collected, total order value and balance still pending.
Production NeedsOne progress bar per product in the festival, comparing quantity ordered so far against its target quantity.
Add OrderOpens the order form pre-populated with the festival's product list for entering a customer's quantities and advance payment.
Order status badgeReceived (blue), Confirmed (purple), Ready (green), Delivered (teal) or Cancelled (red).
"→ Next Status" buttonAdvances an order one step along Received → Confirmed → Ready → Delivered; not shown once Delivered or Cancelled.
Bill via POS (invoice icon)Opens Billing pre-loaded with the order's items and customer; only shown before a sale has been created for that order.
Print Invoice (printer icon)Reopens and prints the linked sale's invoice; only shown once the order has been billed.
Edit / Delete festival (pencil / ✕ icons)Edits the festival's setup, or deletes it and all its logged orders after confirmation.

Tips & Best Practices

Troubleshooting & FAQ

I can't add an order — it says a customer name is required.
Customer Name is mandatory on every festival order, along with at least one product line with a quantity greater than zero.
The invoice/print icon is missing from an order.
Bill via POS only shows before a sale exists for that order; once billed, it is replaced by a print icon for the linked invoice — an order can only be billed once.
A product doesn't show up in Production Needs even though I logged orders for it.
Production Needs is seeded from the festival's defined product list, but also picks up any product named on an order even if it wasn't part of the original target list — check for a typo or an extra custom item name that doesn't match.
I deleted a festival by mistake.
Deleting a festival also deletes every order logged against it and cannot be undone from this page — you will need to recreate the festival and re-enter its orders.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/fnb/FestivalOrdersPage.jsx (exported as FnbFestivalOrdersPage)
  • frontend-app/packages/pos-react-lib (GenericOrderModal, openInBilling, InvoicePrint — shared components)

Backend endpoints used:

  • GET /bakery/festivals
  • POST /bakery/festivals
  • PUT /bakery/festivals/:id
  • DELETE /bakery/festivals/:id
  • GET /bakery/festivals/:id/orders
  • POST /bakery/festivals/:id/orders
  • PATCH /bakery/festivals/:id/orders/:orderId/status
  • GET /products
  • GET /settings
  • GET /sales/:id

Related tables (db-core repositories):

  • Festival
  • FestivalProduct
  • FestivalOrder
  • Sale

Feature flag key: festival_orders (requires advanced plan tier or above)

The component lives under the shared pos-react-lib/src/pages/fnb/ folder (exported as FnbFestivalOrdersPage), meaning it is written to be reusable across food & beverage variants, not bakery-exclusive at the code level — the bakery variant currently mounts it at /bakery/festival-orders. "Bill via POS" uses the shared openInBilling utility with sourceOrder: { type: "FESTIVAL", id, festivalId, returnPath: "/bakery/festival-orders" }.