From 33af11eaec27cb67c9f79b5f707db0dcf5e33805 Mon Sep 17 00:00:00 2001 From: Thomas Fossoul Date: Wed, 21 Mar 2018 11:56:03 +0100 Subject: [PATCH] [10.0][IMP] purchase_packaging: optimise def subtract_procurements_from_orderpoints --- purchase_packaging/models/procurement_order.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/purchase_packaging/models/procurement_order.py b/purchase_packaging/models/procurement_order.py index 241cda83b..656ffca57 100644 --- a/purchase_packaging/models/procurement_order.py +++ b/purchase_packaging/models/procurement_order.py @@ -50,10 +50,18 @@ class Orderpoint(models.Model): # This override will return 12 and no additionnal procurement will be # created res = super(Orderpoint, self).subtract_procurements_from_orderpoints() + procurements = self.env['procurement.order'].search( + [('orderpoint_id', 'in', self.ids), + ('state', 'not in', ['cancel', 'done']), + ('purchase_line_id.state', '=', ['draft', 'sent', 'to approve'])]) + procurements.mapped('product_uom.rounding') + procurements.mapped('purchase_line_id.state') + procs_by_orderpoint = dict.fromkeys( + self.ids, self.env['procurement.order']) + for proc in procurements: + procs_by_orderpoint[proc.orderpoint_id.id] |= proc for orderpoint in self: - procs = self.env['procurement.order'].search( - [('orderpoint_id', '=', orderpoint.id), - ('state', 'not in', ['cancel', 'done'])]) + procs = procs_by_orderpoint.get(orderpoint.id) if procs: po_lines = procs.mapped('purchase_line_id').filtered( lambda x: x.state in ['draft', 'sent', 'to approve'])