diff --git a/addons/pos_self_order/static/src/models/line.js b/addons/pos_self_order/static/src/models/line.js index a4f27f17eab..f366a00e30b 100644 --- a/addons/pos_self_order/static/src/models/line.js +++ b/addons/pos_self_order/static/src/models/line.js @@ -28,7 +28,7 @@ export class Line extends Reactive { this.customer_note = line.customer_note; this.price_subtotal_incl = line.price_subtotal_incl || 0; this.price_subtotal = line.price_subtotal || 0; - this.selected_attributes = line.selected_attributes || []; + this.selected_attributes = line.selected_attributes || {}; } isChange(lastChange) { diff --git a/addons/pos_self_order/static/src/models/order.js b/addons/pos_self_order/static/src/models/order.js index 3c31e9abdb4..5dc3f29409d 100644 --- a/addons/pos_self_order/static/src/models/order.js +++ b/addons/pos_self_order/static/src/models/order.js @@ -49,7 +49,7 @@ export class Order extends Reactive { this.lines = this.lines.map((line) => new Line(line)); } - computelastChangesSent() { + updateLastChanges() { for (const changeIdx in this.lastChangesSent) { const changeFound = this.lines.find((line) => line.uuid === changeIdx); if (!changeFound) { @@ -60,7 +60,7 @@ export class Order extends Reactive { this.lastChangesSent = this.lines.reduce((acc, line) => { acc[line.uuid] = { qty: line.qty, - selected_attributes: line.selected_attributes, + selected_attributes: { ...line.selected_attributes }, customer_note: line.customer_note, }; return acc; diff --git a/addons/pos_self_order/static/src/pages/order_cart/order_cart.js b/addons/pos_self_order/static/src/pages/order_cart/order_cart.js index 889f67a3cd4..628dae9ad90 100644 --- a/addons/pos_self_order/static/src/pages/order_cart/order_cart.js +++ b/addons/pos_self_order/static/src/pages/order_cart/order_cart.js @@ -20,6 +20,7 @@ export class OrderCart extends Component { this.router = useService("router"); this.state = useState({ selectTable: false, + cancelConfirmation: false, }); onWillStart(() => { @@ -31,6 +32,10 @@ export class OrderCart extends Component { return this.selfOrder.self_order_mode === "each" ? "Pay" : "Order"; } + get orderToPay() { + return this.selfOrder.self_order_mode === "each"; + } + async selectTable(table) { if (table) { this.selfOrder.table = table; @@ -62,4 +67,13 @@ export class OrderCart extends Component { this.selfOrder.notification.add(_t("Not yet implemented!"), { type: "danger" }); } } + + cancelToggle() { + this.state.cancelConfirmation = !this.state.cancelConfirmation; + } + + cancelOrder() { + this.selfOrder.cancelOrder(); + this.cancelToggle(); + } } diff --git a/addons/pos_self_order/static/src/pages/order_cart/order_cart.scss b/addons/pos_self_order/static/src/pages/order_cart/order_cart.scss new file mode 100644 index 00000000000..e7cb592367a --- /dev/null +++ b/addons/pos_self_order/static/src/pages/order_cart/order_cart.scss @@ -0,0 +1,4 @@ +.o_self-cancel-toggle-btn { + height: 55px; + width: 55px; +} diff --git a/addons/pos_self_order/static/src/pages/order_cart/order_cart.xml b/addons/pos_self_order/static/src/pages/order_cart/order_cart.xml index 8af8525f6e5..0abbbf5abc1 100644 --- a/addons/pos_self_order/static/src/pages/order_cart/order_cart.xml +++ b/addons/pos_self_order/static/src/pages/order_cart/order_cart.xml @@ -3,21 +3,39 @@
- +
-
- +
+
+ + + +
diff --git a/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.js b/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.js index bd65604e921..a3bf4b369b3 100644 --- a/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.js +++ b/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.js @@ -39,6 +39,15 @@ export class ProductMainView extends Component { this.initState(); } + get disableAttributes() { + const order = this.selfOrder.currentOrder; + return ( + this.selfOrder.editedLine && + this.selfOrder.editedLine.uuid && + order.lastChangesSent[this.selfOrder.editedLine.uuid] + ); + } + initState() { const editedLine = this.selfOrder.editedLine; diff --git a/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.xml b/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.xml index a7ce0be80b1..1ac966ca626 100644 --- a/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.xml +++ b/addons/pos_self_order/static/src/pages/product_main_view/product_main_view.xml @@ -39,6 +39,7 @@ t-att-value="value.name" t-attf-id="{{ attribute.id }}_{{ value.id }}" t-model="state.selectedVariants[attribute.name]" + t-att-disabled="disableAttributes" /> @@ -51,7 +52,7 @@