first commit
This commit is contained in:
93
modules/account_product/account.py
Normal file
93
modules/account_product/account.py
Normal file
@@ -0,0 +1,93 @@
|
||||
# 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
|
||||
|
||||
|
||||
class CreateChartProperties(metaclass=PoolMeta):
|
||||
__name__ = 'account.create_chart.properties'
|
||||
|
||||
category_account_expense = fields.Many2One(
|
||||
'account.account', 'Default Expense Account',
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.expense', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
])
|
||||
category_account_revenue = fields.Many2One(
|
||||
'account.account', 'Default Revenue Account',
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('type.revenue', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
])
|
||||
|
||||
|
||||
class CreateChart(metaclass=PoolMeta):
|
||||
__name__ = 'account.create_chart'
|
||||
|
||||
def transition_create_properties(self):
|
||||
pool = Pool()
|
||||
Configuration = pool.get('account.configuration')
|
||||
state = super().transition_create_properties()
|
||||
|
||||
with Transaction().set_context(company=self.properties.company.id):
|
||||
config = Configuration(1)
|
||||
for name in [
|
||||
'category_account_expense',
|
||||
'category_account_revenue']:
|
||||
setattr(config, 'default_%s' % name,
|
||||
getattr(self.properties, name, None))
|
||||
config.save()
|
||||
return state
|
||||
|
||||
def default_properties(self, fields):
|
||||
pool = Pool()
|
||||
Account = pool.get('account.account')
|
||||
|
||||
defaults = super().default_properties(fields)
|
||||
expense_accounts = Account.search([
|
||||
('type.expense', '=', True),
|
||||
('company', '=', self.account.company.id),
|
||||
], limit=2)
|
||||
revenue_accounts = Account.search([
|
||||
('type.revenue', '=', True),
|
||||
('company', '=', self.account.company.id),
|
||||
], limit=2)
|
||||
if len(expense_accounts) == 1:
|
||||
defaults['category_account_expense'] = expense_accounts[0].id
|
||||
else:
|
||||
defaults['category_account_expense'] = None
|
||||
if len(revenue_accounts) == 1:
|
||||
defaults['category_account_revenue'] = revenue_accounts[0].id
|
||||
else:
|
||||
defaults['category_account_revenue'] = None
|
||||
return defaults
|
||||
|
||||
|
||||
class MoveLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.move.line'
|
||||
|
||||
@property
|
||||
def product(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def rule_pattern(self):
|
||||
def parents(categories):
|
||||
for category in categories:
|
||||
while category:
|
||||
yield category
|
||||
category = category.parent
|
||||
|
||||
pattern = super().rule_pattern
|
||||
if self.product:
|
||||
pattern['product'] = self.product.id
|
||||
pattern['product_categories'] = [
|
||||
c.id for c in parents(self.product.categories_all)]
|
||||
else:
|
||||
pattern['product'] = None
|
||||
pattern['product_categories'] = []
|
||||
return pattern
|
||||
Reference in New Issue
Block a user