graph weiter gebaut

This commit is contained in:
Frederik Jaeckel 2022-11-03 23:28:57 +01:00
parent 17ddfa12ca
commit 26d16a7297
11 changed files with 273 additions and 230 deletions

View file

@ -4,17 +4,18 @@
# full copyright notices and license terms. # full copyright notices and license terms.
from trytond.pool import Pool from trytond.pool import Pool
from .evaluation import Evaluation, EvaluationCashbookRel, \ from .evaluation import Evaluation, EvaluationLineRel
EvaluationTypeRel, EvaluationCurrencyRel
from .currency import Currency from .currency import Currency
from .evaluation_context import EvaluationContext from .evaluation_context import EvaluationContext
from .evaluation_wizard import OpenChartWizard
def register(): def register():
Pool.register( Pool.register(
Currency, Currency,
Evaluation, Evaluation,
EvaluationCashbookRel, EvaluationLineRel,
EvaluationTypeRel,
EvaluationCurrencyRel,
EvaluationContext, EvaluationContext,
module='cashbook_report', type_='model') module='cashbook_report', type_='model')
Pool.register(
OpenChartWizard,
module='cashbook_report', type_='wizard')

View file

@ -65,34 +65,28 @@ class Evaluation(ModelSQL, ModelView):
model_name='currency.currency') model_name='currency.currency')
cashbooks = fields.Many2Many(string='Cashbooks', cashbooks = fields.Many2Many(string='Cashbooks',
relation_name='cashbook_report.eval_book', relation_name='cashbook_report.eval_line',
origin='evaluation', target='cashbook', origin='evaluation', target='cashbook',
states={ states={
'invisible': Eval('dtype', '') != 'cashbooks', 'invisible': Eval('dtype', '') != 'cashbooks',
}, depends=['dtype']) }, depends=['dtype'])
types = fields.Many2Many(string='Types', types = fields.Many2Many(string='Types',
relation_name='cashbook_report.eval_type', relation_name='cashbook_report.eval_line',
origin='evaluation', target='dtype', origin='evaluation', target='dtype',
states={ states={
'invisible': Eval('dtype', '') != 'types', 'invisible': Eval('dtype', '') != 'types',
}, depends=['dtype']) }, depends=['dtype'])
currencies = fields.Many2Many(string='Currencies', currencies = fields.Many2Many(string='Currencies',
relation_name='cashbook_report.eval_currency', relation_name='cashbook_report.eval_line',
origin='evaluation', target='currency', origin='evaluation', target='currency',
filter=[('cashbook_hasbookings', '=', True)], filter=[('cashbook_hasbookings', '=', True)],
states={ states={
'invisible': Eval('dtype', '') != 'currencies', 'invisible': Eval('dtype', '') != 'currencies',
}, depends=['dtype']) }, depends=['dtype'])
cashbook_values = fields.One2Many(string='Cashbook Values', line_values = fields.One2Many(string='Line Values',
field='evaluation', readonly=True, field='evaluation', readonly=True,
model_name='cashbook_report.eval_book') model_name='cashbook_report.eval_line')
currency_values = fields.One2Many(string='Currency Values',
field='evaluation', readonly=True,
model_name='cashbook_report.eval_currency')
type_values = fields.One2Many(string='Type Values',
field='evaluation', readonly=True,
model_name='cashbook_report.eval_type')
ui_view_chart = fields.Many2One(string='UI View Point', ui_view_chart = fields.Many2One(string='UI View Point',
model_name='ir.ui.view', ondelete='SET NULL') model_name='ir.ui.view', ondelete='SET NULL')
@ -285,43 +279,36 @@ class Evaluation(ModelSQL, ModelView):
# end Evaluation # end Evaluation
class RelFieldsMixin(object): class EvaluationLineRel(ModelSQL):
""" common fields 'Evaluation Line Relation'
""" __name__ = 'cashbook_report.eval_line'
evaluation = fields.Many2One(string='Evaluation', required=True, evaluation = fields.Many2One(string='Evaluation', required=True,
select=True, ondelete='CASCADE', select=True, ondelete='CASCADE',
model_name='cashbook_report.evaluation') model_name='cashbook_report.evaluation')
cashbook = fields.Many2One(string='Cashbook', select=True, ondelete='CASCADE',
model_name='cashbook.book',
states={
'required': Eval('eval_dtype', '') == 'cashbooks',
}, depends=['eval_dtype'])
dtype = fields.Many2One(string='Type', select=True, ondelete='CASCADE',
model_name='cashbook.type',
states={
'required': Eval('eval_dtype', '') == 'types',
}, depends=['eval_dtype'])
currency = fields.Many2One(string='Currency', select=True, ondelete='CASCADE',
model_name='currency.currency',
states={
'required': Eval('eval_dtype', '') == 'currencies',
}, depends=['eval_dtype'])
# currency of evaluation
eval_currency = fields.Function(fields.Many2One(model_name='currency.currency', eval_currency = fields.Function(fields.Many2One(model_name='currency.currency',
string="Currency", readonly=True), 'on_change_with_eval_currency') string="Currency", readonly=True), 'on_change_with_eval_currency')
currency_digits = fields.Function(fields.Integer(string='Currency Digits', currency_digits = fields.Function(fields.Integer(string='Currency Digits',
readonly=True), 'on_change_with_currency_digits') readonly=True), 'on_change_with_currency_digits')
eval_dtype = fields.Function(fields.Char(string='Data type', readonly=True),
@fields.depends('evaluation', '_parent_evaluation.currency') 'on_change_with_eval_dtype')
def on_change_with_eval_currency(self, name=None):
""" currency of cashbook
"""
if self.evaluation:
return self.evaluation.currency.id
@fields.depends('evaluation', '_parent_evaluation.currency')
def on_change_with_currency_digits(self, name=None):
""" currency of cashbook
"""
if self.evaluation:
return self.evaluation.currency.digits
else:
return 2
# end RelFieldsMixin
class EvaluationCashbookRel(RelFieldsMixin, ModelSQL):
'Evaluation Cashbook Relation'
__name__ = 'cashbook_report.eval_book'
cashbook = fields.Many2One(string='Cashbook', required=True,
select=True, ondelete='CASCADE',
model_name='cashbook.book')
name = fields.Function(fields.Char(string='Name', readonly=True), name = fields.Function(fields.Char(string='Name', readonly=True),
'on_change_with_name') 'on_change_with_name')
@ -330,29 +317,95 @@ class EvaluationCashbookRel(RelFieldsMixin, ModelSQL):
depends=['currency_digits']), depends=['currency_digits']),
'on_change_with_balance') 'on_change_with_balance')
@classmethod
def fields_view_get(cls, view_id, view_type='form'):
""" replace form-view-id
"""
pool = Pool()
ModelData = pool.get('ir.model.data')
Evaluation = pool.get('cashbook_report.evaluation')
context = Transaction().context
# get id of origin chart-form
form_id = ModelData.get_id('cashbook_report', 'point_view_graph')
# active_chart was added by tree_open-action
active_evaluation = context.get('active_evaluation', None)
# check if we are requested for our default form...
if (view_type == 'graph') and (view_id == form_id) and \
(active_evaluation is not None):
evaluation, = Evaluation.browse([active_evaluation])
if evaluation.ui_view_point:
# ... switch to view, created by evaluation-config
view_id = evaluation.ui_view_point.id
return super(EvaluationLineRel, cls).fields_view_get(
view_id=view_id, view_type=view_type)
@fields.depends('evaluation', '_parent_evaluation.dtype')
def on_change_with_eval_dtype(self, name=None):
""" get dtape from parent
"""
if self.evaluation:
return self.evaluation.dtype
@fields.depends('evaluation', '_parent_evaluation.currency')
def on_change_with_eval_currency(self, name=None):
""" currency of evaluation
"""
if self.evaluation:
return self.evaluation.currency.id
@fields.depends('evaluation', '_parent_evaluation.currency')
def on_change_with_currency_digits(self, name=None):
""" currency-digits of evaluation
"""
if self.evaluation:
return self.evaluation.currency.digits
else:
return 2
@classmethod @classmethod
def validate(cls, records): def validate(cls, records):
""" check parent record """ check parent record
""" """
super(EvaluationCashbookRel, cls).validate(records) super(EvaluationLineRel, cls).validate(records)
for record in records: for record in records:
if record.evaluation.dtype != 'cashbooks': if (record.evaluation.dtype != 'cashbooks') and \
(record.cashbook is not None):
raise UserError(gettext( raise UserError(gettext(
'cashbook_report.msg_invalid_dtype', 'cashbook_report.msg_invalid_dtype',
typename = gettext('cashbook_report.msg_dtype_cashbook'), typename = gettext('cashbook_report.msg_dtype_cashbook'),
)) ))
if (record.evaluation.dtype != 'types') and \
(record.dtype is not None):
raise UserError(gettext(
'cashbook_report.msg_invalid_dtype',
typename = gettext('cashbook_report.msg_dtype_type'),
))
if (record.evaluation.dtype != 'currencies') and \
(record.currency is not None):
raise UserError(gettext(
'cashbook_report.msg_invalid_dtype',
typename = gettext('cashbook_report.msg_dtype_currency'),
))
@fields.depends('cashbook') @fields.depends('eval_dtype', 'cashbook', 'dtype', 'currency')
def on_change_with_name(self, name=None): def on_change_with_name(self, name=None):
""" get name of Type """ get name of Type
""" """
if self.cashbook: if self.eval_dtype:
return self.cashbook.rec_name return getattr(
getattr(self, {
'cashbooks': 'cashbook',
'types': 'dtype',
'currencies': 'currency',
}[self.eval_dtype], None),
'rec_name', None)
@fields.depends('cashbook', '_parent_cashbook.currency', \ def get_value_cashbooks(self):
'_parent_cashbook.balance', 'eval_currency', 'currency_digits') """ balance of cashbooks
def on_change_with_balance(self, name=None):
""" balance of cashbook
""" """
Currency = Pool().get('currency.currency') Currency = Pool().get('currency.currency')
@ -364,45 +417,7 @@ class EvaluationCashbookRel(RelFieldsMixin, ModelSQL):
self.eval_currency, self.eval_currency,
).quantize(exp) ).quantize(exp)
# end EvaluationCashbookRel def get_value_types(self):
class EvaluationTypeRel(RelFieldsMixin, ModelSQL):
'Evaluation Type Relation'
__name__ = 'cashbook_report.eval_type'
dtype = fields.Many2One(string='Type', required=True,
select=True, ondelete='CASCADE',
model_name='cashbook.type')
name = fields.Function(fields.Char(string='Name', readonly=True),
'on_change_with_name')
balance = fields.Function(fields.Numeric(string='Balance',
readonly=True, digits=(16, Eval('currency_digits', 2)),
depends=['currency_digits']),
'on_change_with_balance')
@classmethod
def validate(cls, records):
""" check parent record
"""
super(EvaluationTypeRel, cls).validate(records)
for record in records:
if record.evaluation.dtype != 'types':
raise UserError(gettext(
'cashbook_report.msg_invalid_dtype',
typename = gettext('cashbook_report.msg_dtype_type'),
))
@fields.depends('dtype')
def on_change_with_name(self, name=None):
""" get name of Type
"""
if self.dtype:
return self.dtype.rec_name
@fields.depends('evaluation', 'eval_currency', 'currency_digits', 'dtype')
def on_change_with_balance(self, name=None):
""" get balance of bookings in cashbooks by 'type', """ get balance of bookings in cashbooks by 'type',
converted to currency of evaluation converted to currency of evaluation
""" """
@ -446,44 +461,7 @@ class EvaluationTypeRel(RelFieldsMixin, ModelSQL):
exp = Decimal(Decimal(1) / 10 ** self.currency_digits) exp = Decimal(Decimal(1) / 10 ** self.currency_digits)
return total_amount.quantize(exp) return total_amount.quantize(exp)
# end EvaluationTypeRel def get_value_currencies(self):
class EvaluationCurrencyRel(RelFieldsMixin, ModelSQL):
'Evaluation Currency Relation'
__name__ = 'cashbook_report.eval_currency'
currency = fields.Many2One(string='Currency', required=True,
select=True, ondelete='CASCADE',
model_name='currency.currency')
name = fields.Function(fields.Char(string='Name', readonly=True),
'on_change_with_name')
balance = fields.Function(fields.Numeric(string='Balance',
readonly=True, digits=(16, Eval('currency_digits', 2)),
depends=['currency_digits']),
'on_change_with_balance')
@classmethod
def validate(cls, records):
""" check parent record
"""
super(EvaluationCurrencyRel, cls).validate(records)
for record in records:
if record.evaluation.dtype != 'currencies':
raise UserError(gettext(
'cashbook_report.msg_invalid_dtype',
typename = gettext('cashbook_report.msg_dtype_currency'),
))
@fields.depends('currency')
def on_change_with_name(self, name=None):
""" get name of Type
"""
if self.currency:
return self.currency.rec_name
@fields.depends('evaluation', 'eval_currency', 'currency_digits', 'currency')
def on_change_with_balance(self, name=None):
""" get balance of bookings in cashbooks by 'currency', """ get balance of bookings in cashbooks by 'currency',
converted to currency of evaluation converted to currency of evaluation
""" """
@ -522,4 +500,13 @@ class EvaluationCurrencyRel(RelFieldsMixin, ModelSQL):
exp = Decimal(Decimal(1) / 10 ** self.currency_digits) exp = Decimal(Decimal(1) / 10 ** self.currency_digits)
return total_amount.quantize(exp) return total_amount.quantize(exp)
# end EvaluationCurrencyRel @fields.depends('eval_dtype', 'eval_currency', 'currency_digits', \
'cashbook', '_parent_cashbook.currency', '_parent_cashbook.balance',\
'evaluation', 'dtype', 'currency')
def on_change_with_balance(self, name=None):
""" balance of cashbook
"""
if self.eval_dtype:
return getattr(self, 'get_value_%s' % self.eval_dtype)()
# end EvaluationLineRel

View file

@ -13,18 +13,18 @@ full copyright notices and license terms. -->
</record> </record>
<!-- action view - cashbook-graph --> <!-- action view - cashbook-graph -->
<record model="ir.action.act_window" id="act_evaluation_book_view"> <record model="ir.action.act_window" id="act_evaluation_graph_view">
<field name="name">Evaluation</field> <field name="name">Evaluation</field>
<field name="res_model">cashbook_report.eval_book</field> <field name="res_model">cashbook_report.eval_line</field>
<field name="context_model">cashbook_report.evaluation.context</field> <field name="context_model">cashbook_report.evaluation.context</field>
<field name="domain" <field name="domain"
eval="[('evaluation', '=', Eval('evaluation', -1))]" eval="[('evaluation', '=', Eval('evaluation', -1))]"
pyson="1"/> pyson="1"/>
</record> </record>
<record model="ir.action.act_window.view" id="act_evaluation_book_view-1"> <record model="ir.action.act_window.view" id="act_evaluation_graph_view-1">
<field name="sequence" eval="10"/> <field name="sequence" eval="10"/>
<field name="view" ref="book_view_graph"/> <field name="view" ref="book_view_graph"/>
<field name="act_window" ref="act_evaluation_book_view"/> <field name="act_window" ref="act_evaluation_graph_view"/>
</record> </record>
</data> </data>

38
evaluation_wizard.py Normal file
View file

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
# This file is part of the diagram-module from m-ds for Tryton.
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
from trytond.wizard import Wizard, StateAction
from trytond.transaction import Transaction
from trytond.pool import Pool
from trytond.i18n import gettext
from trytond.pyson import PYSONEncoder
class OpenChartWizard(Wizard):
'Open Chart'
__name__ = 'cashbook_report.wizchart'
start_state = 'open_'
open_ = StateAction('cashbook_report.act_evaluation_graph_view')
def do_open_(self, action):
""" open view from doubleclick
"""
Evaluation = Pool().get('cashbook_report.evaluation')
context = Transaction().context
# add info to enable replace of ui-view
evaluation, = Evaluation.browse([context['active_id']])
if evaluation.ui_view_chart:
action['pyson_context'] = PYSONEncoder().encode({
'active_evaluation': evaluation.id,
'evaluation': evaluation.id,
})
action['name'] = gettext(
'cashbook_report.msg_name_graph',
gname = evaluation.rec_name)
return action, {}
# end OpenChartWizard

21
evaluation_wizard.xml Normal file
View file

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<!-- This file is part of the diagram-module from m-ds for Tryton.
The COPYRIGHT file at the top level of this repository contains the
full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.action.wizard" id="wizard_open_chart">
<field name="name">Open Chart</field>
<field name="wiz_name">cashbook_report.wizchart</field>
<field name="model">cashbook_report.evaluation</field>
</record>
<record model="ir.action.keyword" id="wizard_open_chart_keyword1">
<field name="keyword">tree_open</field>
<field name="model">cashbook_report.evaluation,-1</field>
<field name="action" ref="wizard_open_chart"/>
</record>
</data>
</tryton>

23
line_value.xml Normal file
View file

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<!-- This file is part of the diagram-module from m-ds for Tryton.
The COPYRIGHT file at the top level of this repository contains the
full copyright notices and license terms. -->
<tryton>
<data>
<!-- views -->
<record model="ir.ui.view" id="evalline_view_graph">
<field name="model">cashbook_report.eval_line</field>
<field name="type">graph</field>
<field name="priority" eval="10"/>
<field name="name">evalline_graph</field>
</record>
<record model="ir.ui.view" id="evalline_view_list">
<field name="model">cashbook_report.eval_line</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="name">evalline_list</field>
</record>
</data>
</tryton>

View file

@ -22,6 +22,10 @@ msgctxt "model:ir.message,text:msg_dtype_currency"
msgid "Currencies" msgid "Currencies"
msgstr "Währungen" msgstr "Währungen"
msgctxt "model:ir.message,text:msg_name_graph"
msgid "Graph: %(gname)s"
msgstr "Diagramm: %(gname)s"
################# #################
# ir.rule.group # # ir.rule.group #
@ -48,84 +52,48 @@ msgstr "Auswertung"
############################# #############################
# cashbook_report.eval_book # # cashbook_report.eval_line #
############################# #############################
msgctxt "model:cashbook_report.eval_book,name:" msgctxt "model:cashbook_report.eval_line,name:"
msgid "Evaluation Cashbook Relation" msgid "Evaluation Line Relation"
msgstr "Auswertung Kassenbuch Verknüpfung" msgstr "Auswertung Zeile Verknüpfung"
msgctxt "field:cashbook_report.eval_book,evaluation:" msgctxt "field:cashbook_report.eval_line,evaluation:"
msgid "Evaluation" msgid "Evaluation"
msgstr "Auswertung" msgstr "Auswertung"
msgctxt "field:cashbook_report.eval_book,cashbook:" msgctxt "field:cashbook_report.eval_line,cashbook:"
msgid "Cashbook" msgid "Cashbook"
msgstr "Kassenbuch" msgstr "Kassenbuch"
msgctxt "field:cashbook_report.eval_book,eval_currency:" msgctxt "field:cashbook_report.eval_line,dtype:"
msgid "Data type"
msgstr "Datenart"
msgctxt "field:cashbook_report.eval_line,currency:"
msgid "Currency" msgid "Currency"
msgstr "Währung" msgstr "Währung"
msgctxt "field:cashbook_report.eval_book,currency_digits:" msgctxt "field:cashbook_report.eval_line,eval_currency:"
msgid "Currency"
msgstr "Währung"
msgctxt "field:cashbook_report.eval_line,currency_digits:"
msgid "Currency Digits" msgid "Currency Digits"
msgstr "Nachkommastellen Währung" msgstr "Nachkommastellen Währung"
msgctxt "field:cashbook_report.eval_line,eval_dtype:"
msgid "Data type"
msgstr "Datenart"
############################# msgctxt "field:cashbook_report.eval_line,name:"
# cashbook_report.eval_type #
#############################
msgctxt "model:cashbook_report.eval_type,name:"
msgid "Evaluation Type Relation"
msgstr "Auswertung Typ Verknüpfung"
msgctxt "field:cashbook_report.eval_type,evaluation:"
msgid "Evaluation"
msgstr "Auswertung"
msgctxt "field:cashbook_report.eval_type,dtype:"
msgid "Type"
msgstr "Typ"
msgctxt "field:cashbook_report.eval_type,name:"
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
msgctxt "field:cashbook_report.eval_type,balance:" msgctxt "field:cashbook_report.eval_line,balance:"
msgid "Balance" msgid "Balance"
msgstr "Saldo" msgstr "Saldo"
msgctxt "field:cashbook_report.eval_type,eval_currency:"
msgid "Currency"
msgstr "Währung"
msgctxt "field:cashbook_report.eval_type,currency_digits:"
msgid "Currency Digits"
msgstr "Nachkommastellen Währung"
#################################
# cashbook_report.eval_currency #
#################################
msgctxt "model:cashbook_report.eval_currency,name:"
msgid "Evaluation Currency Relation"
msgstr "Auswertung Währung Verknüpfung"
msgctxt "field:cashbook_report.eval_currency,evaluation:"
msgid "Evaluation"
msgstr "Auswertung"
msgctxt "field:cashbook_report.eval_currency,currency:"
msgid "Currency"
msgstr "Währung"
msgctxt "field:cashbook_report.eval_currency,eval_currency:"
msgid "Currency"
msgstr "Währung"
msgctxt "field:cashbook_report.eval_currency,currency_digits:"
msgid "Currency Digits"
msgstr "Nachkommastellen Währung"
############################## ##############################
# cashbook_report.evaluation # # cashbook_report.evaluation #
@ -250,25 +218,17 @@ msgctxt "field:cashbook_report.evaluation,cashbooks:"
msgid "Cashbooks" msgid "Cashbooks"
msgstr "Kassenbücher" msgstr "Kassenbücher"
msgctxt "field:cashbook_report.evaluation,cashbook_values:"
msgid "Cashbook Values"
msgstr "Kassenbuchwerte"
msgctxt "field:cashbook_report.evaluation,types:" msgctxt "field:cashbook_report.evaluation,types:"
msgid "Types" msgid "Types"
msgstr "Typen" msgstr "Typen"
msgctxt "field:cashbook_report.evaluation,type_values:"
msgid "Type Values"
msgstr "Typwerte"
msgctxt "field:cashbook_report.evaluation,currencies:" msgctxt "field:cashbook_report.evaluation,currencies:"
msgid "Currencies" msgid "Currencies"
msgstr "Währungen" msgstr "Währungen"
msgctxt "field:cashbook_report.evaluation,currency_values:" msgctxt "field:cashbook_report.evaluation,line_values:"
msgid "Currency Values" msgid "Line Values"
msgstr "Währungswerte" msgstr "Zeilenwerte"
msgctxt "field:cashbook_report.evaluation,currency:" msgctxt "field:cashbook_report.evaluation,currency:"
msgid "Currency" msgid "Currency"

View file

@ -17,6 +17,9 @@ full copyright notices and license terms. -->
<record model="ir.message" id="msg_dtype_currency"> <record model="ir.message" id="msg_dtype_currency">
<field name="text">Currencies</field> <field name="text">Currencies</field>
</record> </record>
<record model="ir.message" id="msg_name_graph">
<field name="text">Graph: %(gname)s</field>
</record>
</data> </data>
</tryton> </tryton>

View file

@ -172,7 +172,7 @@ class ReportTestCase(CashbookTestCase):
@with_transaction() @with_transaction()
def test_report_dtype_update(self): def test_report_dtype_update(self):
""" check unlink of cashbooks/types/currenciews """ check unlink of cashbooks/types/currencies
""" """
pool = Pool() pool = Pool()
Evaluation = pool.get('cashbook_report.evaluation') Evaluation = pool.get('cashbook_report.evaluation')
@ -257,7 +257,7 @@ class ReportTestCase(CashbookTestCase):
# must fail # must fail
self.assertRaisesRegex(UserError, self.assertRaisesRegex(UserError,
"Type of evaluation must be 'Cashbooks'.", 'A value is required for field "Type" in "Evaluation Line Relation".',
Evaluation.create, Evaluation.create,
[{ [{
'name': 'Evaluation 1', 'name': 'Evaluation 1',
@ -273,7 +273,7 @@ class ReportTestCase(CashbookTestCase):
# must fail # must fail
self.assertRaisesRegex(UserError, self.assertRaisesRegex(UserError,
"Type of evaluation must be 'Types of Cashbooks'.", 'A value is required for field "Cashbook" in "Evaluation Line Relation".',
Evaluation.create, Evaluation.create,
[{ [{
'name': 'Evaluation 3', 'name': 'Evaluation 3',
@ -330,18 +330,18 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.cashbooks[1].currency.code, 'usd') self.assertEqual(evaluation.cashbooks[1].currency.code, 'usd')
self.assertEqual(evaluation.cashbooks[2].currency.code, 'EUR') self.assertEqual(evaluation.cashbooks[2].currency.code, 'EUR')
self.assertEqual(len(evaluation.cashbook_values), 3) self.assertEqual(len(evaluation.line_values), 3)
self.assertEqual(evaluation.cashbook_values[0].name, 'Book 1 | 25.00 usd | Open') self.assertEqual(evaluation.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation.cashbook_values[1].name, 'Book 2 | 12.50 usd | Open') self.assertEqual(evaluation.line_values[1].name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(evaluation.cashbook_values[2].name, 'Book 3 | 23.00 € | Open') self.assertEqual(evaluation.line_values[2].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(evaluation.cashbook_values[0].eval_currency.code, 'EUR') self.assertEqual(evaluation.line_values[0].eval_currency.code, 'EUR')
self.assertEqual(evaluation.cashbook_values[1].eval_currency.code, 'EUR') self.assertEqual(evaluation.line_values[1].eval_currency.code, 'EUR')
self.assertEqual(evaluation.cashbook_values[2].eval_currency.code, 'EUR') self.assertEqual(evaluation.line_values[2].eval_currency.code, 'EUR')
self.assertEqual(evaluation.cashbook_values[0].balance, Decimal('23.81')) self.assertEqual(evaluation.line_values[0].balance, Decimal('23.81'))
self.assertEqual(evaluation.cashbook_values[1].balance, Decimal('11.90')) self.assertEqual(evaluation.line_values[1].balance, Decimal('11.90'))
self.assertEqual(evaluation.cashbook_values[2].balance, Decimal('23.00')) self.assertEqual(evaluation.line_values[2].balance, Decimal('23.00'))
@with_transaction() @with_transaction()
def test_report_chart_pie_type_red(self): def test_report_chart_pie_type_red(self):
@ -378,15 +378,15 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.types[0].rec_name, 'BK - Bank') self.assertEqual(evaluation.types[0].rec_name, 'BK - Bank')
self.assertEqual(evaluation.types[1].rec_name, 'CAS - Cash') self.assertEqual(evaluation.types[1].rec_name, 'CAS - Cash')
# 23.00 EUR # 23.00 EUR
self.assertEqual(len(evaluation.type_values), 2) self.assertEqual(len(evaluation.line_values), 2)
self.assertEqual(evaluation.type_values[0].eval_currency.code, 'EUR') self.assertEqual(evaluation.line_values[0].eval_currency.code, 'EUR')
self.assertEqual(evaluation.type_values[0].name, 'BK - Bank') self.assertEqual(evaluation.line_values[0].name, 'BK - Bank')
self.assertEqual(evaluation.type_values[0].balance, Decimal('23.0')) self.assertEqual(evaluation.line_values[0].balance, Decimal('23.0'))
# 37.50 USD --> EUR # 37.50 USD --> EUR
self.assertEqual(evaluation.type_values[1].name, 'CAS - Cash') self.assertEqual(evaluation.line_values[1].name, 'CAS - Cash')
self.assertEqual(evaluation.type_values[1].eval_currency.code, 'EUR') self.assertEqual(evaluation.line_values[1].eval_currency.code, 'EUR')
self.assertEqual(evaluation.type_values[1].balance, Decimal('35.71')) self.assertEqual(evaluation.line_values[1].balance, Decimal('35.71'))
@with_transaction() @with_transaction()
def test_report_chart_pie_currency_red(self): def test_report_chart_pie_currency_red(self):
@ -420,10 +420,10 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.currencies[0].code, 'EUR') self.assertEqual(evaluation.currencies[0].code, 'EUR')
self.assertEqual(evaluation.currencies[1].code, 'usd') self.assertEqual(evaluation.currencies[1].code, 'usd')
self.assertEqual(len(evaluation.currency_values), 2) self.assertEqual(len(evaluation.line_values), 2)
self.assertEqual(evaluation.currency_values[0].name, 'Euro') self.assertEqual(evaluation.line_values[0].name, 'Euro')
self.assertEqual(evaluation.currency_values[0].balance, Decimal('23.0')) self.assertEqual(evaluation.line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluation.currency_values[1].name, 'usd') self.assertEqual(evaluation.line_values[1].name, 'usd')
self.assertEqual(evaluation.currency_values[1].balance, Decimal('35.71')) self.assertEqual(evaluation.line_values[1].balance, Decimal('35.71'))
# end ReportTestCase # end ReportTestCase

View file

@ -7,5 +7,7 @@ xml:
message.xml message.xml
graph.xml graph.xml
evaluation.xml evaluation.xml
line_value.xml
evaluation_context.xml evaluation_context.xml
evaluation_wizard.xml
menu.xml menu.xml

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!-- This file is part of the cashbook-module from m-ds for Tryton.
The COPYRIGHT file at the top level of this repository contains the
full copyright notices and license terms. -->
<form col="2">
<label name="evaluation"/>
<field name="evaluation"/>
</form>