first commit
This commit is contained in:
218
modules/account/configuration.py
Normal file
218
modules/account/configuration.py
Normal file
@@ -0,0 +1,218 @@
|
||||
# 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 ModelSingleton, ModelSQL, ModelView, fields
|
||||
from trytond.modules.company.model import (
|
||||
CompanyMultiValueMixin, CompanyValueMixin)
|
||||
from trytond.pool import Pool
|
||||
from trytond.pyson import Eval, Id
|
||||
|
||||
tax_roundings = [
|
||||
('document', 'Per Document'),
|
||||
('line', 'Per Line'),
|
||||
]
|
||||
|
||||
|
||||
class Configuration(
|
||||
ModelSingleton, ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||
__name__ = 'account.configuration'
|
||||
default_account_receivable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Default Account Receivable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
]))
|
||||
default_account_payable = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Default Account Payable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
]))
|
||||
default_customer_tax_rule = fields.MultiValue(fields.Many2One(
|
||||
'account.tax.rule', "Default Customer Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('kind', 'in', ['sale', 'both']),
|
||||
],
|
||||
help="Default customer tax rule for new parties."))
|
||||
default_supplier_tax_rule = fields.MultiValue(fields.Many2One(
|
||||
'account.tax.rule', "Default Supplier Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('kind', 'in', ['purchase', 'both']),
|
||||
],
|
||||
help="Default supplier tax rule for new parties."))
|
||||
tax_rounding = fields.MultiValue(fields.Selection(
|
||||
tax_roundings, "Tax Rounding"))
|
||||
reconciliation_sequence = fields.MultiValue(fields.Many2One(
|
||||
'ir.sequence', "Reconciliation Sequence", required=True,
|
||||
domain=[
|
||||
('company', 'in',
|
||||
[Eval('context', {}).get('company', -1), None]),
|
||||
('sequence_type', '=',
|
||||
Id('account',
|
||||
'sequence_type_account_move_reconciliation')),
|
||||
]))
|
||||
currency_exchange_journal = fields.MultiValue(fields.Many2One(
|
||||
'account.journal', "Currency Exchange Journal",
|
||||
domain=[
|
||||
('type', '=', 'write-off'),
|
||||
]))
|
||||
currency_exchange_credit_account = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Currency Exchange Credit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
]))
|
||||
currency_exchange_debit_account = fields.MultiValue(fields.Many2One(
|
||||
'account.account', "Currency Exchange Debit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('context', {}).get('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
]))
|
||||
|
||||
@classmethod
|
||||
def multivalue_model(cls, field):
|
||||
pool = Pool()
|
||||
if field in {
|
||||
'default_account_receivable', 'default_account_payable',
|
||||
'currency_exchange_credit_account',
|
||||
'currency_exchange_debit_account'}:
|
||||
return pool.get('account.configuration.default_account')
|
||||
if field in {'default_customer_tax_rule', 'default_supplier_tax_rule'}:
|
||||
return pool.get('account.configuration.default_tax_rule')
|
||||
if field == 'reconciliation_sequence':
|
||||
return pool.get('account.configuration.sequence')
|
||||
elif field == 'currency_exchange_journal':
|
||||
return pool.get('account.configuration.journal')
|
||||
return super().multivalue_model(field)
|
||||
|
||||
@classmethod
|
||||
def default_tax_rounding(cls, **pattern):
|
||||
return cls.multivalue_model('tax_rounding').default_tax_rounding()
|
||||
|
||||
@classmethod
|
||||
def default_reconciliation_sequence(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'reconciliation_sequence').default_reconciliation_sequence()
|
||||
|
||||
@classmethod
|
||||
def default_currency_exchange_journal(cls, **pattern):
|
||||
return cls.multivalue_model(
|
||||
'currency_exchange_journal').default_currency_exchange_journal()
|
||||
|
||||
|
||||
class ConfigurationDefaultAccount(ModelSQL, CompanyValueMixin):
|
||||
__name__ = 'account.configuration.default_account'
|
||||
default_account_receivable = fields.Many2One(
|
||||
'account.account', "Default Account Receivable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.receivable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
])
|
||||
default_account_payable = fields.Many2One(
|
||||
'account.account', "Default Account Payable",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.payable', '=', True),
|
||||
('party_required', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
])
|
||||
currency_exchange_credit_account = fields.Many2One(
|
||||
'account.account', "Currency Exchange Credit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
])
|
||||
currency_exchange_debit_account = fields.Many2One(
|
||||
'account.account', "Currency Exchange Debit Account",
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.statement', '=', 'income'),
|
||||
('company', '=', Eval('company', -1)),
|
||||
('second_currency', '=', None),
|
||||
])
|
||||
|
||||
|
||||
class DefaultTaxRule(ModelSQL, CompanyValueMixin):
|
||||
__name__ = 'account.configuration.default_tax_rule'
|
||||
default_customer_tax_rule = fields.Many2One(
|
||||
'account.tax.rule', "Default Customer Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('kind', 'in', ['sale', 'both']),
|
||||
])
|
||||
default_supplier_tax_rule = fields.Many2One(
|
||||
'account.tax.rule', "Default Supplier Tax Rule",
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('kind', 'in', ['purchase', 'both']),
|
||||
])
|
||||
|
||||
|
||||
class ConfigurationTaxRounding(ModelSQL, CompanyValueMixin):
|
||||
__name__ = 'account.configuration.tax_rounding'
|
||||
configuration = fields.Many2One('account.configuration', 'Configuration',
|
||||
required=True, ondelete='CASCADE',
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
},
|
||||
depends={'company'})
|
||||
tax_rounding = fields.Selection(tax_roundings, 'Method', required=True)
|
||||
|
||||
@classmethod
|
||||
def default_tax_rounding(cls):
|
||||
return 'document'
|
||||
|
||||
|
||||
class Sequence(ModelSQL, CompanyValueMixin):
|
||||
__name__ = 'account.configuration.sequence'
|
||||
reconciliation_sequence = fields.Many2One(
|
||||
'ir.sequence', "Reconciliation Sequence", required=True,
|
||||
domain=[
|
||||
('company', 'in', [Eval('company', -1), None]),
|
||||
('sequence_type', '=',
|
||||
Id('account', 'sequence_type_account_move_reconciliation')),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def default_reconciliation_sequence(cls):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
try:
|
||||
return ModelData.get_id(
|
||||
'account', 'sequence_account_move_reconciliation')
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
|
||||
class Journal(ModelSQL, CompanyValueMixin):
|
||||
__name__ = 'account.configuration.journal'
|
||||
currency_exchange_journal = fields.Many2One(
|
||||
'account.journal', "Currency Exchange Journal",
|
||||
domain=[
|
||||
('type', '=', 'write-off'),
|
||||
],
|
||||
context={
|
||||
'company': Eval('company', -1),
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def default_currency_exchange_journal(cls):
|
||||
pool = Pool()
|
||||
ModelData = pool.get('ir.model.data')
|
||||
try:
|
||||
return ModelData.get_id('account', 'journal_currency_exchange')
|
||||
except KeyError:
|
||||
return None
|
||||
Reference in New Issue
Block a user