diff --git a/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js b/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js index 56f55f63e66..8e4146e5d5b 100644 --- a/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js +++ b/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js @@ -183,8 +183,23 @@ export class ProductScreen extends ControlButtonsMixin(Component) { this.currentOrder.add_product(product, options); this.numberBuffer.reset(); } - _barcodePartnerAction(code) { - const partner = this.pos.db.get_partner_by_barcode(code.code); + async _getPartnerByBarcode(code) { + let partner = this.pos.db.get_partner_by_barcode(code.code); + if (!partner) { + // find the partner in the backend by the barcode + const foundPartnerIds = await this.orm.search("res.partner", [ + ["barcode", "=", code.code] + ]); + if (foundPartnerIds.length) { + await this.pos._loadPartners(foundPartnerIds); + // assume that the result is unique. + partner = this.pos.db.get_partner_by_id(foundPartnerIds[0]); + } + } + return partner; + } + async _barcodePartnerAction(code) { + const partner = await this._getPartnerByBarcode(code); if (partner) { if (this.currentOrder.get_partner() !== partner) { this.currentOrder.set_partner(partner);