diff --git a/category.xml b/category.xml
index a5dcc66..896fcd8 100644
--- a/category.xml
+++ b/category.xml
@@ -42,6 +42,26 @@ full copyright notices and license terms. -->
+
+
+ Revenue
+
+
+
+
+
+ Expense
+
+
+
+
+
+ All
+
+
+
+
+
Category
@@ -59,6 +79,27 @@ full copyright notices and license terms. -->
+
+
+ Revenue
+
+
+
+
+
+ Expense
+
+
+
+
+
+ All
+
+
+
+
+
+
diff --git a/importer/import_qif.py b/importer/import_qif.py
index 00fca92..0b569e5 100644
--- a/importer/import_qif.py
+++ b/importer/import_qif.py
@@ -3,13 +3,15 @@
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
-from quiffen import Qif
-
file_name = 'bargeld.qif'
+file_category_income = 'category_income.qif'
+file_category_expense = 'category_expense.qif'
company_name = 'm-ds'
+from quiffen import Qif
from proteus import config, Model
from datetime import date
+import json
cfg1 = config.set_trytond(
'postgresql://postgres:test1@localhost:5432/tr44/',
@@ -28,12 +30,16 @@ if not len(mod_lst) == len(need_modules):
raise ValueError('einige module sind nicht aktiviert!')
-def add_category(category, parent, company):
+def add_category(category, parent, company, cattype):
""" check or add category
"""
Category = Model.get('cashbook.category')
- query = [('name', '=', category.name)]
+ query = [
+ ('name', '=', category.name),
+ ('cattype', '=', cattype),
+ ]
+
if parent is None:
query.append(('parent', '=', None))
else :
@@ -47,7 +53,7 @@ def add_category(category, parent, company):
print('- new-go:', getattr(parent, 'rec_name', '-'), category.name, category.income, category.expense)
cashbook_category, = Category.create([{
'name': category.name,
- 'cattype': 'in' if category.income == True else 'out',
+ 'cattype': cattype,
'parent': getattr(parent, 'id', None),
}], context={'company': company.id})
cashbook_category = Category(cashbook_category)
@@ -56,17 +62,43 @@ def add_category(category, parent, company):
raise ValueError('invalid num of category')
for subcat in category.children:
- add_category(subcat, cashbook_category, company)
+ add_category(subcat, cashbook_category, company, cattype)
# end add_category
-qif = Qif.parse(file_name, day_first=True)
+def get_category_tree(categories):
+ """ convert categories in dict-tree
+ """
+ result = []
+ for category in categories:
+ cat1 = {
+ 'name': category.name,
+ 'type': 'in' if category.income == True else 'out' if category.expense == True else 'ups',
+ }
+ cat1['childs'] = get_category_tree(category.children)
+ result.append(cat1)
+ return result
+
+# end get_category_tree
+
Company = Model.get('company.company')
company1, = Company.find([('rec_name', '=', company_name)])
-# import categories
+
+# income-category
+qif = Qif.parse(file_category_income, day_first=True)
+cat_tree = []
for catname in qif.categories.keys():
category = qif.categories[catname]
- add_category(category, None, company1)
+ #cat_tree.extend(get_category_tree([category]))
+ add_category(category, None, company1, 'in')
+
+# expense-category
+qif = Qif.parse(file_category_expense, day_first=True)
+cat_tree = []
+for catname in qif.categories.keys():
+ category = qif.categories[catname]
+ #cat_tree.extend(get_category_tree([category]))
+ add_category(category, None, company1, 'out')
diff --git a/locale/de.po b/locale/de.po
index 073d916..1148f46 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -318,6 +318,30 @@ msgctxt "model:ir.action.act_window.domain,name:act_line_domain_all"
msgid "All"
msgstr "Alle"
+msgctxt "model:ir.action.act_window.domain,name:act_category_tree_domain_in"
+msgid "Revenue"
+msgstr "Einnahmen"
+
+msgctxt "model:ir.action.act_window.domain,name:act_category_tree_domain_out"
+msgid "Expense"
+msgstr "Ausgaben"
+
+msgctxt "model:ir.action.act_window.domain,name:act_category_tree_domain_all"
+msgid "All"
+msgstr "Alle"
+
+msgctxt "model:ir.action.act_window.domain,name:act_category_list_domain_in"
+msgid "Revenue"
+msgstr "Einnahmen"
+
+msgctxt "model:ir.action.act_window.domain,name:act_category_list_domain_out"
+msgid "Expense"
+msgstr "Ausgaben"
+
+msgctxt "model:ir.action.act_window.domain,name:act_category_list_domain_all"
+msgid "All"
+msgstr "Alle"
+
###################
# ir.model.button #