From 37d797f6d6b6dffc2d18ba0c24300ffaa312b71f Mon Sep 17 00:00:00 2001 From: adda-odoo Date: Thu, 22 Feb 2024 23:33:45 +0000 Subject: [PATCH] [FIX] point_of_sale: improve perf on saving res.partner edits Issue --> `saveChanges` at https://github.com/odoo/odoo/blob/saass-16.3/addons/point_of_sale/static/src/js/Screens/ClientListScreen/ClientListScreen.js#L155 calls `load_new_partners` that calls `prepare_new_partners_domain` to compute the domain on which the res.partner model is to be searched on, after the save has been commited. The search is done to update client side res.partner data. Domain in question --> https://github.com/odoo/odoo/blob/5404f3367a611e527fcecc2dd49e683864ba4b81/addons/point_of_sale/static/src/js/models.js#L784 This domain has the potential to make `search_read` return every res.partner record and compute fields such as 'total_due' on each one of them. This presents the issue of overworking postgres when we only need to update one res.partner record. Solution --> Use the `_loadPartners` method instead to only reload the current partner being edited + saved. opw-3619941 closes odoo/odoo#157120 X-original-commit: 7477978482bc3c22338faab486d67085452b006d Signed-off-by: Joseph Caburnay (jcb) Signed-off-by: Aditya Dasgupta (adda) --- .../static/src/app/screens/partner_list/partner_list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/point_of_sale/static/src/app/screens/partner_list/partner_list.js b/addons/point_of_sale/static/src/app/screens/partner_list/partner_list.js index 3451c525379..47bb2c6ac72 100644 --- a/addons/point_of_sale/static/src/app/screens/partner_list/partner_list.js +++ b/addons/point_of_sale/static/src/app/screens/partner_list/partner_list.js @@ -168,7 +168,7 @@ export class PartnerListScreen extends Component { } async saveChanges(processedChanges) { const partnerId = await this.orm.call("res.partner", "create_from_ui", [processedChanges]); - await this.pos.load_new_partners(); + await this.pos._loadPartners([partnerId]); this.state.selectedPartner = this.pos.db.get_partner_by_id(partnerId); this.confirm(); }