addons-cm/account_invoice_triple_discount_readonly
snt 123aabb775 [18.0][MIG] account_invoice_triple_discount_readonly: Port to Odoo 18.0
* Update module version to 18.0.1.0.0
* Remove view modifications as they are handled by parent modules
* Add comprehensive test suite (34 tests):
  - Test triple discount mixin write() method behavior
  - Test account.move.line with triple discounts
  - Test purchase.order.line with triple discounts
* Add oca_dependencies.txt with required OCA repositories
* Fix write() method to handle explicit discounts correctly
2026-02-10 23:22:50 +01:00
..
models Criptomart/red-supermercados-coop#17 add account_invoice_triple_discount_readonly: fix write discount2 and dicount3 columns. Make discount (total) readonly 2025-12-04 14:01:50 +01:00
tests [18.0][MIG] account_invoice_triple_discount_readonly: Port to Odoo 18.0 2026-02-10 23:22:50 +01:00
views [18.0][MIG] account_invoice_triple_discount_readonly: Port to Odoo 18.0 2026-02-10 23:22:50 +01:00
__init__.py Criptomart/red-supermercados-coop#17 add account_invoice_triple_discount_readonly: fix write discount2 and dicount3 columns. Make discount (total) readonly 2025-12-04 14:01:50 +01:00
__manifest__.py [18.0][MIG] account_invoice_triple_discount_readonly: Port to Odoo 18.0 2026-02-10 23:22:50 +01:00
oca_dependencies.txt [18.0][MIG] account_invoice_triple_discount_readonly: Port to Odoo 18.0 2026-02-10 23:22:50 +01:00
README.md Criptomart/red-supermercados-coop#17 add account_invoice_triple_discount_readonly: fix write discount2 and dicount3 columns. Make discount (total) readonly 2025-12-04 14:01:50 +01:00

Account Invoice Triple Discount Readonly

Description

This module fixes a bug in account_invoice_triple_discount when combined with purchase_triple_discount.

Original Problem

In purchase orders, when configuring a discount in the discount2 or discount3 columns, upon saving:

  • All discounts were accumulated in the discount1 column
  • The discount2 and discount3 fields were reset to zero

This occurred because the original mixin's write method always reset discount2 and discount3 to 0 when the computed discount field was included in the write (which happens when any discount is modified).

Solution

The module overrides the write method of triple.discount.mixin to:

  1. Detect if discount1, discount2 or discount3 are being explicitly modified
  2. If there are explicit discounts, ignore the computed discount field
  3. If only the discount field comes, maintain legacy behavior (map to discount1 and reset the rest)

Additionally, it makes the discount field (total discount) readonly in:

  • Partner form view (res.partner)
  • Supplier info in product form (product.supplierinfo)
  • Base mixin (triple.discount.mixin)

This forces users to work only with the discount1, discount2 and discount3 columns, avoiding confusion.

Installation

  1. Make sure account_invoice_triple_discount and purchase_triple_discount are installed
  2. Update the module list
  3. Install account_invoice_triple_discount_readonly

Usage

After installation:

  • The total discount field will be readonly and automatically calculated
  • Users must use discount1, discount2, and discount3 fields to set discounts
  • When saving, the individual discount values will be preserved correctly

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.

Credits

Contributors

  • Coop Makers

Maintainers

This module is maintained by the OCA.

Compatibility

  • Odoo 16.0
  • account_invoice_triple_discount
  • purchase_triple_discount