/** @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}`; } }