Check period closed per company
issue5934 review30611002
This commit is contained in:
@@ -5,6 +5,7 @@ import operator
|
||||
from decimal import Decimal
|
||||
from functools import partial
|
||||
from collections import OrderedDict, defaultdict
|
||||
from itertools import groupby
|
||||
|
||||
from sql import Literal, Union, Column, Null
|
||||
from sql.aggregate import Sum
|
||||
@@ -514,19 +515,21 @@ class Move(Workflow, ModelSQL, ModelView):
|
||||
@classmethod
|
||||
def check_period_closed(cls, moves):
|
||||
Period = Pool().get('stock.period')
|
||||
periods = Period.search([
|
||||
('state', '=', 'closed'),
|
||||
], order=[('date', 'DESC')], limit=1)
|
||||
if periods:
|
||||
period, = periods
|
||||
for move in moves:
|
||||
date = (move.effective_date if move.effective_date
|
||||
else move.planned_date)
|
||||
if date and date < period.date:
|
||||
cls.raise_user_error('period_closed', {
|
||||
'move': move.rec_name,
|
||||
'period': period.rec_name,
|
||||
})
|
||||
for company, moves in groupby(moves, lambda m: m.company):
|
||||
periods = Period.search([
|
||||
('state', '=', 'closed'),
|
||||
('company', '=', company.id),
|
||||
], order=[('date', 'DESC')], limit=1)
|
||||
if periods:
|
||||
period, = periods
|
||||
for move in moves:
|
||||
date = (move.effective_date if move.effective_date
|
||||
else move.planned_date)
|
||||
if date and date < period.date:
|
||||
cls.raise_user_error('period_closed', {
|
||||
'move': move.rec_name,
|
||||
'period': period.rec_name,
|
||||
})
|
||||
|
||||
def get_rec_name(self, name):
|
||||
return ("%s%s %s"
|
||||
|
||||
Reference in New Issue
Block a user