# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 (Odoo Proprietary License v1.0) # Part of the Fusion Plating product family. from odoo import api, fields, models class ResUsers(models.Model): _inherit = 'res.users' x_fc_initials = fields.Char( string='Plating Initials', help='Operator / inspector initials used to pre-fill signature ' 'and "Reviewer Initials" style prompts in the Record Inputs ' 'dialog. Editable in the dialog itself — when the user types ' 'a different value and saves, it persists here for every ' 'future job and step.', ) x_fc_signature_image = fields.Binary( string='Plating Signature', attachment=True, help='Drawn or uploaded signature image. Used in WO detail and ' 'certificate reports for any signature-type prompt this user ' 'signed off on; falls back to typed initials when blank. ' 'Capture it once in user preferences; it stamps every ' 'future sign-off automatically.', ) @api.model def _fp_default_initials(self): """Best-effort initials derived from the user's display name. Used as a fallback when ``x_fc_initials`` is empty so the operator still gets a sensible pre-fill on their first run. E.g. "John Doe" -> "JD", "Mary Anne Smith" -> "MAS". """ name = (self.name or '').strip() if not name: return '' return ''.join( piece[0] for piece in name.split() if piece ).upper()[:6] def fp_get_initials(self): """Resolve the user's initials for the dialog: stored override first, fall back to the auto-derived value from their name.""" self.ensure_one() return self.x_fc_initials or self._fp_default_initials()