Source: https://wpinplate.com/en/docs/promotions-and-happy-hours/

# Promotions, Omnibus and happy hours

WP InPlate shows reductions in the menu the way the law requires: for every announced reduction the customer sees the lowest price from the 30 days before it. On top of that there are happy hours – a discount applied automatically on chosen days and at chosen times, without discount codes.

Product prices in WooCommerce don't change in the process. WP InPlate saves the price history and the happy hours rules in its own tables.

Free delivery from an amount, order discounts, 2+1 and free items are described in [Promotions](/en/docs/promotions/).

## The sale price in the menu

You set the sale price as before: in the manager panel (**Products → price**) or in the WooCommerce product editor. In **Settings → Sales → Products → Sale price** you choose how to show it to the customer:

| Option | What the customer sees |
|---|---|
| **Show the sale price instead of the regular price** (default) | Only the current price, as before |
| **Strike through the regular price and show the sale price** | The struck-through regular price next to the sale price |

The setting applies to the list of products in the menu, the product window and related products (cross-sell).

## The lowest price in 30 days (Omnibus)

Poland's act on informing about the prices of goods and services (implementing the Omnibus Directive, EU 2019/2161) requires that every announcement of a reduction states the lowest price from the 30 days before it was introduced. WP InPlate does this by itself:

- **In the product window** – at the very bottom, under the add button: “Lowest price in the 30 days before the reduction: €15.00”. The line appears for every product on sale, in both price display modes.
- **On the menu card and in related products** – a shorter line under the price, whenever the card shows a reduction: a struck-through price or [happy hours](#happy-hours).

The switch: **Settings → System → Omnibus Directive → Show the lowest price of the last 30 days** (on by default).

### How WP InPlate knows past prices

WooCommerce stores only the current price, so WP InPlate keeps its own price history. It saves every price change – from the manager panel, from WooCommerce, from an import and from scheduled WooCommerce sales. Once a day it checks that no change was missed.

After the update to version 1.27.0, each product's history starts from its last save in WooCommerce: from that moment the price certainly hasn't changed. This way the lowest price is known from day one for most products.

### When a reduction isn't shown

If WP InPlate doesn't know the lowest price from the last 30 days, it doesn't announce a reduction – the customer sees only the current price, without a strike-through and without the happy hours badge. The discount in the cart works normally. This applies to:

- products that were already on sale in WooCommerce before the update (their history starts together with the reduction),
- products added or changed during a running happy hours window – the badge appears from the next window.

After you turn off the Omnibus switch, the line with the lowest price disappears, and the strike-through follows the **Sale price** setting.

**Important:** the seller is responsible for complying with the law. WP InPlate shows the information in the menu, the product window and related products – not on TV screens. If you mark a dish as on sale on a TV in your venue (e.g. with a “Promotion” badge), take care of the lowest-price information yourself. If you are unsure how the rules apply to your offer, ask a lawyer.

## Happy hours

A discount on chosen categories or products that works by itself on the days and at the times you set – e.g. −20% on burgers Monday to Friday 15:00–17:00, at QR tables only.

You turn the feature on in **Settings → Sales → Happy hours → Enable the Happy hours feature** (off by default). A restaurant that doesn't use happy hours doesn't see it anywhere. Once it is on and the settings are saved, you set the rules in two places, with the same options:

- in the manager panel in the KDS: the **Happy hours** tab,
- in the WordPress dashboard: **InPlate → Happy hours**.

The **Happy hours on** switch in the panel turns all rules on and off at once, for day-to-day use. Turning the feature off in the settings hides the tab and the page and stops the discounts – the rules stay saved and come back when you turn it on again.

### A happy hours rule

| Field | Description |
|---|---|
| **Name for customers** | Shown next to the products and in the order summary, e.g. “Happy Hours” |
| **Days of the week** | The days the rule works on |
| **Hours** | From–to. A window past midnight (e.g. 22:00–02:00) belongs to the day it starts on |
| **Discount** | A percentage or an amount off the product's price |
| **Categories**, **Products** | What the rule covers. A category also covers its subcategories |
| **Sales channels** | QR table, Dine-in, Pickup, Delivery. You can tick a channel that is off in the schedule or has no active QR tables in advance – the discount works once the channel starts taking orders |
| **Valid dates (optional)** | Dates from–to. Empty fields = no limit |
| **Options → Include add-ons in the discount** | A percentage discount also covers the extra charges for the dish's add-ons. Off by default: add-ons stay at full price |
| **Options → Apply to products on sale** | Happy hours also works on products on sale in WooCommerce, calculating the discount from the sale price. Off by default |
| **Options → Combine with discount codes** | The discount combines with the customer's discount codes, also with “individual use only” codes. On by default |
| **Active** | Turns the rule off without deleting it |

What counts is the time the order is placed, not the pickup or delivery time. An order placed at 11:00 for 16:00 during happy hours 10:00–12:00 gets the discount.

### How the discount is applied

- The discount is applied by itself in the cart, as an item with the rule's name. The customer can't remove it or enter it as a code.
- It covers the dish's add-ons and products on sale in WooCommerce only if you turn this on in the rule's **Options**. For a product on sale, the customer sees the struck-through regular price, and the discount is calculated from the sale price.
- Discount codes: with **Combine with discount codes** on, the discounts add up. With it off, whatever is in the cart first wins: if the customer already has a code, the rule isn't applied on top of it; if the rule applies, a code can't be added (the customer sees a message). The product window tells the customer that the discount doesn't combine with codes.
- When two rules cover a product, the one with the lower price applies – the discounts don't add up.
- The order minimum and the delivery zone's minimum are counted after the discount.

### What customers see

- **A bar above the menu**: “Happy Hours until 17:00 – selected products discounted”, with a countdown in the last 15 minutes.
- **On the card and in the product window**: the badge “Happy Hours −20% | until 17:00”, under it the methods the discount applies to (e.g. “Applies to: Dine-in, Delivery”), the price after the discount and the line with the lowest price in 30 days.
- **In the order summary**: a separate row with the rule's name and the discount amount.

Menu prices change by themselves at the window's start and end time, without refreshing the page.

### Sales channels in the menu

- A rule for QR tables only shows only in the menu for ordering at a table.
- In the regular online menu the customer hasn't chosen the fulfillment method yet. That's why the menu shows only rules that cover all enabled online methods. A rule for e.g. pickup only appears in the order summary when the customer chooses pickup.

### Happy hours ending while the customer orders

What counts is the moment the order is placed. If the window ends before the customer clicks **Order and pay**, the order isn't quietly placed at a different price: the customer sees the message “Happy hours have just ended. Check the new total and place the order again.” and the new total. Once the order is placed, the price no longer changes, also with a later online payment.

### Happy hours in the order

- The WooCommerce order has a regular discount line – it shows in the order screen, in emails and on invoices.
- The KDS and the label show the rule's name. The order keeps a copy of the rule from the moment it was placed, so a later change or deletion of the rule doesn't change it.
- In the order editor in the WordPress dashboard the discount has a code like `happy-hours-12`.
- WooCommerce Analytics coupon reports may not include happy hours discounts – they are visible in the orders and their totals.

### Happy hours and Omnibus

Prices from earlier happy hours windows count toward the lowest price in 30 days – on every channel, also when the rule covered e.g. QR tables only. For a product on sale in WooCommerce, the sale price from that period counts too. With daily happy hours the line therefore usually shows yesterday's happy hours price, e.g. “Lowest price in the 30 days before the reduction: €16.00” next to a current price of €16.00. This is less impressive, but it complies with the law. Only windows from periods when happy hours were running count – with the feature on and the switch in the panel on.
