Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Point of Sale
  3. POS Discount Approval v 19.0
  4. Sales Conditions FAQ

POS Discount Approval

by Crowe Maldives LLP https://www.crowe.mv
Odoo
In-App Purchases
v 19.0 Third Party 6
Download for v 19.0 Deploy on Odoo.sh
This module requires Odoo Enterprise Edition.
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Approvals (approvals)
• Discuss (mail)
• Point of Sale (point_of_sale)
• Employees (hr)
• Inventory (stock)
• Invoicing (account)
Lines of code 987
Technical Name crowe_pos_discount_approval
LicenseLGPL-3
Websitehttps://www.crowe.mv
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Approvals (approvals)
• Discuss (mail)
• Point of Sale (point_of_sale)
• Employees (hr)
• Inventory (stock)
• Invoicing (account)
Lines of code 987
Technical Name crowe_pos_discount_approval
LicenseLGPL-3
Websitehttps://www.crowe.mv

POS Discount Approval

Require manager sign-off before discounts reach the customer

Give your managers control over POS discounts. When a cashier applies a discount that exceeds your configured threshold, the POS displays a Request Approval button. The request flows through Odoo’s native Approvals app and payment is blocked until a designated manager approves it — all without leaving the POS screen.

Key Features

Configurable Thresholds

Set a maximum discount by amount (e.g. MVR 50) or by percentage (e.g. 5%). Each POS can have its own threshold and its own list of authorised approvers.

Real-time Approval

The POS polls for the approval decision every 10 seconds. As soon as a manager approves in the back office, the cashier sees a success notification and can proceed to payment immediately — no page reload needed.

Payment Enforcement

If the order contains a discount above the threshold and approval has not been granted, the payment screen is blocked with a clear message. No workarounds, no override without a manager.

How It Works

A real example: cashier requests a 15% discount

Step 1 — Enable in POS Settings

Open your POS configuration and enable Discount Approval. Choose a threshold type (Amount or Percentage), enter the limit value, and assign one or more approvers. Settings are locked while a session is active.

POS Discount Approval configuration
Request Approval button in POS

Step 2 — Request Approval button appears

When the cashier applies a discount that exceeds the threshold, a Request Approval button appears in the POS control bar. Trying to proceed to payment first shows a clear warning that approval is required.

Step 3 — Cashier enters a reason

Clicking the button opens a reason dialog. The cashier types a brief explanation (e.g. “Returnee customer”) and clicks Apply. The discount request is created and submitted to the approver automatically.

Discount reason dialog
Approval Pending button state

Step 4 — POS waits, manager reviews

The button changes to Approval Pending… while the POS polls silently in the background. Meanwhile the manager opens the Approvals app, inspects the discount lines, amount, and reason on the dedicated Discount Details tab.

Step 5 — Manager approves in back office

The approval request appears in the manager’s Odoo Approvals list under the POS Discounts category (sequence POS-DISC). The Discount Details tab shows every discounted product line with original price, discount percentage, and final price. One click on Approve completes the review.

Approval request form with Discount Details tab
Approved state and success notification in POS

Step 6 — POS updates in real time

Within seconds the cashier sees a green Approved ✓ button and a success toast. Payment can now proceed normally. If the manager refuses instead, a danger notification appears immediately so the cashier can adjust the order and re-submit.

Configuration

A single settings panel in the POS configuration

  1. Open Point of Sale → Configuration → Settings and select your POS.
  2. Under Discount Approval, enable Require Discount Approval.
  3. Choose the Threshold Type:
    • Amount — trigger when the total discount value exceeds a fixed amount.
    • Percentage — trigger when any line discount percentage exceeds a limit.
  4. Enter the threshold value and select one or more Discount Approvers.
  5. Save. The approval button will appear in the POS as soon as the session is opened.
Settings are locked while a session is active. Close the session before changing the threshold or approver list.

Benefits

Prevent unauthorised discounts

Cashiers can no longer complete large discounts without explicit manager approval, reducing revenue leakage and ad-hoc price negotiations at the counter.

Full audit trail

Every discount request is stored as a pos.discount.request record with the cashier name, session, approval date, and approver — searchable from the POS menu.

Zero disruption to checkout

The approval flow is non-intrusive: the POS keeps operating normally while waiting. Expired requests (after 2 minutes) are cleaned up automatically so the cashier can re-submit.

Supports line and global discounts

Works with both per-line percentage discounts and global discount products (negative price lines), covering all standard POS discount patterns.

Feature Summary

In the POS

Request Approval button appears when threshold is exceeded.

Button shows live status: Pending / Approved ✓.

Rejection surfaces immediately; cashier can re-submit.

Payment screen blocked until approval is confirmed.

In the Back Office

Native Odoo Approvals workflow (POS-DISC sequence).

Discount Details tab with per-line breakdown and totals.

Per-POS threshold (amount or percentage) and approver list.

Searchable discount request history with state filters.

Technical Details

Server Side

  • pos.discount.request — tracks each approval request with session, cashier, discount lines, totals, state and approver.
  • pos.discount.request.line — one row per discounted product, storing original price, discount amount or percentage, and computed final price.
  • pos.config — extended with threshold mode, threshold value, and a many2many approver list.
  • approval.request — overrides action_approve / action_refuse to sync status back to the POS discount record.

Front End (OWL)

  • Patches PosOrder to track the approval request ID and status per order.
  • Adds a DiscountApprovalButton component to the POS control bar via template inheritance.
  • Polls pos.discount.request.check_approval_status every 10 seconds and updates the button reactively.
  • Patches PosStore.pay() to block payment when unapproved discounts are present.
  • Auto-cleans expired requests (2-minute TTL) from the server and resets UI state.

Compatibility & Dependencies

Version

Built for Odoo 19.0, compatible with both Community and Enterprise editions.

Dependencies

Requires base, mail, approvals and point_of_sale.

The Approvals module is available in both Community and Enterprise editions of Odoo 19.0.

Support

Brought to you by Crowe Maldives LLP

Author

Crowe Maldives LLP

Website

www.crowe.mv

Support

info@exponent.mv

Licensed under LGPL-3.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with