From 459b565a944b9a5dc2974e3890f1ed2800c0c1ec Mon Sep 17 00:00:00 2001 From: "matthias.lotz" Date: Wed, 14 May 2025 23:18:04 +0200 Subject: [PATCH] select partner by pressing +, fixed delete order without popup --- static/src/js/ows_pos_customer_sidebar.js | 34 ++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/static/src/js/ows_pos_customer_sidebar.js b/static/src/js/ows_pos_customer_sidebar.js index 06c3101..dfd95b8 100644 --- a/static/src/js/ows_pos_customer_sidebar.js +++ b/static/src/js/ows_pos_customer_sidebar.js @@ -1,24 +1,50 @@ // @odoo-module import { Component } from "@odoo/owl"; +import { useService } from "@web/core/utils/hooks"; import { usePos } from "@point_of_sale/app/store/pos_hook"; +import { _t } from "@web/core/l10n/translation"; +import { ConfirmPopup } from "@point_of_sale/app/utils/confirm_popup/confirm_popup"; export class OwsPosCustomerSidebar extends Component { static template = "open_workshop.OwsPosCustomerSidebar"; setup() { this.pos = usePos(); + this.popup = useService("popup"); } addOrder() { - this.pos.add_new_order(); + this.pos.add_new_order(); // neue Order wird aktive Order + this.pos.selectPartner(); } - removeCurrentOrder() { + async removeCurrentOrder() { const order = this.pos.get_order(); - if (order) { - this.pos.removeOrder(order); + if (!order) return; + + // 🛑 Sicherheitsabfrage: Order enthält bereits Positionen + // Hinweis: Verhalten angelehnt an ticket_screen.js in Odoo 17.0 + if (order.get_orderlines().length > 0) { + const { confirmed } = await this.popup.add(ConfirmPopup, { + title: _t("Order enthält Positionen"), + body: _t("Möchtest du diese Order wirklich löschen?"), + }); + if (!confirmed) return; } + + // 📋 Alle verbleibenden Orders (nach der aktuellen) + const remainingOrders = this.pos.get_order_list().filter(o => o !== order); + + // 🗑 Order entfernen + this.pos.removeOrder(order); + + // ✅ Wenn noch andere Orders existieren, eine davon aktivieren + if (remainingOrders.length > 0) { + this.pos.set_order(remainingOrders[remainingOrders.length - 1]); // z. B. letzte Order aktivieren + } + + // Hinweis: Weitere Funktionen wie Sync mit Server (siehe ticket_screen.js) können hier ergänzt werden. } openTicketScreen() {