Files
tryton/modules/analytic_invoice/asset.py
T

69 lines
2.5 KiB
Python
Raw Normal View History

2016-10-12 22:36:54 +02:00
# 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
2021-12-11 17:58:42 +01:00
from trytond.modules.analytic_account import AnalyticMixin
2018-08-31 14:58:05 +02:00
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
2018-08-31 14:58:05 +02:00
from trytond.transaction import Transaction
2016-10-12 22:36:54 +02:00
2018-06-26 19:11:45 +02:00
class Asset(AnalyticMixin, metaclass=PoolMeta):
2016-10-12 22:36:54 +02:00
__name__ = 'account.asset'
@classmethod
def __setup__(cls):
super(Asset, cls).__setup__()
cls.analytic_accounts.domain = [
('company', '=', Eval('company', -1)),
]
2016-10-12 22:36:54 +02:00
@fields.depends('supplier_invoice_line', 'analytic_accounts')
def on_change_supplier_invoice_line(self):
pool = Pool()
Entry = pool.get('analytic.account.entry')
super(Asset, self).on_change_supplier_invoice_line()
if self.supplier_invoice_line:
entries = []
for entry in self.supplier_invoice_line.analytic_accounts:
new_entry = Entry()
for field in Entry._fields:
if field in {'origin', 'id'}:
continue
setattr(new_entry, field, getattr(entry, field))
entries.append(new_entry)
self.analytic_accounts = entries
def get_move(self, line):
move = super(Asset, self).get_move(line)
2021-04-10 16:44:13 +02:00
self.set_analytic_lines(move, self.product.account_expense_used)
2016-10-12 22:36:54 +02:00
return move
def get_closing_move(self, account, date=None):
move = super().get_closing_move(account, date=date)
2021-04-10 16:44:13 +02:00
self.set_analytic_lines(
move, account or self.product.account_revenue_used)
2016-10-12 22:36:54 +02:00
return move
2021-04-10 16:44:13 +02:00
def set_analytic_lines(self, move, account):
"Fill analytic lines on lines with given account"
2016-10-12 22:36:54 +02:00
if self.analytic_accounts:
2018-08-31 14:58:05 +02:00
with Transaction().set_context(date=move.date):
for line in move.lines:
2021-04-10 16:44:13 +02:00
if line.account != account:
2018-08-31 14:58:05 +02:00
continue
analytic_lines = []
for entry in self.analytic_accounts:
analytic_lines.extend(
entry.get_analytic_lines(line, move.date))
line.analytic_lines = analytic_lines
class UpdateAsset(metaclass=PoolMeta):
__name__ = 'account.asset.update'
def get_move(self, asset):
move = super().get_move(asset)
asset.set_analytic_lines(move, self.show_move.counterpart_account)
return move