summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorWilliam Henrotin <whe@odoo.com>2021-05-06 13:33:32 +0000
committerWilliam Henrotin <whe@odoo.com>2021-05-06 13:38:12 +0000
commitc7b32e0795bc1573d81563f31a75fa44c64b39c2 (patch)
tree8810aa6179bb8369a692abd37a1fd49fbb3b55c1 /addons
parentf91ba797469f4a132b145b907c056a1acd6805de (diff)
[FIX] stock,mrp,purchase: bypass optionnal delay description
The _get_lead_days() method does two things: 1. Compute the lead day depending on the product to replenish 2. Build a string explaining what are the parts of this day number This second part is optional at the Replenishment report opening. As the string is translatable, this impact quite significantly the performance of this opening. closes odoo/odoo#70351 Opw: 2519528 Related: odoo/enterprise#18202 Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/mrp/models/stock_rule.py7
-rw-r--r--addons/purchase_stock/models/stock_rule.py9
-rw-r--r--addons/stock/models/stock_orderpoint.py2
-rw-r--r--addons/stock/models/stock_rule.py5
4 files changed, 16 insertions, 7 deletions
diff --git a/addons/mrp/models/stock_rule.py b/addons/mrp/models/stock_rule.py
index fa733a51776..0cf5969ff10 100644
--- a/addons/mrp/models/stock_rule.py
+++ b/addons/mrp/models/stock_rule.py
@@ -119,16 +119,19 @@ class StockRule(models.Model):
and cumulative description.
"""
delay, delay_description = super()._get_lead_days(product)
+ bypass_delay_description = self.env.context.get('bypass_delay_description')
manufacture_rule = self.filtered(lambda r: r.action == 'manufacture')
if not manufacture_rule:
return delay, delay_description
manufacture_rule.ensure_one()
manufacture_delay = product.produce_delay
delay += manufacture_delay
- delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Manufacturing Lead Time'), manufacture_delay, _('day(s)'))
+ if not bypass_delay_description:
+ delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Manufacturing Lead Time'), manufacture_delay, _('day(s)'))
security_delay = manufacture_rule.picking_type_id.company_id.manufacturing_lead
delay += security_delay
- delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Manufacture Security Lead Time'), security_delay, _('day(s)'))
+ if not bypass_delay_description:
+ delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Manufacture Security Lead Time'), security_delay, _('day(s)'))
return delay, delay_description
def _push_prepare_move_copy_values(self, move_to_copy, new_date):
diff --git a/addons/purchase_stock/models/stock_rule.py b/addons/purchase_stock/models/stock_rule.py
index f6a14616e50..2064f76b6e8 100644
--- a/addons/purchase_stock/models/stock_rule.py
+++ b/addons/purchase_stock/models/stock_rule.py
@@ -148,18 +148,21 @@ class StockRule(models.Model):
purpose in order to indicate that those options are available.
"""
delay, delay_description = super()._get_lead_days(product)
+ bypass_delay_description = self.env.context.get('bypass_delay_description')
buy_rule = self.filtered(lambda r: r.action == 'buy')
seller = product._prepare_sellers()
if not buy_rule or not seller:
return delay, delay_description
buy_rule.ensure_one()
supplier_delay = seller[0].delay
- if supplier_delay:
+ if supplier_delay and not bypass_delay_description:
delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Vendor Lead Time'), supplier_delay, _('day(s)'))
security_delay = buy_rule.picking_type_id.company_id.po_lead
- delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Purchase Security Lead Time'), security_delay, _('day(s)'))
+ if not bypass_delay_description:
+ delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Purchase Security Lead Time'), security_delay, _('day(s)'))
days_to_purchase = buy_rule.company_id.days_to_purchase
- delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Days to Purchase'), days_to_purchase, _('day(s)'))
+ if not bypass_delay_description:
+ delay_description += '<tr><td>%s</td><td class="text-right">+ %d %s</td></tr>' % (_('Days to Purchase'), days_to_purchase, _('day(s)'))
return delay + supplier_delay + security_delay + days_to_purchase, delay_description
@api.model
diff --git a/addons/stock/models/stock_orderpoint.py b/addons/stock/models/stock_orderpoint.py
index 2f093d7fa1a..99633912ed5 100644
--- a/addons/stock/models/stock_orderpoint.py
+++ b/addons/stock/models/stock_orderpoint.py
@@ -331,7 +331,7 @@ class StockWarehouseOrderpoint(models.Model):
product = self.env['product.product'].browse(product).with_prefetch(all_product_ids)
warehouse = self.env['stock.warehouse'].browse(warehouse).with_prefetch(all_warehouse_ids)
rules = product._get_rules_from_location(warehouse.lot_stock_id)
- lead_days = rules._get_lead_days(product)[0]
+ lead_days = rules.with_context(bypass_delay_description=True)._get_lead_days(product)[0]
pwh_per_day[(lead_days, warehouse)].append(product.id)
for (days, warehouse), p_ids in pwh_per_day.items():
products = self.env['product.product'].browse(p_ids)
diff --git a/addons/stock/models/stock_rule.py b/addons/stock/models/stock_rule.py
index af886835071..1336890e5a7 100644
--- a/addons/stock/models/stock_rule.py
+++ b/addons/stock/models/stock_rule.py
@@ -325,7 +325,10 @@ class StockRule(models.Model):
:rtype: tuple
"""
delay = sum(self.filtered(lambda r: r.action in ['pull', 'pull_push']).mapped('delay'))
- delay_description = ''.join(['<tr><td>%s %s</td><td class="text-right">+ %d %s</td></tr>' % (_('Delay on'), html_escape(rule.name), rule.delay, _('day(s)')) for rule in self if rule.action in ['pull', 'pull_push'] and rule.delay])
+ if self.env.context.get('bypass_delay_description'):
+ delay_description = ""
+ else:
+ delay_description = ''.join(['<tr><td>%s %s</td><td class="text-right">+ %d %s</td></tr>' % (_('Delay on'), html_escape(rule.name), rule.delay, _('day(s)')) for rule in self if rule.action in ['pull', 'pull_push'] and rule.delay])
return delay, delay_description