diff --git a/README.rst b/README.rst index f9ed603..d18f680 100644 --- a/README.rst +++ b/README.rst @@ -9,11 +9,33 @@ pip install mds-cashbook-dataexchange Requires ======== -- Tryton 7.0 +- Tryton 6.0 Changes ======= -*7.0.0 - 01.12.2023* +*6.0.5 - 06.06.2023* -- compatibility to Tryton 7.0 +- optimize code + +*6.0.4 - 14.02.2023* + +- fix: test + +*6.0.3 - 13.09.2022* + +- add: import of split-bookings +- updt: transfers + +*6.0.2 - 05.09.2022* + +- category: qif-export +- party, transactions: qif-import/export + +*6.0.1 - 31.08.2022* + +- add: qif - category - import + +*6.0.0 - 28.08.2022* + +- init diff --git a/__init__.py b/__init__.py index eca81a7..ca56a2a 100644 --- a/__init__.py +++ b/__init__.py @@ -7,11 +7,9 @@ from trytond.pool import Pool from .category import Category from .book import Book from .qiftool import QifTool -from .qif_import_wiz import ( - ImportQifWizard, ImportQifWizardStart, ImportQifWizardInfo) +from .qif_import_wiz import ImportQifWizard, ImportQifWizardStart, ImportQifWizardInfo from .qif_export import QifCategoryExport, QifBookExport - def register(): Pool.register( QifTool, diff --git a/qif_import_wiz.py b/qif_import_wiz.py index d79f927..c72d1a8 100644 --- a/qif_import_wiz.py +++ b/qif_import_wiz.py @@ -24,7 +24,8 @@ class ImportQifWizardStart(ModelView): string='Cashbook', readonly=True, model_name='cashbook.book', states={ - 'invisible': ~Bool(Eval('book'))}) + 'invisible': ~Bool(Eval('book')), + }) file_ = fields.Binary( string="QIF-File", required=True, help='Quicken Interchange Format') @@ -46,7 +47,8 @@ class ImportQifWizardInfo(ModelView): book = fields.Many2One( string='Cash Book', readonly=True, model_name='cashbook.book', states={ - 'invisible': ~Bool(Eval('book'))}) + 'invisible': ~Bool(Eval('book')), + }) allowimport = fields.Boolean( string='Import Enabled', states={'invisible': True}) @@ -67,7 +69,8 @@ class ImportQifWizard(Wizard): Button(string='Cancel', state='end', icon='tryton-cancel'), Button( string='Read File', state='readf', - icon='tryton-forward', default=True)]) + icon='tryton-forward', default=True), + ]) showinfo = StateView( model_name='cashbook_dataexchange.qif_imp_wiz.info', view='cashbook_dataexchange.qif_imp_wiz_info_form', @@ -76,7 +79,10 @@ class ImportQifWizard(Wizard): Button( string='Import Data', state='importf', icon='tryton-import', default=True, - states={'readonly': ~Eval('allowimport', False)})]) + states={ + 'readonly': Eval('allowimport', False) == False, + }), + ]) readf = StateTransition() importf = StateTransition() @@ -88,7 +94,8 @@ class ImportQifWizard(Wizard): values = { 'company': Transaction().context.get('company'), - 'book': None} + 'book': None, + } model = context.get('active_model', '') if model == 'cashbook.book': @@ -163,7 +170,8 @@ class ImportQifWizard(Wizard): ['%s (in)' % x for x in in_categories] + [''] + ['%s (out)' % x for x in out_categories] - )) + ) + ) if len(to_create) > 0: self.showinfo.allowimport = True else: @@ -174,7 +182,8 @@ class ImportQifWizard(Wizard): qif_content = QifTool.split_by_type(file_content) if 'Bank' in qif_content.keys(): to_create = QifTool.convert_parties_to_create( - QifTool.qif_read_transactions(qif_content['Bank'])) + QifTool.qif_read_transactions(qif_content['Bank']) + ) self.showinfo.info = gettext( 'cashbook_dataexchange.msg_wiz_parties_found', numparties=len(to_create), @@ -257,7 +266,8 @@ class ImportQifWizard(Wizard): Book.create_from_qif(self.showinfo.book, file_content) lines = Line.search([ ('cashbook.id', '=', self.showinfo.book.id), - ('state', '=', 'edit')]) + ('state', '=', 'edit'), + ]) if len(lines) > 0: Line.wfcheck(lines) elif model == 'party.party': diff --git a/setup.py b/setup.py index e212258..a6d57aa 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ """ # Always prefer setuptools over distutils -from setuptools import setup +from setuptools import setup, find_packages # To use a consistent encoding from codecs import open from os import path @@ -36,10 +36,10 @@ with open(path.join(here, 'versiondep.txt'), encoding='utf-8') as f: l2 = i.strip().split(';') if len(l2) < 4: continue - modversion[l2[0]] = {'min': l2[1], 'max': l2[2], 'prefix': l2[3]} + modversion[l2[0]] = {'min':l2[1], 'max':l2[2], 'prefix':l2[3]} # tryton-version -major_version = 7 +major_version = 6 minor_version = 0 requires = ['python-slugify'] @@ -51,21 +51,19 @@ for dep in info.get('depends', []): prefix = modversion[dep]['prefix'] if len(modversion[dep]['max']) > 0: - requires.append('%s_%s >= %s, <= %s' % ( - prefix, dep, modversion[dep]['min'], - modversion[dep]['max'])) - else: - requires.append('%s_%s >= %s' % ( - prefix, dep, modversion[dep]['min'])) - else: - requires.append('%s_%s >= %s.%s, < %s.%s' % ( - 'trytond', dep, major_version, minor_version, + requires.append('%s_%s >= %s, <= %s' % + (prefix, dep, modversion[dep]['min'], modversion[dep]['max'])) + else : + requires.append('%s_%s >= %s' % + (prefix, dep, modversion[dep]['min'])) + else : + requires.append('%s_%s >= %s.%s, < %s.%s' % + ('trytond', dep, major_version, minor_version, major_version, minor_version + 1)) -requires.append('trytond >= %s.%s, < %s.%s' % ( - major_version, minor_version, major_version, minor_version + 1)) +requires.append('trytond >= %s.%s, < %s.%s' % + (major_version, minor_version, major_version, minor_version + 1)) -setup( - name='%s_%s' % (PREFIX, MODULE), +setup(name='%s_%s' % (PREFIX, MODULE), version=info.get('version', '0.0.1'), description='Tryton module to add import/export to cashbook.', long_description=long_description, @@ -76,34 +74,35 @@ setup( author_email='service@m-ds.de', license='GPL-3', classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Environment :: Plugins', - 'Framework :: Tryton', - 'Intended Audience :: Developers', - 'Intended Audience :: Customer Service', - 'Intended Audience :: Information Technology', - 'Intended Audience :: Financial and Insurance Industry', - 'Topic :: Office/Business', - 'Topic :: Office/Business :: Financial :: Accounting', - 'Natural Language :: German', - 'Natural Language :: English', - 'Operating System :: OS Independent', - 'License :: OSI Approved :: GNU General Public License (GPL)', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', + 'Development Status :: 5 - Production/Stable', + 'Environment :: Plugins', + 'Framework :: Tryton', + 'Intended Audience :: Developers', + 'Intended Audience :: Customer Service', + 'Intended Audience :: Information Technology', + 'Intended Audience :: Financial and Insurance Industry', + 'Topic :: Office/Business', + 'Topic :: Office/Business :: Financial :: Accounting', + 'Natural Language :: German', + 'Natural Language :: English', + 'Operating System :: OS Independent', + 'License :: OSI Approved :: GNU General Public License (GPL)', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', ], + keywords='tryton cashbook import export', package_dir={'trytond.modules.%s' % MODULE: '.'}, packages=[ 'trytond.modules.%s' % MODULE, ], package_data={ - 'trytond.modules.%s' % MODULE: (info.get('xml', []) + [ - 'tryton.cfg', 'locale/*.po', 'tests/*.py', - 'report/*.fods', 'view/*.xml', - 'versiondep.txt', 'README.rst']), + 'trytond.modules.%s' % MODULE: (info.get('xml', []) + + ['tryton.cfg', 'locale/*.po', 'tests/*.py', + 'report/*.fods', 'view/*.xml', + 'versiondep.txt', 'README.rst']), }, + install_requires=requires, zip_safe=False, entry_points=""" diff --git a/tests/__init__.py b/tests/__init__.py index cf7e957..9ca41fe 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -2,3 +2,17 @@ # 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. + +import trytond.tests.test_tryton +import unittest + +from .test_module import CashbookExchangeTestCase + +__all__ = ['suite'] + + +def suite(): + suite = trytond.tests.test_tryton.suite() + suite.addTests(unittest.TestLoader().loadTestsFromTestCase( + CashbookExchangeTestCase)) + return suite diff --git a/tests/category.py b/tests/category.py index fdbd2a6..7d8d775 100644 --- a/tests/category.py +++ b/tests/category.py @@ -21,8 +21,7 @@ class CategoryTestCase(object): """ pool = Pool() Category = pool.get('cashbook.category') - ImportWiz = pool.get( - 'cashbook_dataexchange.qif_imp_wiz', type='wizard') + ImportWiz = pool.get('cashbook_dataexchange.qif_imp_wiz', type='wizard') company = self.prep_company() with Transaction().set_context({ @@ -359,8 +358,7 @@ I 'bookingtype': 'mvout', 'booktransf': books[1].id, 'description': - 'GA NR00002168 BLZ10000000 0; 05.12/06.42UHR ' + - 'TT TELTOW', + 'GA NR00002168 BLZ10000000 0; 05.12/06.42UHR TT TELTOW', }, { 'date': date(2013, 12, 5), 'amount': Decimal('56.37'), @@ -477,8 +475,7 @@ I result = QifTool.qif_read_categories( 'NGehalt\nI\n^\nNGehalt:Zulagen\nI\n^' + - 'NTelekommunikation\nE\n^\nNTelekommunikation:' + - 'Online-Dienste\nE\n^') + 'NTelekommunikation\nE\n^\nNTelekommunikation:Online-Dienste\nE\n^') self.assertEqual(result, { 'in': { 'Gehalt': { diff --git a/tests/party.py b/tests/party.py index 4a6f113..418c816 100644 --- a/tests/party.py +++ b/tests/party.py @@ -19,8 +19,7 @@ class PartyTestCase(object): """ pool = Pool() Party = pool.get('party.party') - ImportWiz = pool.get( - 'cashbook_dataexchange.qif_imp_wiz', type='wizard') + ImportWiz = pool.get('cashbook_dataexchange.qif_imp_wiz', type='wizard') company = self.prep_company() with Transaction().set_context({ @@ -46,9 +45,8 @@ class PartyTestCase(object): self.assertEqual(list(result.keys()), ['view']) self.assertEqual(result['view']['defaults']['company'], company.id) - self.assertEqual( - result['view']['defaults']['info'], - """The following 3 parties are now imported:\n + self.assertEqual(result['view']['defaults']['info'], +"""The following 3 parties are now imported:\n Opening Balance GA NR00002168 BLZ10000000 0 Foodshop Zehlendorf""") @@ -63,8 +61,7 @@ Foodshop Zehlendorf""") self.assertEqual(len(records), 4) self.assertEqual(records[0].rec_name, 'Foodshop Zehlendorf') - self.assertEqual( - records[1].rec_name, 'GA NR00002168 BLZ10000000 0') + self.assertEqual(records[1].rec_name, 'GA NR00002168 BLZ10000000 0') self.assertEqual(records[2].rec_name, 'm-ds') self.assertEqual(records[3].rec_name, 'Opening Balance') diff --git a/tests/test_module.py b/tests/test_module.py index 42fe0a0..a65b349 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -4,6 +4,7 @@ # full copyright notices and license terms. +from trytond.tests.test_tryton import ModuleTestCase from trytond.modules.cashbook.tests.test_module import CashbookTestCase from .category import CategoryTestCase from .party import PartyTestCase @@ -14,11 +15,12 @@ class CashbookExchangeTestCase( CashbookTestCase, CategoryTestCase, PartyTestCase, - TransactionTestCase): + TransactionTestCase, + ModuleTestCase): 'Test cashbook exchange module' module = 'cashbook_dataexchange' # end CashbookExchangeTestCase -del CashbookTestCase +del ModuleTestCase diff --git a/tests/transaction.py b/tests/transaction.py index b4448cf..eb5de30 100644 --- a/tests/transaction.py +++ b/tests/transaction.py @@ -84,8 +84,7 @@ class TransactionTestCase(object): Party = pool.get('party.party') Category = pool.get('cashbook.category') Book = pool.get('cashbook.book') - ImportWiz = pool.get( - 'cashbook_dataexchange.qif_imp_wiz', type='wizard') + ImportWiz = pool.get('cashbook_dataexchange.qif_imp_wiz', type='wizard') company = self.prep_company() with Transaction().set_context({ @@ -224,8 +223,7 @@ Mreturn of bottles Party = pool.get('party.party') Category = pool.get('cashbook.category') Book = pool.get('cashbook.book') - ImportWiz = pool.get( - 'cashbook_dataexchange.qif_imp_wiz', type='wizard') + ImportWiz = pool.get('cashbook_dataexchange.qif_imp_wiz', type='wizard') company = self.prep_company() with Transaction().set_context({ diff --git a/tryton.cfg b/tryton.cfg index c0d91af..9c2b32e 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -1,5 +1,5 @@ [tryton] -version=7.0.0 +version=6.0.5 depends: cashbook xml: diff --git a/versiondep.txt b/versiondep.txt index bae9199..834317e 100644 --- a/versiondep.txt +++ b/versiondep.txt @@ -1 +1 @@ -cashbook;7.0.31;7.0.999;mds +cashbook;6.0.28;6.0.999;mds