From e66724272a5379c5d56f8fe48fa48ceac53cf12d Mon Sep 17 00:00:00 2001
From: Adrien Widart <awt@odoo.com>
Date: Tue, 7 Sep 2021 08:10:39 +0000
Subject: [PATCH] [FIX] point_of_sale: consider scanned price as manual price

In a POS session, when using the scanner, if the seller changes the
customer, the prices may become incorrect

To reproduce the issue
1. Create a product P:
    - Sales Price: 38
    - Barcode: 2312345000002
    - Available in POS: True
2. Start a POS session (with debug Window)
3. Scan 2312345010001
    - This is product P with price $10
4. Set a Customer

Error: The price is now $38

Because the price has not been set manually, when changing the customer,
the pricelist is updated and so does the price.

When scanning a barcode that includes a price, the latter should be
considered as manually set.

OPW-2618934

closes odoo/odoo#76063

Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
---
 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 9db4398035b8..06a9480103ac 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -1020,7 +1020,7 @@ exports.PosModel = Backbone.Model.extend({
         }
 
         if(parsed_code.type === 'price'){
-            selectedOrder.add_product(product, {price:parsed_code.value});
+            selectedOrder.add_product(product, {price:parsed_code.value, extras:{price_manually_set: true}});
         }else if(parsed_code.type === 'weight'){
             selectedOrder.add_product(product, {quantity:parsed_code.value, merge:false});
         }else if(parsed_code.type === 'discount'){
-- 
GitLab