[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) <qle@odoo.com>
Signed-off-by: Masereel Pierre <pim@odoo.com>
This commit is contained in:
pedrambiria
2022-03-31 12:32:50 +02:00
parent 00ed6aa042
commit 6a2f0c8db9
+1 -1
View File
@@ -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]);