trytond-stock_location_company/location.py

46 lines
1.5 KiB
Python

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
from trytond.pyson import If
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):
super().validate(locations)
for location in locations:
location.check_company()
def check_company(self):
if (self.company is not None and
self.company.id != Transaction().context.get('company')):
raise UserError(gettext(
'stock_location_company.msg_wrong_company',
location=self.rec_name))
for child in self.childs:
if child.company != self.company:
raise UserError(gettext(
'stock_location_company.msg_wrong_company',
location=self.rec_name))