auswertung: sequence-sortierung,
line: zugriff auf buchungen nur noch per berechtigungen
This commit is contained in:
parent
ee0a17cba2
commit
03882d1c11
5 changed files with 66 additions and 20 deletions
|
@ -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
|
||||||
|
|
5
line.py
5
line.py
|
@ -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,
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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"/>
|
||||||
|
|
|
@ -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"/>
|
||||||
|
|
Loading…
Reference in a new issue