From f7621602f35a08d6b578dc2c2431c79861385a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 23 Jan 2022 12:54:56 +0100 Subject: [PATCH] Ensure to set correct company context when calling today issue11046 review370421002 --- commission.py | 3 ++- invoice.py | 26 +++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/commission.py b/commission.py index b3e96aaf18..b1d5964362 100644 --- a/commission.py +++ b/commission.py @@ -203,7 +203,8 @@ class AgentSelection(sequence_ordered(), MatchMixin, ModelSQL, ModelView): pattern = pattern.copy() if 'company' in pattern: pattern.pop('company') - date = pattern.pop('date', None) or Date.today() + with Transaction().set_context(company=self.company.id): + date = pattern.pop('date', None) or Date.today() if self.start_date and self.start_date > date: return False if self.end_date and self.end_date < date: diff --git a/invoice.py b/invoice.py index fb60dce2d1..f56451e445 100644 --- a/invoice.py +++ b/invoice.py @@ -1,6 +1,7 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. from collections import defaultdict +from itertools import groupby from trytond.model import ModelView, Workflow, fields from trytond.modules.product import round_price @@ -57,19 +58,21 @@ class Invoice(metaclass=PoolMeta): Date = pool.get('ir.date') Commission = pool.get('commission') - today = Date.today() - super(Invoice, cls).paid(invoices) date2commissions = defaultdict(list) - for sub_invoices in grouped_slice(invoices): - ids = [i.id for i in sub_invoices] - for commission in Commission.search([ - ('date', '=', None), - ('origin.invoice', 'in', ids, 'account.invoice.line'), - ]): - date = commission.origin.invoice.reconciled or today - date2commissions[date].append(commission) + for company, c_invoices in groupby(invoices, key=lambda i: i.company): + with Transaction().set_context(company=company.id): + today = Date.today() + for sub_invoices in grouped_slice(list(c_invoices)): + ids = [i.id for i in sub_invoices] + for commission in Commission.search([ + ('date', '=', None), + ('origin.invoice', 'in', ids, + 'account.invoice.line'), + ]): + date = commission.origin.invoice.reconciled or today + date2commissions[date].append(commission) to_write = [] for date, commissions in date2commissions.items(): to_write.append(commissions) @@ -158,7 +161,8 @@ class InvoiceLine(metaclass=PoolMeta): if self.type != 'line': return [] - today = Date.today() + with Transaction().set_context(company=self.invoice.company.id): + today = Date.today() commissions = [] for agent, plan in self.agent_plans_used: if not plan: