Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
1b68516
[ADD] sale_triple_discount
tafaRU Mar 27, 2017
ae7afda
[MIG] sale_triple_discount: Migration to 10.0
chienandalu Sep 7, 2017
65899fa
Translated using Weblate (Nederlands (nl_NL))
thomaspot Jun 21, 2018
cd1f725
Translated using Weblate (Dutch (nl_NL))
thomaspot Jun 21, 2018
9a638fc
[FIX] sale_triple_discount: Correctly compute taxes with round_global…
SimoRubi Dec 19, 2018
8aeb34c
[FIX] sale_triple_discount: Store values in cache for recomputation c…
SimoRubi Dec 21, 2018
fb42e3d
sale_triple_discount: Fix tax total on report: include the discount2/…
jbaudoux Nov 21, 2018
08dedac
[IMP] 10.0 sale_triple_discount: rework discount computation
mpanarin Jul 13, 2018
6f67733
Play onchange after invoice creation to ensure discounts are applied
grindtildeath Jul 4, 2019
bb87130
Fix groups on sale.order view
grindtildeath Jul 4, 2019
7c64d80
[MIG] sale_triple_discount: Migration to 12.0
tafaRU Nov 22, 2019
47c07db
[IMP] sale_triple_discount: black, isort, prettier
ps-tubtim May 8, 2020
9672b25
[MIG] sale_triple_discount: Migration to 13.0
ps-tubtim Jun 22, 2020
9af379c
[IMP] sale_triple_discount: black, isort, prettier
ferran-S73 Sep 29, 2021
b6c437d
[14.0][MIG] sale_triple_discount: Migration to V14
ferran-S73 Sep 29, 2021
91d980e
[14.0][IMP] sale_triple_discount: add disc. fields in sale report templ.
ferran-S73 Feb 23, 2022
7a40e67
[14.0] sale_triple_discount: sale_order_line_discount_validation compat.
ferran-S73 Mar 28, 2022
3990ecc
Translated using Weblate (Italian)
francesco-ooops Apr 8, 2022
8309942
Translated using Weblate (French)
klodr Sep 15, 2022
16d1417
[IMP] sale_triple_discount: black, isort, prettier
manuelregidor Oct 19, 2022
0ea12b1
[MIG]sale_triple_discount: Migration to 15.0
manuelregidor Oct 19, 2022
87577e1
sale_triple_discount 15.0.1.0.1
OCA-git-bot Oct 25, 2022
95bb3a3
[16.0][MIG] - sale_triple_discount
sbejaoui Dec 28, 2022
d564292
[UPD] Update sale_triple_discount.pot
Jan 26, 2023
01c7266
[UPD] README.rst
OCA-git-bot Jan 26, 2023
9821de9
sale_triple_discount 16.0.1.0.1
OCA-git-bot Jan 26, 2023
3ba4cf8
Update translation files
weblate Jan 26, 2023
dce635b
Added translation using Weblate (Spanish (Mexico))
alan196 Feb 14, 2023
0762389
Translated using Weblate (Spanish (Mexico))
alan196 Feb 14, 2023
7914eab
Translated using Weblate (Italian)
Jun 14, 2023
1624216
Translated using Weblate (Spanish)
Ivorra78 Jul 25, 2023
4ef3524
[UPD] README.rst
OCA-git-bot Sep 3, 2023
ad983d0
Translated using Weblate (Italian)
mymage Dec 1, 2023
5d9c1eb
[IMP] sale_triple_discount: improve module extensibility
renda-dev Mar 26, 2024
494d485
Translated using Weblate (German)
jappi00 Apr 10, 2024
e0c8a15
[BOT] post-merge updates
OCA-git-bot May 18, 2024
03712e1
Translated using Weblate (Portuguese (Brazil))
May 29, 2024
8ebacc6
[FIX] sale_triple_discount: Remove call to deprecated
lmignon Sep 25, 2024
26ad630
[BOT] post-merge updates
OCA-git-bot Sep 25, 2024
5c02234
[IMP] sale_triple_discount: Improves perfs and consistency
lmignon Sep 26, 2024
847f09c
[BOT] post-merge updates
OCA-git-bot Oct 16, 2024
3a7c2bc
[IMP] sale_triple_discount: pre-commit auto fixes
dalonsod Nov 12, 2024
4190e21
[MIG] sale_triple_discount: Migration to 17.0
dalonsod Nov 12, 2024
5f47d18
[MIG] sale_triple_discount: migration 18.0
sbejaoui Mar 29, 2025
362d5d4
[REF] sale_triple_discount: Consolidate discount in std field
sbejaoui Mar 29, 2025
1b438ab
[FIX] sale_triple_discount: hide discount_type and disable additive type
sbejaoui Mar 29, 2025
0f83b3b
[IMP] sale_triple_discount: add inverse for standard discount field
sbejaoui Jun 4, 2025
c366b73
FIX sale_triple_discount: Calculate discounts when creating sales ord…
sbiosca-s73 Jul 24, 2025
ccb73b7
[IMP] sale_triple_discount: pre-commit execution
lef-adhoc Nov 21, 2025
5520856
[MIG] sale_triple_discount: Migration to 19.0
lef-adhoc Nov 21, 2025
cc16164
[DON'T MERGE] test-requirements.txt
lef-adhoc Oct 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 133 additions & 0 deletions sale_triple_discount/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

====================
Sale Triple Discount
====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a84d160a20fec5eb275b9086605028044ba29520808c8a118992fd4ea4b3949b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/sale-workflow/tree/19.0/sale_triple_discount
:alt: OCA/sale-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/sale-workflow-19-0/sale-workflow-19-0-sale_triple_discount
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

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

**Table of contents**

.. contents::
:local:

Configuration
=============

To configure this module, you need to:

- set **Discount on lines** group to be able to see discounts on the
lines

Usage
=====

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 \_discount_fields method.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_triple_discount%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* ADHOC SA
* Agile Business Group
* Tecnativa

Contributors
------------

- Nicolas Mac Rouillon <@nicomacr>
- Juan José Scarafía <jjs@adhoc.com.ar>
- Alex Comba <alex.comba@agilebg.com>
- David Vidal <david.vidal@tecnativa.com>
- Simone Rubino <simone.rubino@agilebg.com>
- Jacques-Etienne Baudoux (BCIM sprl) <je@bcim.be>
- Pimolnat Suntian <pimolnats@ecosoft.co.th>
- Denis Leemann <denis.leemann@camptocamp.com>
- Manuel Regidor <manuel.regidor@sygel.es>
- Souheil Bejaoui <souheil.bejaoui@acsone.eu>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/19.0/sale_triple_discount>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions sale_triple_discount/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import models
from .hooks import post_init_hook
from . import wizards
20 changes: 20 additions & 0 deletions sale_triple_discount/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2015 ADHOC SA (http://www.adhoc.com.ar)
# Copyright 2017 - 2019 Alex Comba - Agile Business Group
# Copyright 2017 Tecnativa - David Vidal
# Copyright 2018 Jacques-Etienne Baudoux (BCIM sprl) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Sale Triple Discount",
"version": "19.0.1.0.0",
"category": "Sales",
"author": "ADHOC SA, Agile Business Group, Tecnativa, "
"Odoo Community Association (OCA)",
"website": "https://github.com/OCA/sale-workflow",
"license": "AGPL-3",
"summary": "Manage triple discount on sale order lines",
"depends": ["sale", "account_invoice_triple_discount"],
"data": ["views/sale_order_report.xml", "views/sale_order_view.xml"],
"installable": True,
"post_init_hook": "post_init_hook",
}
17 changes: 17 additions & 0 deletions sale_triple_discount/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024-Today - Sylvain Le GAL (GRAP)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

import logging

_logger = logging.getLogger(__name__)


def post_init_hook(env):
_logger.info("Initializing column discount1 on table sale_order_line")
env.cr.execute(
"""
UPDATE sale_order_line
SET discount1 = discount
WHERE discount != 0
"""
)
89 changes: 89 additions & 0 deletions sale_triple_discount/i18n/ca.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-23 01:52+0000\n"
"PO-Revision-Date: 2017-11-23 01:52+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. module: sale_triple_discount
#: model_terms:ir.ui.view,arch_db:sale_triple_discount.report_saleorder_document_triple_discount
msgid "<span>Disc. 2 (%)</span>"
msgstr ""

#. module: sale_triple_discount
#: model_terms:ir.ui.view,arch_db:sale_triple_discount.report_saleorder_document_triple_discount
msgid "<span>Disc. 3 (%)</span>"
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.fields.selection,name:sale_triple_discount.selection__sale_order_line__discounting_type__additive
msgid "Additive"
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.fields,field_description:sale_triple_discount.field_sale_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.fields,field_description:sale_triple_discount.field_sale_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.constraint,message:sale_triple_discount.constraint_sale_order_line_discount2_limit
msgid "Discount 2 must be lower or equal than 100%."
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.constraint,message:sale_triple_discount.constraint_sale_order_line_discount3_limit
msgid "Discount 3 must be lower or equal than 100%."
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.fields,field_description:sale_triple_discount.field_sale_order_line__discounting_type
msgid "Discounting Type"
msgstr ""

#. module: sale_triple_discount
#: model:ir.model.fields.selection,name:sale_triple_discount.selection__sale_order_line__discounting_type__multiplicative
msgid "Multiplicative"
msgstr ""

#. module: sale_triple_discount
#. odoo-python
#: code:addons/sale_triple_discount/models/sale_order_line.py:0
#, python-format
msgid "Sale order line %(name)s has unknown discounting type %(dic_type)s"
msgstr ""

#. module: sale_triple_discount
#: model:ir.model,name:sale_triple_discount.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línia de comanda de vendes"

#. module: sale_triple_discount
#: model:ir.model.fields,help:sale_triple_discount.field_sale_order_line__discounting_type
msgid ""
"Specifies whether discounts should be additive or multiplicative.\n"
"Additive discounts are summed first and then applied.\n"
"Multiplicative discounts are applied sequentially.\n"
"Multiplicative discounts are default"
msgstr ""

#, fuzzy
#~ msgid "Sale Order"
#~ msgstr "Línia de comanda de vendes"
95 changes: 95 additions & 0 deletions sale_triple_discount/i18n/de.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-23 01:52+0000\n"
"PO-Revision-Date: 2024-04-10 15:37+0000\n"
"Last-Translator: jappi00 <jappi2000@ewetel.net>\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"

#. module: sale_triple_discount
#: model_terms:ir.ui.view,arch_db:sale_triple_discount.report_saleorder_document_triple_discount
msgid "<span>Disc. 2 (%)</span>"
msgstr "<span>Rabatt 2 (%)</span>"

#. module: sale_triple_discount
#: model_terms:ir.ui.view,arch_db:sale_triple_discount.report_saleorder_document_triple_discount
msgid "<span>Disc. 3 (%)</span>"
msgstr "<span>Rabatt 3 (%)</span>"

#. module: sale_triple_discount
#: model:ir.model.fields.selection,name:sale_triple_discount.selection__sale_order_line__discounting_type__additive
msgid "Additive"
msgstr "Additiv"

#. module: sale_triple_discount
#: model:ir.model.fields,field_description:sale_triple_discount.field_sale_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Rabatt 2 (%)"

#. module: sale_triple_discount
#: model:ir.model.fields,field_description:sale_triple_discount.field_sale_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Rabatt 3 (%)"

#. module: sale_triple_discount
#: model:ir.model.constraint,message:sale_triple_discount.constraint_sale_order_line_discount2_limit
msgid "Discount 2 must be lower or equal than 100%."
msgstr "Der Rabatt 2 muss kleiner oder gleich 100% sein."

#. module: sale_triple_discount
#: model:ir.model.constraint,message:sale_triple_discount.constraint_sale_order_line_discount3_limit
msgid "Discount 3 must be lower or equal than 100%."
msgstr "Der Rabatt 3 muss kleiner oder gleich 100% sein."

#. module: sale_triple_discount
#: model:ir.model.fields,field_description:sale_triple_discount.field_sale_order_line__discounting_type
msgid "Discounting Type"
msgstr "Rabattierungstyp"

#. module: sale_triple_discount
#: model:ir.model.fields.selection,name:sale_triple_discount.selection__sale_order_line__discounting_type__multiplicative
msgid "Multiplicative"
msgstr "Multiplikativ"

#. module: sale_triple_discount
#. odoo-python
#: code:addons/sale_triple_discount/models/sale_order_line.py:0
#, python-format
msgid "Sale order line %(name)s has unknown discounting type %(dic_type)s"
msgstr ""
"Verkaufsauftragszeile %(name)s hat unbekannte Rabattierungsart %(dic_type)s"

#. module: sale_triple_discount
#: model:ir.model,name:sale_triple_discount.model_sale_order_line
msgid "Sales Order Line"
msgstr "Auftragsposition"

#. module: sale_triple_discount
#: model:ir.model.fields,help:sale_triple_discount.field_sale_order_line__discounting_type
msgid ""
"Specifies whether discounts should be additive or multiplicative.\n"
"Additive discounts are summed first and then applied.\n"
"Multiplicative discounts are applied sequentially.\n"
"Multiplicative discounts are default"
msgstr ""
"Gibt an, ob Rabatte additiv oder multiplikativ sein sollen.\n"
"Additive Rabatte werden zuerst summiert und dann angewendet.\n"
"Multiplikative Rabatte werden nacheinander angewandt.\n"
"Multiplikative Rabatte sind Standard"

#, fuzzy
#~ msgid "Sale Order"
#~ msgstr "Auftragsposition"
Loading
Loading