==========================================
Account Invoice Triple Discount Readonly
==========================================

.. |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/licence-AGPL--3-blue.png
    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
    :alt: License: AGPL-3

|badge1| |badge2|

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

**Problem Solved:**

In purchase orders, when configuring discounts 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 these fields

**Solution:**

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

#. Detect if ``discount1``, ``discount2`` or ``discount3`` are being explicitly modified
#. If there are explicit discounts, ignore the computed ``discount`` field
#. If only the ``discount`` field comes, maintain legacy behavior
#. Make the total ``discount`` field readonly in relevant views

**Additional Features:**

* Makes the ``discount`` field (total discount) **readonly** in:

  * Partner form view (``res.partner``)
  * Supplier info in product form (``product.supplierinfo``)
  * Purchase order lines (``purchase.order.line``)
  * Account move lines (``account.move.line``)
  * Base mixin (``triple.discount.mixin``)

* Forces users to work only with the ``discount1``, ``discount2`` and ``discount3`` columns
* Avoids confusion between computed total and individual discounts

**Table of contents**

.. contents::
   :local:

Installation
============

To install this module, you need to:

#. Ensure dependencies are installed:

   * account_invoice_triple_discount (OCA)
   * purchase_triple_discount (OCA)

#. Update the Apps list
#. Search for "Account Invoice Triple Discount Readonly"
#. Click Install

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

No additional configuration is required after installation. The module automatically:

* Makes the total discount field readonly
* Preserves individual discount values on save
* Maintains backward compatibility with existing discounts

Usage
=====

After installation:

**Working with Discounts:**

#. The total discount field will be readonly and automatically calculated
#. Always use ``discount1``, ``discount2``, and ``discount3`` fields to set discounts
#. When saving, the individual discount values will be preserved correctly

**Example:**

::

  Product: Widget
  Price: 100.00€
  Discount 1: 10%  → 90.00€
  Discount 2: 5%   → 85.50€
  Discount 3: 2%   → 83.79€

  Total discount: 16.21% (displayed, readonly)

**Before this module:**

After saving, you would see:

::

  Discount 1: 16.21%  ❌ (accumulated)
  Discount 2: 0%      ❌ (reset)
  Discount 3: 0%      ❌ (reset)

**After this module:**

After saving, you correctly see:

::

  Discount 1: 10%  ✅
  Discount 2: 5%   ✅
  Discount 3: 2%   ✅
  Total: 16.21% (readonly, calculated)

**Important:**

* Do not try to edit the total discount field (it's readonly)
* Always work with the three individual discount columns
* The total is recalculated automatically

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

Bugs are tracked on `GitHub Issues <https://github.com/Criptomart/addons-cm/issues>`_.
In case of trouble, please check there if your issue has already been reported.

Credits
=======

Authors
~~~~~~~

* Criptomart

Funding
~~~~~~~

* Elika Bilbo

Contributors
~~~~~~~~~~~~

* `Criptomart <https://criptomart.net>`_:

  * Bug fix and implementation
  * Override logic for write method

Other credits
~~~~~~~~~~~~~

This module fixes a critical bug in the interaction between OCA's ``account_invoice_triple_discount`` and ``purchase_triple_discount`` modules, ensuring discount values are preserved correctly across all document types.

Maintainers
~~~~~~~~~~~

This module is maintained by Criptomart.

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

This module is part of the `Criptomart/addons-cm <https://github.com/Criptomart/addons-cm/tree/18.0/account_invoice_triple_discount_readonly>`_ project on GitHub.
