"""Affiliate global settings — default commission %, default withdraw
limit, monthly-summary cron toggle. All values are persisted via
``ir.config_parameter`` and read at runtime by the partner defaults and
the cron's ``active`` flag.
"""

from odoo import api, fields, models


class ResConfigSettings(models.TransientModel):
    _inherit = "res.config.settings"

    kj_affiliate_commission_pct_default = fields.Integer(
        string="Default Commission %",
        config_parameter="kj_affiliate.commission_pct_default",
        default=100,
    )
    kj_affiliate_withdraw_limit_default = fields.Float(
        string="Default Minimum Withdrawal",
        config_parameter="kj_affiliate.withdraw_limit_default",
        currency_field="company_currency_id",
        default=0.0,
    )
    kj_affiliate_monthly_summary_enabled = fields.Boolean(
        string="Send Monthly Summary Email",
        default=True,
    )
    company_currency_id = fields.Many2one(
        comodel_name="res.currency",
        compute="_compute_company_currency",
    )

    @api.depends("company_id")
    def _compute_company_currency(self):
        for rec in self:
            rec.company_currency_id = rec.company_id.currency_id

    def set_values(self):
        super().set_values()
        cron = self.env.ref(
            "kj_affiliate_widget.ir_cron_affiliate_monthly_summary",
            raise_if_not_found=False,
        )
        if cron:
            cron.sudo().active = self.kj_affiliate_monthly_summary_enabled

    @api.model
    def get_values(self):
        res = super().get_values()
        cron = self.env.ref(
            "kj_affiliate_widget.ir_cron_affiliate_monthly_summary",
            raise_if_not_found=False,
        )
        if cron:
            res["kj_affiliate_monthly_summary_enabled"] = bool(cron.active)
        return res
