/** @odoo-module * * ClosePosPopup patch — surface a READ-ONLY Laundry Settlements panel * in the POS closing popup so cashiers and managers can see how much * was collected via the laundry settle-dues flow during this session, * grouped per journal. * * NON-CASH settlements create account.payment records (not pos.payment), * so they don't naturally appear in the closing popup's per-method * breakdown. CASH settlements DO appear there (via statement_line_ids * in expected cash). This panel makes both visible side-by-side so the * cashier can reconcile drawer vs. settlement collections. * * IMPORTANT: this is purely informational. It does NOT inject into the * cash-counted/expected math, does NOT create accounting entries, and * does NOT modify settlement amounts. */ import { patch } from "@web/core/utils/patch"; import { onWillStart, useState } from "@odoo/owl"; import { ClosePosPopup } from "@point_of_sale/app/components/popups/closing_popup/closing_popup"; patch(ClosePosPopup.prototype, { setup() { super.setup(); this.laundrySettlements = useState({ loaded: false, total: 0.0, count: 0, by_journal: [], }); onWillStart(async () => { const sessionId = this.pos?.session?.id; if (!sessionId) { this.laundrySettlements.loaded = true; return; } try { const data = await this.pos.data.call( "res.partner", "get_session_settlements", [sessionId] ); if (data) { Object.assign(this.laundrySettlements, data, { loaded: true }); } } catch { // Read-only panel — silent failure is fine. this.laundrySettlements.loaded = true; } }); }, });