first commit
This commit is contained in:
60
modules/account_stock_eu/country.py
Normal file
60
modules/account_stock_eu/country.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
_ANY_DATE = object()
|
||||
|
||||
|
||||
class Country(metaclass=PoolMeta):
|
||||
__name__ = 'country.country'
|
||||
|
||||
def in_intrastat(self, date=_ANY_DATE):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
ModelData = pool.get('ir.model.data')
|
||||
Organization = pool.get('country.organization')
|
||||
|
||||
ctx = {}
|
||||
if date is _ANY_DATE:
|
||||
ctx['active_test'] = False
|
||||
else:
|
||||
ctx['active_test'] = True
|
||||
if date is None:
|
||||
date = Date.today()
|
||||
ctx['date'] = date
|
||||
|
||||
with Transaction().set_context(ctx):
|
||||
eu = Organization(ModelData.get_id('country', 'organization_eu'))
|
||||
return self in eu.countries
|
||||
|
||||
|
||||
class Subdivision(metaclass=PoolMeta):
|
||||
__name__ = 'country.subdivision'
|
||||
|
||||
intrastat_code = fields.Char(
|
||||
"Intrastat Code",
|
||||
states={
|
||||
'invisible': ~Eval('country_in_intrastat'),
|
||||
})
|
||||
|
||||
country_in_intrastat = fields.Function(
|
||||
fields.Boolean("Country in Intrastat"),
|
||||
'on_change_with_country_in_intrastat')
|
||||
|
||||
@fields.depends('country', '_parent_country.id')
|
||||
def on_change_with_country_in_intrastat(self, name=None):
|
||||
if self.country:
|
||||
return self.country.in_intrastat()
|
||||
|
||||
def get_intrastat(self):
|
||||
"Return the first subdivision with intrastat code in parents"
|
||||
subdivision = self
|
||||
while not subdivision.intrastat_code:
|
||||
subdivision = subdivision.parent
|
||||
if not subdivision:
|
||||
break
|
||||
return subdivision
|
||||
Reference in New Issue
Block a user