Odoo POS Bar Upsell & Modifier

Odoo POS Bar Upsell & Modifier

Bottle service sells a bottle with a number of mixers included — six with a 750ml, sixteen with a three litre. Odoo will offer the mixers but counts nothing, so the allowance lives in the waiter's head and the bar finds out when the ticket arrives. This puts the number on the bottle and makes the till keep it.

5 min

Share to :

Link copied

Setting a bottle up

Three things on the product form, then nothing else to maintain. A product with no limit set is left entirely alone, so installing it changes nothing elsewhere in the catalogue.

Pick the mixers

Point of Sale ▸ Optional Products on the bottle, exactly as standard.

Set the Upsell Limit

The field this module adds, beside them. Zero means no limit.

Route the mixer category to the bar printer

The same printer as the bottle's, so both land on one ticket.

A typical bottle-service list

Bottle

Included

750ml

6

1 litre

8

2 litre

12

3 litre

16

Taking the order

The allowance is counted across all the mixers together, not one by one, and it scales with the bottle's quantity — two bottles come with two allowances.

What the waiter sees

2 of 6included4 left

4 of 6included2 left

6already reached for this bottle

The strip above the options. Green while there is room, amber as it runs down, red on the last one.

A grid, not a scroll

Seventeen mixers as tiles — name, picture, Add — read at a glance instead of scrolled through. Anything chargeable shows its extra price.

Blocked, not quietly charged

The one that would go over is refused from the grid, from the quantity box, and typed onto the order line.

Add stays live

With nothing chosen it closes without adding, so a bottle can go on the order before the guest has decided.

Mixers fold under their bottle

A badge on the bottle counts the drinks taken with it — drinks, not lines. Open while the order is being built, folded once it has gone.

Once the bar has it

Everything here hangs on one question — has the bar been given this drink? — and it is answered from the preparation records, which Odoo writes as the ticket prints.

Upsell limit: 6

You are trying to select 7 for Aperol Bottle 750ml.

Odoo's own dialog, not an invented one. A till is a loud room, and a message that looks like every other message gets read.

A sent bottle cannot be reopened

Holding it gives Odoo's standard refusal instead of the mixer list.

A poured drink takes no press

No selection, no numpad, no delete — the row simply does not answer.

Cancelling is still possible, deliberately

Hold the bottle and set the number: the bar gets a proper cancellation ticket.

Wherever the order goes

A bottle and its mixers are one thing. Six features exist only to keep them that way through everything a busy room does to an order.

Quantity

Mixers scale with the bottle in whole drinks — never below what the bar poured, never over the allowance the bottle now has.

Deletion

Removing a bottle removes its mixers, so none are left billing invisibly.

The note split

Odoo's seat-note flow splits a line in two. The first keeps exactly what it had; the new one is asked what goes with it.

Bill splitting

Mixers are not drawn — they are not something to hand to one guest or the other — but they cross with their bottle in proportion.

Table transfer

Every line is copied with a new identity, so the bottle link is rebuilt on the destination before Odoo saves.

Courses

A mixer follows its bottle into whatever course it is moved to, and a course counts as fired when the bar has everything in it.

At the bar printer

A bottle and six mixers is seven items on a standard ticket, all the same size, in the same column. Folded, the bottle is the item and the mixers are what goes with it.

NEW

Drinks

1  Aperol Bottle 750ml

- 1 Apple Lacnor

- 3 Pepsi Btl (Chilled)

- 2 Ginger Ale Can

Receipt and label printers alike

Both templates print the same layout in the same order.

A mixer without its bottle names it

2 Coke (Bacardi 1L) — a bar with four tables on bottle service cannot place a bare line.

Cancellations keep their sign

Unsigned mixers under a bottle reading −1 would read as six to pour.

One ticket per bottle

On a split-per-product printer the mixers are shared out as whole drinks that add up to what was ordered.

What it deliberately does not do

Four things were looked at and left. Each is written down rather than discovered later.

It is not a comboA combo is a second product selling alongside the real bottle, so every bottle is counted twice in reporting — and a combo cannot be reopened once the order has reached the bar, nor have a mixer added later.

Mixers are not reordered inside a courseA mixer sits in its bottle's course, but the restaurant module draws that block itself, so it is not always immediately beside it.

Deleting a sent mixer prints without the bottle's nameOdoo builds a cancellation line from the preparation record, which carries no link back. Reducing one is fine; only deletion loses the name.

Restaurant features are requiredTables, courses and bill splitting are part of what it keeps together, so pos_restaurant is a dependency rather than an option.

Why Rizztech?

We only take on important projects where we can deliver real value. Instead of managing hundreds of clients, we focus on a smaller number of businesses and build solutions with full attention and ownership.

When your business grows, it becomes part of our portfolio and helps us reach more clients through real success stories.

That means:

  • Better support

  • Better customization

  • Better business understanding

  • Long-term commitment to your growth

We only take on important projects where we can deliver real value. Instead of managing hundreds of clients, we focus on a smaller number of businesses and build solutions with full attention and ownership.

When your business grows, it becomes part of our portfolio and helps us reach more clients through real success stories.

That means:

  • Better support

  • Better customization

  • Better business understanding

  • Long-term commitment to your growth

Setting a bottle up

Three things on the product form, then nothing else to maintain. A product with no limit set is left entirely alone, so installing it changes nothing elsewhere in the catalogue.

Pick the mixers

Point of Sale ▸ Optional Products on the bottle, exactly as standard.

Set the Upsell Limit

The field this module adds, beside them. Zero means no limit.

Route the mixer category to the bar printer

The same printer as the bottle's, so both land on one ticket.

A typical bottle-service list

Bottle

Included

750ml

6

1 litre

8

2 litre

12

3 litre

16

Taking the order

The allowance is counted across all the mixers together, not one by one, and it scales with the bottle's quantity — two bottles come with two allowances.

What the waiter sees

2 of 6included4 left

4 of 6included2 left

6already reached for this bottle

The strip above the options. Green while there is room, amber as it runs down, red on the last one.

A grid, not a scroll

Seventeen mixers as tiles — name, picture, Add — read at a glance instead of scrolled through. Anything chargeable shows its extra price.

Blocked, not quietly charged

The one that would go over is refused from the grid, from the quantity box, and typed onto the order line.

Add stays live

With nothing chosen it closes without adding, so a bottle can go on the order before the guest has decided.

Mixers fold under their bottle

A badge on the bottle counts the drinks taken with it — drinks, not lines. Open while the order is being built, folded once it has gone.

Once the bar has it

Everything here hangs on one question — has the bar been given this drink? — and it is answered from the preparation records, which Odoo writes as the ticket prints.

Upsell limit: 6

You are trying to select 7 for Aperol Bottle 750ml.

Odoo's own dialog, not an invented one. A till is a loud room, and a message that looks like every other message gets read.

A sent bottle cannot be reopened

Holding it gives Odoo's standard refusal instead of the mixer list.

A poured drink takes no press

No selection, no numpad, no delete — the row simply does not answer.

Cancelling is still possible, deliberately

Hold the bottle and set the number: the bar gets a proper cancellation ticket.

Wherever the order goes

A bottle and its mixers are one thing. Six features exist only to keep them that way through everything a busy room does to an order.

Quantity

Mixers scale with the bottle in whole drinks — never below what the bar poured, never over the allowance the bottle now has.

Deletion

Removing a bottle removes its mixers, so none are left billing invisibly.

The note split

Odoo's seat-note flow splits a line in two. The first keeps exactly what it had; the new one is asked what goes with it.

Bill splitting

Mixers are not drawn — they are not something to hand to one guest or the other — but they cross with their bottle in proportion.

Table transfer

Every line is copied with a new identity, so the bottle link is rebuilt on the destination before Odoo saves.

Courses

A mixer follows its bottle into whatever course it is moved to, and a course counts as fired when the bar has everything in it.

At the bar printer

A bottle and six mixers is seven items on a standard ticket, all the same size, in the same column. Folded, the bottle is the item and the mixers are what goes with it.

NEW

Drinks

1  Aperol Bottle 750ml

- 1 Apple Lacnor

- 3 Pepsi Btl (Chilled)

- 2 Ginger Ale Can

Receipt and label printers alike

Both templates print the same layout in the same order.

A mixer without its bottle names it

2 Coke (Bacardi 1L) — a bar with four tables on bottle service cannot place a bare line.

Cancellations keep their sign

Unsigned mixers under a bottle reading −1 would read as six to pour.

One ticket per bottle

On a split-per-product printer the mixers are shared out as whole drinks that add up to what was ordered.

What it deliberately does not do

Four things were looked at and left. Each is written down rather than discovered later.

It is not a comboA combo is a second product selling alongside the real bottle, so every bottle is counted twice in reporting — and a combo cannot be reopened once the order has reached the bar, nor have a mixer added later.

Mixers are not reordered inside a courseA mixer sits in its bottle's course, but the restaurant module draws that block itself, so it is not always immediately beside it.

Deleting a sent mixer prints without the bottle's nameOdoo builds a cancellation line from the preparation record, which carries no link back. Reducing one is fine; only deletion loses the name.

Restaurant features are requiredTables, courses and bill splitting are part of what it keeps together, so pos_restaurant is a dependency rather than an option.

Why Rizztech?

We only take on important projects where we can deliver real value. Instead of managing hundreds of clients, we focus on a smaller number of businesses and build solutions with full attention and ownership.

When your business grows, it becomes part of our portfolio and helps us reach more clients through real success stories.

That means:

  • Better support

  • Better customization

  • Better business understanding

  • Long-term commitment to your growth