summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/point_of_sale/static/src/js/Screens/TicketScreen/TicketScreen.js4
-rw-r--r--addons/point_of_sale/static/src/js/models.js11
-rw-r--r--addons/pos_restaurant/static/src/js/floors.js18
3 files changed, 22 insertions, 11 deletions
diff --git a/addons/point_of_sale/static/src/js/Screens/TicketScreen/TicketScreen.js b/addons/point_of_sale/static/src/js/Screens/TicketScreen/TicketScreen.js
index dd7adce4e07..f59b72d0b0a 100644
--- a/addons/point_of_sale/static/src/js/Screens/TicketScreen/TicketScreen.js
+++ b/addons/point_of_sale/static/src/js/Screens/TicketScreen/TicketScreen.js
@@ -91,6 +91,7 @@ odoo.define('point_of_sale.TicketScreen', function (require) {
if (!confirmed) return;
}
if (order) {
+ await this._canDeleteOrder(order);
order.destroy({ reason: 'abandon' });
}
posbus.trigger('order-deleted');
@@ -191,6 +192,9 @@ odoo.define('point_of_sale.TicketScreen', function (require) {
screenToStatusMap: this._screenToStatusMap,
});
}
+ async _canDeleteOrder(order) {
+ return true;
+ }
getOrderStates() {
return {
AllTickets: this.env._t('All Tickets'),
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index eedae8d9a8c..a2cd058ac06 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -1157,9 +1157,8 @@ exports.PosModel = Backbone.Model.extend({
timeout: timeout,
shadow: true,
})
- .then(function (ids) {
- self.db.set_ids_removed_from_server(server_ids);
- return server_ids;
+ .then(function (data) {
+ return self._post_remove_from_server(server_ids, data)
}).catch(function (reason){
var error = reason.message;
if(error.code === 200 ){ // Business Logic Error, not a connection problem
@@ -1175,6 +1174,12 @@ exports.PosModel = Backbone.Model.extend({
});
},
+ // to override
+ _post_remove_from_server(server_ids, data) {
+ this.db.set_ids_removed_from_server(server_ids);
+ return server_ids;
+ },
+
scan_product: function(parsed_code){
var selectedOrder = this.get_order();
var product = this.db.get_product_by_barcode(parsed_code.base_code);
diff --git a/addons/pos_restaurant/static/src/js/floors.js b/addons/pos_restaurant/static/src/js/floors.js
index 35dfec2d9fc..3f5b739a260 100644
--- a/addons/pos_restaurant/static/src/js/floors.js
+++ b/addons/pos_restaurant/static/src/js/floors.js
@@ -168,14 +168,7 @@ models.PosModel = models.PosModel.extend({
if (orders_to_sync.length) {
this.set_synch('connecting', orders_to_sync.length);
this._save_to_server(orders_to_sync, {'draft': true}).then(function (server_ids) {
- server_ids.forEach(function(server_id){
- table_orders.some(function(o){
- if (o.name === server_id.pos_reference) {
- o.server_id = server_id.id;
- o.save_to_db();
- }
- });
- });
+ server_ids.forEach(server_id => self.update_table_order(server_id, table_orders));
if (!ids_to_remove.length) {
self.set_synch('connected');
} else {
@@ -194,6 +187,15 @@ models.PosModel = models.PosModel.extend({
}
},
+ update_table_order: function(server_id, table_orders) {
+ const order = table_orders.find(o => o.name === server_id.pos_reference);
+ if (order) {
+ order.server_id = server_id.id;
+ order.save_to_db();
+ }
+ return order;
+ },
+
/**
* @param {models.Order} order order to set
*/