| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 737 |
| Technical Name |
trdo_pos_discount_amount |
| License | LGPL-3 |
| Website | https://truodo.com/ |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 737 |
| Technical Name |
trdo_pos_discount_amount |
| License | LGPL-3 |
| Website | https://truodo.com/ |
| Versions | 17.0 18.0 19.0 |
POS Global Discount
Apply percentage or fixed-amount discounts on entire POS orders in seconds — with built-in max-discount controls, cashier validation, and a clean numpad popup.
Standard Odoo POS — What's Missing
- No built-in option to apply a discount on the entire POS order at once
- Fixed-amount discount on orders is not supported out of the box
- No way to set a maximum discount percentage or amount per shop
- Cashiers can only discount individual lines — tedious for large orders
- No validation to prevent excessive or unauthorized discounts
- No popup UI — cashiers must manually edit each order line
What This Module Solves
- One-click global discount button inside the POS actions menu
- Choose between percentage discount or fixed amount per transaction
- Configure maximum allowed discount per POS shop from backend settings
- Automatic discount line created on the order — no manual editing
- Real-time validation with error notification when limits are exceeded
- Modern numpad popup — fast, touch-friendly, works on any screen size
Global Discount Button
A dedicated Global Discount button appears in the POS actions menu whenever the feature is enabled from settings.
Percentage Discount
Enter a percentage value and the module automatically calculates the discount amount based on the order subtotal.
Fixed Amount Discount
Enter an exact currency amount to discount from the order total. Ideal for vouchers or manager-approved discounts.
Max Discount Controls
Set a maximum discount percentage and maximum amount per POS shop. Cashiers are blocked from exceeding these limits.
Modern Numpad Popup
A clean popup lets the cashier pick the discount type and enter a value — touch-optimized for tablets and POS terminals.
Automatic Discount Line
Discount is added as a negative order line using a configurable discount service product. Works with receipts and reports.
Replace & Reapply
If a discount is already applied, confirming a new value removes the old line and adds the updated one automatically.
Per-Shop Configuration
Each POS configuration can have its own discount product, max percentage, and max amount — full control across multiple shops.
Error Notifications
If a cashier enters a discount exceeding the configured limit, an instant error notification appears inside the popup.
Configure in Backend
Enable Global Discount in POS settings, set a discount product, and define max discount limits.
Add Products to Order
Open POS, add products to the order — the discount button appears in the actions menu.
Click Global Discount
Tap the button, select Percentage or Fixed Amount, enter the value on the numpad.
Confirm & Pay
Confirm the discount — it's instantly added as an order line. Proceed to payment as normal.
| Setting | Description |
|---|---|
| Enable Global Discount | Shows or hides the Global Discount button in the POS actions menu |
| Global Discount Product | Service product used to create the negative discount line on the order |
| Max Discount (%) | Maximum percentage discount a cashier is allowed to apply (0–100) |
| Max Discount Amount | Maximum fixed amount discount allowed. Set to 0 to disable the limit. |
Built for Odoo 19 POS
Fully compatible with the Odoo 19 POS reactive model system. Clean OWL components, proper data loading, and native POS integration.
Open POS Configuration
Go to the Point of Sale dashboard. Click the three-dot menu (⋮) on your POS shop card, then click "Configure" to open the settings panel.
POS Dashboard → Three dots menu → Configure
Enable Global Discount
Inside the Configuration tab, locate the Global Discount checkbox under the right column. Toggle it ON to enable the feature for this POS shop.
Configuration Tab → Global Discount → Enable
Configure Discount Fields
Once enabled, three additional fields appear beneath the toggle:
- Global Discount Product — the product used as the discount line in orders
- Max Discount (%) — maximum percentage cashiers are allowed to apply
- Max Discount Amount — maximum fixed amount cashiers are allowed to apply
All three discount configuration fields revealed
Select Global Discount Product
Click on the Global Discount Product field. A dropdown will appear with existing products. Click "Search more…" at the bottom to open the full product list.
Click field → dropdown → Search more…
Create New Discount Product
In the product search dialog, click the "New" button at the bottom-left to create a fresh product that will serve as the discount line item.
Product list → New button
Configure the Discount Product
Name it anything (e.g. "Global Discount"). Then configure it exactly as follows — incorrect settings will cause the discount line to behave unexpectedly.
- Product Type → Service (not Goods)
- Point of Sale checkbox → Enabled ✅
- Sales checkbox → Enabled ✅
- Category → Services
- Sales Price → 0.00 (must be zero)
- Cost → 0.00 (must be zero)
- Click Save after filling all fields
Create product with Service type, POS enabled, price = 0
Configure Maximum Discount Limits
Back in POS settings, fill in the discount limits. These restrict cashiers from applying excessive discounts. Once done, click Save to persist the configuration.
- Max Discount (%) — e.g. 10 means cashiers can apply max 10% off
- Max Discount Amount — e.g. 200 means max ₹200 fixed discount
Set limits → Save → Open Register
Open POS Session
Open the POS register, add your customer's products to the order. When ready to apply a discount, click the three-dot Actions button (⋮) at the bottom of the screen.
Add products → Click ⋮ Actions button
Click Global Discount
Click the Global Discount button from the POS actions menu to open the popup.
Actions popup → % Global Discount button
Enter & Apply Discount
A clean popup appears with two options. Select the discount type, enter the value using the native numpad, and click Confirm. If the value exceeds your configured maximum, an error notification will appear immediately and the discount will not be applied.
Discount popup with numpad
Error when limit exceeded
Discount Successfully Applied
After confirming, a green success notification appears top-right. The discount is automatically added as a negative line in the POS order with the configured discount product and the exact deduction amount.
- Success toast notification shown
- Discount line added to order automatically
- Total recalculated correctly
- Existing discount line replaced on re-apply
Order line shows Global Discount with negative amount
Complete Payment
Click the Payment button. The discounted total is shown. Select a payment method (Cash, Card, etc.) and click Validate to complete the transaction.
Payment screen shows discounted total
Payment & Order Validation
Payment is validated. The customer receipt automatically shows the Global Discount line with the correct negative amount and the final order total. Ready to print or share via email.
- Payment validated successfully
- Receipt shows Global Discount line clearly
- Accurate total calculation displayed
- POS order recorded in backend with discount
Receipt clearly shows Global Discount deduction and final total
Please log in to comment on this module