from odoo import models, fields, api
from odoo.exceptions import UserError


class LaundryPrintWizard(models.TransientModel):
    """Print template selection wizard — routes to A4, Thermal, or Tracking."""
    _name = 'laundry.print.wizard'
    _description = 'Laundry Print Wizard'

    order_id = fields.Many2one(
        'laundry.order', string='Order',
        required=True, readonly=True,
    )

    order_name    = fields.Char(related='order_id.name',               readonly=True)
    customer_name = fields.Char(related='order_id.partner_id.name',    readonly=True)
    total_amount  = fields.Monetary(
        related='order_id.amount_total',
        readonly=True,
        currency_field='currency_id',
    )
    currency_id = fields.Many2one(
        related='order_id.currency_id', readonly=True,
    )

    template = fields.Selection([
        ('a4',       'A4 Customer Receipt (Bilingual)'),
        ('thermal',  'Thermal Receipt (80mm)'),
        ('tracking', 'Item Tracking Slips'),
    ], string='Print Template', required=True, default='a4')

    include_prices = fields.Boolean(string='Include Prices', default=True)
    include_notes  = fields.Boolean(string='Include Customer Notes', default=True)

    def action_print(self):
        self.ensure_one()
        ref_map = {
            'a4':       'laundry_management.action_report_laundry_order_receipt',
            'thermal':  'laundry_management.action_report_laundry_thermal_receipt',
            'tracking': 'laundry_management.action_report_laundry_tracking_slip',
        }
        report_ref = ref_map.get(self.template)
        if not report_ref:
            raise UserError('Unknown print template.')
        return self.env.ref(report_ref).report_action(
            self.order_id,
            data={
                'include_prices': self.include_prices,
                'include_notes':  self.include_notes,
            },
        )
