trytond-stock_location_company/location.py

46 lines
1.5 KiB
Python
Raw Normal View History

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))