from odoo import fields, models


class XenoAttendanceOverride(models.Model):
    _name = "xeno.attendance.override"
    _description = "HR override of a single employee-day's In/Out time on the Monthly Attendance report"
    _order = "date desc, employee_code"

    employee_code = fields.Char(
        required=True, index=True,
        help="HRSystem employee_code this override applies to.")
    date = fields.Date(required=True, index=True)
    time_in = fields.Char(
        string="In (override)",
        help="HH:MM shown instead of the biometric/GPS-computed In time. "
             "Leave blank to keep the source value for In.")
    time_out = fields.Char(
        string="Out (override)",
        help="HH:MM shown instead of the biometric/GPS-computed Out time. "
             "Leave blank to keep the source value for Out.")
    note = fields.Char(help="Why this was overridden (shown on the report tooltip).")

    _employee_date_uniq = models.Constraint(
        "unique(employee_code, date)",
        "Only one override record per employee per day — edit the existing one instead.",
    )

    def name_get(self):
        return [(r.id, "%s @ %s" % (r.employee_code, r.date)) for r in self]
