auswertung: sequence-sortierung,

line: zugriff auf buchungen nur noch per berechtigungen
This commit is contained in:
Frederik Jaeckel 2022-11-05 21:43:28 +01:00
parent 80fbb5d722
commit 81c1624d97
5 changed files with 66 additions and 20 deletions

View file

@ -3,7 +3,7 @@
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.model import ModelView, ModelSQL, fields, sequence_ordered
from trytond.pyson import Eval
from trytond.transaction import Transaction
from trytond.pool import Pool
@ -36,7 +36,7 @@ sel_maincolor = [
]
class Evaluation(ModelSQL, ModelView):
class Evaluation(sequence_ordered(), ModelSQL, ModelView):
'Evaluation'
__name__ = 'cashbook_report.evaluation'
@ -57,7 +57,6 @@ class Evaluation(ModelSQL, ModelView):
bgcolor = fields.Selection(string='Background Color', required=True,
help='Background color of the chart area.', sort=False,
selection=sel_bgcolor)
posted = fields.Boolean(string='Posted', help='Posted amounts only.')
currency = fields.Many2One(string='Currency', ondelete='RESTRICT',
model_name='currency.currency')
@ -108,12 +107,6 @@ class Evaluation(ModelSQL, ModelView):
def default_company():
return Transaction().context.get('company') or None
@classmethod
def default_posted(cls):
""" default: False
"""
return False
@classmethod
def default_bgcolor(cls):
""" default: Yellow 5

View file

@ -74,7 +74,7 @@ class EvaluationLine(ModelSQL, ModelView):
# get id of origin chart-form
form_id = ModelData.get_id('cashbook_report', 'evalline_view_graph')
# active_chart was added by tree_open-action
# active_evaluation was added by tree_open-action
active_evaluation = context.get('active_evaluation', None)
# check if we are requested for our default form...
@ -191,7 +191,6 @@ class EvaluationLine(ModelSQL, ModelView):
lines = Lines.search([
('cashbook.btype.id', '=', self.dtype.id),
('cashbook.state', '=', 'open'),
('cashbook.owner.id', '=', Transaction().user),
], query=True)
query = lines.join(tab_line, condition=lines.id==tab_line.id,
@ -203,7 +202,6 @@ class EvaluationLine(ModelSQL, ModelView):
)
cursor.execute(*query)
balances = cursor.fetchall()
for balance in balances:
(id_currency, bal1) = balance
@ -237,7 +235,6 @@ class EvaluationLine(ModelSQL, ModelView):
lines = Lines.search([
('cashbook.currency.id', '=', self.currency.id),
('cashbook.state', '=', 'open'),
('cashbook.owner.id', '=', Transaction().user),
], query=True)
query = lines.join(tab_line, condition=lines.id==tab_line.id,

View file

@ -269,6 +269,8 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation3.line_values[1].name, 'usd')
self.assertEqual(evaluation3.line_values[1].balance, Decimal('35.71'))
self.assertEqual(Evaluation.search_count([]), 3)
with Transaction().set_user(users[1].id):
with Transaction().set_context({
'_check_access': True,
@ -303,7 +305,7 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation2.line_values[1].balance, Decimal('0.0'))
evaluation3, = Evaluation.create([{
'name': 'Evaluation User 3 - Currencies',
'name': 'Evaluation User 2 - Currencies',
'dtype': 'currencies',
'currencies': [('add', [x.id for x in Currency.search([])])],
}])
@ -315,6 +317,65 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation3.line_values[1].name, 'usd')
self.assertEqual(evaluation3.line_values[1].balance, Decimal('0.0'))
self.assertEqual(Evaluation.search_count([]), 3)
# outside of context
# we should have access to all 6 evaluations
evaluations = Evaluation.search([], order=[('name', 'ASC')])
self.assertEqual(len(evaluations), 6)
self.assertEqual(evaluations[0].name, 'Evaluation User 1 - Cashbooks')
self.assertEqual(len(evaluations[0].cashbooks), 2)
self.assertEqual(evaluations[0].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[0].line_values), 2)
self.assertEqual(evaluations[0].line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluations[0].line_values[0].balance, Decimal('23.81'))
self.assertEqual(evaluations[0].line_values[1].name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(evaluations[0].line_values[1].balance, Decimal('11.9'))
self.assertEqual(evaluations[1].name, 'Evaluation User 1 - Currencies')
self.assertEqual(len(evaluations[1].currencies), 2)
self.assertEqual(evaluations[1].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[1].line_values), 2)
self.assertEqual(evaluations[1].line_values[0].name, 'Euro')
self.assertEqual(evaluations[1].line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluations[1].line_values[1].name, 'usd')
self.assertEqual(evaluations[1].line_values[1].balance, Decimal('35.71'))
self.assertEqual(evaluations[2].name, 'Evaluation User 1 - Types')
self.assertEqual(len(evaluations[2].types), 2)
self.assertEqual(evaluations[2].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[2].line_values), 2)
self.assertEqual(evaluations[2].line_values[0].name, 'BK - Bank')
self.assertEqual(evaluations[2].line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluations[2].line_values[1].name, 'CAS - Cash')
self.assertEqual(evaluations[2].line_values[1].balance, Decimal('35.71'))
self.assertEqual(evaluations[3].name, 'Evaluation User 2 - Cashbooks')
self.assertEqual(len(evaluations[3].cashbooks), 1)
self.assertEqual(evaluations[3].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[3].line_values), 1)
self.assertEqual(evaluations[3].line_values[0].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(evaluations[3].line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluations[4].name, 'Evaluation User 2 - Currencies')
self.assertEqual(len(evaluations[4].currencies), 2)
self.assertEqual(evaluations[4].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[4].line_values), 2)
self.assertEqual(evaluations[4].line_values[0].name, 'Euro')
self.assertEqual(evaluations[4].line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluations[4].line_values[1].name, 'usd')
self.assertEqual(evaluations[4].line_values[1].balance, Decimal('35.71'))
self.assertEqual(evaluations[5].name, 'Evaluation User 2 - Types')
self.assertEqual(len(evaluations[5].types), 2)
self.assertEqual(evaluations[5].currency.rec_name, 'Euro')
self.assertEqual(len(evaluations[5].line_values), 2)
self.assertEqual(evaluations[5].line_values[0].name, 'BK - Bank')
self.assertEqual(evaluations[5].line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluations[5].line_values[1].name, 'CAS - Cash')
self.assertEqual(evaluations[5].line_values[1].balance, Decimal('35.71'))
@with_transaction()
def test_report_update_name_of_line(self):
""" check replace rec_name-value on line with
@ -490,7 +551,6 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.dtype, 'cashbooks')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.posted, False)
self.assertEqual(evaluation.maincolor, 'default')
self.assertEqual(evaluation.bgcolor, '#ffffc0')
self.assertEqual(evaluation.currency.code, 'EUR')
@ -556,7 +616,6 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.dtype, 'types')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.posted, False)
self.assertEqual(evaluation.maincolor, 'default')
self.assertEqual(evaluation.bgcolor, '#ffffc0')
self.assertEqual(evaluation.currency.code, 'EUR')
@ -600,7 +659,6 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.dtype, 'currencies')
self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.posted, False)
self.assertEqual(evaluation.maincolor, 'default')
self.assertEqual(evaluation.bgcolor, '#ffffc0')
self.assertEqual(evaluation.currency.code, 'EUR')

View file

@ -20,8 +20,6 @@ full copyright notices and license terms. -->
<label name="bgcolor"/>
<field name="bgcolor"/>
<label name="posted"/>
<field name="posted"/>
<newline/>
<field name="cashbooks" colspan="6"/>

View file

@ -2,7 +2,7 @@
<!-- 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. -->
<tree keyword_open="1">
<tree keyword_open="1" sequence="sequence">
<field name="name"/>
<field name="dtype"/>
<field name="chart"/>