diff --git a/__init__.py b/__init__.py
index 7f0fd4a..660f817 100644
--- a/__init__.py
+++ b/__init__.py
@@ -4,10 +4,13 @@
# full copyright notices and license terms.
from trytond.pool import Pool
-from .evaluation import Evaluation, EvaluationCashbookRel
+from .evaluation import Evaluation, EvaluationCashbookRel, \
+ EvaluationTypeRel, EvaluationCurrencyRel
def register():
Pool.register(
Evaluation,
EvaluationCashbookRel,
+ EvaluationTypeRel,
+ EvaluationCurrencyRel,
module='cashbook_report', type_='model')
diff --git a/evaluation.py b/evaluation.py
index a7edb3d..01efe91 100644
--- a/evaluation.py
+++ b/evaluation.py
@@ -6,13 +6,16 @@
from trytond.model import ModelView, ModelSQL, fields, Check
from trytond.pyson import Eval, Or, Bool, Id, Len
from trytond.transaction import Transaction
+from trytond.i18n import gettext
+from trytond.exceptions import UserError
from .colors import sel_color as sel_bgcolor
sel_etype = [
- ('book', 'Cashbooks'),
- ('type', 'Types of Cashbooks'),
- ('currency', 'Currencys'),
+ ('cashbooks', 'Cashbooks'),
+ ('types', 'Types of Cashbooks'),
+ ('currencies', 'Currencys'),
+ #('category', 'Category'),
]
sel_chart = [
@@ -54,9 +57,28 @@ class Evaluation(ModelSQL, ModelView):
help='Background color of the chart area.', sort=False,
selection=sel_bgcolor)
posted = fields.Boolean(string='Posted', help='Posted amounts only.')
- lines = fields.Many2Many(string='Cashbooks',
+
+ cashbooks = fields.Many2Many(string='Cashbooks',
relation_name='cashbook_report.eval_book',
- origin='evaluation', target='cashbook')
+ origin='evaluation', target='cashbook',
+ states={
+ 'invisible': Eval('dtype', '') != 'cashbooks',
+ }, depends=['dtype'])
+ types = fields.Many2Many(string='Types',
+ relation_name='cashbook_report.eval_type',
+ origin='evaluation', target='dtype',
+ states={
+ 'invisible': Eval('dtype', '') != 'types',
+ }, depends=['dtype'])
+ currencies = fields.Many2Many(string='Currencies',
+ relation_name='cashbook_report.eval_currency',
+ origin='evaluation', target='currency',
+ states={
+ 'invisible': Eval('dtype', '') != 'currencies',
+ }, depends=['dtype'])
+
+ values = fields.One2Many(string='Values', field='evaluation',
+ model_name='cashbook_report.eval_book', readonly=True)
@staticmethod
def default_company():
@@ -90,7 +112,7 @@ class Evaluation(ModelSQL, ModelView):
def default_dtype(cls):
""" default 'book'
"""
- return 'book'
+ return 'cashbooks'
@classmethod
def default_chart(cls):
@@ -98,6 +120,50 @@ class Evaluation(ModelSQL, ModelView):
"""
return 'pie'
+ @classmethod
+ def write(cls, *args):
+ """ unlink records if dtype changes
+ """
+ to_write = []
+ actions = iter(args)
+ for evaluations, values in zip(actions, actions):
+ if 'dtype' in values.keys():
+ for evaluation in evaluations:
+ if evaluation.dtype == values['dtype']:
+ continue
+
+ if (values['dtype'] != 'cashbooks') and \
+ (len(evaluation.cashbooks) > 0):
+ to_write.extend([
+ [evaluation],
+ {
+ 'cashbooks': [
+ ('remove', [x.id for x in evaluation.cashbooks])
+ ],
+ }])
+
+ if (values['dtype'] != 'types') and (len(evaluation.types) > 0):
+ to_write.extend([
+ [evaluation],
+ {
+ 'types': [
+ ('remove', [x.id for x in evaluation.types])
+ ],
+ }])
+
+ if (values['dtype'] != 'currencies') and (len(evaluation.currencies) > 0):
+ to_write.extend([
+ [evaluation],
+ {
+ 'currencies': [
+ ('remove', [x.id for x in evaluation.currencies])
+ ],
+ }])
+
+ args = list(args)
+ args.extend(to_write)
+ super(Evaluation, cls).write(*args)
+
# end Evaluation
@@ -112,4 +178,45 @@ class EvaluationCashbookRel(ModelSQL):
select=True, ondelete='CASCADE',
model_name='cashbook.book')
+ @classmethod
+ def validate(cls, records):
+ """ check parent record
+ """
+ super(EvaluationCashbookRel, cls).validate(records)
+
+ for record in records:
+ if record.evaluation.dtype != 'cashbooks':
+ raise UserError(gettext(
+ 'cashbook_report.msg_invalid_dtype',
+ dtype = gettext('cashbook_report.msg_dtype_cashbook'),
+ ))
+
# end EvaluationCashbookRel
+
+
+class EvaluationTypeRel(ModelSQL):
+ 'Evaluation Type Relation'
+ __name__ = 'cashbook_report.eval_type'
+
+ evaluation = fields.Many2One(string='Evaluation', required=True,
+ select=True, ondelete='CASCADE',
+ model_name='cashbook_report.evaluation')
+ dtype = fields.Many2One(string='Type', required=True,
+ select=True, ondelete='CASCADE',
+ model_name='cashbook.type')
+
+# end EvaluationTypeRel
+
+
+class EvaluationCurrencyRel(ModelSQL):
+ 'Evaluation Currency Relation'
+ __name__ = 'cashbook_report.eval_currency'
+
+ evaluation = fields.Many2One(string='Evaluation', required=True,
+ select=True, ondelete='CASCADE',
+ model_name='cashbook_report.evaluation')
+ currency = fields.Many2One(string='Currency', required=True,
+ select=True, ondelete='CASCADE',
+ model_name='currency.currency')
+
+# end EvaluationCurrencyRel
diff --git a/locale/de.po b/locale/de.po
index 7b25302..fbbf608 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -3,6 +3,18 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+##############
+# ir.message #
+##############
+msgctxt "model:ir.message,text:msg_name_cashbook"
+msgid "Type of evaluation must be '%(dtype)s'."
+msgstr "Typ der Auswertung mus '%(dtype)s' sein."
+
+msgctxt "model:ir.message,text:msg_dtype_cashbook"
+msgid "Cashbooks"
+msgstr "Kassenbücher"
+
+
#################
# ir.rule.group #
#################
@@ -43,6 +55,38 @@ msgid "Cashbook"
msgstr "Kassenbuch"
+#############################
+# 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"
+
+
+#################################
+# 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"
+
+
##############################
# cashbook_report.evaluation #
##############################
@@ -162,6 +206,14 @@ msgctxt "help:cashbook_report.evaluation,posted:"
msgid "Posted amounts only."
msgstr "Nur festgeschriebene Beträge."
-msgctxt "field:cashbook_report.evaluation,lines:"
+msgctxt "field:cashbook_report.evaluation,cashbooks:"
msgid "Cashbooks"
msgstr "Kassenbücher"
+
+msgctxt "field:cashbook_report.evaluation,types:"
+msgid "Types"
+msgstr "Typen"
+
+msgctxt "field:cashbook_report.evaluation,currencies:"
+msgid "Currencies"
+msgstr "Währungen"
diff --git a/locale/en.po b/locale/en.po
index afb24b8..c26ba5d 100644
--- a/locale/en.po
+++ b/locale/en.po
@@ -2,6 +2,14 @@
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
+msgctxt "model:ir.message,text:msg_name_cashbook"
+msgid "Type of evaluation must be '%(dtype)s'."
+msgstr "Type of evaluation must be '%(dtype)s'."
+
+msgctxt "model:ir.message,text:msg_dtype_cashbook"
+msgid "Cashbooks"
+msgstr "Cashbooks"
+
msgctxt "model:ir.rule.group,name:rg_eval_write_adm"
msgid "Administrators: Evaluation read/write"
msgstr "Administrators: Evaluation read/write"
@@ -18,10 +26,54 @@ msgctxt "model:ir.ui.menu,name:menu_evaluation"
msgid "Evaluation"
msgstr "Evaluation"
+msgctxt "model:cashbook_report.eval_book,name:"
+msgid "Evaluation Cashbook Relation"
+msgstr "Evaluation Cashbook Relation"
+
+msgctxt "field:cashbook_report.eval_book,evaluation:"
+msgid "Evaluation"
+msgstr "Evaluation"
+
+msgctxt "field:cashbook_report.eval_book,cashbook:"
+msgid "Cashbook"
+msgstr "Cashbook"
+
+msgctxt "model:cashbook_report.eval_type,name:"
+msgid "Evaluation Type Relation"
+msgstr "Evaluation Type Relation"
+
+msgctxt "field:cashbook_report.eval_type,evaluation:"
+msgid "Evaluation"
+msgstr "Evaluation"
+
+msgctxt "field:cashbook_report.eval_type,dtype:"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "model:cashbook_report.eval_currency,name:"
+msgid "Evaluation Currency Relation"
+msgstr "Evaluation Currency Relation"
+
+msgctxt "field:cashbook_report.eval_currency,evaluation:"
+msgid "Evaluation"
+msgstr "Evaluation"
+
+msgctxt "field:cashbook_report.eval_currency,currency:"
+msgid "Currency"
+msgstr "Currency"
+
msgctxt "model:cashbook_report.evaluation,name:"
msgid "Evaluation"
msgstr "Evaluation"
+msgctxt "view:cashbook_report.evaluation:"
+msgid "Chart"
+msgstr "Chart"
+
+msgctxt "view:cashbook_report.evaluation:"
+msgid "Settings"
+msgstr "Settings"
+
msgctxt "view:cashbook_report.evaluation:"
msgid "Representation"
msgstr "Representation"
@@ -122,3 +174,15 @@ msgctxt "field:cashbook_report.evaluation,posted:"
msgid "Posted"
msgstr "Posted"
+msgctxt "help:cashbook_report.evaluation,posted:"
+msgid "Posted amounts only."
+msgstr "Posted amounts only."
+
+msgctxt "field:cashbook_report.evaluation,cashbooks:"
+msgid "Cashbooks"
+msgstr "Cashbooks"
+
+msgctxt "field:cashbook_report.evaluation,types:"
+msgid "Types"
+msgstr "Types"
+
diff --git a/message.xml b/message.xml
new file mode 100644
index 0000000..29da0b2
--- /dev/null
+++ b/message.xml
@@ -0,0 +1,16 @@
+
+
+