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

View file

@ -74,7 +74,7 @@ class EvaluationLine(ModelSQL, ModelView):
# get id of origin chart-form # get id of origin chart-form
form_id = ModelData.get_id('cashbook_report', 'evalline_view_graph') 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) active_evaluation = context.get('active_evaluation', None)
# check if we are requested for our default form... # check if we are requested for our default form...
@ -191,7 +191,6 @@ class EvaluationLine(ModelSQL, ModelView):
lines = Lines.search([ lines = Lines.search([
('cashbook.btype.id', '=', self.dtype.id), ('cashbook.btype.id', '=', self.dtype.id),
('cashbook.state', '=', 'open'), ('cashbook.state', '=', 'open'),
('cashbook.owner.id', '=', Transaction().user),
], query=True) ], query=True)
query = lines.join(tab_line, condition=lines.id==tab_line.id, query = lines.join(tab_line, condition=lines.id==tab_line.id,
@ -203,7 +202,6 @@ class EvaluationLine(ModelSQL, ModelView):
) )
cursor.execute(*query) cursor.execute(*query)
balances = cursor.fetchall() balances = cursor.fetchall()
for balance in balances: for balance in balances:
(id_currency, bal1) = balance (id_currency, bal1) = balance
@ -237,7 +235,6 @@ class EvaluationLine(ModelSQL, ModelView):
lines = Lines.search([ lines = Lines.search([
('cashbook.currency.id', '=', self.currency.id), ('cashbook.currency.id', '=', self.currency.id),
('cashbook.state', '=', 'open'), ('cashbook.state', '=', 'open'),
('cashbook.owner.id', '=', Transaction().user),
], query=True) ], query=True)
query = lines.join(tab_line, condition=lines.id==tab_line.id, 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].name, 'usd')
self.assertEqual(evaluation3.line_values[1].balance, Decimal('35.71')) 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_user(users[1].id):
with Transaction().set_context({ with Transaction().set_context({
'_check_access': True, '_check_access': True,
@ -303,7 +305,7 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation2.line_values[1].balance, Decimal('0.0')) self.assertEqual(evaluation2.line_values[1].balance, Decimal('0.0'))
evaluation3, = Evaluation.create([{ evaluation3, = Evaluation.create([{
'name': 'Evaluation User 3 - Currencies', 'name': 'Evaluation User 2 - Currencies',
'dtype': 'currencies', 'dtype': 'currencies',
'currencies': [('add', [x.id for x in Currency.search([])])], '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].name, 'usd')
self.assertEqual(evaluation3.line_values[1].balance, Decimal('0.0')) 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() @with_transaction()
def test_report_update_name_of_line(self): def test_report_update_name_of_line(self):
""" check replace rec_name-value on line with """ check replace rec_name-value on line with
@ -490,7 +551,6 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.dtype, 'cashbooks') self.assertEqual(evaluation.dtype, 'cashbooks')
self.assertEqual(evaluation.chart, 'pie') self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True) self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.posted, False)
self.assertEqual(evaluation.maincolor, 'default') self.assertEqual(evaluation.maincolor, 'default')
self.assertEqual(evaluation.bgcolor, '#ffffc0') self.assertEqual(evaluation.bgcolor, '#ffffc0')
self.assertEqual(evaluation.currency.code, 'EUR') self.assertEqual(evaluation.currency.code, 'EUR')
@ -556,7 +616,6 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.dtype, 'types') self.assertEqual(evaluation.dtype, 'types')
self.assertEqual(evaluation.chart, 'pie') self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True) self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.posted, False)
self.assertEqual(evaluation.maincolor, 'default') self.assertEqual(evaluation.maincolor, 'default')
self.assertEqual(evaluation.bgcolor, '#ffffc0') self.assertEqual(evaluation.bgcolor, '#ffffc0')
self.assertEqual(evaluation.currency.code, 'EUR') self.assertEqual(evaluation.currency.code, 'EUR')
@ -600,7 +659,6 @@ class ReportTestCase(CashbookTestCase):
self.assertEqual(evaluation.dtype, 'currencies') self.assertEqual(evaluation.dtype, 'currencies')
self.assertEqual(evaluation.chart, 'pie') self.assertEqual(evaluation.chart, 'pie')
self.assertEqual(evaluation.legend, True) self.assertEqual(evaluation.legend, True)
self.assertEqual(evaluation.posted, False)
self.assertEqual(evaluation.maincolor, 'default') self.assertEqual(evaluation.maincolor, 'default')
self.assertEqual(evaluation.bgcolor, '#ffffc0') self.assertEqual(evaluation.bgcolor, '#ffffc0')
self.assertEqual(evaluation.currency.code, 'EUR') self.assertEqual(evaluation.currency.code, 'EUR')

View file

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

View file

@ -2,7 +2,7 @@
<!-- This file is part of the cashbook-module from m-ds for Tryton. <!-- 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 The COPYRIGHT file at the top level of this repository contains the
full copyright notices and license terms. --> full copyright notices and license terms. -->
<tree keyword_open="1"> <tree keyword_open="1" sequence="sequence">
<field name="name"/> <field name="name"/>
<field name="dtype"/> <field name="dtype"/>
<field name="chart"/> <field name="chart"/>