[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:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user