from odoo import models, fields, api


class LaundryOrderAttribute(models.Model):
    """Optional per-order badge (Urgent / Hanger / Fold / Delicate / ...).

    Multi-selectable on a laundry order. Semantic flags drive behavior
    without name matching, so admins can rename freely.
    """
    _name = 'laundry.order.attribute'
    _inherit = ['pos.load.mixin']
    _description = 'Laundry Order Attribute'
    _order = 'sequence, id'

    name = fields.Char(string='Name', required=True, translate=True)
    code = fields.Char(string='Code')
    sequence = fields.Integer(default=10)
    active = fields.Boolean(default=True)

    color = fields.Char(string='Color')
    icon_image = fields.Binary(string='Icon')
    description = fields.Text(string='Description', translate=True)

    extra_price = fields.Float(
        string='Extra Price',
        help='Reserved for future pricing rules. Not applied automatically.',
    )

    pos_available = fields.Boolean(string='Available in POS', default=True)
    company_id = fields.Many2one(
        'res.company', string='Company',
        default=lambda self: self.env.company, index=True,
    )

    is_delivery_related = fields.Boolean(
        string='Delivery Related',
        help='Selecting this attribute marks the order as delivery and '
             'triggers the delivery-details prompt.',
    )
    is_priority_related = fields.Boolean(
        string='Priority Related',
        help='Selecting this attribute promotes the order to urgent priority.',
    )

    @api.model
    def _load_pos_data_domain(self, data, config):
        return [
            ('pos_available', '=', True),
            ('active', '=', True),
            '|',
            ('company_id', '=', False),
            ('company_id', 'in', config.company_id.ids),
        ]

    @api.model
    def _load_pos_data_fields(self, config):
        return [
            'id', 'name', 'code', 'sequence',
            'color', 'description',
            'extra_price',
            'is_delivery_related', 'is_priority_related',
        ]
