from odoo import fields, models


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

    group_activity_statement = fields.Boolean(
        "Enable OCA Activity Statements",
        group="account.group_account_invoice",
        implied_group="partner_statement.group_activity_statement",
    )

    default_aging_type = fields.Selection(
        [("days", "Age by Days"), ("months", "Age by Months")],
        string="Aging Method",
        required=True,
        default="days",
        default_model="statement.common.wizard",
    )

    default_show_aging_buckets = fields.Boolean(
        string="Show Aging Buckets", default_model="statement.common.wizard"
    )

    default_filter_partners_non_due = fields.Boolean(
        string="Exclude partners with no due entries",
        default_model="statement.common.wizard",
    )

    default_filter_negative_balances = fields.Boolean(
        "Exclude Negative Balances", default_model="statement.common.wizard"
    )

    group_outstanding_statement = fields.Boolean(
        "Enable OCA Outstanding Statements",
        group="account.group_account_invoice",
        implied_group="partner_statement.group_outstanding_statement",
    )

    def set_values(self):
        self = self.with_context(active_test=False)
        # default values fields
        IrDefault = self.env["ir.default"].sudo()
        for name, field in self._fields.items():
            if (
                name.startswith("default_")
                and field.default_model == "statement.common.wizard"
            ):
                if isinstance(self[name], models.BaseModel):
                    if self._fields[name].type == "many2one":
                        value = self[name].id
                    else:
                        value = self[name].ids
                else:
                    value = self[name]
                IrDefault.set("activity.statement.wizard", name[8:], value)
                IrDefault.set("outstanding.statement.wizard", name[8:], value)
        return super().set_values()