caterium-app/docs/releases/2026-09-20-BANQUET-CLIENT-MENU.md
pavlov346346-source bc3f186992
One-page banquet menu for the client (#36)
Add a single-page A4 preview and PDF for all selected banquet dishes or a ready-menu selection, with company branding and optional costs. Preserve draft/order state and saved line prices, enforce access and tenant scope, and fail clearly rather than clipping oversized menus. Nineteen targeted browser scenarios passed twice and the generated iPhone PDF was visually checked. Full main QA must pass before the existing automatic production promotion; production verification includes the new renderer and real-asset client menu export.
2026-09-20 12:54:42 +03:00

1.4 KiB

One-page banquet menu for the client

Banquet menu → select individual dishes or choose a ready menu → Меню для клиента. The preview and downloaded PDF use the same single A4 portrait canvas, with the company document name/logo/contacts, event date, guests, and selected dishes grouped by course. Costs can be shown or hidden. Sharing uses the system file share sheet where supported; downloading a PDF is always available after rendering.

The document reads all selected dishes, not just the current search/group/package filter. Existing line price snapshots (including free lines) take precedence over current catalog prices. Otherwise active catalog promotions apply with kopecks. Pricing covers only selected menu dishes, not the order's delivery, services or order-wide discount. The calculation is explicitly labelled in the document.

Opening/exporting never applies the selection to an order, writes local storage or saves a draft. A profile/company switch closes the preview and invalidates an unfinished render. Existing catalog access and client-offer subscription limits are respected.

Layout measures Cyrillic text after bounded font loading, balances one/two columns and adjusts type size down to a legible minimum. Names are never truncated and no dish is silently omitted. A menu too large for a readable single page produces a clear error rather than an extra page or tiny/clipped text.