from odoo import fields, models


class TripleDiscountMixin(models.AbstractModel):
    _inherit = "triple.discount.mixin"

    # Make the discount field readonly to prevent manual edits
    discount = fields.Float(readonly=True)

    def write(self, vals):
        discount_fields = self._get_multiple_discount_field_names()

        if "discount" in vals:
            # Check if any of discount1, discount2 or discount3
            # are being explicitly modified
            has_explicit_discounts = any(field in vals for field in discount_fields)

            if has_explicit_discounts:
                # If there are explicit discounts, remove the computed 'discount' field
                # to avoid overwriting the explicit values
                vals.pop("discount")
            else:
                # If only 'discount' comes, apply legacy behavior:
                # map to discount1 and reset discount2 and discount3
                vals["discount1"] = vals.pop("discount")
                vals.update({field: 0 for field in discount_fields[1:]})

        return super().write(vals)
