[FIX] point_of_sale: reset number buffer when the select order line

Before this commit: if you add two products in PoS and try to change the quantity
for the first one, it works fine, but when you click on the other order line and try to
update the quantity, it uses the previous number buffer.

The solution is to reset the number buffer after selecting the order line.

closes odoo/odoo#103834

Issue: https://github.com/odoo/odoo/issues/103230
X-original-commit: 51f6a6798ce2cc3c23a2fc55280cbd1a80df6bec
Signed-off-by: Trinh Jacky (trj) <trj@odoo.com>
Signed-off-by: Pedram Bi Ria (pebr) <pebr@odoo.com>
This commit is contained in:
pedrambiria
2022-10-24 09:16:45 +02:00
parent 370cae07b8
commit 92e04dea0c
2 changed files with 24 additions and 0 deletions
@@ -16,6 +16,7 @@ odoo.define('point_of_sale.ProductScreen', function(require) {
setup() {
super.setup();
useListener('update-selected-orderline', this._updateSelectedOrderline);
useListener('select-line', this._selectLine);
useListener('set-numpad-mode', this._setNumpadMode);
useListener('click-product', this._clickProduct);
useListener('click-partner', this.onClickPartner);
@@ -161,6 +162,9 @@ odoo.define('point_of_sale.ProductScreen', function(require) {
NumberBuffer.reset();
this.env.pos.numpadMode = mode;
}
_selectLine() {
NumberBuffer.reset();
}
async _updateSelectedOrderline(event) {
if (this.env.pos.numpadMode === 'quantity' && this.env.pos.disallowLineQuantityChange()) {
let order = this.env.pos.get_order();
@@ -66,6 +66,26 @@ odoo.define('point_of_sale.tour.ProductScreen', function (require) {
ProductScreen.do.clickSubcategory('Chairs');
ProductScreen.check.productIsDisplayed('Letter Tray');
ProductScreen.do.clickHomeCategory();
// Add two orderlines and update quantity
ProductScreen.do.clickDisplayedProduct('Whiteboard Pen');
ProductScreen.do.clickDisplayedProduct('Wall Shelf Unit');
ProductScreen.do.clickOrderline('Whiteboard Pen', '1.0');
ProductScreen.check.selectedOrderlineHas('Whiteboard Pen', '1.0');
ProductScreen.do.pressNumpad('2');
ProductScreen.check.selectedOrderlineHas('Whiteboard Pen', '2.0');
ProductScreen.do.clickOrderline('Wall Shelf Unit', '1.0');
ProductScreen.check.selectedOrderlineHas('Wall Shelf Unit', '1.0');
ProductScreen.do.pressNumpad('2');
ProductScreen.check.selectedOrderlineHas('Wall Shelf Unit', '2.0');
ProductScreen.do.pressNumpad('Backspace');
ProductScreen.check.selectedOrderlineHas('Wall Shelf Unit', '0.0');
ProductScreen.do.pressNumpad('Backspace');
ProductScreen.check.selectedOrderlineHas('Whiteboard Pen', '2.0');
ProductScreen.do.pressNumpad('Backspace');
ProductScreen.check.selectedOrderlineHas('Whiteboard Pen', '0.0');
ProductScreen.do.pressNumpad('Backspace');
ProductScreen.check.orderIsEmpty();
// Add multiple orderlines then delete each of them until empty
ProductScreen.do.clickDisplayedProduct('Whiteboard Pen');