OdooWiki OCA HUB

Agreement Rebate

agreement_rebate folder_open OCA/agreement open_in_new
Agreement License: AGPL-3

This module extends the functionality of agreement module to allow define rebate conditions.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Lets you define rebate conditions on agreements and automatically calculate, settle and invoice the rebates owed to customers or vendors based on their invoiced amounts.

This module turns agreements into rebate contracts. On an agreement you choose a rebate type: a single global discount, a discount per line, a discount based on the total amount falling into a range, or a prorated discount applied to each amount range. You can add rebate lines that target specific products, product templates, product categories, a saved rebate condition, or a custom domain, each with its own discount percentage. Rebate sections let you define amount ranges (From/To) with a percentage.

From the Settlements menu you can create settlements for a period: Odoo looks at the invoiced amounts of the agreement's customer (or vendor) and computes the rebate per partner, storing the invoiced amount, the percentage and the rebate amount on settlement lines. Each line shows whether it is fully invoiced or still to invoice, and a Details button opens the invoiced amounts behind the calculation.

A second wizard creates the actual invoices or credit notes from the settlements, grouping them by settlement, partner or commercial partner, with a chosen product, journal and invoice type. Settlement lines are linked to the invoice lines they generated, and the invoice line description is completed with the settlement period. Rebate conditions are maintained under the agreement settings, and access is controlled by a dedicated 'Use agreement rebate' group with multi-company rules.

Menus it adds

SettlementsSettlementsSettlement LinesCreate settlementsCreate invoicesRebate conditions
Models and fields (10)
  • agreement · extends an existing modelis_rebate (Is rebate agreement type), rebate_type (rebate type), rebate_discount, rebate_line_ids (Agreement rebate lines), rebate_section_ids (Agreement rebate sections), additional_consumption
  • agreement.type · extends an existing modelis_rebate (Is rebate agreement type)
  • account.move.line · extends an existing modelagreement_rebate_settlement_line_ids (Settlement lines)
  • agreement.rebate.line · new modelagreement_id (Agreement), rebate_domain, rebate_target, rebate_discount, rebate_product_ids (Products), rebate_category_ids (Product categories), rebate_condition_id (Rebate condition), rebate_product_tmpl_ids (Product templates)
  • agreement.rebate.section · new modelamount_to (To), amount_from (From), agreement_id (Agreement), rebate_discount (% Dto)
  • agreement.rebate.condition · new modelname (Rebate condition), rebate_domain (Domain)
  • agreement.rebate.settlement · new modeldate, name, active, date_to, line_ids (Settlement Lines), date_from, company_id (Company), invoice_id (Invoice), partner_id (Partner), amount_rebate, amount_invoiced
  • agreement.invoice.create.wiz · new modeldomain (_domain_selection), date_to (To), date_from (From), journal_id (Journal), product_id (Product), invoice_type, agreement_ids (Agreements), invoice_group (Group invoice by), settlements_ids (Rebate settlements), agreement_type_ids (Agreement types), invoice_partner_id (Force invoice to)
  • agreement.settlement.create.wiz · new modeldate, domain (_domain_selection), date_to (To), date_from (From), journal_ids (Journals), agreement_ids (Agreements), agreement_type_ids (Agreement types), discard_settled_agreement (Discard settled agreements)
  • agreement.rebate.settlement.line · new modeldate, active, percent, amount_to (To), company_id (Company), partner_id (Partner), amount_from (From), rebate_type (Rebate type), agreement_id (Agreement), amount_gross, amount_rebate, settlement_id (Rebate settlement), target_domain, invoice_status, rebate_line_id (Rebate Line), amount_invoiced, invoice_line_ids (Invoice lines), rebate_section_id (Rebate section)

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

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

Confirmation status: 5 confirmed, 4 with no information of 9 versions.

Sources · Odoo 16.0

Confirmed on 2026-11-03 in branch 16.0 of OCA/agreement.

terminal Installation and usage

OCA documentation · Odoo 19.0

To use this module you need to:

  • Go to a Agreements \> agreement.
  • Create an agreement of type Rebate agreement for sale.
  • Set a rappel type. > Basic global rappel discount > > > > Basic rappel discount by line items > > > > Section rappel discount rule match > > > > Calculate the discount in each amount section > >
  • Create any rebate lines to apply this agreement. > Add a product template filter to apply this agreement > >
  • Do some invoices of products included in any rebate agreement
  • Create rebate settlements from Agreements \> Settlements \> Create Settlements wizard >
  • Create rappel invoices from Agreements \> Settlements \> Create Invoices wizard >

No verified information in OCA: Installation, Configuration.

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.