From 6a2f0c8db95664753862e2ffc439fd740dae334a Mon Sep 17 00:00:00 2001 From: pedrambiria Date: Fri, 18 Mar 2022 13:28:06 +0000 Subject: [PATCH] [FIX] point_of_sale: preserve unpaid orders with a payment Unpaid orders are preserved in the local storage and can be recovered even if you close the session and open a new one. But they would be removed if they didn't contain any lines (articles). On the other hand, it's possible to remove all of the order's lines after receiving payment. So it's essential to preserve an order which contains a payment. Steps to reproduce the issue: 1_ Open a PoS session and create a new order 2_ Add some articles and proceed with the payment 3_ Select one of the payment methods to make the payment 4_ Do not validate the session and click on the "Back" button 5_ Remove all of the order's article and close the session 6_ Open a new session from the same PoS => The order with the received payment is removed The solution is to preserve the orders with a payment line. opw-2766658 closes odoo/odoo#87502 X-original-commit: c15bc2818d928a102fc58f4cb2ea1a4a7f8755a2 Signed-off-by: Quentin Lejeune (qle) Signed-off-by: Masereel Pierre --- addons/point_of_sale/static/src/js/models.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index a56d694b723..05a713477fd 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -391,7 +391,7 @@ class PosGlobalState extends PosModel { } for (var i = 0; i < jsons.length; i++) { var json = jsons[i]; - if (json.pos_session_id !== this.pos_session.id && json.lines.length > 0) { + if (json.pos_session_id !== this.pos_session.id && (json.lines.length > 0 || json.statement_ids.length > 0)) { orders.push(this.createAutomaticallySavedOrder(json)); } else if (json.pos_session_id !== this.pos_session.id) { this.db.remove_unpaid_order(jsons[i]);