/** @odoo-module
 *
 * LaundryWorkOrderThermal — receipt-style component for the POS printer.
 *
 * Rendered by `pos.printer.print(LaundryWorkOrderThermal, {data}, {webPrintFallback: true})`.
 * The data payload comes from `laundry.order.pos_get_thermal_data` —
 * a self-contained dict so this component never reads from the POS env.
 *
 * Styling lives in laundry_pos.scss under `.laundry-thermal`. The
 * `webPrintFallback` option means this component also works when no
 * hardware printer is configured: POS opens a print preview in a new
 * tab using the same DOM.
 */
import { Component } from "@odoo/owl";

export class LaundryWorkOrderThermal extends Component {
    static template = "laundry_management.LaundryWorkOrderThermal";
    static props = {
        data: { type: Object },
    };

    fmt(amount) {
        return parseFloat(amount || 0).toFixed(2);
    }

    fmtDate(s) {
        if (!s) return "";
        try {
            const d = new Date(s.replace(" ", "T") + "Z");
            if (!isNaN(d.getTime())) return d.toLocaleString();
        } catch (_e) { /* fall through */ }
        return s;
    }

    get currency() {
        const sym = this.props.data?.currency_symbol || "";
        const pos = this.props.data?.currency_position || "after";
        return { sym, pos };
    }

    money(amount) {
        const v = this.fmt(amount);
        const { sym, pos } = this.currency;
        if (!sym) return v;
        return pos === "before" ? `${sym} ${v}` : `${v} ${sym}`;
    }
}
