OdooWiki OCA HUB

Sale Triple Discount

sale_triple_discount folder_open OCA/sale-workflow open_in_new
Sales License: AGPL-3

This module allows to have three discounts on every sale order line.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Lets users enter up to three percentage discounts on each sale order line, with the total discount calculated automatically and carried over to the invoice and the printed quotation.

This module adds three separate discount columns to sale order lines, so a salesperson can give a first, second and third discount on the same product line instead of a single percentage.

  • On the sale order form, the line list and the line detail popup show Disc. 1 (%), Disc. 2 (%) and Disc. 3 (%) fields, visible only to users allowed to use per-line discounts. The standard discount field becomes a read-only "Total Disc (%)" that Odoo fills in automatically.
  • The three discounts are combined one after the other (multiplicative), and the resulting total is what drives the line price. Choosing the additive option is blocked with an error message, because that mode is not fully implemented.
  • When a line is created with a zero discount, all three discount fields are reset to zero.
  • When the order is invoiced, the three discounts are copied onto the invoice line, so the invoice keeps the same discount breakdown.
  • The "Apply discount" wizard on a sale order, when used with a line discount, writes the percentage into the first discount field and clears the other two.
  • The printed quotation/order report adds Disc. 1, Disc. 2 and Disc. 3 columns, but only when at least one line actually has a value in that column.
  • On installation, existing sale order lines with a discount get that value copied into the first discount field.

The module touches sale.order.line, the sale order discount wizard and the sale order report template.

Models and fields (2)
  • sale.order.line · new modeldiscount (Total Disc (%)), discount1 (Disc. 1 (%)), discounting_type
  • sale.order.discount · extends an existing model

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 6 confirmed, 3 with no information of 9 versions.

Sources · Odoo 15.0

Confirmed on 2026-11-03 in branch 15.0 of OCA/sale-workflow.

terminal Installation and usage

OCA documentation · Odoo 18.0

To configure this module, you need to:

  • set Discount on lines group to be able to see discounts on the lines

Create a new sale order and add discounts in any of the three discount fields given.

For multiplicative discounts they go in order of precedence so discount 2 will be calculated over discount 1 and discount 3 over the result of discount 2. For example, let's divide by two on every discount:

Unit price: 600.00 -\>

> - Disc. 1 = 50% -\> Amount = 300.00 > - Disc. 2 = 50% -\> Amount = 150.00 > - Disc. 3 = 50% -\> Amount = 75.00

For additive discounts they will be summed first and then applied. For example, let's have a three 20% discounts:

Unit price: 600.00 -\>

> - Disc. 1, 2, 3 = 20% + 20% + 20% -\> 60% > - Disc. final = 60% -\> Amount = 240.00

You can also use negative values to make a charge instead of a discount:

Unit price: 600.00 -\>

> - Disc. 1 = 50% -\> Amount = 300.00 > - Disc. 2 = -5% -\> Amount = 315.00

Module allows defining additional discount fields and applying them with other by adding them to the _get_multiple_discount_field_names method.

No verified information in OCA: Installation.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.