Skip to content

Feature: Scheduled menu-item offers by time, date, and weekday #632

Description

@itsbkm

Problem or motivation\n\nCafes often run item-level promotions such as happy-hour pricing, weekday specials, and month-specific sales. Staff should not have to remember to apply these discounts manually, and offers should activate and expire automatically.\n\n## Current behavior\n\nFloCafe has manual checkout discounts and a broader promotion-engine proposal in #359, but there is not yet a focused workflow for managing scheduled offers directly against menu items.\n\n## Desired outcome\n\nAdd menu-item offers that automatically apply a discount when the qualifying item is added to an order or the order is priced.\n\nAn offer should support:\n\n- A percentage or fixed-amount discount.\n- One or more specific menu items, with clear behavior for variants/add-ons if applicable.\n- A start and end date/time, including AM/PM-aware local store time.\n- Recurring weekday restrictions (for example, Monday-Friday).\n- Month-specific or date-range availability.\n- Active/inactive status and a clear preview of the effective schedule.\n- Conflict handling when multiple offers match the same item (priority, stacking rules, or another explicit deterministic rule).\n\nExamples:\n\n- 20% off a particular item from 3:00 PM to 5:00 PM.\n- A breakfast item offer valid only on weekdays.\n- A seasonal offer active during a selected month/date range.\n\nThe final bill should clearly show the applied offer and discount.\n\n## Proposed technical approach\n\nTreat this as the menu-item/scheduling detail of the promotion engine proposed in #359, reusing its promotion, adjustment, priority, stacking, and historical-snapshot concepts rather than creating a separate discount system.\n\n- Use the configured store timezone for schedule evaluation.\n- Evaluate offers through backend-authoritative pricing.\n- Store an applied-offer snapshot on the order so later edits do not change historical bills.\n- Ensure offline POS operation continues to work with locally stored schedules.\n- Define whether offers can combine with customer-type discounts, manual discounts, coupons, or other promotions.\n\n## Acceptance criteria\n\n- [ ] Authorized users can create, edit, activate, deactivate, and delete/archive menu-item offers.\n- [ ] Offers can target individual menu items and define percentage or fixed-amount discounts.\n- [ ] Offers support start/end date and time in the configured store timezone.\n- [ ] Offers support weekday restrictions and date/month ranges.\n- [ ] Matching offers are applied automatically without staff re-entering a discount.\n- [ ] Multiple matching offers resolve deterministically according to documented priority/stacking rules.\n- [ ] The checkout and receipt show the applied offer and resulting discount.\n- [ ] Historical orders retain the applied-offer snapshot.\n- [ ] Offer evaluation works offline using the locally available catalog and schedule.\n- [ ] Interaction with customer-type, manual, and coupon discounts is documented and tested.\n\n## Additional context\n\nThis is a planned enhancement for later prioritization. See #359 for the broader promotion-engine boundary and avoid implementing a parallel promotion model.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions