From 658a5c13e27d0ed8c5bccfa5a41a42e0187d777b Mon Sep 17 00:00:00 2001 From: "Ronald Portier (Therp BV)" Date: Mon, 15 Dec 2014 10:18:55 +0100 Subject: [PATCH 01/16] [RFR] Move backported bank import modules from bank-payment to bank-statement-import repository. --- account_statement_import_qif/__init__.py | 4 + account_statement_import_qif/__openerp__.py | 32 ++++++++ .../account_bank_statement_import_qif.py | 77 +++++++++++++++++++ .../test_qif_file/test_qif.qif | 21 +++++ .../tests/__init__.py | 8 ++ .../tests/test_import_bank_statement.py | 30 ++++++++ 6 files changed, 172 insertions(+) create mode 100644 account_statement_import_qif/__init__.py create mode 100644 account_statement_import_qif/__openerp__.py create mode 100644 account_statement_import_qif/account_bank_statement_import_qif.py create mode 100644 account_statement_import_qif/test_qif_file/test_qif.qif create mode 100644 account_statement_import_qif/tests/__init__.py create mode 100644 account_statement_import_qif/tests/test_import_bank_statement.py diff --git a/account_statement_import_qif/__init__.py b/account_statement_import_qif/__init__.py new file mode 100644 index 00000000..784a476e --- /dev/null +++ b/account_statement_import_qif/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +from . import account_bank_statement_import_qif + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/account_statement_import_qif/__openerp__.py b/account_statement_import_qif/__openerp__.py new file mode 100644 index 00000000..d06c90a8 --- /dev/null +++ b/account_statement_import_qif/__openerp__.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# noqa: This is a backport from Odoo. OCA has no control over style here. +# flake8: noqa +{ + 'name': 'Import QIF Bank Statement', + 'version': '1.0', + 'author': 'OpenERP SA', + 'description': ''' +Module to import QIF bank statements. +====================================== + +This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in +Accounting \ Bank and Cash \ Bank Statements. + +Bank Statements may be generated containing a subset of the QIF information (only those transaction lines that are required for the +creation of the Financial Accounting records). + +Backported from Odoo 9.0 + +When testing with the provided test file, make sure the demo data from the +base account_bank_statement_import module has been imported, or manually +create periods for the year 2013. +''', + 'images' : [], + 'depends': ['account_bank_statement_import'], + 'demo': [], + 'data': [], + 'auto_install': False, + 'installable': True, +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/account_statement_import_qif/account_bank_statement_import_qif.py b/account_statement_import_qif/account_bank_statement_import_qif.py new file mode 100644 index 00000000..a95656eb --- /dev/null +++ b/account_statement_import_qif/account_bank_statement_import_qif.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +# noqa: This is a backport from Odoo. OCA has no control over style here. +# flake8: noqa + +import dateutil.parser +import base64 +from tempfile import TemporaryFile + +from openerp.tools.translate import _ +from openerp.osv import osv + +from openerp.addons.account_bank_statement_import import account_bank_statement_import as ibs + +ibs.add_file_type(('qif', 'QIF')) + +class account_bank_statement_import(osv.TransientModel): + _inherit = "account.bank.statement.import" + + def process_qif(self, cr, uid, data_file, journal_id=False, context=None): + """ Import a file in the .QIF format""" + try: + fileobj = TemporaryFile('wb+') + fileobj.write(base64.b64decode(data_file)) + fileobj.seek(0) + file_data = "" + for line in fileobj.readlines(): + file_data += line + fileobj.close() + if '\r' in file_data: + data_list = file_data.split('\r') + else: + data_list = file_data.split('\n') + header = data_list[0].strip() + header = header.split(":")[1] + except: + raise osv.except_osv(_('Import Error!'), _('Please check QIF file format is proper or not.')) + line_ids = [] + vals_line = {} + total = 0 + if header == "Bank": + vals_bank_statement = {} + for line in data_list: + line = line.strip() + if not line: + continue + if line[0] == 'D': # date of transaction + vals_line['date'] = dateutil.parser.parse(line[1:], fuzzy=True).date() + if vals_line.get('date') and not vals_bank_statement.get('period_id'): + period_ids = self.pool.get('account.period').find(cr, uid, vals_line['date'], context=context) + vals_bank_statement.update({'period_id': period_ids and period_ids[0] or False}) + elif line[0] == 'T': # Total amount + total += float(line[1:].replace(',', '')) + vals_line['amount'] = float(line[1:].replace(',', '')) + elif line[0] == 'N': # Check number + vals_line['ref'] = line[1:] + elif line[0] == 'P': # Payee + bank_account_id, partner_id = self._detect_partner(cr, uid, line[1:], identifying_field='owner_name', context=context) + vals_line['partner_id'] = partner_id + vals_line['bank_account_id'] = bank_account_id + vals_line['name'] = 'name' in vals_line and line[1:] + ': ' + vals_line['name'] or line[1:] + elif line[0] == 'M': # Memo + vals_line['name'] = 'name' in vals_line and vals_line['name'] + ': ' + line[1:] or line[1:] + elif line[0] == '^': # end of item + line_ids.append((0, 0, vals_line)) + vals_line = {} + elif line[0] == '\n': + line_ids = [] + else: + pass + else: + raise osv.except_osv(_('Error!'), _('Cannot support this Format !Type:%s.') % (header,)) + vals_bank_statement.update({'balance_end_real': total, + 'line_ids': line_ids, + 'journal_id': journal_id}) + return [vals_bank_statement] + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/account_statement_import_qif/test_qif_file/test_qif.qif b/account_statement_import_qif/test_qif_file/test_qif.qif new file mode 100644 index 00000000..5388e6da --- /dev/null +++ b/account_statement_import_qif/test_qif_file/test_qif.qif @@ -0,0 +1,21 @@ +!Type:Bank +D8/12/13 +T-1,000.00 +PDelta PC +^ +D8/15/13 +T-75.46 +PWalts Drugs +^ +D3/3/13 +T-379.00 +PEpic Technologies +^ +D3/4/13 +T-20.28 +PYOUR LOCAL SUPERMARKET +^ +D3/3/13 +T-421.35 +PSPRINGFIELD WATER UTILITY +^ diff --git a/account_statement_import_qif/tests/__init__.py b/account_statement_import_qif/tests/__init__.py new file mode 100644 index 00000000..389df58d --- /dev/null +++ b/account_statement_import_qif/tests/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# noqa: This is a backport from Odoo. OCA has no control over style here. +# flake8: noqa +from . import test_import_bank_statement +checks = [ + test_import_bank_statement +] + diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py new file mode 100644 index 00000000..68381294 --- /dev/null +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# noqa: This is a backport from Odoo. OCA has no control over style here. +# flake8: noqa +from openerp.tests.common import TransactionCase +from openerp.modules.module import get_module_resource + +class TestQifFile(TransactionCase): + """Tests for import bank statement qif file format (account.bank.statement.import) + """ + + def setUp(self): + super(TestQifFile, self).setUp() + self.statement_import_model = self.registry('account.bank.statement.import') + self.bank_statement_model = self.registry('account.bank.statement') + self.bank_statement_line_model = self.registry('account.bank.statement.line') + + def test_qif_file_import(self): + from openerp.tools import float_compare + cr, uid = self.cr, self.uid + qif_file_path = get_module_resource('account_bank_statement_import_qif', 'test_qif_file', 'test_qif.qif') + qif_file = open(qif_file_path, 'rb').read().encode('base64') + bank_statement_id = self.statement_import_model.create(cr, uid, dict( + file_type='qif', + data_file=qif_file, + )) + self.statement_import_model.parse_file(cr, uid, [bank_statement_id]) + line_id = self.bank_statement_line_model.search(cr, uid, [('name', '=', 'YOUR LOCAL SUPERMARKET')])[0] + statement_id = self.bank_statement_line_model.browse(cr, uid, line_id).statement_id.id + bank_st_record = self.bank_statement_model.browse(cr, uid, statement_id) + assert float_compare(bank_st_record.balance_end_real, -1896.09, 2) == 0 From e637b9cb3c7a910257e225c28783cd1492f5bf8b Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 23 Jan 2015 22:50:24 +0100 Subject: [PATCH 02/16] New backport from odoo/master Fix bug #5 --- account_statement_import_qif/__openerp__.py | 22 ++--- .../account_bank_statement_import_qif.py | 81 +++++++++++------- ...account_bank_statement_import_qif_view.xml | 24 ++++++ .../static/description/icon.png | Bin 0 -> 6146 bytes .../tests/__init__.py | 4 - .../tests/test_import_bank_statement.py | 11 ++- 6 files changed, 91 insertions(+), 51 deletions(-) create mode 100644 account_statement_import_qif/account_bank_statement_import_qif_view.xml create mode 100644 account_statement_import_qif/static/description/icon.png diff --git a/account_statement_import_qif/__openerp__.py b/account_statement_import_qif/__openerp__.py index d06c90a8..21b9684d 100644 --- a/account_statement_import_qif/__openerp__.py +++ b/account_statement_import_qif/__openerp__.py @@ -1,32 +1,28 @@ # -*- coding: utf-8 -*- # noqa: This is a backport from Odoo. OCA has no control over style here. # flake8: noqa + { 'name': 'Import QIF Bank Statement', + 'category' : 'Accounting & Finance', 'version': '1.0', 'author': 'OpenERP SA', 'description': ''' Module to import QIF bank statements. ====================================== -This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in +This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in Accounting \ Bank and Cash \ Bank Statements. -Bank Statements may be generated containing a subset of the QIF information (only those transaction lines that are required for the -creation of the Financial Accounting records). - -Backported from Odoo 9.0 - -When testing with the provided test file, make sure the demo data from the -base account_bank_statement_import module has been imported, or manually -create periods for the year 2013. +Important Note +--------------------------------------------- +Because of the QIF format limitation, we cannot ensure the same transactions aren't imported several times or handle multicurrency. +Whenever possible, you should use a more appropriate file format like OFX. ''', - 'images' : [], + 'images': [], 'depends': ['account_bank_statement_import'], 'demo': [], - 'data': [], + 'data': ['account_bank_statement_import_qif_view.xml'], 'auto_install': False, 'installable': True, } - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/account_statement_import_qif/account_bank_statement_import_qif.py b/account_statement_import_qif/account_bank_statement_import_qif.py index a95656eb..38f6a5c9 100644 --- a/account_statement_import_qif/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/account_bank_statement_import_qif.py @@ -3,29 +3,49 @@ # flake8: noqa import dateutil.parser -import base64 -from tempfile import TemporaryFile +import StringIO from openerp.tools.translate import _ -from openerp.osv import osv - -from openerp.addons.account_bank_statement_import import account_bank_statement_import as ibs - -ibs.add_file_type(('qif', 'QIF')) +from openerp.osv import osv, fields +from openerp.exceptions import Warning class account_bank_statement_import(osv.TransientModel): _inherit = "account.bank.statement.import" - def process_qif(self, cr, uid, data_file, journal_id=False, context=None): - """ Import a file in the .QIF format""" + _columns = { + 'journal_id': fields.many2one('account.journal', string='Journal', help='Accounting journal related to the bank statement you\'re importing. It has be be manually chosen for statement formats which doesn\'t allow automatic journal detection (QIF for example).'), + 'hide_journal_field': fields.boolean('Hide the journal field in the view'), + } + + def _get_hide_journal_field(self, cr, uid, context=None): + return context and 'journal_id' in context or False + + _defaults = { + 'hide_journal_field': _get_hide_journal_field, + } + + def _get_journal(self, cr, uid, currency_id, bank_account_id, account_number, context=None): + """ As .QIF format does not allow us to detect the journal, we need to let the user choose it. + We set it in context before to call super so it's the same as calling the widget from a journal """ + if context is None: + context = {} + if context.get('active_id'): + record = self.browse(cr, uid, context.get('active_id'), context=context) + if record.journal_id: + context['journal_id'] = record.journal_id.id + return super(account_bank_statement_import, self)._get_journal(cr, uid, currency_id, bank_account_id, account_number, context=context) + + def _check_qif(self, cr, uid, data_file, context=None): + return data_file.strip().startswith('!Type:') + + def _parse_file(self, cr, uid, data_file, context=None): + if not self._check_qif(cr, uid, data_file, context=context): + return super(account_bank_statement_import, self)._parse_file(cr, uid, data_file, context=context) + try: - fileobj = TemporaryFile('wb+') - fileobj.write(base64.b64decode(data_file)) - fileobj.seek(0) file_data = "" - for line in fileobj.readlines(): + for line in StringIO.StringIO(data_file).readlines(): file_data += line - fileobj.close() if '\r' in file_data: data_list = file_data.split('\r') else: @@ -33,8 +53,8 @@ class account_bank_statement_import(osv.TransientModel): header = data_list[0].strip() header = header.split(":")[1] except: - raise osv.except_osv(_('Import Error!'), _('Please check QIF file format is proper or not.')) - line_ids = [] + raise Warning(_('Could not decipher the QIF file.')) + transactions = [] vals_line = {} total = 0 if header == "Bank": @@ -45,33 +65,34 @@ class account_bank_statement_import(osv.TransientModel): continue if line[0] == 'D': # date of transaction vals_line['date'] = dateutil.parser.parse(line[1:], fuzzy=True).date() - if vals_line.get('date') and not vals_bank_statement.get('period_id'): - period_ids = self.pool.get('account.period').find(cr, uid, vals_line['date'], context=context) - vals_bank_statement.update({'period_id': period_ids and period_ids[0] or False}) elif line[0] == 'T': # Total amount total += float(line[1:].replace(',', '')) vals_line['amount'] = float(line[1:].replace(',', '')) elif line[0] == 'N': # Check number vals_line['ref'] = line[1:] elif line[0] == 'P': # Payee - bank_account_id, partner_id = self._detect_partner(cr, uid, line[1:], identifying_field='owner_name', context=context) - vals_line['partner_id'] = partner_id - vals_line['bank_account_id'] = bank_account_id vals_line['name'] = 'name' in vals_line and line[1:] + ': ' + vals_line['name'] or line[1:] + # Since QIF doesn't provide account numbers, we'll have to find res.partner and res.partner.bank here + # (normal behavious is to provide 'account_number', which the generic module uses to find partner/bank) + ids = self.pool.get('res.partner.bank').search(cr, uid, [('owner_name', '=', line[1:])], context=context) + if ids: + vals_line['bank_account_id'] = bank_account_id = ids[0] + vals_line['partner_id'] = self.pool.get('res.partner.bank').browse(cr, uid, bank_account_id, context=context).partner_id.id elif line[0] == 'M': # Memo vals_line['name'] = 'name' in vals_line and vals_line['name'] + ': ' + line[1:] or line[1:] elif line[0] == '^': # end of item - line_ids.append((0, 0, vals_line)) + transactions.append(vals_line) vals_line = {} elif line[0] == '\n': - line_ids = [] + transactions = [] else: pass else: - raise osv.except_osv(_('Error!'), _('Cannot support this Format !Type:%s.') % (header,)) - vals_bank_statement.update({'balance_end_real': total, - 'line_ids': line_ids, - 'journal_id': journal_id}) - return [vals_bank_statement] + raise Warning(_('This file is either not a bank statement or is not correctly formed.')) + + vals_bank_statement.update({ + 'balance_end_real': total, + 'transactions': transactions + }) + return None, None, [vals_bank_statement] -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/account_statement_import_qif/account_bank_statement_import_qif_view.xml b/account_statement_import_qif/account_bank_statement_import_qif_view.xml new file mode 100644 index 00000000..3b3a3421 --- /dev/null +++ b/account_statement_import_qif/account_bank_statement_import_qif_view.xml @@ -0,0 +1,24 @@ + + + + + + Import Bank Statements Inherited + account.bank.statement.import + + + + + + + + + + + + diff --git a/account_statement_import_qif/static/description/icon.png b/account_statement_import_qif/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c5842c2b0c2f6769ac66d20eff011c53ed0dc285 GIT binary patch literal 6146 zcmbVwXHXMN)NT?&4ISw{bW}h>mmW$`IwGJ{g%Bx%NJmPjp$Fv^LWiJY1py&Qixfo& zO(PnL6zM`}Lg;*acjo@Qf9}qlJ+nJIXLjebXPE3<+hj+b#eUySie2b~NLI41NyoHI;jmVPq(x`mLAOC%hZ!I*+6y#M%xx*P; zW@tnYl{Voa3p8d+`dtnGmcC-WmSaK7NSBpe5x7gra0t#Q3KikTgQXLhGPG1`P*O=y z5J>fFwM5-f?uP61Yo{RjjE}qSTh!(;x7tDY20(^2z0R1BAfP8Ikp!~!C=Yc`tdKK7JR;?Dvfl2fCzo*V_ zu3a;vg8)=OgtzE{N&YQGTW%1x=G-Ja7qFtm=qz;iz>2GrF-JLE<{Q@wz$HL59V75! z!rg=k^j&lw@iMU!6wkaA%7_Hv(a)%-sAwV z>l%a3$D?+^1y-Z3mY%5~j-w&)7@a@5R}3UGxb{4lVnsA1vPX2LM|Y8$$h2_+=ZkY6 z&azjq1w%I(>I6_|_x)lb(C~|G!5$G$H1JV)Ejl8^JlqvL1ogbMDXGE|30&rQe_h4PvaKIGPy)n(6Vs)kqji70w-x9ru z5w;uUX<#~X@dT1@o;r|VlW<0tS~+@0z^||yErZk$`b8fA)OdV!(7`=)kNpwnPz=W} z4rYXp)`nhR6N@TeBNIU^&1vfr=)hg~VzX~v| z1Cidixb4ZHM0)yxq_w|@FSQIg4EMnd#T2K62Shl^S=19L2jYO1wtb(9FSQ#J#DITi zFi~9B!`MtQ{To0+dTf$9bg$-8bv!X-rt;k`^iNB7IETiLPK+ z0g8AbA)EyS@#RdRh4jY1A0@tD?9%mA+=O_tsBrFItTWiOt69P!0PgU~XTrfMb8HZ7 z#k!$!oviM(3j*u$=I3oi=p0{y_A-4(Zr=~Sh-q)+bs*e3i2lw`#ws%{erI-1WU6I{ z2NsIt%3&2IYGOUxpFFS@CTnqxgAC~0&3dS|(pf9Zym1`YCTLun(UE27%1H{M!dI%& z54WV3uQb{INn=Kl*ge(>>_2k66*bx<>WuR_v-S-Byz3~qWI3c27x*-!KJae?d0k+} zuOft_%=eajkUPAC)=rsQ1gwv2eq>t)w`E303rECHkaEC__}_b6s#38# zi1M@>EVwWAlMMx}zB$%1Xo4eA9YrW%a%DPZuo7@Aru?bd5;M)#yFlPy*?tv#X-a25 zP-~1^J06L*_%E){i_V^zCMo_YOnWtyMd)KWD5qa5Tpo%Mqds61+I~??aX~D9#!+@= z+x$Frw%t2eOT^1w8*F+lF?#GS@=QB;+ZVhifYo^^>$!5jZ=HG)~wth2Icx>p&s&4TM9yJtb%HCz> z#l3Gp&IX@0iVcql?X!+(NTORTJbl$%oAI*DB$2KOoQr?Oi&kZohTqfjmr_)J4+-Apz4F78#hU~8VrPdZx(6b#mNY-Y;(HCSBw-%8U zF2U=p3Xe~|^O(3rq>WA*Df>MpT235u&PyJ*;o8|ne33NC(vy^|hXwpK4r#Wz2QKg0 z1+7@JO|nnLF#HHixKwZ;wBG$1ORqHA7aFI6 z8J7;`hu-GOF>c>_5*#2_Wc)i(=%Q#;`vdB!s?Y;!#UA3jYW}oNz=p5LbcRr~|NhxR z@SudZTO-C=t$~kNj$I1YTxBv#uPl__M9%N614++hnM<;SR#t7T>FY;d(A7%Z>|okg z{NPAj53BiEJ{jAL8)Ttnj&SU&3%N8^<}K-YCgZZ{sU|(U$O^eTdrwA~Mp#-p(r_-% zT5VJtrZ50~(4!|RGVW=I>SEXOz^V0nbWiP`WLa_01d;>}53~OKf%X4#u$lQeC+(Uq z$*jwr*YN{Ud&WySp+kSM<%na#S+!z|1d>5l77Hn+D1mjp3|;jAN*yObK`UUq_2}e0 zy|@Nt^^+_=g_aR>T$S<)I5OuNV_Ri628 zV=h<^ll;MO*gjiC)h?u8$UDqrBBHwmX3=s_8O~nZTBBXO?@U1IasS@Ia$2(tgXS0q z&>17BBPmJ0bj&oX+MNL7M4pz!+rBX_$T6|4a)nRdFyaqF0NzJ5W2F&1=gU`yJ%c05 zBXsR`IW=2HK*o9bPN8h>Zgjj&>rXkQ3lTN(Ik>}1WiHv-3s8CZY#&KkzTftB1qNOo7j!X{M-)_$Q9bVVDIqG5kZTn zz8?j2$XmJ}E+1i~)p<2z$3T#6z)s)rCeSd?LNwtra*vTbut=AdlG-^j#m}Hg^%z{s zt$v>43xJc>Zm99PF}I~$deV%xM(+LD)E$QYsDrI_Cg+>KhduJkJ5D;L7_TREevtuZ z|HmJEli^2@{owg zZyQq}=I_sg0}Re{{@T9X_*=Lp#@%+PS*-ZWJcowh1R0d{>j6ve!zLWV;>`!I0h6&2;~VTS z|3zx+x4reDdgUM&%BfAOjZ(Z((>7HNHu1!NHM*l!+2qq33RVzf@1&bW_D!mMzYRi4 z$@LGTN0Ay#SN4POx(BN|^YkU@T0|*%mZfMluh7dcgVztJrxWL}gGGpXgkPE#X^V$r zowgA@MmMD#8u*JqaXqB_z%d-fb)FKCi&RlI^z&7y`!?m95_7^#-wx;i<`t*hRWNsvB1m?rPapWm|^r|1vLa31)PlpBtp zddgW;bgIpA_7Rx(-EBG6q&+5n{=YX8yJfdP21aPHDch=nTQk!0EB<_?{>Z^R$M4Fn z6X@~E^)S;**&Nvg{3;Al05C$h+&?vTIVZaK1t31=-bDE9S1 zf@y<-KD(?xl}x%0$khUyoE&mAhJYEmxbT=@45Vx z5L1c32hbE(KBs+#FyBsVi`Rsjk392g+*i1Es)Zhp0&05a|6m{pXh$lUgG1o*4;AgX zI37P0E~LYcdXu(@EU@BqLazd`61jKPWK+xpq{)C1FEMlMMSr^T~7pNZAh0I1)PY|B|Z^p)HV72qD?z*bPr*hF0b>)q-b zkD;M&IbVuqzIm!W+Foq`ht4WSqpnbRo0ePgT(h2sJ5_IYQ@cJRB--fD_#HA;-o^w|q)s?i4EYkl585Y^0)H(Tc++?H|7G9w(f`f*^^duNIga3o>YA zxX5N8EQTqH=LIy4bRA)!3?DU~Hsv#=FCw*Q;H}}`SA(UX6>sxi-Qoe?YijLG>_BW+ z;zY9&oo`n5%?P1hWpnh(p#3=?6d8#kDq4q)9Nv|Vu6gBd#sES9AK0>KTrVjtZ?#v| z#8blDgjPpn$zJqx^h+r_I+6_!Auq9eLa6@#V1c8D-`d4x zaF&LjWRwZeuWS~_Iq4C83=XV3Zj zA(3?ZGB4B1^m?1@QI9Yl^jW6ei*)jh(K6e_Sj+Xc1iUTWBnqewCX#X(I{5d3I2PPM zy8g&ktlKHB&Y)bgPOkpMsRC8KfXTX%B5!hR2L0rQ`SxWM_F^O7InMLz z5`FdT1(QvNDndd**BI+ygXW8HcSDWpC3-EP|B#g}$Nx5teFh+?lt-ew_l|KG55t_c zgenPZbIz?r`cSrbP4nb!`ME)e04DYHP%Dbc7DmGH+p4AAECJcBrTG(=#)Ubi1FQS? z)cP-Jt9iH+tx)puqPuOzQNZr*5Ai08(}R5hZ4849Wm(2uWtVJUJj@dlM?bothZT(G zzOx%^dtrwm|8X4nrE(rs!QDu4BLEhYr+RGI^R>pS+$6iCjGwc2KkV80otp|yxW9eE zckRkSOHYgmU*4k%m6DljoK8gr=BPjMxc1)&`Y?FOGvU<(+Cq(u>qVs`bkdwn>18QIJz?v2s`59R>HP4v*Ml< zW3l8f zFDewW0c5X*yAu)KnbWzcKRYF1+qqQz@1(eNrUgl28uhgJyrT=p)_JiM<@=#Y11*T3 z)0XQS>_6yf(79h<|LM)iU~KQ3_Jk|Gi3#Q871E?W2AN))gZ`)>W(d3Zed zaLqocG)ML!67SLjBucVj`%T7H1eTjI3o-ff`nt9)sQGKr?A=}B&PH>F^O692pnm>1J4Ef@K zlKv&wAH{#L^U&)uG`loU7y&%3| z3CgqmP<5KTp%lW?A+`*Q_~COMbX`xHG*xbP*rK1jL6dLQx;Xogwm^-`^mQ?)$j2rp zE2PBOTq)Ddp3b+WN_sg}t*oSbdl*Rzf2J$gfSl(Rgb1$okgIChZF#o=u*4$~zjkW4 zrs0gElbqp4)j^;9Xb6?3HmTd`U8s0h1B5C&h1DN(JAHRASjuaR+-{8@SK~Fyzj_#92;D5PR8E4ctt)v zEDN{(Fw?B}G+Sb|2}O<}OQR{snVa@8qcy;qPZJfNgN!o3i`|Ok??y_iCwcH1WoSWd zRmEsA_L(ZHc9@vl2hy0_C3^;TmJ%OwznsKc_rYV_(yv=3hP%WxijJB6k>q&<$|WX_JAmf7!EQ zU#slyMF9u$T4+o~lCRD5=7sFb9}O1sdm{0+Ht`}>Z*=FVnS*Z(wqgH3H(QU^Kw&~D zLbD!Sv1Ker=AZ%B@`%i#b&S68N$S%6zW^ly$mTiqt9q~D-35A+=~<5)p}&vFM-2FT zQ$`p1AQB&laNaql3Cq9RkHne37v$MU)B+^FjCxknUMIB@crx7HXf&j8@e|b7rkOj`m9?0MHiNtIAzlp7aOE@|lT7D?$R1g8Mc&F-=8efYZ|NF1SLIZ;ma+J%X1Q%>j~-|; zqi`eoAM|J13GL&NAMAFjZp2^PfK#Pv)%v%`AB4HyX7`oc;(Qmy9tFN=A>%%u+}i1X z3*cu;cz2ty@dZ&BE-^eKjEOvDi(-vP-NsLTp|j1PTt=zIWXoctwHvv-`ZL5B+E%H% z={kPF(ow*a9nh#e!Hhw?>-(Sj$oIth<4U)PS+tE14*u+S@h& zT<4S+yuP*U@V+4RXgUG2es9)=ops3^mGg+s!X03xtnA6=<;9p!;n_+>0SDg7Uyo!} zI1N?_;mu{|yLR3!q(v&Y>@q|ozCzAf((?wi17bJaVQwEq>=YfaLHZAPRWh7N2d1XR7h7H8nnjMmxoFrca5M`2hXM z^39dkmP{_F5QW#;^SBWl~Ay+eoh zR)Py<{B=LeGXhr;`n;|DC`l-uapXHmHLY(ELtamdB&Hyn7}UM#LslP+l33KcgrwDM zpo~Md^M`J^W|iGoILb%MAOoli(T-3uX*#~&!`qPnM!vxPI3$KK>|G3Q8|9K?L|}zw zx`9Hm8Y)KjDk~j{uw@=9^Y-1?SqC9TwpSo-H9cv?{~zM||1#Uh2Faq~?+>nlc+UBH OfQ6~G$vb1u#Qy=L>~_Kc literal 0 HcmV?d00001 diff --git a/account_statement_import_qif/tests/__init__.py b/account_statement_import_qif/tests/__init__.py index 389df58d..902f7b0b 100644 --- a/account_statement_import_qif/tests/__init__.py +++ b/account_statement_import_qif/tests/__init__.py @@ -2,7 +2,3 @@ # noqa: This is a backport from Odoo. OCA has no control over style here. # flake8: noqa from . import test_import_bank_statement -checks = [ - test_import_bank_statement -] - diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index 68381294..bef4c359 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -20,10 +20,13 @@ class TestQifFile(TransactionCase): qif_file_path = get_module_resource('account_bank_statement_import_qif', 'test_qif_file', 'test_qif.qif') qif_file = open(qif_file_path, 'rb').read().encode('base64') bank_statement_id = self.statement_import_model.create(cr, uid, dict( - file_type='qif', - data_file=qif_file, - )) - self.statement_import_model.parse_file(cr, uid, [bank_statement_id]) + data_file=qif_file, + )) + context = { + 'journal_id': self.registry('ir.model.data').get_object_reference(cr, uid, 'account', 'bank_journal')[1], + 'allow_auto_create_journal': True, + } + self.statement_import_model.import_file(cr, uid, [bank_statement_id], context=context) line_id = self.bank_statement_line_model.search(cr, uid, [('name', '=', 'YOUR LOCAL SUPERMARKET')])[0] statement_id = self.bank_statement_line_model.browse(cr, uid, line_id).statement_id.id bank_st_record = self.bank_statement_model.browse(cr, uid, statement_id) From 121448f0fd9e64e6739faad3136c29ec62c4b2d7 Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Fri, 20 Mar 2015 11:48:55 +0100 Subject: [PATCH 03/16] [IMP] Backport from master at 04daefd2d101d90daf5782173b95f31f3bd9e1b6 --- account_statement_import_qif/__init__.py | 1 - .../tests/test_import_bank_statement.py | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/account_statement_import_qif/__init__.py b/account_statement_import_qif/__init__.py index 784a476e..7ff3caa8 100644 --- a/account_statement_import_qif/__init__.py +++ b/account_statement_import_qif/__init__.py @@ -1,4 +1,3 @@ # -*- coding: utf-8 -*- from . import account_bank_statement_import_qif -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index bef4c359..8d876503 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -23,8 +23,7 @@ class TestQifFile(TransactionCase): data_file=qif_file, )) context = { - 'journal_id': self.registry('ir.model.data').get_object_reference(cr, uid, 'account', 'bank_journal')[1], - 'allow_auto_create_journal': True, + 'journal_id': self.registry('ir.model.data').get_object_reference(cr, uid, 'account', 'bank_journal')[1] } self.statement_import_model.import_file(cr, uid, [bank_statement_id], context=context) line_id = self.bank_statement_line_model.search(cr, uid, [('name', '=', 'YOUR LOCAL SUPERMARKET')])[0] From 7d9c138d4b464eaa44ff7d2898adf13dacaf843b Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Thu, 21 May 2015 14:03:51 +0200 Subject: [PATCH 04/16] [IMP] account_bank_statement_qif: use new API + i18n + move journal_id to main --- account_statement_import_qif/README.rst | 58 +++++++++++++ account_statement_import_qif/__init__.py | 1 - account_statement_import_qif/__openerp__.py | 26 ++---- .../account_bank_statement_import_qif.py | 87 ++++++++++--------- ...account_bank_statement_import_qif_view.xml | 24 ----- .../account_bank_statement_import_qif.pot | 49 +++++++++++ .../tests/__init__.py | 2 - .../tests/test_import_bank_statement.py | 35 ++++---- 8 files changed, 177 insertions(+), 105 deletions(-) create mode 100644 account_statement_import_qif/README.rst delete mode 100644 account_statement_import_qif/account_bank_statement_import_qif_view.xml create mode 100644 account_statement_import_qif/i18n/account_bank_statement_import_qif.pot diff --git a/account_statement_import_qif/README.rst b/account_statement_import_qif/README.rst new file mode 100644 index 00000000..66411e6d --- /dev/null +++ b/account_statement_import_qif/README.rst @@ -0,0 +1,58 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +Module to import QIF bank statements. +===================================== + +This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in +Accounting \ Bank and Cash \ Bank Statements. + +Important Note +--------------- +Because of the QIF format limitation, we cannot ensure the same transactions aren't imported several times or handle multicurrency. +Whenever possible, you should use a more appropriate file format like OFX. + +The module has been initiated by a backport of the new framework developed +by Odoo for V9 at its early stage. It's no more kept in sync with the V9 since +it has reach a stage where maintaining a pure backport of 9.0 in 8.0 is not +feasible anymore + +Known issues / Roadmap +====================== + +* None + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + + +Credits +======= + +Contributors +------------ + +* Odoo SA +* Alexis de Lattre +* Laurent Mignon +* Ronald Portier + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/account_statement_import_qif/__init__.py b/account_statement_import_qif/__init__.py index 7ff3caa8..3bf4df83 100644 --- a/account_statement_import_qif/__init__.py +++ b/account_statement_import_qif/__init__.py @@ -1,3 +1,2 @@ # -*- coding: utf-8 -*- from . import account_bank_statement_import_qif - diff --git a/account_statement_import_qif/__openerp__.py b/account_statement_import_qif/__openerp__.py index 21b9684d..d550b1b7 100644 --- a/account_statement_import_qif/__openerp__.py +++ b/account_statement_import_qif/__openerp__.py @@ -1,28 +1,16 @@ # -*- coding: utf-8 -*- -# noqa: This is a backport from Odoo. OCA has no control over style here. -# flake8: noqa { 'name': 'Import QIF Bank Statement', - 'category' : 'Accounting & Finance', + 'category': 'Accounting & Finance', 'version': '1.0', - 'author': 'OpenERP SA', - 'description': ''' -Module to import QIF bank statements. -====================================== - -This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in -Accounting \ Bank and Cash \ Bank Statements. - -Important Note ---------------------------------------------- -Because of the QIF format limitation, we cannot ensure the same transactions aren't imported several times or handle multicurrency. -Whenever possible, you should use a more appropriate file format like OFX. -''', + 'author': 'OpenERP SA,' + 'Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/bank-statement-import', 'images': [], - 'depends': ['account_bank_statement_import'], - 'demo': [], - 'data': ['account_bank_statement_import_qif_view.xml'], + 'depends': [ + 'account_bank_statement_import' + ], 'auto_install': False, 'installable': True, } diff --git a/account_statement_import_qif/account_bank_statement_import_qif.py b/account_statement_import_qif/account_bank_statement_import_qif.py index 38f6a5c9..2683e77f 100644 --- a/account_statement_import_qif/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/account_bank_statement_import_qif.py @@ -1,46 +1,44 @@ # -*- coding: utf-8 -*- -# noqa: This is a backport from Odoo. OCA has no control over style here. -# flake8: noqa import dateutil.parser import StringIO from openerp.tools.translate import _ -from openerp.osv import osv, fields +from openerp import api, models from openerp.exceptions import Warning -class account_bank_statement_import(osv.TransientModel): + +class AccountBankStatementImport(models.TransientModel): _inherit = "account.bank.statement.import" - _columns = { - 'journal_id': fields.many2one('account.journal', string='Journal', help='Accounting journal related to the bank statement you\'re importing. It has be be manually chosen for statement formats which doesn\'t allow automatic journal detection (QIF for example).'), - 'hide_journal_field': fields.boolean('Hide the journal field in the view'), - } + @api.model + def _get_hide_journal_field(self): + return self.env.context.get('journal_id') and True - def _get_hide_journal_field(self, cr, uid, context=None): - return context and 'journal_id' in context or False - - _defaults = { - 'hide_journal_field': _get_hide_journal_field, - } - - def _get_journal(self, cr, uid, currency_id, bank_account_id, account_number, context=None): - """ As .QIF format does not allow us to detect the journal, we need to let the user choose it. - We set it in context before to call super so it's the same as calling the widget from a journal """ - if context is None: - context = {} - if context.get('active_id'): - record = self.browse(cr, uid, context.get('active_id'), context=context) + @api.model + def _get_journal(self, currency_id, bank_account_id, account_number): + """ As .QIF format does not allow us to detect the journal, we need to + let the user choose it. + We set it in context before to call super so it's the same as + calling the widget from a journal """ + record = self + active_id = self.env.context.get('active_id') + if active_id: + record = self.browse(active_id) if record.journal_id: - context['journal_id'] = record.journal_id.id - return super(account_bank_statement_import, self)._get_journal(cr, uid, currency_id, bank_account_id, account_number, context=context) + record = record.with_context(journal_id=record.journal_id.id) + return super(AccountBankStatementImport, record)._get_journal( + currency_id, bank_account_id, account_number) - def _check_qif(self, cr, uid, data_file, context=None): + @api.model + def _check_qif(self, data_file): return data_file.strip().startswith('!Type:') - def _parse_file(self, cr, uid, data_file, context=None): - if not self._check_qif(cr, uid, data_file, context=context): - return super(account_bank_statement_import, self)._parse_file(cr, uid, data_file, context=context) + @api.model + def _parse_file(self, data_file): + if not self._check_qif(data_file): + return super(AccountBankStatementImport, self)._parse_file( + data_file) try: file_data = "" @@ -64,22 +62,31 @@ class account_bank_statement_import(osv.TransientModel): if not line: continue if line[0] == 'D': # date of transaction - vals_line['date'] = dateutil.parser.parse(line[1:], fuzzy=True).date() + vals_line['date'] = dateutil.parser.parse( + line[1:], fuzzy=True).date() elif line[0] == 'T': # Total amount total += float(line[1:].replace(',', '')) vals_line['amount'] = float(line[1:].replace(',', '')) elif line[0] == 'N': # Check number vals_line['ref'] = line[1:] elif line[0] == 'P': # Payee - vals_line['name'] = 'name' in vals_line and line[1:] + ': ' + vals_line['name'] or line[1:] - # Since QIF doesn't provide account numbers, we'll have to find res.partner and res.partner.bank here - # (normal behavious is to provide 'account_number', which the generic module uses to find partner/bank) - ids = self.pool.get('res.partner.bank').search(cr, uid, [('owner_name', '=', line[1:])], context=context) - if ids: - vals_line['bank_account_id'] = bank_account_id = ids[0] - vals_line['partner_id'] = self.pool.get('res.partner.bank').browse(cr, uid, bank_account_id, context=context).partner_id.id + vals_line['name'] = ('name' in vals_line and + line[1:] + ': ' + vals_line['name'] or + line[1:]) + # Since QIF doesn't provide account numbers, we'll have to + # find res.partner and res.partner.bank here + # (normal behavious is to provide 'account_number', which + # the generic module uses to find partner/bank) + banks = self.env['res.partner.bank'].search( + [('owner_name', '=', line[1:])], limit=1) + if banks: + bank_account = banks[0] + vals_line['bank_account_id'] = bank_account.id + vals_line['partner_id'] = bank_account.partner_id.id elif line[0] == 'M': # Memo - vals_line['name'] = 'name' in vals_line and vals_line['name'] + ': ' + line[1:] or line[1:] + vals_line['name'] = ('name' in vals_line and + vals_line['name'] + ': ' + line[1:] or + line[1:]) elif line[0] == '^': # end of item transactions.append(vals_line) vals_line = {} @@ -88,11 +95,11 @@ class account_bank_statement_import(osv.TransientModel): else: pass else: - raise Warning(_('This file is either not a bank statement or is not correctly formed.')) - + raise Warning(_('This file is either not a bank statement or is ' + 'not correctly formed.')) + vals_bank_statement.update({ 'balance_end_real': total, 'transactions': transactions }) return None, None, [vals_bank_statement] - diff --git a/account_statement_import_qif/account_bank_statement_import_qif_view.xml b/account_statement_import_qif/account_bank_statement_import_qif_view.xml deleted file mode 100644 index 3b3a3421..00000000 --- a/account_statement_import_qif/account_bank_statement_import_qif_view.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Import Bank Statements Inherited - account.bank.statement.import - - - - - - - - - - - - diff --git a/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot new file mode 100644 index 00000000..65c2bf0f --- /dev/null +++ b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-08 12:01+0000\n" +"PO-Revision-Date: 2015-06-08 12:01+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_bank_statement_import_qif +#: help:account.bank.statement.import,journal_id:0 +msgid "Accounting journal related to the bank statement you're importing. It has be be manually chosen for statement formats which doesn't allow automatic journal detection (QIF for example)." +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:54 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: field:account.bank.statement.import,hide_journal_field:0 +msgid "Hide the journal field in the view" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "" + +#. module: account_bank_statement_import_qif +#: field:account.bank.statement.import,journal_id:0 +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:98 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" + diff --git a/account_statement_import_qif/tests/__init__.py b/account_statement_import_qif/tests/__init__.py index 902f7b0b..9ce25a7f 100644 --- a/account_statement_import_qif/tests/__init__.py +++ b/account_statement_import_qif/tests/__init__.py @@ -1,4 +1,2 @@ # -*- coding: utf-8 -*- -# noqa: This is a backport from Odoo. OCA has no control over style here. -# flake8: noqa from . import test_import_bank_statement diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index 8d876503..5c13125e 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -1,32 +1,29 @@ # -*- coding: utf-8 -*- -# noqa: This is a backport from Odoo. OCA has no control over style here. -# flake8: noqa + from openerp.tests.common import TransactionCase from openerp.modules.module import get_module_resource + class TestQifFile(TransactionCase): - """Tests for import bank statement qif file format (account.bank.statement.import) + """Tests for import bank statement qif file format + (account.bank.statement.import) """ def setUp(self): super(TestQifFile, self).setUp() - self.statement_import_model = self.registry('account.bank.statement.import') - self.bank_statement_model = self.registry('account.bank.statement') - self.bank_statement_line_model = self.registry('account.bank.statement.line') + self.statement_import_model = self.env['account.bank.statement.import'] + self.statement_line_model = self.env['account.bank.statement.line'] def test_qif_file_import(self): from openerp.tools import float_compare - cr, uid = self.cr, self.uid - qif_file_path = get_module_resource('account_bank_statement_import_qif', 'test_qif_file', 'test_qif.qif') + qif_file_path = get_module_resource( + 'account_bank_statement_import_qif', + 'test_qif_file', 'test_qif.qif') qif_file = open(qif_file_path, 'rb').read().encode('base64') - bank_statement_id = self.statement_import_model.create(cr, uid, dict( - data_file=qif_file, - )) - context = { - 'journal_id': self.registry('ir.model.data').get_object_reference(cr, uid, 'account', 'bank_journal')[1] - } - self.statement_import_model.import_file(cr, uid, [bank_statement_id], context=context) - line_id = self.bank_statement_line_model.search(cr, uid, [('name', '=', 'YOUR LOCAL SUPERMARKET')])[0] - statement_id = self.bank_statement_line_model.browse(cr, uid, line_id).statement_id.id - bank_st_record = self.bank_statement_model.browse(cr, uid, statement_id) - assert float_compare(bank_st_record.balance_end_real, -1896.09, 2) == 0 + bank_statement_improt = self.statement_import_model.with_context( + journal_id=self.ref('account.bank_journal')).create( + dict(data_file=qif_file)) + bank_statement_improt.import_file() + bank_statement = self.statement_line_model.search( + [('name', '=', 'YOUR LOCAL SUPERMARKET')], limit=1)[0].statement_id + assert float_compare(bank_statement.balance_end_real, -1896.09, 2) == 0 From 8a75fab19f63bbb6466fa5912eed9243401056c2 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 23 Jun 2015 16:37:06 +0200 Subject: [PATCH 05/16] [FIX] account_bank_statement_import: Handle correctly the selection of the journal --- .../account_bank_statement_import_qif.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/account_statement_import_qif/account_bank_statement_import_qif.py b/account_statement_import_qif/account_bank_statement_import_qif.py index 2683e77f..0b9061e4 100644 --- a/account_statement_import_qif/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/account_bank_statement_import_qif.py @@ -15,21 +15,6 @@ class AccountBankStatementImport(models.TransientModel): def _get_hide_journal_field(self): return self.env.context.get('journal_id') and True - @api.model - def _get_journal(self, currency_id, bank_account_id, account_number): - """ As .QIF format does not allow us to detect the journal, we need to - let the user choose it. - We set it in context before to call super so it's the same as - calling the widget from a journal """ - record = self - active_id = self.env.context.get('active_id') - if active_id: - record = self.browse(active_id) - if record.journal_id: - record = record.with_context(journal_id=record.journal_id.id) - return super(AccountBankStatementImport, record)._get_journal( - currency_id, bank_account_id, account_number) - @api.model def _check_qif(self, data_file): return data_file.strip().startswith('!Type:') From 5e223a660ec962f2f4cd00d04aea11836dd441c0 Mon Sep 17 00:00:00 2001 From: "Ronald Portier (Therp BV)" Date: Thu, 2 Apr 2015 10:56:50 +0200 Subject: [PATCH 06/16] [ENH] Support multiple accounts/currencies. Copy of changes proposed for master. OCA Transbot updated translations from Transifex --- account_statement_import_qif/__openerp__.py | 4 +-- account_statement_import_qif/i18n/es.po | 35 ++++++++++++++++++++ account_statement_import_qif/i18n/fr.po | 36 +++++++++++++++++++++ account_statement_import_qif/i18n/lt_LT.po | 36 +++++++++++++++++++++ account_statement_import_qif/i18n/nl.po | 36 +++++++++++++++++++++ account_statement_import_qif/i18n/pt_BR.po | 36 +++++++++++++++++++++ account_statement_import_qif/i18n/sl.po | 36 +++++++++++++++++++++ 7 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 account_statement_import_qif/i18n/es.po create mode 100644 account_statement_import_qif/i18n/fr.po create mode 100644 account_statement_import_qif/i18n/lt_LT.po create mode 100644 account_statement_import_qif/i18n/nl.po create mode 100644 account_statement_import_qif/i18n/pt_BR.po create mode 100644 account_statement_import_qif/i18n/sl.po diff --git a/account_statement_import_qif/__openerp__.py b/account_statement_import_qif/__openerp__.py index d550b1b7..14a81a06 100644 --- a/account_statement_import_qif/__openerp__.py +++ b/account_statement_import_qif/__openerp__.py @@ -2,8 +2,8 @@ { 'name': 'Import QIF Bank Statement', - 'category': 'Accounting & Finance', - 'version': '1.0', + 'category': 'Banking addons', + 'version': '8.0.1.0.0', 'author': 'OpenERP SA,' 'Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/bank-statement-import', diff --git a/account_statement_import_qif/i18n/es.po b/account_statement_import_qif/i18n/es.po new file mode 100644 index 00000000..3872d173 --- /dev/null +++ b/account_statement_import_qif/i18n/es.po @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-24 21:51+0000\n" +"PO-Revision-Date: 2015-06-08 12:44+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importar extracto bancario" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" diff --git a/account_statement_import_qif/i18n/fr.po b/account_statement_import_qif/i18n/fr.po new file mode 100644 index 00000000..d8df1771 --- /dev/null +++ b/account_statement_import_qif/i18n/fr.po @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# zuher83 , 2015 +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-24 21:51+0000\n" +"PO-Revision-Date: 2015-06-28 20:27+0000\n" +"Last-Translator: zuher83 \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "Impossible de déchiffrer le fichier QIF." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importer Relevé Bancaire" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "Ce fichier n'est pas un relevé bancaire ou n'est pas dans un format correcte." diff --git a/account_statement_import_qif/i18n/lt_LT.po b/account_statement_import_qif/i18n/lt_LT.po new file mode 100644 index 00000000..9efb9e61 --- /dev/null +++ b/account_statement_import_qif/i18n/lt_LT.po @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Arminas Grigonis , 2015 +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-24 21:51+0000\n" +"PO-Revision-Date: 2015-07-23 13:36+0000\n" +"Last-Translator: Arminas Grigonis \n" +"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/lt_LT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: lt_LT\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "Neįmanoma iššifruoti QIF failo." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importuoti banko išrašą" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "Failas arba ne banko išrašas arba suformuotas neteisingai." diff --git a/account_statement_import_qif/i18n/nl.po b/account_statement_import_qif/i18n/nl.po new file mode 100644 index 00000000..e1e2fe54 --- /dev/null +++ b/account_statement_import_qif/i18n/nl.po @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Erwin van der Ploeg , 2015 +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-24 21:51+0000\n" +"PO-Revision-Date: 2015-08-17 19:04+0000\n" +"Last-Translator: Erwin van der Ploeg \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "Kon het QIF bestand niet ontcijferen." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importeer bankafschrift" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "Het bestand is of geen bankafschrift bestand of het bestand is niet in het correcte formaat." diff --git a/account_statement_import_qif/i18n/pt_BR.po b/account_statement_import_qif/i18n/pt_BR.po new file mode 100644 index 00000000..abaf260d --- /dev/null +++ b/account_statement_import_qif/i18n/pt_BR.po @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# danimaribeiro , 2015 +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-09 09:23+0000\n" +"PO-Revision-Date: 2015-10-09 00:26+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "Não foi possível decifrar o arquivo QIF." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importar Extrato Bancário" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "O arquivo não é um extrato bancário ou o formato é incorreto." diff --git a/account_statement_import_qif/i18n/sl.po b/account_statement_import_qif/i18n/sl.po new file mode 100644 index 00000000..342e6c7b --- /dev/null +++ b/account_statement_import_qif/i18n/sl.po @@ -0,0 +1,36 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-07-24 21:51+0000\n" +"PO-Revision-Date: 2015-06-28 05:24+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "QIF datoteke ni bilo mogoče dešifrirati." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Uvoz bančnega izpiska" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "Ta datoteka ni bančni izpisek, ali pa ni pravilno oblikovana." From 1f2eafb0dbd3c52548b978907fba5cf303c1cb91 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 14 Oct 2015 02:19:40 +0200 Subject: [PATCH 07/16] [MIG] account_bank_statement_import_qif: Migration to 9.0 * Manifest reformat * Added license and contributors * Tests improved * Added matching partners * Added supported format in view OCA Transbot updated translations from Transifex --- account_statement_import_qif/README.rst | 52 +++++++++++------- account_statement_import_qif/__init__.py | 4 +- account_statement_import_qif/__openerp__.py | 20 ++++--- .../account_bank_statement_import_qif.pot | 49 ----------------- account_statement_import_qif/i18n/de.po | 43 +++++++++++++++ account_statement_import_qif/i18n/es.po | 23 +++++--- account_statement_import_qif/i18n/fi.po | 41 ++++++++++++++ account_statement_import_qif/i18n/fr.po | 25 +++++---- account_statement_import_qif/i18n/fr_CH.po | 41 ++++++++++++++ account_statement_import_qif/i18n/gl.po | 41 ++++++++++++++ account_statement_import_qif/i18n/lt_LT.po | 21 +++++--- account_statement_import_qif/i18n/nb_NO.po | 41 ++++++++++++++ account_statement_import_qif/i18n/nl.po | 25 +++++---- account_statement_import_qif/i18n/pt_BR.po | 21 +++++--- account_statement_import_qif/i18n/pt_PT.po | 42 +++++++++++++++ account_statement_import_qif/i18n/sl.po | 21 +++++--- .../tests/test_import_bank_statement.py | 40 ++++++++++---- .../{test_qif_file => tests}/test_qif.qif | 0 .../wizards/__init__.py | 4 ++ .../account_bank_statement_import_qif.py | 54 +++++++++++-------- ...account_bank_statement_import_qif_view.xml | 14 +++++ 21 files changed, 464 insertions(+), 158 deletions(-) delete mode 100644 account_statement_import_qif/i18n/account_bank_statement_import_qif.pot create mode 100644 account_statement_import_qif/i18n/de.po create mode 100644 account_statement_import_qif/i18n/fi.po create mode 100644 account_statement_import_qif/i18n/fr_CH.po create mode 100644 account_statement_import_qif/i18n/gl.po create mode 100644 account_statement_import_qif/i18n/nb_NO.po create mode 100644 account_statement_import_qif/i18n/pt_PT.po rename account_statement_import_qif/{test_qif_file => tests}/test_qif.qif (100%) create mode 100644 account_statement_import_qif/wizards/__init__.py rename account_statement_import_qif/{ => wizards}/account_bank_statement_import_qif.py (59%) create mode 100644 account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml diff --git a/account_statement_import_qif/README.rst b/account_statement_import_qif/README.rst index 66411e6d..5707836f 100644 --- a/account_statement_import_qif/README.rst +++ b/account_statement_import_qif/README.rst @@ -1,35 +1,48 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 -Module to import QIF bank statements. -===================================== +========================== +Import QIF bank statements +========================== -This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in +This module allows you to import the machine readable QIF Files in Odoo: they +are parsed and stored in human readable format in Accounting \ Bank and Cash \ Bank Statements. Important Note ---------------- -Because of the QIF format limitation, we cannot ensure the same transactions aren't imported several times or handle multicurrency. -Whenever possible, you should use a more appropriate file format like OFX. +-------------- +Because of the QIF format limitation, we cannot ensure the same transactions +aren't imported several times or handle multicurrency. Whenever possible, you +should use a more appropriate file format like OFX. -The module has been initiated by a backport of the new framework developed -by Odoo for V9 at its early stage. It's no more kept in sync with the V9 since -it has reach a stage where maintaining a pure backport of 9.0 in 8.0 is not -feasible anymore +The module was initiated as a backport of the new framework developed +by Odoo for V9 at its early stage. As Odoo has relicensed this module as +private inside its Odoo enterprise layer, now this one is maintained from the +original AGPL code. -Known issues / Roadmap -====================== +Usage +===== -* None +To use this module, you need to: + +#. Go to *Accounting* dashboard. +#. Click on *Import statement* from any of the bank journals. +#. Select a QIF file. +#. Press *Import*. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/174/9.0 Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +Bugs are tracked on +`GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - +If you spotted it first, help us smashing it by providing a detailed and +welcomed feedback. Credits ======= @@ -41,6 +54,7 @@ Contributors * Alexis de Lattre * Laurent Mignon * Ronald Portier +* Pedro M. Baeza Maintainer ---------- @@ -55,4 +69,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit http://odoo-community.org. +To contribute to this module, please visit https://odoo-community.org. diff --git a/account_statement_import_qif/__init__.py b/account_statement_import_qif/__init__.py index 3bf4df83..0796ed1d 100644 --- a/account_statement_import_qif/__init__.py +++ b/account_statement_import_qif/__init__.py @@ -1,2 +1,4 @@ # -*- coding: utf-8 -*- -from . import account_bank_statement_import_qif +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import wizards diff --git a/account_statement_import_qif/__openerp__.py b/account_statement_import_qif/__openerp__.py index 14a81a06..1e2eb757 100644 --- a/account_statement_import_qif/__openerp__.py +++ b/account_statement_import_qif/__openerp__.py @@ -1,16 +1,24 @@ # -*- coding: utf-8 -*- +# Copyright 2015 Odoo S. A. +# Copyright 2015 Laurent Mignon +# Copyright 2015 Ronald Portier +# Copyright 2016 Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Import QIF Bank Statement', - 'category': 'Banking addons', - 'version': '8.0.1.0.0', + 'name': 'Import QIF Bank Statements', + 'category': 'Accounting', + 'version': '9.0.1.0.0', 'author': 'OpenERP SA,' + 'Tecnativa,' 'Odoo Community Association (OCA)', 'website': 'https://github.com/OCA/bank-statement-import', - 'images': [], 'depends': [ - 'account_bank_statement_import' + 'account_bank_statement_import', + ], + 'data': [ + 'wizards/account_bank_statement_import_qif_view.xml', ], - 'auto_install': False, 'installable': True, + 'license': 'AGPL-3', } diff --git a/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot deleted file mode 100644 index 65c2bf0f..00000000 --- a/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot +++ /dev/null @@ -1,49 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_bank_statement_import_qif -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-08 12:01+0000\n" -"PO-Revision-Date: 2015-06-08 12:01+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_bank_statement_import_qif -#: help:account.bank.statement.import,journal_id:0 -msgid "Accounting journal related to the bank statement you're importing. It has be be manually chosen for statement formats which doesn't allow automatic journal detection (QIF for example)." -msgstr "" - -#. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:54 -#, python-format -msgid "Could not decipher the QIF file." -msgstr "" - -#. module: account_bank_statement_import_qif -#: field:account.bank.statement.import,hide_journal_field:0 -msgid "Hide the journal field in the view" -msgstr "" - -#. module: account_bank_statement_import_qif -#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import -msgid "Import Bank Statement" -msgstr "" - -#. module: account_bank_statement_import_qif -#: field:account.bank.statement.import,journal_id:0 -msgid "Journal" -msgstr "" - -#. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:98 -#, python-format -msgid "This file is either not a bank statement or is not correctly formed." -msgstr "" - diff --git a/account_statement_import_qif/i18n/de.po b/account_statement_import_qif/i18n/de.po new file mode 100644 index 00000000..402117fc --- /dev/null +++ b/account_statement_import_qif/i18n/de.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Rudolf Schnapka , 2016 +# Thomas A. Jaeger , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: Thomas A. Jaeger , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "Konnte QIF-Datei nicht entziffern." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Kontoauszug importieren" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" +"Diese Datei ist entweder kein Kontoauszug oder ist fehlerhaft formatiert." diff --git a/account_statement_import_qif/i18n/es.po b/account_statement_import_qif/i18n/es.po index 3872d173..3e398333 100644 --- a/account_statement_import_qif/i18n/es.po +++ b/account_statement_import_qif/i18n/es.po @@ -3,14 +3,15 @@ # * account_bank_statement_import_qif # # Translators: +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: bank-statement-import (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-24 21:51+0000\n" -"PO-Revision-Date: 2015-06-08 12:44+0000\n" -"Last-Translator: OCA Transbot \n" -"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/es/)\n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -18,10 +19,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 #, python-format msgid "Could not decipher the QIF file." -msgstr "" +msgstr "No se puede descifrar el archivo QIF." #. module: account_bank_statement_import_qif #: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import @@ -29,7 +30,13 @@ msgid "Import Bank Statement" msgstr "Importar extracto bancario" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" +"Este archivo no es un extracto bancario o no está correctamente formado." diff --git a/account_statement_import_qif/i18n/fi.po b/account_statement_import_qif/i18n/fi.po new file mode 100644 index 00000000..89d4e3d0 --- /dev/null +++ b/account_statement_import_qif/i18n/fi.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Jarmo Kortetjärvi , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-10 05:00+0000\n" +"PO-Revision-Date: 2016-12-10 05:00+0000\n" +"Last-Translator: Jarmo Kortetjärvi , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Tuo pankkiaineisto" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" diff --git a/account_statement_import_qif/i18n/fr.po b/account_statement_import_qif/i18n/fr.po index d8df1771..c532e95b 100644 --- a/account_statement_import_qif/i18n/fr.po +++ b/account_statement_import_qif/i18n/fr.po @@ -3,15 +3,15 @@ # * account_bank_statement_import_qif # # Translators: -# zuher83 , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: bank-statement-import (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-24 21:51+0000\n" -"PO-Revision-Date: 2015-06-28 20:27+0000\n" -"Last-Translator: zuher83 \n" -"Language-Team: French (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/fr/)\n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 #, python-format msgid "Could not decipher the QIF file." msgstr "Impossible de déchiffrer le fichier QIF." @@ -30,7 +30,14 @@ msgid "Import Bank Statement" msgstr "Importer Relevé Bancaire" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 #, python-format msgid "This file is either not a bank statement or is not correctly formed." -msgstr "Ce fichier n'est pas un relevé bancaire ou n'est pas dans un format correcte." +msgstr "" +"Ce fichier n'est pas un relevé bancaire ou n'est pas dans un format " +"correcte." diff --git a/account_statement_import_qif/i18n/fr_CH.po b/account_statement_import_qif/i18n/fr_CH.po new file mode 100644 index 00000000..34a51e8d --- /dev/null +++ b/account_statement_import_qif/i18n/fr_CH.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/teams/23907/fr_CH/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr_CH\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importer Relevé" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" diff --git a/account_statement_import_qif/i18n/gl.po b/account_statement_import_qif/i18n/gl.po new file mode 100644 index 00000000..d06a6c6c --- /dev/null +++ b/account_statement_import_qif/i18n/gl.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Alejandro Santana , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: Alejandro Santana , 2016\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importar extracto bancario" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" diff --git a/account_statement_import_qif/i18n/lt_LT.po b/account_statement_import_qif/i18n/lt_LT.po index 9efb9e61..077f83a9 100644 --- a/account_statement_import_qif/i18n/lt_LT.po +++ b/account_statement_import_qif/i18n/lt_LT.po @@ -3,15 +3,15 @@ # * account_bank_statement_import_qif # # Translators: -# Arminas Grigonis , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: bank-statement-import (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-24 21:51+0000\n" -"PO-Revision-Date: 2015-07-23 13:36+0000\n" -"Last-Translator: Arminas Grigonis \n" -"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/lt_LT/)\n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/teams/23907/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 #, python-format msgid "Could not decipher the QIF file." msgstr "Neįmanoma iššifruoti QIF failo." @@ -30,7 +30,12 @@ msgid "Import Bank Statement" msgstr "Importuoti banko išrašą" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Failas arba ne banko išrašas arba suformuotas neteisingai." diff --git a/account_statement_import_qif/i18n/nb_NO.po b/account_statement_import_qif/i18n/nb_NO.po new file mode 100644 index 00000000..6223d0fb --- /dev/null +++ b/account_statement_import_qif/i18n/nb_NO.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Imre Kristoffer Eilertsen , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: Imre Kristoffer Eilertsen , 2016\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/teams/23907/nb_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nb_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importer bankutsagn" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" diff --git a/account_statement_import_qif/i18n/nl.po b/account_statement_import_qif/i18n/nl.po index e1e2fe54..10d6ceef 100644 --- a/account_statement_import_qif/i18n/nl.po +++ b/account_statement_import_qif/i18n/nl.po @@ -3,15 +3,15 @@ # * account_bank_statement_import_qif # # Translators: -# Erwin van der Ploeg , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: bank-statement-import (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-24 21:51+0000\n" -"PO-Revision-Date: 2015-08-17 19:04+0000\n" -"Last-Translator: Erwin van der Ploeg \n" -"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/nl/)\n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 #, python-format msgid "Could not decipher the QIF file." msgstr "Kon het QIF bestand niet ontcijferen." @@ -30,7 +30,14 @@ msgid "Import Bank Statement" msgstr "Importeer bankafschrift" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 #, python-format msgid "This file is either not a bank statement or is not correctly formed." -msgstr "Het bestand is of geen bankafschrift bestand of het bestand is niet in het correcte formaat." +msgstr "" +"Het bestand is of geen bankafschrift bestand of het bestand is niet in het " +"correcte formaat." diff --git a/account_statement_import_qif/i18n/pt_BR.po b/account_statement_import_qif/i18n/pt_BR.po index abaf260d..610a6269 100644 --- a/account_statement_import_qif/i18n/pt_BR.po +++ b/account_statement_import_qif/i18n/pt_BR.po @@ -3,15 +3,15 @@ # * account_bank_statement_import_qif # # Translators: -# danimaribeiro , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: bank-statement-import (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-09 09:23+0000\n" -"PO-Revision-Date: 2015-10-09 00:26+0000\n" -"Last-Translator: danimaribeiro \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/pt_BR/)\n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o arquivo QIF." @@ -30,7 +30,12 @@ msgid "Import Bank Statement" msgstr "Importar Extrato Bancário" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "O arquivo não é um extrato bancário ou o formato é incorreto." diff --git a/account_statement_import_qif/i18n/pt_PT.po b/account_statement_import_qif/i18n/pt_PT.po new file mode 100644 index 00000000..f4e31065 --- /dev/null +++ b/account_statement_import_qif/i18n/pt_PT.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Pedro Castro Silva , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: Pedro Castro Silva , 2016\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/teams/23907/pt_PT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "Não foi possível decifrar o ficheiro QIF." + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Importar Extrato Bancário" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" +"O ficheiro não é um extrato bancário ou não está corretamente formatado." diff --git a/account_statement_import_qif/i18n/sl.po b/account_statement_import_qif/i18n/sl.po index 342e6c7b..f9244f8b 100644 --- a/account_statement_import_qif/i18n/sl.po +++ b/account_statement_import_qif/i18n/sl.po @@ -3,15 +3,15 @@ # * account_bank_statement_import_qif # # Translators: -# Matjaž Mozetič , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: bank-statement-import (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-24 21:51+0000\n" -"PO-Revision-Date: 2015-06-28 05:24+0000\n" -"Last-Translator: Matjaž Mozetič \n" -"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-statement-import-8-0/language/sl/)\n" +"POT-Creation-Date: 2016-12-09 17:00+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 #, python-format msgid "Could not decipher the QIF file." msgstr "QIF datoteke ni bilo mogoče dešifrirati." @@ -30,7 +30,12 @@ msgid "Import Bank Statement" msgstr "Uvoz bančnega izpiska" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/account_bank_statement_import_qif.py:83 +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Ta datoteka ni bančni izpisek, ali pa ni pravilno oblikovana." diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index 5c13125e..af0e1cfa 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -1,4 +1,9 @@ # -*- coding: utf-8 -*- +# Copyright 2015 Odoo S. A. +# Copyright 2015 Laurent Mignon +# Copyright 2015 Ronald Portier +# Copyright 2016 Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from openerp.tests.common import TransactionCase from openerp.modules.module import get_module_resource @@ -13,17 +18,32 @@ class TestQifFile(TransactionCase): super(TestQifFile, self).setUp() self.statement_import_model = self.env['account.bank.statement.import'] self.statement_line_model = self.env['account.bank.statement.line'] + self.journal = self.env['account.journal'].create({ + 'name': 'Test bank journal', + 'code': 'TEST', + 'type': 'bank', + }) + self.partner = self.env['res.partner'].create({ + # Different case for trying insensitive case search + 'name': 'EPIC Technologies', + }) def test_qif_file_import(self): - from openerp.tools import float_compare qif_file_path = get_module_resource( - 'account_bank_statement_import_qif', - 'test_qif_file', 'test_qif.qif') + 'account_bank_statement_import_qif', 'tests', 'test_qif.qif', + ) qif_file = open(qif_file_path, 'rb').read().encode('base64') - bank_statement_improt = self.statement_import_model.with_context( - journal_id=self.ref('account.bank_journal')).create( - dict(data_file=qif_file)) - bank_statement_improt.import_file() - bank_statement = self.statement_line_model.search( - [('name', '=', 'YOUR LOCAL SUPERMARKET')], limit=1)[0].statement_id - assert float_compare(bank_statement.balance_end_real, -1896.09, 2) == 0 + wizard = self.statement_import_model.with_context( + journal_id=self.journal.id + ).create( + dict(data_file=qif_file) + ) + wizard.import_file() + statement = self.statement_line_model.search( + [('name', '=', 'YOUR LOCAL SUPERMARKET')], limit=1, + )[0].statement_id + self.assertAlmostEqual(statement.balance_end_real, -1896.09, 2) + line = self.statement_line_model.search( + [('name', '=', 'Epic Technologies')], limit=1, + ) + self.assertEqual(line.partner_id, self.partner) diff --git a/account_statement_import_qif/test_qif_file/test_qif.qif b/account_statement_import_qif/tests/test_qif.qif similarity index 100% rename from account_statement_import_qif/test_qif_file/test_qif.qif rename to account_statement_import_qif/tests/test_qif.qif diff --git a/account_statement_import_qif/wizards/__init__.py b/account_statement_import_qif/wizards/__init__.py new file mode 100644 index 00000000..f82d76ec --- /dev/null +++ b/account_statement_import_qif/wizards/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import account_bank_statement_import_qif diff --git a/account_statement_import_qif/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py similarity index 59% rename from account_statement_import_qif/account_bank_statement_import_qif.py rename to account_statement_import_qif/wizards/account_bank_statement_import_qif.py index 0b9061e4..1016bacc 100644 --- a/account_statement_import_qif/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -1,20 +1,21 @@ # -*- coding: utf-8 -*- +# Copyright 2015 Odoo S. A. +# Copyright 2015 Laurent Mignon +# Copyright 2015 Ronald Portier +# Copyright 2016 Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import dateutil.parser import StringIO from openerp.tools.translate import _ from openerp import api, models -from openerp.exceptions import Warning +from openerp.exceptions import UserError class AccountBankStatementImport(models.TransientModel): _inherit = "account.bank.statement.import" - @api.model - def _get_hide_journal_field(self): - return self.env.context.get('journal_id') and True - @api.model def _check_qif(self, data_file): return data_file.strip().startswith('!Type:') @@ -24,7 +25,6 @@ class AccountBankStatementImport(models.TransientModel): if not self._check_qif(data_file): return super(AccountBankStatementImport, self)._parse_file( data_file) - try: file_data = "" for line in StringIO.StringIO(data_file).readlines(): @@ -36,7 +36,7 @@ class AccountBankStatementImport(models.TransientModel): header = data_list[0].strip() header = header.split(":")[1] except: - raise Warning(_('Could not decipher the QIF file.')) + raise UserError(_('Could not decipher the QIF file.')) transactions = [] vals_line = {} total = 0 @@ -55,19 +55,10 @@ class AccountBankStatementImport(models.TransientModel): elif line[0] == 'N': # Check number vals_line['ref'] = line[1:] elif line[0] == 'P': # Payee - vals_line['name'] = ('name' in vals_line and - line[1:] + ': ' + vals_line['name'] or - line[1:]) - # Since QIF doesn't provide account numbers, we'll have to - # find res.partner and res.partner.bank here - # (normal behavious is to provide 'account_number', which - # the generic module uses to find partner/bank) - banks = self.env['res.partner.bank'].search( - [('owner_name', '=', line[1:])], limit=1) - if banks: - bank_account = banks[0] - vals_line['bank_account_id'] = bank_account.id - vals_line['partner_id'] = bank_account.partner_id.id + vals_line['name'] = ( + 'name' in vals_line and + line[1:] + ': ' + vals_line['name'] or line[1:] + ) elif line[0] == 'M': # Memo vals_line['name'] = ('name' in vals_line and vals_line['name'] + ': ' + line[1:] or @@ -80,11 +71,28 @@ class AccountBankStatementImport(models.TransientModel): else: pass else: - raise Warning(_('This file is either not a bank statement or is ' - 'not correctly formed.')) - + raise UserError(_('This file is either not a bank statement or is ' + 'not correctly formed.')) vals_bank_statement.update({ 'balance_end_real': total, 'transactions': transactions }) return None, None, [vals_bank_statement] + + def _complete_stmts_vals(self, stmt_vals, journal_id, account_number): + """Match partner_id if hasn't been deducted yet.""" + res = super(AccountBankStatementImport, self)._complete_stmts_vals( + stmt_vals, journal_id, account_number, + ) + # Since QIF doesn't provide account numbers (normal behaviour is to + # provide 'account_number', which the generic module uses to find + # the partner), we have to find res.partner through the name + partner_obj = self.env['res.partner'] + for statement in res: + for line_vals in statement['transactions']: + if not line_vals.get('partner_id') and line_vals.get('name'): + partner = partner_obj.search( + [('name', 'ilike', line_vals['name'])], limit=1, + ) + line_vals['partner_id'] = partner.id + return res diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml b/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml new file mode 100644 index 00000000..d6ab5b7f --- /dev/null +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml @@ -0,0 +1,14 @@ + + + + + account.bank.statement.import + + + +
  • Quicken Interchange Format (.qif)
  • +
    +
    +
    + +
    From 6d59d5c16f7e2eb1a66999d11fc03efc5e66815b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Nam=C3=A8che?= Date: Sun, 15 Jan 2017 11:28:30 +0100 Subject: [PATCH 08/16] [MIG] account_bank_statement_import_qif: Migrated to 10.0 OCA Transbot updated translations from Transifex --- .../{__openerp__.py => __manifest__.py} | 2 +- account_statement_import_qif/i18n/de.po | 17 ++++++++--------- account_statement_import_qif/i18n/es.po | 14 +++++++------- account_statement_import_qif/i18n/fr.po | 17 +++++++++-------- account_statement_import_qif/i18n/lt_LT.po | 14 +++++++------- account_statement_import_qif/i18n/nl.po | 14 +++++++------- account_statement_import_qif/i18n/pt_BR.po | 14 +++++++------- account_statement_import_qif/i18n/pt_PT.po | 14 +++++++------- account_statement_import_qif/i18n/sl.po | 14 +++++++------- .../tests/test_import_bank_statement.py | 4 ++-- .../account_bank_statement_import_qif.py | 9 ++++----- 11 files changed, 66 insertions(+), 67 deletions(-) rename account_statement_import_qif/{__openerp__.py => __manifest__.py} (96%) diff --git a/account_statement_import_qif/__openerp__.py b/account_statement_import_qif/__manifest__.py similarity index 96% rename from account_statement_import_qif/__openerp__.py rename to account_statement_import_qif/__manifest__.py index 1e2eb757..35f3e42e 100644 --- a/account_statement_import_qif/__openerp__.py +++ b/account_statement_import_qif/__manifest__.py @@ -8,7 +8,7 @@ { 'name': 'Import QIF Bank Statements', 'category': 'Accounting', - 'version': '9.0.1.0.0', + 'version': '10.0.1.0.0', 'author': 'OpenERP SA,' 'Tecnativa,' 'Odoo Community Association (OCA)', diff --git a/account_statement_import_qif/i18n/de.po b/account_statement_import_qif/i18n/de.po index 402117fc..311c06dd 100644 --- a/account_statement_import_qif/i18n/de.po +++ b/account_statement_import_qif/i18n/de.po @@ -3,15 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# Rudolf Schnapka , 2016 -# Thomas A. Jaeger , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: Thomas A. Jaeger , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "Konnte QIF-Datei nicht entziffern." @@ -33,10 +32,10 @@ msgstr "Kontoauszug importieren" #. module: account_bank_statement_import_qif #: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" -msgstr "" +msgstr "Quicken Interchange Format (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/es.po b/account_statement_import_qif/i18n/es.po index 3e398333..5ecaa24f 100644 --- a/account_statement_import_qif/i18n/es.po +++ b/account_statement_import_qif/i18n/es.po @@ -3,14 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# OCA Transbot , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "No se puede descifrar el archivo QIF." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/fr.po b/account_statement_import_qif/i18n/fr.po index c532e95b..70bee59d 100644 --- a/account_statement_import_qif/i18n/fr.po +++ b/account_statement_import_qif/i18n/fr.po @@ -3,14 +3,15 @@ # * account_bank_statement_import_qif # # Translators: -# OCA Transbot , 2016 +# OCA Transbot , 2017 +# Quentin THEURET , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"POT-Creation-Date: 2017-08-11 02:41+0000\n" +"PO-Revision-Date: 2017-08-11 02:41+0000\n" +"Last-Translator: Quentin THEURET , 2017\n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "Impossible de déchiffrer le fichier QIF." @@ -32,10 +33,10 @@ msgstr "Importer Relevé Bancaire" #. module: account_bank_statement_import_qif #: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" -msgstr "" +msgstr "Quicken Interchange Format (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/lt_LT.po b/account_statement_import_qif/i18n/lt_LT.po index 077f83a9..9cd03e94 100644 --- a/account_statement_import_qif/i18n/lt_LT.po +++ b/account_statement_import_qif/i18n/lt_LT.po @@ -3,14 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# OCA Transbot , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/teams/23907/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "Neįmanoma iššifruoti QIF failo." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Failas arba ne banko išrašas arba suformuotas neteisingai." diff --git a/account_statement_import_qif/i18n/nl.po b/account_statement_import_qif/i18n/nl.po index 10d6ceef..ac5aa7cb 100644 --- a/account_statement_import_qif/i18n/nl.po +++ b/account_statement_import_qif/i18n/nl.po @@ -3,14 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# OCA Transbot , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "Kon het QIF bestand niet ontcijferen." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/pt_BR.po b/account_statement_import_qif/i18n/pt_BR.po index 610a6269..e5aaa133 100644 --- a/account_statement_import_qif/i18n/pt_BR.po +++ b/account_statement_import_qif/i18n/pt_BR.po @@ -3,14 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# OCA Transbot , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o arquivo QIF." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "O arquivo não é um extrato bancário ou o formato é incorreto." diff --git a/account_statement_import_qif/i18n/pt_PT.po b/account_statement_import_qif/i18n/pt_PT.po index f4e31065..1ecfbb00 100644 --- a/account_statement_import_qif/i18n/pt_PT.po +++ b/account_statement_import_qif/i18n/pt_PT.po @@ -3,14 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# Pedro Castro Silva , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: Pedro Castro Silva , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/teams/23907/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o ficheiro QIF." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/sl.po b/account_statement_import_qif/i18n/sl.po index f9244f8b..4ddb13eb 100644 --- a/account_statement_import_qif/i18n/sl.po +++ b/account_statement_import_qif/i18n/sl.po @@ -3,14 +3,14 @@ # * account_bank_statement_import_qif # # Translators: -# OCA Transbot , 2016 +# OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-12-09 17:00+0000\n" -"PO-Revision-Date: 2016-12-09 17:00+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"POT-Creation-Date: 2017-04-11 21:55+0000\n" +"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"Last-Translator: OCA Transbot , 2017\n" "Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 #, python-format msgid "Could not decipher the QIF file." msgstr "QIF datoteke ni bilo mogoče dešifrirati." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Ta datoteka ni bančni izpisek, ali pa ni pravilno oblikovana." diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index af0e1cfa..8614602c 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -5,8 +5,8 @@ # Copyright 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp.tests.common import TransactionCase -from openerp.modules.module import get_module_resource +from odoo.tests.common import TransactionCase +from odoo.modules.module import get_module_resource class TestQifFile(TransactionCase): diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py index 1016bacc..4eb70588 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -5,12 +5,12 @@ # Copyright 2016 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -import dateutil.parser import StringIO +import dateutil.parser -from openerp.tools.translate import _ -from openerp import api, models -from openerp.exceptions import UserError +from odoo.tools.translate import _ +from odoo import api, models +from odoo.exceptions import UserError class AccountBankStatementImport(models.TransientModel): @@ -20,7 +20,6 @@ class AccountBankStatementImport(models.TransientModel): def _check_qif(self, data_file): return data_file.strip().startswith('!Type:') - @api.model def _parse_file(self, data_file): if not self._check_qif(data_file): return super(AccountBankStatementImport, self)._parse_file( From b545b6570d638e804799ebf326f5ee7bc2fbdcb4 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 26 Oct 2017 22:06:59 +0200 Subject: [PATCH 09/16] [MIG] account_bank_statement_import_qif: Migration to 11.0 * Metafiles updated * Test adapted to Python 3 * Code adapted to Python 3 OCA Transbot updated translations from Transifex OCA Transbot updated translations from Transifex OCA Transbot updated translations from Transifex [UPD] Update account_bank_statement_import_qif.pot --- account_statement_import_qif/README.rst | 18 ++++---- account_statement_import_qif/__init__.py | 1 - account_statement_import_qif/__manifest__.py | 5 +-- .../account_bank_statement_import_qif.pot | 37 ++++++++++++++++ account_statement_import_qif/i18n/de.po | 14 +++---- account_statement_import_qif/i18n/es.po | 19 +++++---- account_statement_import_qif/i18n/fa.po | 41 ++++++++++++++++++ account_statement_import_qif/i18n/fi.po | 8 ++-- account_statement_import_qif/i18n/fr.po | 25 ++++++----- account_statement_import_qif/i18n/fr_CH.po | 11 ++--- account_statement_import_qif/i18n/gl.po | 8 ++-- account_statement_import_qif/i18n/hr.po | 42 +++++++++++++++++++ account_statement_import_qif/i18n/lt_LT.po | 20 +++++---- account_statement_import_qif/i18n/nb_NO.po | 11 ++--- account_statement_import_qif/i18n/nl.po | 14 +++---- account_statement_import_qif/i18n/pt_BR.po | 17 ++++---- account_statement_import_qif/i18n/pt_PT.po | 17 ++++---- account_statement_import_qif/i18n/sl.po | 17 ++++---- .../tests/__init__.py | 3 +- .../tests/test_import_bank_statement.py | 6 +-- .../wizards/__init__.py | 1 - .../account_bank_statement_import_qif.py | 10 ++--- 22 files changed, 235 insertions(+), 110 deletions(-) create mode 100644 account_statement_import_qif/i18n/account_bank_statement_import_qif.pot create mode 100644 account_statement_import_qif/i18n/fa.po create mode 100644 account_statement_import_qif/i18n/hr.po diff --git a/account_statement_import_qif/README.rst b/account_statement_import_qif/README.rst index 5707836f..f971f706 100644 --- a/account_statement_import_qif/README.rst +++ b/account_statement_import_qif/README.rst @@ -26,14 +26,14 @@ Usage To use this module, you need to: -#. Go to *Accounting* dashboard. +#. Go to *Invoicing / Accounting* dashboard. #. Click on *Import statement* from any of the bank journals. #. Select a QIF file. #. Press *Import*. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/174/9.0 + :target: https://runbot.odoo-community.org/runbot/174/11.0 Bug Tracker =========== @@ -50,11 +50,15 @@ Credits Contributors ------------ -* Odoo SA -* Alexis de Lattre -* Laurent Mignon -* Ronald Portier -* Pedro M. Baeza +* Odoo SA +* Akretion + * Alexis de Lattre +* ACSONE A/V + * Laurent Mignon +* Therp + * Ronald Portier +* Tecnativa (https://www.tecnativa.com) + * Pedro M. Baeza Maintainer ---------- diff --git a/account_statement_import_qif/__init__.py b/account_statement_import_qif/__init__.py index 0796ed1d..fbadf7a6 100644 --- a/account_statement_import_qif/__init__.py +++ b/account_statement_import_qif/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import wizards diff --git a/account_statement_import_qif/__manifest__.py b/account_statement_import_qif/__manifest__.py index 35f3e42e..b70b5a85 100644 --- a/account_statement_import_qif/__manifest__.py +++ b/account_statement_import_qif/__manifest__.py @@ -1,14 +1,13 @@ -# -*- coding: utf-8 -*- # Copyright 2015 Odoo S. A. # Copyright 2015 Laurent Mignon # Copyright 2015 Ronald Portier -# Copyright 2016 Pedro M. Baeza +# Copyright 2016-2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Import QIF Bank Statements', 'category': 'Accounting', - 'version': '10.0.1.0.0', + 'version': '11.0.1.0.0', 'author': 'OpenERP SA,' 'Tecnativa,' 'Odoo Community Association (OCA)', diff --git a/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot new file mode 100644 index 00000000..08eb5d09 --- /dev/null +++ b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" + diff --git a/account_statement_import_qif/i18n/de.po b/account_statement_import_qif/i18n/de.po index 311c06dd..b31e3541 100644 --- a/account_statement_import_qif/i18n/de.po +++ b/account_statement_import_qif/i18n/de.po @@ -1,25 +1,25 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "Konnte QIF-Datei nicht entziffern." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "Quicken Interchange Format (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/es.po b/account_statement_import_qif/i18n/es.po index 5ecaa24f..12f3d2d4 100644 --- a/account_statement_import_qif/i18n/es.po +++ b/account_statement_import_qif/i18n/es.po @@ -1,25 +1,26 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 +# Pedro M. Baeza , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" -"Last-Translator: OCA Transbot , 2017\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" +"Last-Translator: Pedro M. Baeza , 2017\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "No se puede descifrar el archivo QIF." @@ -32,10 +33,10 @@ msgstr "Importar extracto bancario" #. module: account_bank_statement_import_qif #: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" -msgstr "" +msgstr "Quicken Interchange Format (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/fa.po b/account_statement_import_qif/i18n/fa.po new file mode 100644 index 00000000..2da467cc --- /dev/null +++ b/account_statement_import_qif/i18n/fa.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# Mehdi Zarrinkolah , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-06-08 08:27+0000\n" +"PO-Revision-Date: 2018-06-08 08:27+0000\n" +"Last-Translator: Mehdi Zarrinkolah , 2018\n" +"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "فایل QIF رمزگشایی نشد" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "ورود بیانیه بانکی " + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "قالب مبادله سریع qif" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "این فایل یک بیانیه بانکی نیست یا به درستی شکل نمی گیرد." diff --git a/account_statement_import_qif/i18n/fi.po b/account_statement_import_qif/i18n/fi.po index 89d4e3d0..db46cf20 100644 --- a/account_statement_import_qif/i18n/fi.po +++ b/account_statement_import_qif/i18n/fi.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # Jarmo Kortetjärvi , 2017 msgid "" @@ -12,14 +12,14 @@ msgstr "" "PO-Revision-Date: 2016-12-10 05:00+0000\n" "Last-Translator: Jarmo Kortetjärvi , 2017\n" "Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/fr.po b/account_statement_import_qif/i18n/fr.po index 70bee59d..8b45f67b 100644 --- a/account_statement_import_qif/i18n/fr.po +++ b/account_statement_import_qif/i18n/fr.po @@ -1,26 +1,26 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 -# Quentin THEURET , 2017 +# Lixon Jean-Yves , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-08-11 02:41+0000\n" -"PO-Revision-Date: 2017-08-11 02:41+0000\n" -"Last-Translator: Quentin THEURET , 2017\n" +"POT-Creation-Date: 2018-03-21 03:39+0000\n" +"PO-Revision-Date: 2018-03-21 03:39+0000\n" +"Last-Translator: Lixon Jean-Yves , 2017\n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "Impossible de déchiffrer le fichier QIF." @@ -28,17 +28,16 @@ msgstr "Impossible de déchiffrer le fichier QIF." #. module: account_bank_statement_import_qif #: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import msgid "Import Bank Statement" -msgstr "Importer Relevé Bancaire" +msgstr "Importer un relevé bancaire" #. module: account_bank_statement_import_qif #: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" -msgstr "Quicken Interchange Format (.qif)" +msgstr "Format d'échange avec Quicken (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" -"Ce fichier n'est pas un relevé bancaire ou n'est pas dans un format " -"correcte." +"Ce fichier n'est pas un relevé bancaire ou n'est pas dans un format correcte." diff --git a/account_statement_import_qif/i18n/fr_CH.po b/account_statement_import_qif/i18n/fr_CH.po index 34a51e8d..03a7e65f 100644 --- a/account_statement_import_qif/i18n/fr_CH.po +++ b/account_statement_import_qif/i18n/fr_CH.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2016 msgid "" @@ -11,15 +11,16 @@ msgstr "" "POT-Creation-Date: 2016-12-09 17:00+0000\n" "PO-Revision-Date: 2016-12-09 17:00+0000\n" "Last-Translator: OCA Transbot , 2016\n" -"Language-Team: French (Switzerland) (https://www.transifex.com/oca/teams/23907/fr_CH/)\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: fr_CH\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -35,7 +36,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/gl.po b/account_statement_import_qif/i18n/gl.po index d06a6c6c..a3d16dd9 100644 --- a/account_statement_import_qif/i18n/gl.po +++ b/account_statement_import_qif/i18n/gl.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # Alejandro Santana , 2016 msgid "" @@ -12,14 +12,14 @@ msgstr "" "PO-Revision-Date: 2016-12-09 17:00+0000\n" "Last-Translator: Alejandro Santana , 2016\n" "Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/hr.po b/account_statement_import_qif/i18n/hr.po new file mode 100644 index 00000000..d5a0eb6c --- /dev/null +++ b/account_statement_import_qif/i18n/hr.po @@ -0,0 +1,42 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_bank_statement_import_qif +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-06-08 08:27+0000\n" +"PO-Revision-Date: 2018-06-08 08:27+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#, python-format +msgid "Could not decipher the QIF file." +msgstr "" + +#. module: account_bank_statement_import_qif +#: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import +msgid "Import Bank Statement" +msgstr "Uvoz bankovnog izvoda" + +#. module: account_bank_statement_import_qif +#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +msgid "Quicken Interchange Format (.qif)" +msgstr "" + +#. module: account_bank_statement_import_qif +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#, python-format +msgid "This file is either not a bank statement or is not correctly formed." +msgstr "" diff --git a/account_statement_import_qif/i18n/lt_LT.po b/account_statement_import_qif/i18n/lt_LT.po index 9cd03e94..29c5f9cf 100644 --- a/account_statement_import_qif/i18n/lt_LT.po +++ b/account_statement_import_qif/i18n/lt_LT.po @@ -1,25 +1,27 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" "Last-Translator: OCA Transbot , 2017\n" -"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/teams/23907/lt_LT/)\n" +"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/" +"teams/23907/lt_LT/)\n" +"Language: lt_LT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: lt_LT\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "Neįmanoma iššifruoti QIF failo." @@ -35,7 +37,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Failas arba ne banko išrašas arba suformuotas neteisingai." diff --git a/account_statement_import_qif/i18n/nb_NO.po b/account_statement_import_qif/i18n/nb_NO.po index 6223d0fb..b790d22d 100644 --- a/account_statement_import_qif/i18n/nb_NO.po +++ b/account_statement_import_qif/i18n/nb_NO.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # Imre Kristoffer Eilertsen , 2016 msgid "" @@ -11,15 +11,16 @@ msgstr "" "POT-Creation-Date: 2016-12-09 17:00+0000\n" "PO-Revision-Date: 2016-12-09 17:00+0000\n" "Last-Translator: Imre Kristoffer Eilertsen , 2016\n" -"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/teams/23907/nb_NO/)\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/" +"teams/23907/nb_NO/)\n" +"Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:39 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -35,7 +36,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:74 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/nl.po b/account_statement_import_qif/i18n/nl.po index ac5aa7cb..e89e0c44 100644 --- a/account_statement_import_qif/i18n/nl.po +++ b/account_statement_import_qif/i18n/nl.po @@ -1,25 +1,25 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "Kon het QIF bestand niet ontcijferen." @@ -35,7 +35,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/pt_BR.po b/account_statement_import_qif/i18n/pt_BR.po index e5aaa133..24ee3425 100644 --- a/account_statement_import_qif/i18n/pt_BR.po +++ b/account_statement_import_qif/i18n/pt_BR.po @@ -1,25 +1,26 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" "Last-Translator: OCA Transbot , 2017\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o arquivo QIF." @@ -35,7 +36,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "O arquivo não é um extrato bancário ou o formato é incorreto." diff --git a/account_statement_import_qif/i18n/pt_PT.po b/account_statement_import_qif/i18n/pt_PT.po index 1ecfbb00..69eea6f0 100644 --- a/account_statement_import_qif/i18n/pt_PT.po +++ b/account_statement_import_qif/i18n/pt_PT.po @@ -1,25 +1,26 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" "Last-Translator: OCA Transbot , 2017\n" -"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/teams/23907/pt_PT/)\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o ficheiro QIF." @@ -35,7 +36,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/sl.po b/account_statement_import_qif/i18n/sl.po index 4ddb13eb..a193ca5b 100644 --- a/account_statement_import_qif/i18n/sl.po +++ b/account_statement_import_qif/i18n/sl.po @@ -1,25 +1,26 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * account_bank_statement_import_qif -# +# # Translators: # OCA Transbot , 2017 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-11 21:55+0000\n" -"PO-Revision-Date: 2017-04-11 21:55+0000\n" +"POT-Creation-Date: 2017-12-17 03:38+0000\n" +"PO-Revision-Date: 2017-12-17 03:38+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:38 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." msgstr "QIF datoteke ni bilo mogoče dešifrirati." @@ -35,7 +36,7 @@ msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:73 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Ta datoteka ni bančni izpisek, ali pa ni pravilno oblikovana." diff --git a/account_statement_import_qif/tests/__init__.py b/account_statement_import_qif/tests/__init__.py index 9ce25a7f..25ee5b4a 100644 --- a/account_statement_import_qif/tests/__init__.py +++ b/account_statement_import_qif/tests/__init__.py @@ -1,2 +1,3 @@ -# -*- coding: utf-8 -*- +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import test_import_bank_statement diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index 8614602c..b5269e2e 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -1,12 +1,12 @@ -# -*- coding: utf-8 -*- # Copyright 2015 Odoo S. A. # Copyright 2015 Laurent Mignon # Copyright 2015 Ronald Portier -# Copyright 2016 Pedro M. Baeza +# Copyright 2016-2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo.tests.common import TransactionCase from odoo.modules.module import get_module_resource +import base64 class TestQifFile(TransactionCase): @@ -32,7 +32,7 @@ class TestQifFile(TransactionCase): qif_file_path = get_module_resource( 'account_bank_statement_import_qif', 'tests', 'test_qif.qif', ) - qif_file = open(qif_file_path, 'rb').read().encode('base64') + qif_file = base64.b64encode(open(qif_file_path, 'rb').read()) wizard = self.statement_import_model.with_context( journal_id=self.journal.id ).create( diff --git a/account_statement_import_qif/wizards/__init__.py b/account_statement_import_qif/wizards/__init__.py index f82d76ec..448bfc66 100644 --- a/account_statement_import_qif/wizards/__init__.py +++ b/account_statement_import_qif/wizards/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import account_bank_statement_import_qif diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py index 4eb70588..aa731652 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -1,11 +1,9 @@ -# -*- coding: utf-8 -*- # Copyright 2015 Odoo S. A. # Copyright 2015 Laurent Mignon # Copyright 2015 Ronald Portier -# Copyright 2016 Pedro M. Baeza +# Copyright 2016-2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -import StringIO import dateutil.parser from odoo.tools.translate import _ @@ -18,16 +16,14 @@ class AccountBankStatementImport(models.TransientModel): @api.model def _check_qif(self, data_file): - return data_file.strip().startswith('!Type:') + return data_file.strip().startswith(b'!Type:') def _parse_file(self, data_file): if not self._check_qif(data_file): return super(AccountBankStatementImport, self)._parse_file( data_file) try: - file_data = "" - for line in StringIO.StringIO(data_file).readlines(): - file_data += line + file_data = data_file.decode() if '\r' in file_data: data_list = file_data.split('\r') else: From 332d3638b6325a1fa87975889b56fe9a6e194768 Mon Sep 17 00:00:00 2001 From: derKonig Date: Sat, 21 Jul 2018 10:48:26 +0000 Subject: [PATCH 10/16] Translated using Weblate (Persian) Currently translated at 100.0% (4 of 4 strings) Translation: bank-statement-import-11.0/bank-statement-import-11.0-account_bank_statement_import_qif Translate-URL: https://translation.odoo-community.org/projects/bank-statement-import-11-0/bank-statement-import-11-0-account_bank_statement_import_qif/fa/ --- account_statement_import_qif/i18n/fa.po | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/account_statement_import_qif/i18n/fa.po b/account_statement_import_qif/i18n/fa.po index 2da467cc..0f322ca8 100644 --- a/account_statement_import_qif/i18n/fa.po +++ b/account_statement_import_qif/i18n/fa.po @@ -9,30 +9,31 @@ msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-06-08 08:27+0000\n" -"PO-Revision-Date: 2018-06-08 08:27+0000\n" -"Last-Translator: Mehdi Zarrinkolah , 2018\n" +"PO-Revision-Date: 2018-07-22 11:31+0000\n" +"Last-Translator: derKonig \n" "Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.0.1\n" #. module: account_bank_statement_import_qif #: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 #, python-format msgid "Could not decipher the QIF file." -msgstr "فایل QIF رمزگشایی نشد" +msgstr "فایل QIF رمزگشایی نشد." #. module: account_bank_statement_import_qif #: model:ir.model,name:account_bank_statement_import_qif.model_account_bank_statement_import msgid "Import Bank Statement" -msgstr "ورود بیانیه بانکی " +msgstr "ورود بیانیه بانکی" #. module: account_bank_statement_import_qif #: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" -msgstr "قالب مبادله سریع qif" +msgstr "قالب مبادله سریع (.qif)" #. module: account_bank_statement_import_qif #: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 From 13a266141e84822138430553d89e0b00ff32b282 Mon Sep 17 00:00:00 2001 From: Graeme Gellatly Date: Thu, 16 Aug 2018 01:11:35 +1200 Subject: [PATCH 11/16] FIX QIF errors --- account_statement_import_qif/__manifest__.py | 2 +- .../wizards/account_bank_statement_import_qif.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/account_statement_import_qif/__manifest__.py b/account_statement_import_qif/__manifest__.py index b70b5a85..f5fca4db 100644 --- a/account_statement_import_qif/__manifest__.py +++ b/account_statement_import_qif/__manifest__.py @@ -7,7 +7,7 @@ { 'name': 'Import QIF Bank Statements', 'category': 'Accounting', - 'version': '11.0.1.0.0', + 'version': '11.0.1.0.1', 'author': 'OpenERP SA,' 'Tecnativa,' 'Odoo Community Association (OCA)', diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py index aa731652..7f9e6fec 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -35,7 +35,7 @@ class AccountBankStatementImport(models.TransientModel): transactions = [] vals_line = {} total = 0 - if header == "Bank": + if header in ("Bank", "CCard"): vals_bank_statement = {} for line in data_list: line = line.strip() @@ -58,7 +58,7 @@ class AccountBankStatementImport(models.TransientModel): vals_line['name'] = ('name' in vals_line and vals_line['name'] + ': ' + line[1:] or line[1:]) - elif line[0] == '^': # end of item + elif line[0] == '^' and vals_line: # end of item transactions.append(vals_line) vals_line = {} elif line[0] == '\n': From 02d4ee0047a493e004a85c3470a01882c6e75ca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Mon, 17 Oct 2022 09:11:17 +0200 Subject: [PATCH 12/16] [IMP] account_bank_statement_import_qif: black, isort, prettier --- account_statement_import_qif/__manifest__.py | 24 +++--- .../tests/test_import_bank_statement.py | 39 +++++---- .../account_bank_statement_import_qif.py | 80 ++++++++++--------- ...account_bank_statement_import_qif_view.xml | 5 +- 4 files changed, 75 insertions(+), 73 deletions(-) diff --git a/account_statement_import_qif/__manifest__.py b/account_statement_import_qif/__manifest__.py index f5fca4db..4c73d642 100644 --- a/account_statement_import_qif/__manifest__.py +++ b/account_statement_import_qif/__manifest__.py @@ -5,19 +5,13 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Import QIF Bank Statements', - 'category': 'Accounting', - 'version': '11.0.1.0.1', - 'author': 'OpenERP SA,' - 'Tecnativa,' - 'Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/bank-statement-import', - 'depends': [ - 'account_bank_statement_import', - ], - 'data': [ - 'wizards/account_bank_statement_import_qif_view.xml', - ], - 'installable': True, - 'license': 'AGPL-3', + "name": "Import QIF Bank Statements", + "category": "Accounting", + "version": "11.0.1.0.1", + "author": "OpenERP SA," "Tecnativa," "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/bank-statement-import", + "depends": ["account_bank_statement_import",], + "data": ["wizards/account_bank_statement_import_qif_view.xml",], + "installable": True, + "license": "AGPL-3", } diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index b5269e2e..052fc038 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -4,10 +4,11 @@ # Copyright 2016-2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests.common import TransactionCase -from odoo.modules.module import get_module_resource import base64 +from odoo.modules.module import get_module_resource +from odoo.tests.common import TransactionCase + class TestQifFile(TransactionCase): """Tests for import bank statement qif file format @@ -16,34 +17,32 @@ class TestQifFile(TransactionCase): def setUp(self): super(TestQifFile, self).setUp() - self.statement_import_model = self.env['account.bank.statement.import'] - self.statement_line_model = self.env['account.bank.statement.line'] - self.journal = self.env['account.journal'].create({ - 'name': 'Test bank journal', - 'code': 'TEST', - 'type': 'bank', - }) - self.partner = self.env['res.partner'].create({ - # Different case for trying insensitive case search - 'name': 'EPIC Technologies', - }) + self.statement_import_model = self.env["account.bank.statement.import"] + self.statement_line_model = self.env["account.bank.statement.line"] + self.journal = self.env["account.journal"].create( + {"name": "Test bank journal", "code": "TEST", "type": "bank",} + ) + self.partner = self.env["res.partner"].create( + { + # Different case for trying insensitive case search + "name": "EPIC Technologies", + } + ) def test_qif_file_import(self): qif_file_path = get_module_resource( - 'account_bank_statement_import_qif', 'tests', 'test_qif.qif', + "account_bank_statement_import_qif", "tests", "test_qif.qif", ) - qif_file = base64.b64encode(open(qif_file_path, 'rb').read()) + qif_file = base64.b64encode(open(qif_file_path, "rb").read()) wizard = self.statement_import_model.with_context( journal_id=self.journal.id - ).create( - dict(data_file=qif_file) - ) + ).create(dict(data_file=qif_file)) wizard.import_file() statement = self.statement_line_model.search( - [('name', '=', 'YOUR LOCAL SUPERMARKET')], limit=1, + [("name", "=", "YOUR LOCAL SUPERMARKET")], limit=1, )[0].statement_id self.assertAlmostEqual(statement.balance_end_real, -1896.09, 2) line = self.statement_line_model.search( - [('name', '=', 'Epic Technologies')], limit=1, + [("name", "=", "Epic Technologies")], limit=1, ) self.assertEqual(line.partner_id, self.partner) diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py index 7f9e6fec..39c6c7fa 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -6,9 +6,9 @@ import dateutil.parser -from odoo.tools.translate import _ from odoo import api, models from odoo.exceptions import UserError +from odoo.tools.translate import _ class AccountBankStatementImport(models.TransientModel): @@ -16,22 +16,21 @@ class AccountBankStatementImport(models.TransientModel): @api.model def _check_qif(self, data_file): - return data_file.strip().startswith(b'!Type:') + return data_file.strip().startswith(b"!Type:") def _parse_file(self, data_file): if not self._check_qif(data_file): - return super(AccountBankStatementImport, self)._parse_file( - data_file) + return super(AccountBankStatementImport, self)._parse_file(data_file) try: file_data = data_file.decode() - if '\r' in file_data: - data_list = file_data.split('\r') + if "\r" in file_data: + data_list = file_data.split("\r") else: - data_list = file_data.split('\n') + data_list = file_data.split("\n") header = data_list[0].strip() header = header.split(":")[1] except: - raise UserError(_('Could not decipher the QIF file.')) + raise UserError(_("Could not decipher the QIF file.")) transactions = [] vals_line = {} total = 0 @@ -41,37 +40,44 @@ class AccountBankStatementImport(models.TransientModel): line = line.strip() if not line: continue - if line[0] == 'D': # date of transaction - vals_line['date'] = dateutil.parser.parse( - line[1:], fuzzy=True).date() - elif line[0] == 'T': # Total amount - total += float(line[1:].replace(',', '')) - vals_line['amount'] = float(line[1:].replace(',', '')) - elif line[0] == 'N': # Check number - vals_line['ref'] = line[1:] - elif line[0] == 'P': # Payee - vals_line['name'] = ( - 'name' in vals_line and - line[1:] + ': ' + vals_line['name'] or line[1:] + if line[0] == "D": # date of transaction + vals_line["date"] = dateutil.parser.parse( + line[1:], fuzzy=True + ).date() + elif line[0] == "T": # Total amount + total += float(line[1:].replace(",", "")) + vals_line["amount"] = float(line[1:].replace(",", "")) + elif line[0] == "N": # Check number + vals_line["ref"] = line[1:] + elif line[0] == "P": # Payee + vals_line["name"] = ( + "name" in vals_line + and line[1:] + ": " + vals_line["name"] + or line[1:] ) - elif line[0] == 'M': # Memo - vals_line['name'] = ('name' in vals_line and - vals_line['name'] + ': ' + line[1:] or - line[1:]) - elif line[0] == '^' and vals_line: # end of item + elif line[0] == "M": # Memo + vals_line["name"] = ( + "name" in vals_line + and vals_line["name"] + ": " + line[1:] + or line[1:] + ) + elif line[0] == "^" and vals_line: # end of item transactions.append(vals_line) vals_line = {} - elif line[0] == '\n': + elif line[0] == "\n": transactions = [] else: pass else: - raise UserError(_('This file is either not a bank statement or is ' - 'not correctly formed.')) - vals_bank_statement.update({ - 'balance_end_real': total, - 'transactions': transactions - }) + raise UserError( + _( + "This file is either not a bank statement or is " + "not correctly formed." + ) + ) + vals_bank_statement.update( + {"balance_end_real": total, "transactions": transactions} + ) return None, None, [vals_bank_statement] def _complete_stmts_vals(self, stmt_vals, journal_id, account_number): @@ -82,12 +88,12 @@ class AccountBankStatementImport(models.TransientModel): # Since QIF doesn't provide account numbers (normal behaviour is to # provide 'account_number', which the generic module uses to find # the partner), we have to find res.partner through the name - partner_obj = self.env['res.partner'] + partner_obj = self.env["res.partner"] for statement in res: - for line_vals in statement['transactions']: - if not line_vals.get('partner_id') and line_vals.get('name'): + for line_vals in statement["transactions"]: + if not line_vals.get("partner_id") and line_vals.get("name"): partner = partner_obj.search( - [('name', 'ilike', line_vals['name'])], limit=1, + [("name", "ilike", line_vals["name"])], limit=1, ) - line_vals['partner_id'] = partner.id + line_vals["partner_id"] = partner.id return res diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml b/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml index d6ab5b7f..d9bdc4c0 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml @@ -3,7 +3,10 @@ account.bank.statement.import - +
  • Quicken Interchange Format (.qif)
  • From 1fc432e13060df002c9a96a14b0bf464b902a2b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Mon, 17 Oct 2022 09:16:42 +0200 Subject: [PATCH 13/16] [MIG] account_bank_statement_import_qif: Migration to 12.0 --- account_statement_import_qif/__init__.py | 1 + account_statement_import_qif/__manifest__.py | 6 +++--- account_statement_import_qif/models/__init__.py | 3 +++ .../models/account_journal.py | 14 ++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 account_statement_import_qif/models/__init__.py create mode 100644 account_statement_import_qif/models/account_journal.py diff --git a/account_statement_import_qif/__init__.py b/account_statement_import_qif/__init__.py index fbadf7a6..7588e52c 100644 --- a/account_statement_import_qif/__init__.py +++ b/account_statement_import_qif/__init__.py @@ -1,3 +1,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import models from . import wizards diff --git a/account_statement_import_qif/__manifest__.py b/account_statement_import_qif/__manifest__.py index 4c73d642..30c786e1 100644 --- a/account_statement_import_qif/__manifest__.py +++ b/account_statement_import_qif/__manifest__.py @@ -7,11 +7,11 @@ { "name": "Import QIF Bank Statements", "category": "Accounting", - "version": "11.0.1.0.1", + "version": "12.0.1.0.0", "author": "OpenERP SA," "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-import", - "depends": ["account_bank_statement_import",], - "data": ["wizards/account_bank_statement_import_qif_view.xml",], + "depends": ["account_bank_statement_import"], + "data": ["wizards/account_bank_statement_import_qif_view.xml"], "installable": True, "license": "AGPL-3", } diff --git a/account_statement_import_qif/models/__init__.py b/account_statement_import_qif/models/__init__.py new file mode 100644 index 00000000..ec99cd19 --- /dev/null +++ b/account_statement_import_qif/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import account_journal diff --git a/account_statement_import_qif/models/account_journal.py b/account_statement_import_qif/models/account_journal.py new file mode 100644 index 00000000..2d5cbb62 --- /dev/null +++ b/account_statement_import_qif/models/account_journal.py @@ -0,0 +1,14 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, models + + +class AccountJournal(models.Model): + _inherit = "account.journal" + + def _get_bank_statements_available_import_formats(self): + res = super( + AccountJournal, self + )._get_bank_statements_available_import_formats() + res.extend([_(".qif")]) + return res From 091590191738c4ed7b750522509826fd5655a0bb Mon Sep 17 00:00:00 2001 From: Abraham Anes Date: Fri, 16 Oct 2020 09:31:45 +0200 Subject: [PATCH 14/16] [MIG] account_bank_statement_import_qif: Migration to 13.0 TT26069 [UPD] Update account_bank_statement_import_qif.pot [UPD] README.rst [UPD] README.rst Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: bank-statement-import-13.0/bank-statement-import-13.0-account_bank_statement_import_qif Translate-URL: https://translation.odoo-community.org/projects/bank-statement-import-13-0/bank-statement-import-13-0-account_bank_statement_import_qif/ --- account_statement_import_qif/README.rst | 80 ++- account_statement_import_qif/__manifest__.py | 2 +- .../account_bank_statement_import_qif.pot | 18 +- account_statement_import_qif/i18n/de.po | 11 +- account_statement_import_qif/i18n/es.po | 11 +- account_statement_import_qif/i18n/fa.po | 11 +- account_statement_import_qif/i18n/fi.po | 11 +- account_statement_import_qif/i18n/fr.po | 11 +- account_statement_import_qif/i18n/fr_CH.po | 11 +- account_statement_import_qif/i18n/gl.po | 11 +- account_statement_import_qif/i18n/hr.po | 11 +- account_statement_import_qif/i18n/lt_LT.po | 11 +- account_statement_import_qif/i18n/nb_NO.po | 11 +- account_statement_import_qif/i18n/nl.po | 11 +- account_statement_import_qif/i18n/pt_BR.po | 11 +- account_statement_import_qif/i18n/pt_PT.po | 11 +- account_statement_import_qif/i18n/sl.po | 11 +- .../models/account_journal.py | 8 +- .../readme/CONTRIBUTORS.rst | 13 + .../readme/DESCRIPTION.rst | 14 + account_statement_import_qif/readme/USAGE.rst | 6 + .../static/description/index.html | 456 ++++++++++++++++++ .../tests/test_import_bank_statement.py | 6 +- .../account_bank_statement_import_qif.py | 14 +- 24 files changed, 686 insertions(+), 85 deletions(-) create mode 100644 account_statement_import_qif/readme/CONTRIBUTORS.rst create mode 100644 account_statement_import_qif/readme/DESCRIPTION.rst create mode 100644 account_statement_import_qif/readme/USAGE.rst create mode 100644 account_statement_import_qif/static/description/index.html diff --git a/account_statement_import_qif/README.rst b/account_statement_import_qif/README.rst index f971f706..d6af1ce7 100644 --- a/account_statement_import_qif/README.rst +++ b/account_statement_import_qif/README.rst @@ -1,17 +1,39 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 +========================== +Import QIF Bank Statements +========================== -========================== -Import QIF bank statements -========================== +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:926bb5e821cd71d9a5bdaee546ce3b8f25a00825ff69c291da88820e8e53ae62 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github + :target: https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_import_qif + :alt: OCA/bank-statement-import +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/bank-statement-import-13-0/bank-statement-import-13-0-account_bank_statement_import_qif + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=13.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in Accounting \ Bank and Cash \ Bank Statements. Important Note --------------- +~~~~~~~~~~~~~~ Because of the QIF format limitation, we cannot ensure the same transactions aren't imported several times or handle multicurrency. Whenever possible, you should use a more appropriate file format like OFX. @@ -21,6 +43,11 @@ by Odoo for V9 at its early stage. As Odoo has relicensed this module as private inside its Odoo enterprise layer, now this one is maintained from the original AGPL code. +**Table of contents** + +.. contents:: + :local: + Usage ===== @@ -31,46 +58,55 @@ To use this module, you need to: #. Select a QIF file. #. Press *Import*. -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/174/11.0 - Bug Tracker =========== -Bugs are tracked on -`GitHub Issues `_. +Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and -welcomed feedback. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= +Authors +~~~~~~~ + +* OpenERP SA +* Tecnativa + Contributors ------------- +~~~~~~~~~~~~ * Odoo SA * Akretion + * Alexis de Lattre * ACSONE A/V + * Laurent Mignon * Therp + * Ronald Portier * Tecnativa (https://www.tecnativa.com) - * Pedro M. Baeza -Maintainer ----------- + * Pedro M. Baeza + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit https://odoo-community.org. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_qif/__manifest__.py b/account_statement_import_qif/__manifest__.py index 30c786e1..7f61a54c 100644 --- a/account_statement_import_qif/__manifest__.py +++ b/account_statement_import_qif/__manifest__.py @@ -7,7 +7,7 @@ { "name": "Import QIF Bank Statements", "category": "Accounting", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "author": "OpenERP SA," "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-import", "depends": ["account_bank_statement_import"], diff --git a/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot index 08eb5d09..8ba3c19b 100644 --- a/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot +++ b/account_statement_import_qif/i18n/account_bank_statement_import_qif.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_bank_statement_import_qif +# * account_bank_statement_import_qif # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: \n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -25,13 +25,17 @@ msgid "Import Bank Statement" msgstr "" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" - diff --git a/account_statement_import_qif/i18n/de.po b/account_statement_import_qif/i18n/de.po index b31e3541..075b2830 100644 --- a/account_statement_import_qif/i18n/de.po +++ b/account_statement_import_qif/i18n/de.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "Konnte QIF-Datei nicht entziffern." @@ -30,12 +30,17 @@ msgid "Import Bank Statement" msgstr "Kontoauszug importieren" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "Quicken Interchange Format (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/es.po b/account_statement_import_qif/i18n/es.po index 12f3d2d4..c7380e4e 100644 --- a/account_statement_import_qif/i18n/es.po +++ b/account_statement_import_qif/i18n/es.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "No se puede descifrar el archivo QIF." @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Importar extracto bancario" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "Quicken Interchange Format (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/fa.po b/account_statement_import_qif/i18n/fa.po index 0f322ca8..da1c5b2c 100644 --- a/account_statement_import_qif/i18n/fa.po +++ b/account_statement_import_qif/i18n/fa.po @@ -20,7 +20,7 @@ msgstr "" "X-Generator: Weblate 3.0.1\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "فایل QIF رمزگشایی نشد." @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "ورود بیانیه بانکی" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "قالب مبادله سریع (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "این فایل یک بیانیه بانکی نیست یا به درستی شکل نمی گیرد." diff --git a/account_statement_import_qif/i18n/fi.po b/account_statement_import_qif/i18n/fi.po index db46cf20..e55b8ec2 100644 --- a/account_statement_import_qif/i18n/fi.po +++ b/account_statement_import_qif/i18n/fi.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -30,12 +30,17 @@ msgid "Import Bank Statement" msgstr "Tuo pankkiaineisto" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/fr.po b/account_statement_import_qif/i18n/fr.po index 8b45f67b..93601971 100644 --- a/account_statement_import_qif/i18n/fr.po +++ b/account_statement_import_qif/i18n/fr.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "Impossible de déchiffrer le fichier QIF." @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Importer un relevé bancaire" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "Format d'échange avec Quicken (.qif)" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/fr_CH.po b/account_statement_import_qif/i18n/fr_CH.po index 03a7e65f..a22f554e 100644 --- a/account_statement_import_qif/i18n/fr_CH.po +++ b/account_statement_import_qif/i18n/fr_CH.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Importer Relevé" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/gl.po b/account_statement_import_qif/i18n/gl.po index a3d16dd9..ace257aa 100644 --- a/account_statement_import_qif/i18n/gl.po +++ b/account_statement_import_qif/i18n/gl.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -30,12 +30,17 @@ msgid "Import Bank Statement" msgstr "Importar extracto bancario" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/hr.po b/account_statement_import_qif/i18n/hr.po index d5a0eb6c..aa938166 100644 --- a/account_statement_import_qif/i18n/hr.po +++ b/account_statement_import_qif/i18n/hr.po @@ -20,7 +20,7 @@ msgstr "" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Uvoz bankovnog izvoda" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/lt_LT.po b/account_statement_import_qif/i18n/lt_LT.po index 29c5f9cf..e4da5387 100644 --- a/account_statement_import_qif/i18n/lt_LT.po +++ b/account_statement_import_qif/i18n/lt_LT.po @@ -21,7 +21,7 @@ msgstr "" "%100<10 || n%100>=20) ? 1 : 2);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "Neįmanoma iššifruoti QIF failo." @@ -32,12 +32,17 @@ msgid "Import Bank Statement" msgstr "Importuoti banko išrašą" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Failas arba ne banko išrašas arba suformuotas neteisingai." diff --git a/account_statement_import_qif/i18n/nb_NO.po b/account_statement_import_qif/i18n/nb_NO.po index b790d22d..6b72bab2 100644 --- a/account_statement_import_qif/i18n/nb_NO.po +++ b/account_statement_import_qif/i18n/nb_NO.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "" @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Importer bankutsagn" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/nl.po b/account_statement_import_qif/i18n/nl.po index e89e0c44..479bbb4e 100644 --- a/account_statement_import_qif/i18n/nl.po +++ b/account_statement_import_qif/i18n/nl.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "Kon het QIF bestand niet ontcijferen." @@ -30,12 +30,17 @@ msgid "Import Bank Statement" msgstr "Importeer bankafschrift" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/pt_BR.po b/account_statement_import_qif/i18n/pt_BR.po index 24ee3425..b9627fd5 100644 --- a/account_statement_import_qif/i18n/pt_BR.po +++ b/account_statement_import_qif/i18n/pt_BR.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o arquivo QIF." @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Importar Extrato Bancário" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "O arquivo não é um extrato bancário ou o formato é incorreto." diff --git a/account_statement_import_qif/i18n/pt_PT.po b/account_statement_import_qif/i18n/pt_PT.po index 69eea6f0..fcd349eb 100644 --- a/account_statement_import_qif/i18n/pt_PT.po +++ b/account_statement_import_qif/i18n/pt_PT.po @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "Não foi possível decifrar o ficheiro QIF." @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Importar Extrato Bancário" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "" diff --git a/account_statement_import_qif/i18n/sl.po b/account_statement_import_qif/i18n/sl.po index a193ca5b..33266d49 100644 --- a/account_statement_import_qif/i18n/sl.po +++ b/account_statement_import_qif/i18n/sl.po @@ -20,7 +20,7 @@ msgstr "" "%100==4 ? 2 : 3);\n" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:34 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "Could not decipher the QIF file." msgstr "QIF datoteke ni bilo mogoče dešifrirati." @@ -31,12 +31,17 @@ msgid "Import Bank Statement" msgstr "Uvoz bančnega izpiska" #. module: account_bank_statement_import_qif -#: model:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view +#: model:ir.model,name:account_bank_statement_import_qif.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_import_qif +#: model_terms:ir.ui.view,arch_db:account_bank_statement_import_qif.account_bank_statement_import_view msgid "Quicken Interchange Format (.qif)" msgstr "" #. module: account_bank_statement_import_qif -#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:69 +#: code:addons/account_bank_statement_import_qif/wizards/account_bank_statement_import_qif.py:0 #, python-format msgid "This file is either not a bank statement or is not correctly formed." msgstr "Ta datoteka ni bančni izpisek, ali pa ni pravilno oblikovana." diff --git a/account_statement_import_qif/models/account_journal.py b/account_statement_import_qif/models/account_journal.py index 2d5cbb62..f4893820 100644 --- a/account_statement_import_qif/models/account_journal.py +++ b/account_statement_import_qif/models/account_journal.py @@ -1,14 +1,12 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import _, models +from odoo import models class AccountJournal(models.Model): _inherit = "account.journal" def _get_bank_statements_available_import_formats(self): - res = super( - AccountJournal, self - )._get_bank_statements_available_import_formats() - res.extend([_(".qif")]) + res = super()._get_bank_statements_available_import_formats() + res.append("qif") return res diff --git a/account_statement_import_qif/readme/CONTRIBUTORS.rst b/account_statement_import_qif/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..f6e06768 --- /dev/null +++ b/account_statement_import_qif/readme/CONTRIBUTORS.rst @@ -0,0 +1,13 @@ +* Odoo SA +* Akretion + + * Alexis de Lattre +* ACSONE A/V + + * Laurent Mignon +* Therp + + * Ronald Portier +* Tecnativa (https://www.tecnativa.com) + + * Pedro M. Baeza diff --git a/account_statement_import_qif/readme/DESCRIPTION.rst b/account_statement_import_qif/readme/DESCRIPTION.rst new file mode 100644 index 00000000..6aa52010 --- /dev/null +++ b/account_statement_import_qif/readme/DESCRIPTION.rst @@ -0,0 +1,14 @@ +This module allows you to import the machine readable QIF Files in Odoo: they +are parsed and stored in human readable format in +Accounting \ Bank and Cash \ Bank Statements. + +Important Note +~~~~~~~~~~~~~~ +Because of the QIF format limitation, we cannot ensure the same transactions +aren't imported several times or handle multicurrency. Whenever possible, you +should use a more appropriate file format like OFX. + +The module was initiated as a backport of the new framework developed +by Odoo for V9 at its early stage. As Odoo has relicensed this module as +private inside its Odoo enterprise layer, now this one is maintained from the +original AGPL code. diff --git a/account_statement_import_qif/readme/USAGE.rst b/account_statement_import_qif/readme/USAGE.rst new file mode 100644 index 00000000..15f6f8fd --- /dev/null +++ b/account_statement_import_qif/readme/USAGE.rst @@ -0,0 +1,6 @@ +To use this module, you need to: + +#. Go to *Invoicing / Accounting* dashboard. +#. Click on *Import statement* from any of the bank journals. +#. Select a QIF file. +#. Press *Import*. diff --git a/account_statement_import_qif/static/description/index.html b/account_statement_import_qif/static/description/index.html new file mode 100644 index 00000000..64b0b489 --- /dev/null +++ b/account_statement_import_qif/static/description/index.html @@ -0,0 +1,456 @@ + + + + + + +Import QIF Bank Statements + + + +
    +

    Import QIF Bank Statements

    + + +

    Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runboat

    +

    This module allows you to import the machine readable QIF Files in Odoo: they +are parsed and stored in human readable format in +Accounting Bank and Cash Bank Statements.

    +
    +

    Important Note

    +

    Because of the QIF format limitation, we cannot ensure the same transactions +aren’t imported several times or handle multicurrency. Whenever possible, you +should use a more appropriate file format like OFX.

    +

    The module was initiated as a backport of the new framework developed +by Odoo for V9 at its early stage. As Odoo has relicensed this module as +private inside its Odoo enterprise layer, now this one is maintained from the +original AGPL code.

    +

    Table of contents

    + +
    +

    Usage

    +

    To use this module, you need to:

    +
      +
    1. Go to Invoicing / Accounting dashboard.
    2. +
    3. Click on Import statement from any of the bank journals.
    4. +
    5. Select a QIF file.
    6. +
    7. Press Import.
    8. +
    +
    +
    +

    Bug Tracker

    +

    Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

    +

    Do not contact contributors directly about support or help with technical issues.

    +
    + +
    +
    +

    Authors

    +
      +
    • OpenERP SA
    • +
    • Tecnativa
    • +
    +
    +
    +

    Contributors

    + +
    +
    +

    Maintainers

    +

    This module is maintained by the OCA.

    +Odoo Community Association +

    OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

    +

    This module is part of the OCA/bank-statement-import project on GitHub.

    +

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    +
    +
    + + diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index 052fc038..0c6c598c 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -16,11 +16,11 @@ class TestQifFile(TransactionCase): """ def setUp(self): - super(TestQifFile, self).setUp() + super().setUp() self.statement_import_model = self.env["account.bank.statement.import"] self.statement_line_model = self.env["account.bank.statement.line"] self.journal = self.env["account.journal"].create( - {"name": "Test bank journal", "code": "TEST", "type": "bank",} + {"name": "Test bank journal", "code": "TEST", "type": "bank"} ) self.partner = self.env["res.partner"].create( { @@ -36,7 +36,7 @@ class TestQifFile(TransactionCase): qif_file = base64.b64encode(open(qif_file_path, "rb").read()) wizard = self.statement_import_model.with_context( journal_id=self.journal.id - ).create(dict(data_file=qif_file)) + ).create({"attachment_ids": [(0, 0, {"name": "test file", "datas": qif_file})]}) wizard.import_file() statement = self.statement_line_model.search( [("name", "=", "YOUR LOCAL SUPERMARKET")], limit=1, diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py index 39c6c7fa..cb83716d 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -4,6 +4,8 @@ # Copyright 2016-2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import base64 + import dateutil.parser from odoo import api, models @@ -20,7 +22,7 @@ class AccountBankStatementImport(models.TransientModel): def _parse_file(self, data_file): if not self._check_qif(data_file): - return super(AccountBankStatementImport, self)._parse_file(data_file) + return super()._parse_file(data_file) try: file_data = data_file.decode() if "\r" in file_data: @@ -29,7 +31,7 @@ class AccountBankStatementImport(models.TransientModel): data_list = file_data.split("\n") header = data_list[0].strip() header = header.split(":")[1] - except: + except Exception: raise UserError(_("Could not decipher the QIF file.")) transactions = [] vals_line = {} @@ -82,12 +84,14 @@ class AccountBankStatementImport(models.TransientModel): def _complete_stmts_vals(self, stmt_vals, journal_id, account_number): """Match partner_id if hasn't been deducted yet.""" - res = super(AccountBankStatementImport, self)._complete_stmts_vals( - stmt_vals, journal_id, account_number, - ) + res = super()._complete_stmts_vals(stmt_vals, journal_id, account_number) # Since QIF doesn't provide account numbers (normal behaviour is to # provide 'account_number', which the generic module uses to find # the partner), we have to find res.partner through the name + if not self.attachment_ids or not self._check_qif( + base64.b64decode(self.attachment_ids[0].datas) + ): + return res partner_obj = self.env["res.partner"] for statement in res: for line_vals in statement["transactions"]: From cc87171aad3ed75ee541e19304d2e5f8f5c4a68f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 3 Apr 2024 09:30:43 +0200 Subject: [PATCH 15/16] [IMP] account_bank_statement_import_qif: pre-commit stuff --- .../tests/test_import_bank_statement.py | 10 +++++++--- .../wizards/account_bank_statement_import_qif.py | 3 ++- .../odoo/addons/account_bank_statement_import_qif | 1 + setup/account_bank_statement_import_qif/setup.py | 6 ++++++ 4 files changed, 16 insertions(+), 4 deletions(-) create mode 120000 setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif create mode 100644 setup/account_bank_statement_import_qif/setup.py diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index 0c6c598c..c227f323 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -31,7 +31,9 @@ class TestQifFile(TransactionCase): def test_qif_file_import(self): qif_file_path = get_module_resource( - "account_bank_statement_import_qif", "tests", "test_qif.qif", + "account_bank_statement_import_qif", + "tests", + "test_qif.qif", ) qif_file = base64.b64encode(open(qif_file_path, "rb").read()) wizard = self.statement_import_model.with_context( @@ -39,10 +41,12 @@ class TestQifFile(TransactionCase): ).create({"attachment_ids": [(0, 0, {"name": "test file", "datas": qif_file})]}) wizard.import_file() statement = self.statement_line_model.search( - [("name", "=", "YOUR LOCAL SUPERMARKET")], limit=1, + [("name", "=", "YOUR LOCAL SUPERMARKET")], + limit=1, )[0].statement_id self.assertAlmostEqual(statement.balance_end_real, -1896.09, 2) line = self.statement_line_model.search( - [("name", "=", "Epic Technologies")], limit=1, + [("name", "=", "Epic Technologies")], + limit=1, ) self.assertEqual(line.partner_id, self.partner) diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py index cb83716d..aa4fde4e 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_bank_statement_import_qif.py @@ -97,7 +97,8 @@ class AccountBankStatementImport(models.TransientModel): for line_vals in statement["transactions"]: if not line_vals.get("partner_id") and line_vals.get("name"): partner = partner_obj.search( - [("name", "ilike", line_vals["name"])], limit=1, + [("name", "ilike", line_vals["name"])], + limit=1, ) line_vals["partner_id"] = partner.id return res diff --git a/setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif b/setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif new file mode 120000 index 00000000..2f0b59da --- /dev/null +++ b/setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif @@ -0,0 +1 @@ +../../../../account_bank_statement_import_qif \ No newline at end of file diff --git a/setup/account_bank_statement_import_qif/setup.py b/setup/account_bank_statement_import_qif/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/account_bank_statement_import_qif/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 8866dd4b60af4a7d0f22ff3a69b7bcccdafb8af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 4 Apr 2024 09:00:51 +0200 Subject: [PATCH 16/16] [MIG] account_bank_statement_import_qif: Migration to 16.0 and rename to account_statement_import_qif TT46557 --- account_statement_import_qif/README.rst | 12 +++---- account_statement_import_qif/__manifest__.py | 6 ++-- .../static/description/index.html | 8 ++--- .../tests/test_import_bank_statement.py | 33 +++++++++++-------- .../wizards/__init__.py | 2 +- ...qif.py => account_statement_import_qif.py} | 23 ++++++------- ... => account_statement_import_qif_view.xml} | 8 ++--- .../addons/account_bank_statement_import_qif | 1 - .../odoo/addons/account_statement_import_qif | 1 + .../setup.py | 0 10 files changed, 50 insertions(+), 44 deletions(-) rename account_statement_import_qif/wizards/{account_bank_statement_import_qif.py => account_statement_import_qif.py} (85%) rename account_statement_import_qif/wizards/{account_bank_statement_import_qif_view.xml => account_statement_import_qif_view.xml} (58%) delete mode 120000 setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif create mode 120000 setup/account_statement_import_qif/odoo/addons/account_statement_import_qif rename setup/{account_bank_statement_import_qif => account_statement_import_qif}/setup.py (100%) diff --git a/account_statement_import_qif/README.rst b/account_statement_import_qif/README.rst index d6af1ce7..e4801462 100644 --- a/account_statement_import_qif/README.rst +++ b/account_statement_import_qif/README.rst @@ -7,7 +7,7 @@ Import QIF Bank Statements !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:926bb5e821cd71d9a5bdaee546ce3b8f25a00825ff69c291da88820e8e53ae62 + !! source digest: sha256:46da85f209ed418623ef45de4757c7ceb32bedf65df4d336d7f8a8473da6c1d0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -17,13 +17,13 @@ Import QIF Bank Statements :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github - :target: https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_import_qif + :target: https://github.com/OCA/bank-statement-import/tree/16.0/account_statement_import_qif :alt: OCA/bank-statement-import .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/bank-statement-import-13-0/bank-statement-import-13-0-account_bank_statement_import_qif + :target: https://translation.odoo-community.org/projects/bank-statement-import-16-0/bank-statement-import-16-0-account_statement_import_qif :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=13.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/bank-statement-import&target_branch=16.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -64,7 +64,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -107,6 +107,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/bank-statement-import `_ project on GitHub. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_qif/__manifest__.py b/account_statement_import_qif/__manifest__.py index 7f61a54c..c316a61b 100644 --- a/account_statement_import_qif/__manifest__.py +++ b/account_statement_import_qif/__manifest__.py @@ -7,11 +7,11 @@ { "name": "Import QIF Bank Statements", "category": "Accounting", - "version": "13.0.1.0.0", + "version": "16.0.1.0.0", "author": "OpenERP SA," "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-import", - "depends": ["account_bank_statement_import"], - "data": ["wizards/account_bank_statement_import_qif_view.xml"], + "depends": ["account_statement_import_file"], + "data": ["wizards/account_statement_import_qif_view.xml"], "installable": True, "license": "AGPL-3", } diff --git a/account_statement_import_qif/static/description/index.html b/account_statement_import_qif/static/description/index.html index 64b0b489..191ce05a 100644 --- a/account_statement_import_qif/static/description/index.html +++ b/account_statement_import_qif/static/description/index.html @@ -367,9 +367,9 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:926bb5e821cd71d9a5bdaee546ce3b8f25a00825ff69c291da88820e8e53ae62 +!! source digest: sha256:46da85f209ed418623ef45de4757c7ceb32bedf65df4d336d7f8a8473da6c1d0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runboat

    +

    Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runboat

    This module allows you to import the machine readable QIF Files in Odoo: they are parsed and stored in human readable format in Accounting Bank and Cash Bank Statements.

    @@ -405,7 +405,7 @@ original AGPL code.

    Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

    +feedback.

    Do not contact contributors directly about support or help with technical issues.

    @@ -448,7 +448,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/bank-statement-import project on GitHub.

    +

    This module is part of the OCA/bank-statement-import project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    diff --git a/account_statement_import_qif/tests/test_import_bank_statement.py b/account_statement_import_qif/tests/test_import_bank_statement.py index c227f323..0a37d011 100644 --- a/account_statement_import_qif/tests/test_import_bank_statement.py +++ b/account_statement_import_qif/tests/test_import_bank_statement.py @@ -2,6 +2,7 @@ # Copyright 2015 Laurent Mignon # Copyright 2015 Ronald Portier # Copyright 2016-2017 Tecnativa - Pedro M. Baeza +# Copyright 2024 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import base64 @@ -15,14 +16,20 @@ class TestQifFile(TransactionCase): (account.bank.statement.import) """ - def setUp(self): - super().setUp() - self.statement_import_model = self.env["account.bank.statement.import"] - self.statement_line_model = self.env["account.bank.statement.line"] - self.journal = self.env["account.journal"].create( - {"name": "Test bank journal", "code": "TEST", "type": "bank"} + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.statement_import_model = cls.env["account.statement.import"] + cls.statement_line_model = cls.env["account.bank.statement.line"] + cls.journal = cls.env["account.journal"].create( + { + "name": "Test bank journal", + "code": "TEST", + "type": "bank", + "currency_id": cls.env.company.currency_id.id, + } ) - self.partner = self.env["res.partner"].create( + cls.partner = cls.env["res.partner"].create( { # Different case for trying insensitive case search "name": "EPIC Technologies", @@ -31,22 +38,22 @@ class TestQifFile(TransactionCase): def test_qif_file_import(self): qif_file_path = get_module_resource( - "account_bank_statement_import_qif", + "account_statement_import_qif", "tests", "test_qif.qif", ) qif_file = base64.b64encode(open(qif_file_path, "rb").read()) wizard = self.statement_import_model.with_context( journal_id=self.journal.id - ).create({"attachment_ids": [(0, 0, {"name": "test file", "datas": qif_file})]}) - wizard.import_file() + ).create({"statement_file": qif_file, "statement_filename": "test_qif.qif"}) + wizard.import_file_button() statement = self.statement_line_model.search( - [("name", "=", "YOUR LOCAL SUPERMARKET")], + [("payment_ref", "=", "YOUR LOCAL SUPERMARKET")], limit=1, - )[0].statement_id + ).statement_id self.assertAlmostEqual(statement.balance_end_real, -1896.09, 2) line = self.statement_line_model.search( - [("name", "=", "Epic Technologies")], + [("payment_ref", "=", "Epic Technologies")], limit=1, ) self.assertEqual(line.partner_id, self.partner) diff --git a/account_statement_import_qif/wizards/__init__.py b/account_statement_import_qif/wizards/__init__.py index 448bfc66..c075b9cf 100644 --- a/account_statement_import_qif/wizards/__init__.py +++ b/account_statement_import_qif/wizards/__init__.py @@ -1,3 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import account_bank_statement_import_qif +from . import account_statement_import_qif diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py b/account_statement_import_qif/wizards/account_statement_import_qif.py similarity index 85% rename from account_statement_import_qif/wizards/account_bank_statement_import_qif.py rename to account_statement_import_qif/wizards/account_statement_import_qif.py index aa4fde4e..42dc8527 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif.py +++ b/account_statement_import_qif/wizards/account_statement_import_qif.py @@ -13,8 +13,8 @@ from odoo.exceptions import UserError from odoo.tools.translate import _ -class AccountBankStatementImport(models.TransientModel): - _inherit = "account.bank.statement.import" +class AccountStatementImport(models.TransientModel): + _inherit = "account.statement.import" @api.model def _check_qif(self, data_file): @@ -31,8 +31,8 @@ class AccountBankStatementImport(models.TransientModel): data_list = file_data.split("\n") header = data_list[0].strip() header = header.split(":")[1] - except Exception: - raise UserError(_("Could not decipher the QIF file.")) + except Exception as e: + raise UserError(_("Could not decipher the QIF file.")) from e transactions = [] vals_line = {} total = 0 @@ -52,13 +52,13 @@ class AccountBankStatementImport(models.TransientModel): elif line[0] == "N": # Check number vals_line["ref"] = line[1:] elif line[0] == "P": # Payee - vals_line["name"] = ( + vals_line["payment_ref"] = ( "name" in vals_line and line[1:] + ": " + vals_line["name"] or line[1:] ) elif line[0] == "M": # Memo - vals_line["name"] = ( + vals_line["payment_ref"] = ( "name" in vals_line and vals_line["name"] + ": " + line[1:] or line[1:] @@ -80,7 +80,8 @@ class AccountBankStatementImport(models.TransientModel): vals_bank_statement.update( {"balance_end_real": total, "transactions": transactions} ) - return None, None, [vals_bank_statement] + journal = self.env["account.journal"].browse(self.env.context.get("journal_id")) + return journal.currency_id.name, None, [vals_bank_statement] def _complete_stmts_vals(self, stmt_vals, journal_id, account_number): """Match partner_id if hasn't been deducted yet.""" @@ -88,16 +89,16 @@ class AccountBankStatementImport(models.TransientModel): # Since QIF doesn't provide account numbers (normal behaviour is to # provide 'account_number', which the generic module uses to find # the partner), we have to find res.partner through the name - if not self.attachment_ids or not self._check_qif( - base64.b64decode(self.attachment_ids[0].datas) + if not self.statement_file or not self._check_qif( + base64.b64decode(self.statement_file) ): return res partner_obj = self.env["res.partner"] for statement in res: for line_vals in statement["transactions"]: - if not line_vals.get("partner_id") and line_vals.get("name"): + if not line_vals.get("partner_id") and line_vals.get("payment_ref"): partner = partner_obj.search( - [("name", "ilike", line_vals["name"])], + [("name", "ilike", line_vals["payment_ref"])], limit=1, ) line_vals["partner_id"] = partner.id diff --git a/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml b/account_statement_import_qif/wizards/account_statement_import_qif_view.xml similarity index 58% rename from account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml rename to account_statement_import_qif/wizards/account_statement_import_qif_view.xml index d9bdc4c0..ebc0ab3a 100644 --- a/account_statement_import_qif/wizards/account_bank_statement_import_qif_view.xml +++ b/account_statement_import_qif/wizards/account_statement_import_qif_view.xml @@ -1,11 +1,10 @@ - - - account.bank.statement.import + + account.statement.import @@ -13,5 +12,4 @@ - diff --git a/setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif b/setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif deleted file mode 120000 index 2f0b59da..00000000 --- a/setup/account_bank_statement_import_qif/odoo/addons/account_bank_statement_import_qif +++ /dev/null @@ -1 +0,0 @@ -../../../../account_bank_statement_import_qif \ No newline at end of file diff --git a/setup/account_statement_import_qif/odoo/addons/account_statement_import_qif b/setup/account_statement_import_qif/odoo/addons/account_statement_import_qif new file mode 120000 index 00000000..d10fdade --- /dev/null +++ b/setup/account_statement_import_qif/odoo/addons/account_statement_import_qif @@ -0,0 +1 @@ +../../../../account_statement_import_qif \ No newline at end of file diff --git a/setup/account_bank_statement_import_qif/setup.py b/setup/account_statement_import_qif/setup.py similarity index 100% rename from setup/account_bank_statement_import_qif/setup.py rename to setup/account_statement_import_qif/setup.py