From cefb3a469ca40377716b7c48f07f41946954781f Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Tue, 28 Apr 2020 15:02:27 +0000 Subject: [PATCH 1/3] [IMP] purchase_stock: create purchase order lines in batch --- addons/purchase_stock/models/purchase.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/purchase_stock/models/purchase.py b/addons/purchase_stock/models/purchase.py index cf28c11d272..6f1b774ca94 100644 --- a/addons/purchase_stock/models/purchase.py +++ b/addons/purchase_stock/models/purchase.py @@ -304,12 +304,11 @@ class PurchaseOrderLine(models.Model): total += move.product_uom._compute_quantity(move.product_uom_qty, line.product_uom) line.qty_received = total - @api.model - def create(self, values): - line = super(PurchaseOrderLine, self).create(values) - if line.order_id.state == 'purchase': - line._create_or_update_picking() - return line + @api.model_create_multi + def create(self, vals_list): + lines = super(PurchaseOrderLine, self).create(vals_list) + lines.filtered(lambda l: l.order_id.state == 'purchase')._create_or_update_picking() + return lines def write(self, values): for line in self.filtered(lambda l: not l.display_type): From 06e483dd69b13f27b8a9d0e505e78d79db0bf1b1 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Tue, 28 Apr 2020 15:03:05 +0000 Subject: [PATCH 2/3] [IMP] sale_purchase: create sales order lines in batch --- addons/sale_purchase/models/sale_order.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/sale_purchase/models/sale_order.py b/addons/sale_purchase/models/sale_order.py index 9eb6ef55849..dc645a7830a 100644 --- a/addons/sale_purchase/models/sale_order.py +++ b/addons/sale_purchase/models/sale_order.py @@ -109,13 +109,14 @@ class SaleOrderLine(models.Model): # CRUD # -------------------------- - @api.model + @api.model_create_multi def create(self, values): - line = super(SaleOrderLine, self).create(values) + lines = super(SaleOrderLine, self).create(values) # Do not generate purchase when expense SO line since the product is already delivered - if line.state == 'sale' and not line.is_expense: - line.sudo()._purchase_service_generation() - return line + lines.filtered( + lambda line: line.state == 'sale' and not line.is_expense + )._purchase_service_generation() + return lines def write(self, values): increased_lines = None From b310b3843ddae2dcb7f93de9ecbf0ee83f6024c8 Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Tue, 28 Apr 2020 15:12:23 +0000 Subject: [PATCH 3/3] [IMP] crm: create leads in batch --- addons/crm/models/crm_lead.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index 2a9a9d79b9d..7866ce4aa97 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -374,12 +374,12 @@ class Lead(models.Model): self._table, ['create_date', 'team_id']) return res - @api.model - def create(self, vals): - lead = super(Lead, self).create(vals) + @api.model_create_multi + def create(self, vals_list): + leads = super().create(vals_list) # Compute new probability for each lead separately - lead._update_probability() - return lead + leads._update_probability() + return leads def write(self, vals): # stage change: