2021-07-22 14:15:59 +02:00
|
|
|
from trytond.pool import PoolMeta
|
|
|
|
from trytond.model import fields
|
|
|
|
from trytond.transaction import Transaction
|
|
|
|
from trytond.pyson import Eval
|
|
|
|
from trytond.i18n import gettext
|
|
|
|
from trytond.exceptions import UserError
|
2023-10-11 10:48:41 +02:00
|
|
|
from trytond.pyson import If
|
2021-07-22 14:15:59 +02:00
|
|
|
|
|
|
|
|
|
|
|
class Location(metaclass=PoolMeta):
|
|
|
|
__name__ = 'stock.location'
|
|
|
|
|
|
|
|
company = fields.Many2One('company.company', 'Company',
|
|
|
|
domain=[
|
|
|
|
('id', If(Eval('context', {}).contains('company'), '=', '!='),
|
|
|
|
Eval('context', {}).get('company', -1)),
|
|
|
|
])
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def __setup__(cls):
|
|
|
|
super().__setup__()
|
|
|
|
cls.parent.domain = [('company', '=', Eval('company'))]
|
|
|
|
cls.parent.depends = ['company']
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def default_company(cls):
|
|
|
|
return Transaction().context.get('company') or None
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def validate(cls, locations):
|
2021-07-22 15:24:47 +02:00
|
|
|
super().validate(locations)
|
2021-07-22 14:15:59 +02:00
|
|
|
for location in locations:
|
2021-07-22 15:24:47 +02:00
|
|
|
location.check_company()
|
2021-07-22 14:15:59 +02:00
|
|
|
|
|
|
|
def check_company(self):
|
2021-09-30 12:22:10 +02:00
|
|
|
if (self.company is not None and
|
|
|
|
self.company.id != Transaction().context.get('company')):
|
2021-09-30 12:12:15 +02:00
|
|
|
raise UserError(gettext(
|
|
|
|
'stock_location_company.msg_wrong_company',
|
|
|
|
location=self.rec_name))
|
2021-07-22 14:15:59 +02:00
|
|
|
for child in self.childs:
|
|
|
|
if child.company != self.company:
|
|
|
|
raise UserError(gettext(
|
|
|
|
'stock_location_company.msg_wrong_company',
|
2021-09-30 12:12:15 +02:00
|
|
|
location=self.rec_name))
|