Ensure to set correct company context when calling today

issue11046
review370421002
This commit is contained in:
Cédric Krier committed 2022-01-23 12:54:56 +01:00
1 parent 87c0f1820b
commit e794bf8294
1 file changed
+31 -14
+31 -14
View File
@@ -2,6 +2,7 @@
# this repository contains the full copyright notices and license terms.
"Sales extension for managing leads and opportunities"
import datetime
from itertools import groupby
from sql import Literal, Null
from sql.aggregate import Count, Max, Sum
@@ -384,7 +385,8 @@ class SaleOpportunity(
def is_forecast(self):
pool = Pool()
Date = pool.get('ir.date')
today = Date.today()
with Transaction().set_context(company=self.company.id):
today = Date.today()
return self.end_date or datetime.date.max > today
@classmethod
@@ -392,29 +394,44 @@ class SaleOpportunity(
def won(cls, opportunities):
pool = Pool()
Date = pool.get('ir.date')
cls.write([o for o in opportunities if o.is_forecast], {
'end_date': Date.today(),
'state': 'won',
})
for company, c_opportunities in groupby(
opportunities, key=lambda o: o.company):
with Transaction().set_context(company=company.id):
today = Date.today()
cls.write([o for o in c_opportunities if o.is_forecast], {
'end_date': today,
'state': 'won',
})
@classmethod
@ModelView.button
@Workflow.transition('lost')
def lost(cls, opportunities):
Date = Pool().get('ir.date')
cls.write([o for o in opportunities if o.is_forecast], {
'end_date': Date.today(),
'state': 'lost',
})
pool = Pool()
Date = pool.get('ir.date')
for company, c_opportunities in groupby(
opportunities, key=lambda o: o.company):
with Transaction().set_context(company=company.id):
today = Date.today()
cls.write([o for o in c_opportunities if o.is_forecast], {
'end_date': today,
'state': 'lost',
})
@classmethod
@ModelView.button
@Workflow.transition('cancelled')
def cancel(cls, opportunities):
Date = Pool().get('ir.date')
cls.write([o for o in opportunities if o.is_forecast], {
'end_date': Date.today(),
})
pool = Pool()
Date = pool.get('ir.date')
for company, c_opportunities in groupby(
opportunities, key=lambda o: o.company):
with Transaction().set_context(company=company.id):
today = Date.today()
cls.write([o for o in c_opportunities if o.is_forecast], {
'end_date': today,
'state': 'cancelled',
})
@staticmethod
def _sale_won_states():