diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 6da476552db..20a55452a10 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -339,35 +339,42 @@ export class PosGlobalState extends PosModel { // reload the list of partner, returns as a promise that resolves if there were // updated partners, and fails if not - load_new_partners() { - return new Promise((resolve, reject) => { - var domain = this.prepare_new_partners_domain(); - this.env.services - .rpc( - { - model: "pos.session", - method: "get_pos_ui_res_partner_by_params", - args: [[odoo.pos_session_id], { domain }], - }, - { - timeout: 3000, - shadow: true, - } - ) - .then( - (partners) => { - if (this.addPartners(partners)) { - // check if the partners we got were real updates - resolve(); - } else { - reject("Failed in updating partners."); - } - }, - function (type, err) { - reject(); - } - ); - }); + async load_new_partners() { + let search_params = { domain: this.prepare_new_partners_domain() }; + if (this.env.pos.config.limited_partners_loading) { + search_params['order'] = 'write_date desc'; + if (this.env.pos.config.partner_load_background) { + search_params['limit'] = this.env.pos.config.limited_partners_amount || 1; + } + else { + search_params['limit'] = 1; + } + } + const partners = await this.env.services + .rpc( + { + model: 'pos.session', + method: 'get_pos_ui_res_partner_by_params', + args: [[odoo.pos_session_id], search_params], + }, + { + timeout: 3000, + shadow: true, + } + ) + if (this.env.pos.config.partner_load_background) { + this.loadPartnersBackground( + search_params['domain'], + this.env.pos.config.limited_partners_amount || 1, + 'write_date desc' + ); + } + if (this.addPartners(partners)) { + return true + } + else { + return false + } } setSelectedCategoryId(categoryId) { @@ -540,7 +547,7 @@ export class PosGlobalState extends PosModel { page += 1; } while (products.length == this.config.limited_products_amount); } - async loadPartnersBackground() { + async loadPartnersBackground(domain=[], offset=0, order=false) { // Start at the first page since the first set of loaded partners are not actually in the // same order as this background loading procedure. let i = 0; @@ -553,8 +560,10 @@ export class PosGlobalState extends PosModel { args: [ [odoo.pos_session_id], { + domain: domain, limit: this.config.limited_partners_amount, - offset: this.config.limited_partners_amount * i, + offset: offset + this.config.limited_partners_amount * i, + order: order, }, ], context: this.env.session.user_context,