diff --git a/addons/account_bank_statement_extensions/__init__.py b/addons/account_bank_statement_extensions/__init__.py
new file mode 100644
index 00000000000..f7e72e49c0b
--- /dev/null
+++ b/addons/account_bank_statement_extensions/__init__.py
@@ -0,0 +1,27 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import account_bank_statement
+import res_company
+import res_partner_bank
+import report
+import wizard
diff --git a/addons/account_bank_statement_extensions/__openerp__.py b/addons/account_bank_statement_extensions/__openerp__.py
new file mode 100644
index 00000000000..7715a5598be
--- /dev/null
+++ b/addons/account_bank_statement_extensions/__openerp__.py
@@ -0,0 +1,57 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+{
+ 'name': 'Bank Statement extensions to support e-banking',
+ 'version': '0.3',
+ 'license': 'AGPL-3',
+ 'author': 'Noviat',
+ 'category': 'Generic Modules/Accounting',
+ 'description': '''
+Module that extends the standard account_bank_statement_line object for improved e-banking support.
+
+Adds
+- valuta date
+- batch payments
+- traceability of changes to bank statement lines
+- bank statement line views
+- bank statements balances report
+- performance improvements for digital import of bank statement (via 'ebanking_import' context flag)
+- name_search on res.partner.bank enhanced to allow search on bank and iban account numbers
+- new field bank_ids on res.company to facilitate search on company banks
+ ''',
+ 'depends': ['account'],
+ 'demo_xml': [],
+ 'init_xml': [
+ ],
+ 'update_xml' : [
+ 'security/ir.model.access.csv',
+ 'account_bank_statement_view.xml',
+ 'company_view.xml',
+ 'account_bank_statement_report.xml',
+ 'wizard/confirm_statement_line_wizard.xml',
+ 'wizard/cancel_statement_line_wizard.xml',
+ 'data/account_bank_statement_extensions_data.xml',
+ ],
+ 'active': False,
+ 'installable': True,
+}
+
diff --git a/addons/account_bank_statement_extensions/account_bank_statement.py b/addons/account_bank_statement_extensions/account_bank_statement.py
new file mode 100644
index 00000000000..063714f48e4
--- /dev/null
+++ b/addons/account_bank_statement_extensions/account_bank_statement.py
@@ -0,0 +1,143 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import time
+from osv import osv, fields
+import decimal_precision as dp
+import netsvc
+from tools.translate import _
+
+class account_bank_statement(osv.osv):
+ _inherit = 'account.bank.statement'
+
+ def write(self, cr, uid, ids, vals, context=None):
+ if context is None:
+ context = {}
+ # bypass obsolete statement line resequencing
+ if vals.get('line_ids', False) or context.get('ebanking_import', False):
+ res = super(osv.osv, self).write(cr, uid, ids, vals, context=context)
+ else:
+ res = super(account_bank_statement, self).write(cr, uid, ids, vals, context=context)
+ return res
+
+ def button_confirm_bank(self, cr, uid, ids, context=None):
+ super(account_bank_statement, self).button_confirm_bank(cr, uid, ids, context=context)
+ for st in self.browse(cr, uid, ids, context=context):
+ cr.execute("UPDATE account_bank_statement_line \
+ SET state='confirm' WHERE id in %s ",
+ (tuple([x.id for x in st.line_ids]),))
+ return True
+
+ def button_cancel(self, cr, uid, ids, context=None):
+ super(account_bank_statement, self).button_cancel(cr, uid, ids, context=context)
+ for st in self.browse(cr, uid, ids, context=context):
+ cr.execute("UPDATE account_bank_statement_line \
+ SET state='draft' WHERE id in %s ",
+ (tuple([x.id for x in st.line_ids]),))
+ return True
+
+account_bank_statement()
+
+class account_bank_statement_line_global(osv.osv):
+ _name = 'account.bank.statement.line.global'
+ _description = 'Batch Payment Info'
+
+ _columns = {
+ 'name': fields.char('Communication', size=128, required=True),
+ 'code': fields.char('Code', size=64, required=True),
+ 'parent_id': fields.many2one('account.bank.statement.line.global', 'Parent Code', ondelete='cascade'),
+ 'child_ids': fields.one2many('account.bank.statement.line.global', 'parent_id', 'Child Codes'),
+ 'type': fields.selection([
+ ('iso20022', 'ISO 20022'),
+ ('coda', 'CODA'),
+ ('manual', 'Manual'),
+ ], 'Type', required=True),
+ 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
+ 'bank_statement_line_ids': fields.one2many('account.bank.statement.line', 'globalisation_id', 'Bank Statement Lines'),
+ }
+ _rec_name = 'code'
+ _defaults = {
+ 'code': lambda s,c,u,ctx={}: s.pool.get('ir.sequence').get(c, u, 'account.bank.statement.line.global'),
+ 'name': '/',
+ }
+ _sql_constraints = [
+ ('code_uniq', 'unique (code)', 'The code must be unique !'),
+ ]
+
+ def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=100):
+ if not args:
+ args = []
+ ids = []
+ if name:
+ ids = self.search(cr, user, [('code', '=ilike', name)] + args, limit=limit)
+ if not ids:
+ ids = self.search(cr, user, [('name', operator, name)] + args, limit=limit)
+ if not ids and len(name.split()) >= 2:
+ #Separating code and name for searching
+ operand1, operand2 = name.split(' ', 1) #name can contain spaces
+ ids = self.search(cr, user, [('code', '=like', operand1), ('name', operator, operand2)] + args, limit=limit)
+ else:
+ ids = self.search(cr, user, args, context=context, limit=limit)
+ return self.name_get(cr, user, ids, context=context)
+
+account_bank_statement_line_global()
+
+class account_bank_statement_line(osv.osv):
+ _inherit = 'account.bank.statement.line'
+ _columns = {
+ 'date': fields.date('Entry Date', required=True, states={'confirm': [('readonly', True)]}),
+ 'val_date': fields.date('Valuta Date', states={'confirm': [('readonly', True)]}),
+ 'globalisation_id': fields.many2one('account.bank.statement.line.global', 'Globalisation ID',
+ states={'confirm': [('readonly', True)]},
+ help="Code to identify transactions belonging to the same globalisation level within a batch payment"),
+ 'globalisation_amount': fields.related('globalisation_id', 'amount', type='float',
+ relation='account.bank.statement.line.global', string='Glob. Amount', readonly=True),
+ 'journal_id': fields.related('statement_id', 'journal_id', type='many2one', relation='account.journal', string='Journal', store=True, readonly=True),
+ 'update_date': fields.date('Update Date', required=True, readonly=True),
+ 'update_by': fields.many2one('res.users', 'Updated by', required=True, readonly=True),
+ 'state': fields.selection([('draft', 'Draft'), ('confirm', 'Confirmed')],
+ 'State', required=True, readonly=True),
+ 'counterparty_name': fields.char('Counterparty Name', size=35),
+ 'counterparty_bic': fields.char('Counterparty BIC', size=11),
+ 'counterparty_number': fields.char('Counterparty Number', size=34),
+ 'counterparty_currency': fields.char('Counterparty Currency', size=3),
+ }
+ _defaults = {
+ 'update_date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'update_by': lambda s, c, u, ctx: u,
+ 'state': 'draft',
+ }
+
+ def unlink(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
+ if context.get('block_statement_line_delete', False):
+ raise osv.except_osv('Warning', _('Delete operation not allowed ! \
+ Please go to the associated bank statement in order to delete and/or modify this bank statement line'))
+ return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context)
+
+ def write(self, cr, uid, ids, vals, context=None):
+ vals['update_date'] = time.strftime('%Y-%m-%d %H:%M:%S')
+ vals['update_by'] = uid
+ return super(account_bank_statement_line, self).write(cr, uid, ids, vals, context=context)
+
+account_bank_statement_line()
diff --git a/addons/account_bank_statement_extensions/account_bank_statement_report.xml b/addons/account_bank_statement_extensions/account_bank_statement_report.xml
new file mode 100644
index 00000000000..b4dafbfd9a7
--- /dev/null
+++ b/addons/account_bank_statement_extensions/account_bank_statement_report.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
diff --git a/addons/account_bank_statement_extensions/account_bank_statement_view.xml b/addons/account_bank_statement_extensions/account_bank_statement_view.xml
new file mode 100644
index 00000000000..ee6b5defb68
--- /dev/null
+++ b/addons/account_bank_statement_extensions/account_bank_statement_view.xml
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+ statement.line.global.form
+ account.bank.statement.line.global
+ form
+
+
+
+
+
+
+
+
+ view.bank.statement.form.add.fields
+ account.bank.statement
+
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bank.statement.line.list
+ account.bank.statement.line
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bank.statement.line.form
+ account.bank.statement.line
+ form
+
+
+
+
+
+
+ bank.statement.line.filter
+ account.bank.statement.line
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bank Statement Lines
+ account.bank.statement.line
+ form
+ tree,graph,form
+ {'block_statement_line_delete' : 1}
+
+
+
+
+
+
+
+
diff --git a/addons/account_bank_statement_extensions/company_view.xml b/addons/account_bank_statement_extensions/company_view.xml
new file mode 100644
index 00000000000..fd833b371cd
--- /dev/null
+++ b/addons/account_bank_statement_extensions/company_view.xml
@@ -0,0 +1,18 @@
+
+
+
+ res.company.bank.form.inherit
+ res.company
+
+ form
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_bank_statement_extensions/data/account_bank_statement_extensions_data.xml b/addons/account_bank_statement_extensions/data/account_bank_statement_extensions_data.xml
new file mode 100644
index 00000000000..f01afba41cd
--- /dev/null
+++ b/addons/account_bank_statement_extensions/data/account_bank_statement_extensions_data.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Statement Line Globalisation sequence
+ statement.line.global
+
+
+ Statement Line Globalisation sequence
+ statement.line.global
+ G
+
+
+
+
+
+
diff --git a/addons/account_bank_statement_extensions/i18n/fr.po b/addons/account_bank_statement_extensions/i18n/fr.po
new file mode 100644
index 00000000000..0740e697031
--- /dev/null
+++ b/addons/account_bank_statement_extensions/i18n/fr.po
@@ -0,0 +1,236 @@
+# French translation of OpenERP Server 6.1.
+# This file contains the translation of the following modules:
+# * account_bank_statement_extensions
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: support@noviat.be\n"
+"POT-Creation-Date: 2011-10-24 22:33:11.753000\n"
+"PO-Revision-Date: 2011-10-24 22:33:11.753000\n"
+"Last-Translator: Luc De Meyer (Noviat nv/sa)\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Statement Lines"
+msgstr "Transactions bancaires"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Statement Line"
+msgstr "Transaction bancaire"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Total Amount"
+msgstr "Montant total"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Id"
+msgstr "Id. glob."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Am."
+msgstr "Mont. glob."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Amount"
+msgstr "Montant glob."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Notes"
+msgstr "Notes"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Search Bank Transactions"
+msgstr "Recherche de transactions"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Debit"
+msgstr "Debit"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Credit"
+msgstr "Credit"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Debit Transactions."
+msgstr "Transactions debit."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Credit Transactions."
+msgstr "Transactions credit."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Extended Filters..."
+msgstr "Filtres étendus..."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Group By..."
+msgstr "Grouper par..."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Journal"
+msgstr "Journal"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Statement"
+msgstr "Relevé"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Fin.Account"
+msgstr "Compte général"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Lvl"
+msgstr "Niveau Glob."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Notes"
+msgstr "Notes"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Draft"
+msgstr "Brouillon"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Confirmed"
+msgstr "Confirmée"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Draft Statement Lines."
+msgstr "Transactions brouillon."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Confirmed Statement Lines."
+msgstr "Transactions confirmées."
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_bic:0
+msgid "Counterparty BIC"
+msgstr "BIC de la contrepartie"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_currency:0
+msgid "Counterparty Currency"
+msgstr "Devise de la contrepartie"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_name:0
+msgid "Counterparty Name"
+msgstr "Nom de la contrepartie"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_number:0
+msgid "Counterparty Number"
+msgstr "No de la contrepartie"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,date:0
+msgid "Entry Date"
+msgstr "Date de comptabilisation"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,globalisation_amount:0
+msgid "Glob. Amount"
+msgstr "Montant glob."
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,globalisation_id:0
+msgid "Globalisation ID"
+msgstr "ID de globalisation"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,journal_id:0
+msgid "Journal"
+msgstr "Journal"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,val_date:0
+msgid "Valuta Date"
+msgstr "Date de valeur"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,amount:0
+msgid "Amount"
+msgstr "Montant"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,bank_statement_line_ids:0
+msgid "Bank Statement Lines"
+msgstr "Transactions bancaires"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,child_ids:0
+msgid "Child Codes"
+msgstr "Codes fils"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,code:0
+msgid "Code"
+msgstr "Code"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,name:0
+msgid "Name"
+msgstr "Nom"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,parent_id:0
+msgid "Parent Code"
+msgstr "Code parent"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,type:0
+msgid "Type"
+msgstr "Type"
+
+#. module: account_bank_statement_extensions
+#: selection:account.bank.statement.line.global,type:0
+msgid "Manual"
+msgstr "Manuelle"
+
+#. module: account_bank_statement_extensions
+#: selection:account.bank.statement.line.global,type:0
+msgid "CODA"
+msgstr "CODA"
+
+#. module: account_bank_statement_extensions
+#: selection:account.bank.statement.line.global,type:0
+msgid "ISO 20022"
+msgstr "ISO 20022"
+
+#. module: account_bank_statement_extensions
+#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
+msgid "Bank Statement Lines"
+msgstr "Transactions bancaires"
+
+#. module: account_bank_statement_extensions
+#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
+msgid "Bank Statement Lines"
+msgstr "Transactions bancaires"
+
diff --git a/addons/account_bank_statement_extensions/i18n/nl.po b/addons/account_bank_statement_extensions/i18n/nl.po
new file mode 100644
index 00000000000..3fd64aaf40e
--- /dev/null
+++ b/addons/account_bank_statement_extensions/i18n/nl.po
@@ -0,0 +1,236 @@
+# Dutch translation of OpenERP Server 6.1.
+# This file contains the translation of the following modules:
+# * account_bank_statement_extensions
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: support@noviat.be\n"
+"POT-Creation-Date: 2011-10-24 22:33:11.736000\n"
+"PO-Revision-Date: 2011-10-24 22:33:11.736000\n"
+"Last-Translator: Luc De Meyer (Noviat nv/sa)\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Statement Lines"
+msgstr "Bank transacties"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Statement Line"
+msgstr "Bank transactie"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Total Amount"
+msgstr "Totaal bedrag"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Id"
+msgstr "Glob. Id"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Am."
+msgstr "Glob. bedrag"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Amount"
+msgstr "Glob. bedrag"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Notes"
+msgstr "Notities"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Search Bank Transactions"
+msgstr "Transacties zoeken"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Debit"
+msgstr "Debet"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Credit"
+msgstr "Credit"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Debit Transactions."
+msgstr "Debet transacties."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Credit Transactions."
+msgstr "Credit transacties."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Extended Filters..."
+msgstr "Uitgebreide filters..."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Group By..."
+msgstr "Groepeer op..."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Journal"
+msgstr "Dagboek"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Statement"
+msgstr "Uitreksel"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Fin.Account"
+msgstr "Grootboekrekening"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Glob. Lvl"
+msgstr "Glob. niveau"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Notes"
+msgstr "Notities"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Draft"
+msgstr "Concept"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Confirmed"
+msgstr "Bevestigd"
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Draft Statement Lines."
+msgstr "Concept transacties."
+
+#. module: account_bank_statement_extensions
+#: view:account.bank.statement.line:0
+msgid "Confirmed Statement Lines."
+msgstr "Bevestigde transacties."
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_bic:0
+msgid "Counterparty BIC"
+msgstr "BIC tegenpartij"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_currency:0
+msgid "Counterparty Currency"
+msgstr "Munteenheid tegenpartij"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_name:0
+msgid "Counterparty Name"
+msgstr "Naam tegenpartij"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,counterparty_number:0
+msgid "Counterparty Number"
+msgstr "Nummer tegenpartij"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,date:0
+msgid "Entry Date"
+msgstr "Boekingsdatum"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,globalisation_amount:0
+msgid "Glob. Amount"
+msgstr "Glob. bedrag"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,globalisation_id:0
+msgid "Globalisation ID"
+msgstr "Globalisatie ID"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,journal_id:0
+msgid "Journal"
+msgstr "Dagboek"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line,val_date:0
+msgid "Valuta Date"
+msgstr "Valutadatum"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,amount:0
+msgid "Amount"
+msgstr "Bedrag"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,bank_statement_line_ids:0
+msgid "Bank Statement Lines"
+msgstr "Bank transacties"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,child_ids:0
+msgid "Child Codes"
+msgstr "Subcodes"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,code:0
+msgid "Code"
+msgstr "Code"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,name:0
+msgid "Name"
+msgstr "Naam"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,parent_id:0
+msgid "Parent Code"
+msgstr "Bovenliggende code"
+
+#. module: account_bank_statement_extensions
+#: field:account.bank.statement.line.global,type:0
+msgid "Type"
+msgstr "Type"
+
+#. module: account_bank_statement_extensions
+#: selection:account.bank.statement.line.global,type:0
+msgid "Manual"
+msgstr "Manueel"
+
+#. module: account_bank_statement_extensions
+#: selection:account.bank.statement.line.global,type:0
+msgid "CODA"
+msgstr "CODA"
+
+#. module: account_bank_statement_extensions
+#: selection:account.bank.statement.line.global,type:0
+msgid "ISO 20022"
+msgstr "ISO 20022"
+
+#. module: account_bank_statement_extensions
+#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
+msgid "Bank Statement Lines"
+msgstr "Bank transacties"
+
+#. module: account_bank_statement_extensions
+#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
+msgid "Bank Statement Lines"
+msgstr "Bank transacties"
+
diff --git a/addons/account_bank_statement_extensions/report/__init__.py b/addons/account_bank_statement_extensions/report/__init__.py
new file mode 100644
index 00000000000..26ac2bc2df0
--- /dev/null
+++ b/addons/account_bank_statement_extensions/report/__init__.py
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import bank_statement_balance_report
diff --git a/addons/account_bank_statement_extensions/report/bank_statement_balance_report.py b/addons/account_bank_statement_extensions/report/bank_statement_balance_report.py
new file mode 100644
index 00000000000..01f9b76c681
--- /dev/null
+++ b/addons/account_bank_statement_extensions/report/bank_statement_balance_report.py
@@ -0,0 +1,69 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import time
+from report import report_sxw
+import pooler
+import netsvc
+logger=netsvc.Logger()
+
+class bank_statement_balance_report(report_sxw.rml_parse):
+
+ def set_context(self, objects, data, ids, report_type=None):
+ #logger.notifyChannel('addons.'+__name__, netsvc.LOG_WARNING, 'set_context, objects = %s, data = %s, ids = %s' % (objects, data, ids))
+ cr = self.cr
+ uid = self.uid
+ context = self.context
+
+ cr.execute('SELECT s.name as s_name, s.date AS s_date, j.code as j_code, s.balance_end_real as s_balance ' \
+ 'FROM account_bank_statement s ' \
+ 'INNER JOIN account_journal j on s.journal_id = j.id ' \
+ 'INNER JOIN ' \
+ '(SELECT journal_id, max(date) as max_date FROM account_bank_statement ' \
+ 'GROUP BY journal_id) d ' \
+ 'ON (s.journal_id = d.journal_id AND s.date = d.max_date) ' \
+ 'ORDER BY j.code')
+ lines = cr.dictfetchall()
+
+ self.localcontext.update( {
+ 'lines': lines,
+ })
+ super(bank_statement_balance_report, self).set_context(objects, data, ids, report_type=report_type)
+
+
+ def __init__(self, cr, uid, name, context):
+ if context is None:
+ context = {}
+ super(bank_statement_balance_report, self).__init__(cr, uid, name, context=context)
+ self.localcontext.update( {
+ 'time': time,
+ })
+ self.context = context
+
+report_sxw.report_sxw(
+ 'report.bank.statement.balance.report',
+ 'account.bank.statement',
+ 'addons/account_bank_statement_extensions/report/bank_statement_balance_report.rml',
+ parser=bank_statement_balance_report,
+ header='internal'
+)
+
diff --git a/addons/account_bank_statement_extensions/report/bank_statement_balance_report.rml b/addons/account_bank_statement_extensions/report/bank_statement_balance_report.rml
new file mode 100644
index 00000000000..963b5d9dd68
--- /dev/null
+++ b/addons/account_bank_statement_extensions/report/bank_statement_balance_report.rml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ ]]
+
+
+
+
+
+
+ Bank Statement Balances Report
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Date
+
+
+ Journal
+
+
+ Closing Balance
+
+
+
+
+
+
+
+ [[ repeatIn(lines, 'l') ]]
+
+
+
+ [[ l['s_name'] ]]
+
+
+ [[ l['s_date'] ]]
+
+
+ [[ l['j_code'] ]]
+
+
+ [[ formatLang(l['s_balance']) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_bank_statement_extensions/res_company.py b/addons/account_bank_statement_extensions/res_company.py
new file mode 100644
index 00000000000..78c88c90726
--- /dev/null
+++ b/addons/account_bank_statement_extensions/res_company.py
@@ -0,0 +1,36 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from osv import osv, fields
+import netsvc
+from tools.translate import _
+logger=netsvc.Logger()
+
+class res_company(osv.osv):
+ _inherit = 'res.company'
+ _columns = {
+ 'bank_ids': fields.related('partner_id', 'bank_ids', type='one2many', relation='res.partner.bank', string='Company Banks'),
+ }
+
+res_company()
+
+
diff --git a/addons/account_bank_statement_extensions/res_partner_bank.py b/addons/account_bank_statement_extensions/res_partner_bank.py
new file mode 100644
index 00000000000..b6deb07022e
--- /dev/null
+++ b/addons/account_bank_statement_extensions/res_partner_bank.py
@@ -0,0 +1,41 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from osv import osv, fields
+import netsvc
+from tools.translate import _
+logger=netsvc.Logger()
+
+class res_partner_bank(osv.osv):
+ _inherit = 'res.partner.bank'
+
+ def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=100):
+ if not args:
+ args = []
+ ids = []
+ if name:
+ ids = self.search(cr, user, [('acc_number', operator, name)] + args, limit=limit)
+ else:
+ ids = self.search(cr, user, args, context=context, limit=limit)
+ return self.name_get(cr, user, ids, context=context)
+
+res_partner_bank()
diff --git a/addons/account_bank_statement_extensions/security/ir.model.access.csv b/addons/account_bank_statement_extensions/security/ir.model.access.csv
new file mode 100644
index 00000000000..8bbc40ef546
--- /dev/null
+++ b/addons/account_bank_statement_extensions/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_bank_statement_line_global_manager,bank.statement.line.global manager,model_account_bank_statement_line_global,account.group_account_manager,1,1,1,1
+access_bank_statement_line_global_user,bank.statement.line.global user,model_account_bank_statement_line_global,account.group_account_user,1,0,0,0
diff --git a/addons/account_bank_statement_extensions/wizard/__init__.py b/addons/account_bank_statement_extensions/wizard/__init__.py
new file mode 100644
index 00000000000..c32f3d3bda9
--- /dev/null
+++ b/addons/account_bank_statement_extensions/wizard/__init__.py
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import confirm_statement_line
+import cancel_statement_line
diff --git a/addons/account_bank_statement_extensions/wizard/cancel_statement_line.py b/addons/account_bank_statement_extensions/wizard/cancel_statement_line.py
new file mode 100644
index 00000000000..05add83bcfa
--- /dev/null
+++ b/addons/account_bank_statement_extensions/wizard/cancel_statement_line.py
@@ -0,0 +1,38 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import time
+from osv import osv, fields
+import netsvc
+from tools.translate import _
+
+class cancel_statement_line(osv.osv_memory):
+ _name = 'cancel.statement.line'
+ _description = 'Cancel selected statement lines'
+
+ def cancel_lines(self, cr, uid, ids, context):
+ line_ids = context['active_ids']
+ line_obj = self.pool.get('account.bank.statement.line')
+ line_obj.write(cr, uid, line_ids, {'state': 'draft'}, context=context)
+ return {}
+
+cancel_statement_line()
diff --git a/addons/account_bank_statement_extensions/wizard/cancel_statement_line_wizard.xml b/addons/account_bank_statement_extensions/wizard/cancel_statement_line_wizard.xml
new file mode 100644
index 00000000000..a0bff7a4874
--- /dev/null
+++ b/addons/account_bank_statement_extensions/wizard/cancel_statement_line_wizard.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+ cancel.statement.line.form
+ cancel.statement.line
+ form
+
+
+
+
+
+
+ Cancel selected statement lines
+ cancel.statement.line
+ form
+ tree,form
+
+ cancel selected statement lines.
+ new
+
+
+
+
+ Cancel selected statement lines
+ client_action_multi
+
+ account.bank.statement.line
+
+
+
+
diff --git a/addons/account_bank_statement_extensions/wizard/confirm_statement_line.py b/addons/account_bank_statement_extensions/wizard/confirm_statement_line.py
new file mode 100644
index 00000000000..9b66100d4c4
--- /dev/null
+++ b/addons/account_bank_statement_extensions/wizard/confirm_statement_line.py
@@ -0,0 +1,40 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import time
+from osv import osv, fields
+import netsvc
+from tools.translate import _
+
+class confirm_statement_line(osv.osv_memory):
+ _name = 'confirm.statement.line'
+ _description = 'Confirm selected statement lines'
+
+ def confirm_lines(self, cr, uid, ids, context):
+ line_ids = context['active_ids']
+ line_obj = self.pool.get('account.bank.statement.line')
+ line_obj.write(cr, uid, line_ids, {'state': 'confirm'}, context=context)
+ return {}
+
+confirm_statement_line()
+
+
diff --git a/addons/account_bank_statement_extensions/wizard/confirm_statement_line_wizard.xml b/addons/account_bank_statement_extensions/wizard/confirm_statement_line_wizard.xml
new file mode 100644
index 00000000000..77ddc861658
--- /dev/null
+++ b/addons/account_bank_statement_extensions/wizard/confirm_statement_line_wizard.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+ confirm.statement.line.form
+ confirm.statement.line
+ form
+
+
+
+
+
+
+ Confirm selected statement lines
+ confirm.statement.line
+ form
+ tree,form
+
+ Confirm selected statement lines.
+ new
+
+
+
+
+ Confirm selected statement lines
+ client_action_multi
+
+ account.bank.statement.line
+
+
+
+
diff --git a/addons/account_coda/README.txt b/addons/account_coda/README.txt
new file mode 100644
index 00000000000..75f8a232566
--- /dev/null
+++ b/addons/account_coda/README.txt
@@ -0,0 +1,4 @@
+Installation tips
+=================
+
+TBC.
diff --git a/addons/account_coda/__init__.py b/addons/account_coda/__init__.py
index 758417591e3..2750c8ff4a8 100644
--- a/addons/account_coda/__init__.py
+++ b/addons/account_coda/__init__.py
@@ -1,9 +1,10 @@
# -*- encoding: utf-8 -*-
##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
#
+# OpenERP, Open Source Management Solution
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
@@ -15,7 +16,7 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
+# along with this program. If not, see .
#
##############################################################################
@@ -23,4 +24,3 @@ import account_coda
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/account_coda/__openerp__.py b/addons/account_coda/__openerp__.py
index a51a9a1ede7..9bc82a7e20e 100644
--- a/addons/account_coda/__openerp__.py
+++ b/addons/account_coda/__openerp__.py
@@ -2,8 +2,9 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
-#
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
@@ -18,32 +19,78 @@
# along with this program. If not, see .
#
##############################################################################
-
{
- "name" : "CODA Bank Statements",
- "version" : "1.0",
- "author" : "OpenERP SA",
+ "name": 'Belgium - Import bank CODA statements',
+ "version": '2.1',
+ "author": 'Noviat',
"category": 'Accounting & Finance',
- 'complexity': "normal",
- "description": """
-Module provides functionality to import bank statements from coda files.
-========================================================================
+ "complexity": "normal",
+ "description": '''
+ Module to import CODA bank statements.
-Contains a wizard to import coda statements and maintains logs for the same.
- """,
+ Supported are CODA flat files in V2 format from Belgian bank accounts.
+ - CODA v1 support.
+ - CODA v2.2 support.
+ - Foreign Currency support.
+ - Support for all data record types (0, 1, 2, 3, 4, 8, 9).
+ - Parsing & logging of all Transaction Codes and Structured Format Communications.
+ - Automatic Financial Journal assignment via CODA configuration parameters.
+ - Support for multiple Journals per Bank Account Number.
+ - Support for multiple statements from different bank accounts in a single CODA file.
+ - Support for 'parsing only' CODA Bank Accounts (defined as type='info' in the CODA Bank Account configuration records).
+ - Multi-language CODA parsing, parsing configuration data provided for EN, NL, FR.
+
+ The machine readable CODA Files are parsed and stored in human readable format in CODA Bank Statements.
+ Also Bank Statements are generated containing a subset of the CODA information (only those transaction lines
+ that are required for the creation of the Financial Accounting records).
+ The CODA Bank Statement is a 'read-only' object, hence remaining a reliable representation of the original CODA file
+ whereas the Bank Statement will get modified as required by accounting business processes.
+
+ CODA Bank Accounts configured as type 'Info' will only generate CODA Bank Statements.
+
+ A removal of one object in the CODA processing results in the removal of the associated objects.
+ The removal of a CODA File containing multiple Bank Statements will also remove those associated
+ statements.
+
+ The following reconciliation logic has been implemented in the CODA processing:
+ 1) The Company's Bank Account Number of the CODA statement is compared against the Bank Account Number field
+ of the Company's CODA Bank Account configuration records (whereby bank accounts defined in type='info' configuration records are ignored).
+ If this is the case an 'internal transfer' transaction is generated using the 'Internal Transfer Account' field of the CODA File Import wizard.
+ 2) As a second step the 'Structured Communication' field of the CODA transaction line is matched against
+ the reference field of in- and outgoing invoices (supported : Belgian Structured Communication Type).
+ 3) When the previous step doesn't find a match, the transaction counterparty is located via the
+ Bank Account Number configured on the OpenERP Customer and Supplier records.
+ 4) In case the previous steps are not successful, the transaction is generated by using the 'Default Account
+ for Unrecognized Movement' field of the CODA File Import wizard in order to allow further manual processing.
+
+ In stead of a manual adjustment of the generated Bank Statements, you can also re-import the CODA
+ after updating the OpenERP database with the information that was missing to allow automatic reconciliation.
+
+ Remark on CODA V1 support:
+ In some cases a transaction code, transaction category or structured communication code has been given a new or clearer description in CODA V2.
+ The description provided by the CODA configuration tables is based upon the CODA V2.2 specifications.
+ If required, you can manually adjust the descriptions via the CODA configuration menu.
+
+ ''',
"images" : ["images/coda_logs.jpeg","images/import_coda_logs.jpeg"],
- "depends" : ["account_voucher"],
- "demo_xml" : [],
- "init_xml" : [],
- "update_xml": ["security/ir.model.access.csv",
- "security/account_security.xml",
- "wizard/account_coda_import.xml",
- "account_coda_view.xml"],
- "active" : False,
- "installable" : True,
+ "depends": ['account_voucher','base_iban', 'l10n_be_invoice_bba', 'account_bank_statement_extensions'],
+ "demo_xml": [],
+ "init_xml": [
+ 'account_coda_trans_type.xml',
+ 'account_coda_trans_code.xml',
+ 'account_coda_trans_category.xml',
+ 'account_coda_comm_type.xml',
+ ],
+ "update_xml" : [
+ 'security/ir.model.access.csv',
+ 'security/account_security.xml',
+ 'account_coda_wizard.xml',
+ 'account_coda_view.xml',
+ ],
+ "active": False,
+ "installable": True,
+ "license": 'AGPL-3',
"certificate" : "001237207321716002029",
-
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/account_coda/account_coda.py b/addons/account_coda/account_coda.py
index e2cde58fd5c..f967669b98e 100644
--- a/addons/account_coda/account_coda.py
+++ b/addons/account_coda/account_coda.py
@@ -2,8 +2,9 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
-#
+#
+# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
+#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
@@ -20,45 +21,391 @@
##############################################################################
import time
-
-from osv import osv,fields
+from osv import osv, fields
+import decimal_precision as dp
+import netsvc
from tools.translate import _
+logger=netsvc.Logger()
+
+class coda_bank_account(osv.osv):
+ _name= 'coda.bank.account'
+ _description= 'CODA Bank Account Configuration'
+
+ def _check_currency(self, cr, uid, ids, context=None):
+ obj_cba = self.browse(cr, uid, ids[0], context=context)
+ if (obj_cba.state == 'normal') and obj_cba.journal and (obj_cba.currency != obj_cba.journal.currency):
+ return False
+ return True
+
+ _columns = {
+ 'name': fields.char('Name', size=64, required=True),
+ 'bank_id': fields.many2one('res.partner.bank', 'Bank Account', required=True,
+ help='Bank Account Number.\nThe CODA import function will find its CODA processing parameters on this number.'),
+ 'description1': fields.char('Primary Account Description', size=35,
+ help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'),
+ 'description2': fields.char('Secondary Account Description', size=35,
+ help='The Primary or Secondary Account Description should match the corresponding Account Description in the CODA file.'),
+ 'state': fields.selection([
+ ('normal', 'Normal'),
+ ('info', 'Info')],
+ 'Type', required=True, select=1,
+ help='No Bank Statements will be generated for CODA Bank Statements from Bank Accounts of type \'Info\'.'),
+ 'journal': fields.many2one('account.journal', 'Journal',
+ domain=[('type', '=', 'bank')],
+ states={'normal':[('required',True)],'info':[('required',False)]},
+ help='Bank Journal for the Bank Statement'),
+ 'currency': fields.many2one('res.currency', 'Currency', required=True,
+ help='The currency of the CODA Bank Statement'),
+ 'coda_st_naming': fields.char('Bank Statement Naming Policy', size=64,
+ help="Define the rules to create the name of the Bank Statements generated by the CODA processing." \
+ "\nE.g. %(code)s%(y)s/%(paper)s"
+ "\n\nVariables:" \
+ "\nBank Journal Code: %(code)s" \
+ "\nCurrent Year with Century: %(year)s" \
+ "\nCurrent Year without Century: %(y)s" \
+ "\nCODA sequence number: %(coda)s" \
+ "\nPaper Statement sequence number: %(paper)s"),
+ 'def_payable': fields.many2one('account.account', 'Default Payable Account', domain=[('type', '=', 'payable')], required=True,
+ help= 'Set here the payable account that will be used, by default, if the partner is not found.'),
+ 'def_receivable': fields.many2one('account.account', 'Default Receivable Account', domain=[('type', '=', 'receivable')], required=True,
+ help= 'Set here the receivable account that will be used, by default, if the partner is not found.',),
+ 'awaiting_account': fields.many2one('account.account', 'Default Account for Unrecognized Movement', domain=[('type', '!=', 'view')], required=True,
+ help= 'Set here the default account that will be used if the partner cannot be unambiguously identified.'),
+ 'transfer_account': fields.many2one('account.account', 'Default Internal Transfer Account', domain=[('code', 'like', '58%'), ('type', '!=', 'view')], required=True,
+ help= 'Set here the default account that will be used for internal transfer between own bank accounts (e.g. transfer between current and deposit bank accounts).'),
+ 'find_bbacom': fields.boolean('Lookup Invoice', required=True, help='Partner lookup via the \'BBA\' Structured Communication field of the Invoice.'),
+ 'find_partner': fields.boolean('Lookup Partner', required=True, help='Partner lookup via Bank Account Number.'),
+ 'active': fields.boolean('Active', help='If the active field is set to False, it will allow you to hide the Bank Account without removing it.'),
+ 'company_id': fields.many2one('res.company', 'Company', required=True),
+ }
+ _defaults = {
+ 'currency': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id,
+ 'state': 'normal',
+ 'coda_st_naming': lambda *a: '%(code)s/%(y)s/%(coda)s',
+ 'active': True,
+ 'find_bbacom': True,
+ 'find_partner': True,
+ 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
+ }
+ _sql_constraints = [
+ ('account_uniq_1', 'unique (bank_id, description1, currency)', 'The combination of Bank Account, Account Description and Currency must be unique !'),
+ ('account_uniq_2', 'unique (bank_id, description2, currency)', 'The combination of Bank Account, Account Description and Currency must be unique !'),
+ ]
+ _constraints = [
+ (_check_currency, '\n\nConfiguration Error! \nThe Bank Account Currency should match the Journal Currency !', ['currency', 'journal']),
+ ]
+ _order = 'name'
+
+ def name_get(self, cr, uid, ids, context=None):
+ res = []
+ if not len(ids):
+ return res
+ for id in self.browse(cr, uid, ids, context=context):
+ res.append((id.id, (id.bank_id.iban or id.bank_id.acc_number) + ' (' + id.currency.name + ')' + \
+ (id.description1 and (' - ' + id.description1) or '')))
+ return res
+
+ def copy(self, cr, uid, id, default=None, context=None):
+ cba = self.browse(cr, uid, id, context=context)
+ if not default:
+ default = {}
+ default = default.copy()
+ default.update({'journal_id': None})
+ default['description1'] = cba['description1'] or ''
+ default['description2'] = cba['description2'] or ''
+ default['name'] = (cba['name'] or '') + ' (copy)'
+ default['state'] = cba['state']
+ return super(coda_bank_account, self).copy(cr, uid, id, default, context)
+
+ def onchange_state(self, cr, uid, ids, state):
+ return state =='info' and {'value': {'journal': None}} or {}
+
+coda_bank_account()
class account_coda(osv.osv):
- _name = "account.coda"
- _description = "coda for an Account"
+ _name = 'account.coda'
+ _description = 'Object to store CODA Data Files'
+ _order = 'coda_creation_date desc'
_columns = {
- 'name': fields.binary('Coda file', readonly=True, help="Store the detail of bank statements"),
- 'statement_ids': fields.one2many('account.bank.statement', 'coda_id', 'Generated Bank Statements', readonly=True),
- 'note': fields.text('Import log', readonly=True),
- 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True, select=True, help="Bank Journal"),
- 'date': fields.date('Date', readonly=True, select=True, help="Import Date"),
- 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True),
+ 'name': fields.char('CODA Filename',size=128, readonly=True),
+ 'coda_data': fields.binary('CODA File', readonly=True),
+ 'statement_ids': fields.one2many('coda.bank.statement','coda_id','Generated CODA Bank Statements', readonly=True),
+ 'note': fields.text('Import Log', readonly=True),
+ 'coda_creation_date': fields.date('CODA Creation Date', readonly=True, select=True),
+ 'date': fields.date('Import Date', readonly=True, select=True),
+ 'user_id': fields.many2one('res.users','User', readonly=True, select=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True)
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
'user_id': lambda self,cr,uid,context: uid,
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.coda', context=c),
- }
+ }
+ _sql_constraints = [
+ ('coda_uniq', 'unique (name, coda_creation_date)', 'This CODA has already been imported !')
+ ]
- def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
- if context is None:
+ def unlink(self, cr, uid, ids, context=None):
+ if context is None:
context = {}
- res = super(account_coda, self).search(cr, user, args=args, offset=offset, limit=limit, order=order,
- context=context, count=count)
- if context.get('bank_statement', False) and not res:
- raise osv.except_osv('Error', _('Coda file not found for bank statement !!'))
- return res
-
+ context.update({'coda_unlink': True})
+ coda_st_obj = self.pool.get('coda.bank.statement')
+ bank_st_obj = self.pool.get('account.bank.statement')
+ for coda in self.browse(cr, uid, ids, context=context):
+ for coda_statement in coda.statement_ids:
+ if not context.get('coda_statement_unlink', False):
+ if coda_st_obj.exists(cr, uid, coda_statement.id, context=context):
+ coda_st_obj.unlink(cr, uid, [coda_statement.id], context=context)
+ if not context.get('bank_statement_unlink', False):
+ if coda_st_obj.exists(cr, uid, coda_statement.id, context=context) and (coda_statement.type == 'normal') and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context):
+ bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context)
+ context.update({'coda_unlink': False})
+ return super(account_coda, self).unlink(cr, uid, ids, context=context)
+
account_coda()
-class account_bank_statement(osv.osv):
- _inherit = "account.bank.statement"
+class account_coda_trans_type(osv.osv):
+ _name = 'account.coda.trans.type'
+ _description = 'CODA transaction type'
+ _rec_name = 'type'
_columns = {
- 'coda_id':fields.many2one('account.coda', 'Coda'),
+ 'type': fields.char('Transaction Type', size=1, required=True),
+ 'parent_id': fields.many2one('account.coda.trans.type', 'Parent'),
+ 'description': fields.text('Description', translate=True),
+ }
+account_coda_trans_type()
+
+class account_coda_trans_code(osv.osv):
+ _name = 'account.coda.trans.code'
+ _description = 'CODA transaction code'
+ _rec_name = 'code'
+ _columns = {
+ 'code': fields.char('Code', size=2, required=True, select=1),
+ 'type': fields.selection([
+ ('code', 'Transaction Code'),
+ ('family', 'Transaction Family')],
+ 'Type', required=True, select=1),
+ 'parent_id': fields.many2one('account.coda.trans.code', 'Family', select=1),
+ 'description': fields.char('Description', size=128, translate=True, select=2),
+ 'comment': fields.text('Comment', translate=True),
+ }
+account_coda_trans_code()
+
+class account_coda_trans_category(osv.osv):
+ _name = 'account.coda.trans.category'
+ _description = 'CODA transaction category'
+ _rec_name = 'category'
+ _columns = {
+ 'category': fields.char('Transaction Category', size=3, required=True),
+ 'description': fields.char('Description', size=256, translate=True),
+ }
+account_coda_trans_category()
+
+class account_coda_comm_type(osv.osv):
+ _name = 'account.coda.comm.type'
+ _description = 'CODA structured communication type'
+ _rec_name = 'code'
+ _columns = {
+ 'code': fields.char('Structured Communication Type', size=3, required=True, select=1),
+ 'description': fields.char('Description', size=128, translate=True),
+ }
+ _sql_constraints = [
+ ('code_uniq', 'unique (code)','The Structured Communication Code must be unique !')
+ ]
+account_coda_comm_type()
+
+class coda_bank_statement(osv.osv):
+ _name = 'coda.bank.statement'
+ _description = 'CODA Bank Statement'
+
+ def _default_journal_id(self, cr, uid, context={}):
+ if context.get('journal_id', False):
+ return context['journal_id']
+ return False
+
+ def _end_balance(self, cursor, user, ids, name, attr, context=None):
+ res = {}
+ statements = self.browse(cursor, user, ids, context=context)
+ for statement in statements:
+ res[statement.id] = statement.balance_start
+ for line in statement.line_ids:
+ res[statement.id] += line.amount
+ for r in res:
+ res[r] = round(res[r], 2)
+ return res
+
+ def _get_period(self, cr, uid, context={}):
+ periods = self.pool.get('account.period').find(cr, uid)
+ if periods:
+ return periods[0]
+ else:
+ return False
+
+ _order = 'date desc'
+ _columns = {
+ 'name': fields.char('Name', size=64, required=True, readonly=True),
+ 'date': fields.date('Date', required=True, readonly=True),
+ 'coda_id': fields.many2one('account.coda', 'CODA Data File', ondelete='cascade'),
+ 'type': fields.selection([
+ ('normal', 'Normal'),
+ ('info', 'Info')],
+ 'Type', required=True, readonly=True,
+ help='No Bank Statements are associated with CODA Bank Statements of type \'Info\'.'),
+ 'statement_id': fields.many2one('account.bank.statement', 'Associated Bank Statement'),
+ 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True, domain=[('type', '=', 'bank')]),
+ 'coda_bank_account_id': fields.many2one('coda.bank.account', 'Bank Account', readonly=True),
+ 'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True),
+ 'balance_start': fields.float('Starting Balance', digits_compute=dp.get_precision('Account'), readonly=True),
+ 'balance_end_real': fields.float('Ending Balance', digits_compute=dp.get_precision('Account'), readonly=True),
+ 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance'),
+ 'line_ids': fields.one2many('coda.bank.statement.line',
+ 'statement_id', 'CODA Bank Statement lines', readonly=True),
+ 'currency': fields.many2one('res.currency', 'Currency', required=True, readonly=True,
+ help='The currency of the CODA Bank Statement'),
+ 'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
+ }
+ _defaults = {
+ 'type': 'normal',
+ 'currency': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id,
+ 'journal_id': _default_journal_id,
+ 'period_id': _get_period,
}
+ def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
+ if context is None:
+ context = {}
+ res = super(coda_bank_statement, self).search(cr, uid, args=args, offset=offset, limit=limit, order=order,
+ context=context, count=count)
+ if context.get('bank_statement', False) and not res:
+ raise osv.except_osv('Warning', _('No CODA Bank Statement found for this Bank Statement!'))
+ return res
+
+ def unlink(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
+ context.update({'coda_statement_unlink': True})
+ coda_obj = self.pool.get('account.coda')
+ bank_st_obj = self.pool.get('account.bank.statement')
+
+ # find all CODA bank statements that are associated with the selected CODA bank statements via a common CODA file
+ new_ids = []
+ for coda_statement in self.browse(cr, uid, ids, context=context):
+ if coda_obj.exists(cr, uid, coda_statement.coda_id.id, context=context):
+ new_ids += [x.id for x in coda_obj.browse(cr, uid, coda_statement.coda_id.id, context=context).statement_ids]
+
+ # unlink CODA banks statements as well as associated bank statements and CODA files
+ for coda_statement in self.browse(cr, uid, new_ids, context=context):
+ if coda_statement.statement_id.state == 'confirm':
+ raise osv.except_osv(_('Invalid action !'),
+ _("Cannot delete CODA Bank Statement '%s' of Journal '%s'." \
+ "\nThe associated Bank Statement has already been confirmed !" \
+ "\nPlease undo this action first!") \
+ % (coda_statement.name, coda_statement.journal_id.name))
+ else:
+ if not context.get('coda_unlink', False):
+ if coda_statement.coda_id and coda_obj.exists(cr, uid, coda_statement.coda_id.id, context=context):
+ coda_obj.unlink(cr, uid, [coda_statement.coda_id.id], context=context)
+ if not context.get('bank_statement_unlink', False):
+ if coda_statement.statement_id and bank_st_obj.exists(cr, uid, coda_statement.statement_id.id, context=context):
+ bank_st_obj.unlink(cr, uid, [coda_statement.statement_id.id], context=context)
+
+ context.update({'coda_statement_unlink': False})
+ return super(coda_bank_statement, self).unlink(cr, uid, new_ids, context=context)
+
+coda_bank_statement()
+
+class account_bank_statement(osv.osv):
+ _inherit = 'account.bank.statement'
+ _columns = {
+ 'coda_statement_id': fields.many2one('coda.bank.statement', 'Associated CODA Bank Statement'),
+ }
+
+ def unlink(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
+ context.update({'bank_statement_unlink': True})
+ coda_obj = self.pool.get('account.coda')
+ coda_st_obj = self.pool.get('coda.bank.statement')
+
+ # find all statements that are associated with the selected bank statements via a common CODA file
+ ids_plus = []
+ for statement in self.browse(cr, uid, ids, context=context):
+ if statement.coda_statement_id:
+ for x in coda_obj.browse(cr, uid, statement.coda_statement_id.coda_id.id, context=context).statement_ids:
+ if x.type == 'normal':
+ ids_plus += [x.statement_id.id]
+
+ # unlink banks statements as well as associated CODA bank statements and CODA files
+ for statement in self.browse(cr, uid, ids_plus, context=context):
+ if not context.get('coda_statement_unlink', False):
+ if statement.coda_statement_id and coda_st_obj.exists(cr, uid, statement.coda_statement_id.id, context=context):
+ coda_st_obj.unlink(cr, uid, [statement.coda_statement_id.id], context=context)
+ if not context.get('coda_unlink', False):
+ if statement.coda_statement_id \
+ and coda_st_obj.exists(cr, uid, statement.coda_statement_id.id, context=context) \
+ and statement.coda_statement_id.coda_id \
+ and coda_obj.exists(cr, uid, statement.coda_statement_id.coda_id.id, context=context):
+ coda_obj.unlink(cr, uid, [statement.coda_statement_id.coda_id.id], context=context)
+
+ context.update({'bank_statement_unlink': False})
+ new_ids = list(set(ids + ids_plus))
+ return super(account_bank_statement, self).unlink(cr, uid, new_ids, context=context)
+
account_bank_statement()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+class coda_bank_statement_line(osv.osv):
+ _name = 'coda.bank.statement.line'
+ _order = 'sequence'
+ _description = 'CODA Bank Statement Line'
+ _columns = {
+ 'name': fields.char('Communication', size=268, required=True),
+ 'sequence': fields.integer('Sequence'),
+ 'date': fields.date('Entry Date', required=True),
+ 'val_date': fields.date('Valuta Date'),
+ 'account_id': fields.many2one('account.account','Account'), # remove required=True
+ 'type': fields.selection([
+ ('supplier','Supplier'),
+ ('customer','Customer'),
+ ('general','General'),
+ ('globalisation','Globalisation'),
+ ('information','Information'),
+ ('communication','Free Communication'),
+ ], 'Type', required=True),
+ 'globalisation_level': fields.integer('Globalisation Level',
+ help="The value which is mentioned (1 to 9), specifies the hierarchy level"
+ " of the globalisation of which this record is the first."
+ "\nThe same code will be repeated at the end of the globalisation."),
+ 'globalisation_amount': fields.float('Globalisation Amount', digits_compute=dp.get_precision('Account')),
+ 'globalisation_id': fields.many2one('account.bank.statement.line.global', 'Globalisation ID', readonly=True,
+ help="Code to identify transactions belonging to the same globalisation level within a batch payment"),
+ 'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
+ 'partner_id': fields.many2one('res.partner', 'Partner'),
+ 'counterparty_name': fields.char('Counterparty Name', size=35),
+ 'counterparty_bic': fields.char('Counterparty BIC', size=11),
+ 'counterparty_number': fields.char('Counterparty Number', size=34),
+ 'counterparty_currency': fields.char('Counterparty Currency', size=3),
+ 'statement_id': fields.many2one('coda.bank.statement', 'CODA Bank Statement',
+ select=True, required=True, ondelete='cascade'),
+ 'coda_bank_account_id': fields.related('statement_id', 'coda_bank_account_id', type='many2one', relation='coda.bank.account', string='Bank Account', store=True, readonly=True),
+ 'ref': fields.char('Reference', size=32),
+ 'note': fields.text('Notes'),
+ 'company_id': fields.related('statement_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
+ }
+
+ def unlink(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
+ if context.get('block_statement_line_delete', False):
+ raise osv.except_osv('Warning', _('Delete operation not allowed !'))
+ return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context)
+
+coda_bank_statement_line()
+
+class account_bank_statement_line_global(osv.osv):
+ _inherit = 'account.bank.statement.line.global'
+ _columns = {
+ 'coda_statement_line_ids': fields.one2many('coda.bank.statement.line', 'globalisation_id', 'CODA Bank Statement Lines', readonly=True),
+ }
+account_bank_statement_line_global()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_coda/account_coda_comm_type.xml b/addons/account_coda/account_coda_comm_type.xml
new file mode 100644
index 00000000000..9a042ec48d2
--- /dev/null
+++ b/addons/account_coda/account_coda_comm_type.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+ 001
+ Data concerning the counterparty
+
+
+ 002
+ Communication of the bank
+
+
+ 003
+ RBP data
+
+
+ 004
+ Counterparty’s banker
+
+
+ 005
+ Data concerning the correspondent
+
+
+ 006
+ Information concerning the detail amount
+
+
+ 007
+ Information concerning the detail cash
+
+
+ 008
+ Identification of the de ultimate beneficiary/creditor (SEPA SCT/SDD)
+
+
+ 009
+ Identification of the de ultimate ordering customer/debtor (SEPA SCT/SDD)
+
+
+ 010
+ Information pertaining to sale or purchase of securities
+
+
+ 011
+ Information pertaining to coupons
+
+
+ 100
+ (SEPA) payment with a structured format communication applying the ISO standard 11649: Structured creditor reference to remittance information
+
+
+ 101
+ Credit transfer or cash payment with structured format communication
+
+
+ 102
+ Credit transfer or cash payment with reconstituted structured format communication
+
+
+ 103
+ number (e.g. of the cheque, of the card, etc.)
+
+
+ 104
+ Equivalent in EUR
+
+
+ 105
+ original amount of the transaction
+
+
+ 106
+ Method of calculation (VAT, withholding tax on income, commission, etc.)
+
+
+ 107
+ Direct debit – DOM’80
+
+
+ 108
+ Closing
+
+
+ 111
+ POS credit – Globalisation
+
+
+ 112
+ ATM payment (usually Eurocheque card)
+
+
+ 113
+ ATM/POS debit
+
+
+ 114
+ POS credit - individual transaction
+
+
+ 115
+ Terminal cash deposit
+
+
+ 120
+ Correction of a transaction
+
+
+ 121
+ Commercial bills
+
+
+ 122
+ Bills - calculation of interest
+
+
+ 123
+ Fees and commissions
+
+
+ 124
+ Number of the credit card
+
+
+ 125
+ Credit
+
+
+ 126
+ Term investments
+
+
+ 127
+ European direct debit (SEPA)
+
+
+
+
diff --git a/addons/account_coda/account_coda_demo.xml b/addons/account_coda/account_coda_demo.xml
deleted file mode 100644
index f91d34d4cbc..00000000000
--- a/addons/account_coda/account_coda_demo.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/addons/account_coda/account_coda_trans_category.xml b/addons/account_coda/account_coda_trans_category.xml
new file mode 100644
index 00000000000..192240cf8aa
--- /dev/null
+++ b/addons/account_coda/account_coda_trans_category.xml
@@ -0,0 +1,440 @@
+
+
+
+
+
+
+ 000
+ Net amount
+
+
+ 001
+ Interest received
+
+
+ 002
+ Interest paid
+
+
+ 003
+ Credit commission
+
+
+ 004
+ Postage
+
+
+ 005
+ Renting of letterbox
+
+
+ 006
+ Various fees/commissions
+
+
+ 007
+ Access right to database
+
+
+ 008
+ Information charges
+
+
+ 009
+ Travelling expenses
+
+
+ 010
+ Writ service fee
+
+
+ 011
+ VAT
+
+
+ 012
+ Exchange commission
+
+
+ 013
+ Payment commission
+
+
+ 014
+ Collection commission
+
+
+ 015
+ Correspondent charges
+
+
+ 016
+ BLIW/IBLC dues
+
+
+ 017
+ Research costs
+
+
+ 018
+ Tental guarantee charges
+
+
+ 019
+ Tax on physical delivery
+
+
+ 020
+ Costs of physical delivery
+
+
+ 021
+ Costs for drawing up a bank cheque
+
+
+ 022
+ Priority costs
+
+
+ 023
+ Exercising fee
+
+
+ 024
+ Growth premium
+
+
+ 025
+ Individual entry for exchange charges
+
+
+ 026
+ Handling commission
+
+
+ 027
+ Charges for unpaid bills
+
+
+ 028
+ Fidelity premium
+
+
+ 029
+ Protest charges
+
+
+ 030
+ Account insurance
+
+
+ 031
+ Charges foreign cheque
+
+
+ 032
+ Drawing up a circular cheque
+
+
+ 033
+ Charges for a foreign bill
+
+
+ 034
+ Reinvestment fee
+
+
+ 035
+ Charges foreign documentary bill
+
+
+ 036
+ Costs relating to a refused cheque
+
+
+ 037
+ Commission for handling charges
+
+
+ 039
+ Telecommunications
+
+
+ 041
+ Credit card costs
+
+
+ 042
+ Payment card costs
+
+
+ 043
+ Insurance costs
+
+
+ 045
+ Handling costs
+
+
+ 047
+ Charges extension bill
+
+
+ 049
+ Fiscal stamps/stamp duty
+
+
+ 050
+ Capital term investment
+
+
+ 051
+ Withholding tax
+
+
+ 052
+ Residence state tax
+
+
+ 053
+ Printing of forms
+
+
+ 055
+ Repayment loan or credit capital
+
+
+ 057
+ Interest subsidy
+
+
+ 058
+ Capital premium
+
+
+ 059
+ Default interest
+
+
+ 061
+ Charging fees for transactions
+
+
+ 063
+ Rounding differences
+
+
+ 065
+ Interest payment advice
+
+
+ 066
+ Fixed loan advance - reimbursement
+
+
+ 067
+ Fixed loan advance - extension
+
+
+ 068
+ Countervalue of an entry
+
+
+ 069
+ Forward arbitrage contracts : sum to be supplied by customer
+
+
+ 070
+ Forward arbitrage contracts : sum to be supplied by bank
+
+
+ 071
+ Fixed loan advance - availability
+
+
+ 072
+ Countervalue of commission to third party
+
+
+ 073
+ Costs of ATM abroad
+
+
+ 074
+ Mailing costs
+
+
+ 100
+ Gross amount
+
+
+ 200
+ Overall documentary credit charges
+
+
+ 201
+ Advice notice commission
+
+
+ 202
+ Advising commission | Additional advising commission
+
+
+ 203
+ Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission
+
+
+ 204
+ Amendment fee
+
+
+ 205
+ Documentary payment commission | Document commission | Drawdown fee | Negotiation fee
+
+
+ 206
+ Surety fee/payment under reserve
+
+
+ 207
+ Non-conformity fee
+
+
+ 208
+ Commitment fee deferred payment
+
+
+ 209
+ Transfer commission
+
+
+ 210
+ Commitment fee
+
+
+ 211
+ Credit arrangement fee | Additional credit arrangement fee
+
+
+ 212
+ Warehousing fee
+
+
+ 213
+ Financing fee
+
+
+ 214
+ Issue commission (delivery order)
+
+
+ 400
+ Acceptance fee
+
+
+ 401
+ Visa charges
+
+
+ 402
+ Certification costs
+
+
+ 403
+ Minimum discount rate
+
+
+ 404
+ Discount commission
+
+
+ 405
+ Bill guarantee commission
+
+
+ 406
+ Collection charges
+
+
+ 407
+ Costs Article 45
+
+
+ 408
+ Cover commission
+
+
+ 409
+ Safe deposit charges
+
+
+ 410
+ Reclamation charges
+
+
+ 411
+ Fixed collection charge
+
+
+ 412
+ Advice of expiry charges
+
+
+ 413
+ Acceptance charges
+
+
+ 414
+ Regularisation charges
+
+
+ 415
+ Surety fee
+
+
+ 416
+ Charges for the deposit of security
+
+
+ 418
+ Endorsement commission
+
+
+ 419
+ Bank service fee
+
+
+ 420
+ Retention charges
+
+
+ 425
+ Foreign broker's commission
+
+
+ 426
+ Belgian broker's commission
+
+
+ 427
+ Belgian Stock Exchange tax
+
+
+ 428
+ Interest accrued
+
+
+ 429
+ Foreign Stock Exchange tax
+
+
+ 430
+ Recovery of foreign tax
+
+
+ 431
+ Delivery of a copy
+
+
+
+
diff --git a/addons/account_coda/account_coda_trans_code.xml b/addons/account_coda/account_coda_trans_code.xml
new file mode 100644
index 00000000000..b2b23d59bef
--- /dev/null
+++ b/addons/account_coda/account_coda_trans_code.xml
@@ -0,0 +1,1914 @@
+
+
+
+
+
+
+ 00
+ family
+ Undefined transactions
+
+
+ 00
+ code
+
+ Undefined transaction
+
+
+ 33
+ code
+
+ Value correction
+
+
+ 35
+ code
+
+ Correction
+
+
+ 37
+ code
+
+ Costs
+
+
+ 39
+ code
+
+ Cancellation of a transaction
+
+
+ 83
+ code
+
+ Value correction
+
+
+ 85
+ code
+
+ Correction
+
+
+ 87
+ code
+
+ Costs refunded
+
+
+ 89
+ code
+
+ Cancellation of a transaction
+
+
+ 01
+ family
+ Domestic or local SEPA credit transfers
+
+
+ 01
+ code
+
+ Individual transfer order
+ Credit transfer given by the customer on paper or electronically, even if the execution date of this transfer is in the future. Domestic payments as well as euro payments meeting the requirements.
+
+
+ 02
+ code
+
+ Individual transfer order initiated by the bank
+ The bank takes the initiative for debiting the customer’s account.
+
+
+ 03
+ code
+
+ Standing order
+ Credit transfer for which the order has been given once and which is carried out again at regular intervals without any change.
+
+
+ 05
+ code
+
+ Payment of wages, etc.
+ The principal will be debited for the total amount of the file entered.
+
+
+ 07
+ code
+
+ Collective transfer
+ The principal will be debited for the total amount of the file entered.
+
+
+ 09
+ code
+
+ Your semi-standing order
+
+
+ 11
+ code
+
+ Your semi-standing order – payment to employees
+
+
+ 13
+ code
+
+ Transfer from your account
+ Transfer from one account to another account of the same customer at the bank's or the customer's initiative (intracompany).
+
+
+ 15
+ code
+
+ Balance due insurance premium
+
+
+ 17
+ code
+
+ Financial centralisation
+ In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement.
+
+
+ 37
+ code
+
+ Costs
+
+
+ 39
+ code
+
+ Your issue circular cheque
+ To be used for issued circular cheques given in consignment
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Transfer in your favour
+
+
+ 51
+ code
+
+ Transfer in your favour – initiated by the bank
+ The bank takes the initiative for crediting the customer’s account.
+
+
+ 52
+ code
+
+ Payment in your favour
+ Payment by a third person
+
+
+ 54
+ code
+
+ Unexecutable transfer order
+
+
+ 60
+ code
+
+ Non-presented circular cheque
+
+
+ 62
+ code
+
+ Unpaid postal order
+
+
+ 64
+ code
+
+ Transfer to your account
+ Intracompany
+
+
+ 66
+ code
+
+ Financial centralization
+ In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement.
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 03
+ family
+ Cheques
+
+
+ 01
+ code
+
+ Payment of your cheque
+
+
+ 03
+ code
+
+ Your purchase by payment card
+
+
+ 05
+ code
+
+ Payment of voucher
+ Payment of holiday pay, etc.
+
+
+ 07
+ code
+
+ Definitely unpaid cheque
+
+
+ 09
+ code
+
+ Unpaid voucher
+
+
+ 11
+ code
+
+ Department store cheque
+
+
+ 13
+ code
+
+ Eurocheque written out abroad
+
+
+ 15
+ code
+
+ Your purchase bank cheque
+ Cheque drawn by the bank on itself, usually with charges.
+
+
+ 17
+ code
+
+ Your certified cheque
+ Amount of the cheque; if any, charges receive code 37
+
+
+ 19
+ code
+
+ Settlement of credit cards
+
+
+ 35
+ code
+
+ Cash advance
+
+
+ 37
+ code
+
+ Cheque-related costs
+
+
+ 38
+ code
+
+ Provisionally unpaid
+
+
+ 39
+ code
+
+ Provisionally unpaid due to other reason than manual presentation
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Credit of a payment via terminal
+
+
+ 52
+ code
+
+ First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve
+
+
+ 56
+ code
+
+ Non-presented certified cheques
+
+
+ 58
+ code
+
+ Remittance of cheques, vouchers, etc. credit after collection
+ Also for vouchers, postal orders, anything but bills of exchange, acquittances, promissory notes, etc.
+
+
+ 60
+ code
+
+ Reversal of voucher
+
+
+ 62
+ code
+
+ Reversal of cheque
+ cheques debited on account, but debit cancelled afterwards for lack of cover (double debit/contra-entry of transaction 01 or 05)
+
+
+ 63
+ code
+
+ Second credit of unpaid cheque
+
+
+ 64
+ code
+
+ Reversal of settlement of credit card
+
+
+ 66
+ code
+
+ Remittance of cheque by your branch - credit under usual reserve
+
+
+ 68
+ code
+
+ Credit of a payment via electronic purse
+
+
+ 87
+ code
+
+ Reimbursement of cheque-related costs
+ Overall amount, VAT included
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 04
+ family
+ Cards
+
+
+ 01
+ code
+
+ Loading a GSM card
+ Debit customer who is loading
+
+
+ 02
+ code
+
+ Payment by means of a payment card within the Eurozone
+ Eurozone = countries which have the euro as their official currency
+
+
+ 03
+ code
+
+ Settlement credit cards
+ See annexe III : communication 124
+
+
+ 04
+ code
+
+ Cash withdrawal from an ATM
+ At home as well as abroad
+
+
+ 05
+ code
+
+ Loading Proton
+
+
+ 06
+ code
+
+ Payment with tank card
+
+
+ 07
+ code
+
+ Payment by GSM
+
+
+ 08
+ code
+
+ Payment by means of a payment card outside the Eurozone
+ Eurozone = countries which have the euro as their official currency
+
+
+ 37
+ code
+
+ Costs
+ Various costs for possessing or using a payment card
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Credit after a payment at a terminal
+ Except Proton
+
+
+ 51
+ code
+
+ Unloading Proton
+
+
+ 52
+ code
+
+ Loading GSM cards
+ Credit provider
+
+
+ 53
+ code
+
+ Cash deposit at an ATM
+
+
+ 55
+ code
+
+ Income from payments by GSM
+
+
+ 68
+ code
+
+ Credit after Proton payments
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 05
+ family
+ Direct debit
+
+
+ 01
+ code
+
+ Payment
+
+
+ 03
+ code
+
+ Unpaid debt
+
+
+ 05
+ code
+
+ Reimbursement
+
+
+ 37
+ code
+
+ Costs
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Credit after collection
+
+
+ 52
+ code
+
+ Credit under usual reserve
+
+
+ 54
+ code
+
+ Reimbursement
+
+
+ 56
+ code
+
+ Unexecutable reimbursement
+
+
+ 58
+ code
+
+ Reversal
+ (cancellation of an undue debit of the debtor at the initiative of the financial institution or the debtor for lack of cover)
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 07
+ family
+ Domestic commercial paper
+
+
+ 01
+ code
+
+ Payment commercial paper
+ Bills of exchange, acquittances, promissory notes; debit of the drawee
+
+
+ 03
+ code
+
+ Payment receipt card
+
+
+ 05
+ code
+
+ Commercial paper claimed back
+ Bill claimed back at the drawer's request (bill claimed back before maturity date)
+
+
+ 06
+ code
+
+ Extension of maturity date
+ Costs chargeable to the remitter
+
+
+ 07
+ code
+
+ Unpaid commercial paper
+ Contra-entry of a direct credit or of a discount
+
+
+ 08
+ code
+
+ Payment in advance
+ Debit of the remitter when the drawee pays in advance directly to the remitter (regards bank acceptances)
+
+
+ 09
+ code
+
+ Agio on supplier's bill
+ Debit of the agios to the account of the drawee
+
+
+ 10
+ code
+
+ Renewal of agreed maturity date
+
+
+ 12
+ code
+
+ Safe custody
+
+
+ 14
+ code
+
+ Warrant fallen due
+
+
+ 37
+ code
+
+ Costs related to commercial paper
+ If any, detail in the category (e.g. costs for presentation for acceptance, etc.)
+
+
+ 39
+ code
+
+ Return of an irregular bill of exchange
+ Debit of the drawer after credit under usual reserve or discount
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Remittance of commercial paper - credit after collection
+ Credit of the remitter
+
+
+ 52
+ code
+
+ Remittance of commercial paper - credit under usual reserve
+
+
+ 54
+ code
+
+ Remittance of commercial paper for discount
+ Among other things advances or promissory notes
+
+
+ 56
+ code
+
+ Remittance of supplier's bill with guarantee
+
+
+ 58
+ code
+
+ Remittance of supplier's bill without guarantee
+
+
+ 64
+ code
+
+ Warrant
+
+
+ 86
+ code
+
+ Payment after cession
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 09
+ family
+ Counter transactions
+
+
+ 01
+ code
+
+ Cash withdrawal
+ Withdrawal by counter cheque or receipt; cash remitted by the bank clerk
+
+
+ 03
+ code
+
+ Cash withdrawal by card (ATM)
+
+
+ 05
+ code
+
+ Purchase of foreign bank notes
+
+
+ 07
+ code
+
+ Purchase of gold/pieces
+
+
+ 09
+ code
+
+ Purchase of petrol coupons
+
+
+ 11
+ code
+
+ Your purchase of luncheon vouchers
+
+
+ 13
+ code
+
+ Cash withdrawal by your branch or agents
+ On the account of the head office
+
+
+ 15
+ code
+
+ Your purchase of lottery tickets
+
+
+ 17
+ code
+
+ Purchase of fiscal stamps
+
+
+ 19
+ code
+
+ Difference in payment
+ Used in case of payments accepted under reserve of count, result of overcrediting
+
+
+ 21
+ code
+
+ Cash withdrawal on card (PROTON)
+
+
+ 25
+ code
+
+ Purchase of traveller’s cheque
+
+
+ 37
+ code
+
+ Costs
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Cash payment
+ For own account - the comment for the client is given in the communication; also for mixed payments (cash + cheques) - not to be communicated to the clients; for payments made by a third person: see family 01
+
+
+ 52
+ code
+
+ Payment night safe
+
+
+ 54
+ code
+
+ Your payment ATM
+
+
+ 56
+ code
+
+ Reserve
+
+
+ 58
+ code
+
+ Payment by your branch/agents
+ Takes priority over transaction 52 (hence a payment made by an agent in a night safe = 58 and not 52)
+
+
+ 60
+ code
+
+ Sale of foreign bank notes
+
+
+ 62
+ code
+
+ Sale of gold/pieces under usual reserve
+
+
+ 64
+ code
+
+ Your winning lottery ticket
+
+
+ 66
+ code
+
+ Repurchase of petrol coupons
+
+
+ 68
+ code
+
+ Difference in payment
+ In case of payment accepted under reserve of count; result of undercrediting - see also transaction 19
+
+
+ 70
+ code
+
+ Sale of traveller’s cheque
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 11
+ family
+ Securities
+
+
+ 01
+ code
+
+ Purchase of securities
+ Purchase of domestic or foreign securities, including subscription rights, certificates, etc.
+
+
+ 02
+ code
+
+ Tenders
+ Payment to the bank on maturity date
+
+
+ 03
+ code
+
+ Subscription to securities
+ Bonds, shares, tap issues of CDs, with or without payment of interest, etc.
+
+
+ 04
+ code
+
+ Issues
+
+
+ 05
+ code
+
+ Partial payment subscription
+ Debit of the subscriber for the complementary payment of partly-paid shares
+
+
+ 06
+ code
+
+ Share option plan – exercising an option
+
+
+ 09
+ code
+
+ Settlement of securities
+ For professionals (stockbrokers) only, whoever the issuer may be (Belgian or foreigner)
+
+
+ 11
+ code
+
+ Payable coupons/repayable securities
+ Debit of the issuer by the bank in charge of the financial service
+
+
+ 13
+ code
+
+ Your repurchase of issue
+ Unissued part (see 64)
+
+
+ 15
+ code
+
+ Interim interest on subscription
+ In case of subscription before the interest due date
+
+
+ 17
+ code
+
+ Management fee
+
+
+ 19
+ code
+
+ Regularisation costs
+
+
+ 37
+ code
+
+ Costs
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Sale of securities
+
+
+ 51
+ code
+
+ Tender
+ Company issues paper in return for cash
+
+
+ 52
+ code
+
+ Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve
+ Whatever the currency of the security
+
+
+ 56
+ code
+
+ Reserve
+
+
+ 58
+ code
+
+ Repayable securities from a deposit or delivered at the counter - credit under usual reserve
+
+
+ 62
+ code
+
+ Interim interest on subscription
+ When reimbursed separately to the subscriber
+
+
+ 64
+ code
+
+ Your issue
+ Amount paid to the issuer by the bank in charge of the placement (firm underwriting or not); also used for the payment in full of partly-paid shares, see transaction 05
+
+
+ 66
+ code
+
+ Retrocession of issue commission
+ For professionals such as insurances and stockbrokers
+
+
+ 68
+ code
+
+ Compensation for missing coupon
+ In case coupons attached to a purchased security are missing
+
+
+ 70
+ code
+
+ Settlement of securities
+ Only with stockbrokers when they deliver the securities to the bank
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 13
+ family
+ Credit
+
+
+ 01
+ code
+
+ Short-term loan
+ Capital and/or interest (specified by the category)
+
+
+ 02
+ code
+
+ Long-term loan
+
+
+ 05
+ code
+
+ Settlement of fixed advance
+ Full or partial reimbursement of a fixed advance at maturity date
+
+
+ 07
+ code
+
+ Your repayment instalment credits
+ Often by standing order or direct debit. In case of direct debit, family 13 is used.
+
+
+ 11
+ code
+
+ Your repayment mortgage loan
+
+
+ 13
+ code
+
+ Settlement of bank acceptances
+
+
+ 15
+ code
+
+ Your repayment hire-purchase and similar claims
+ Hire-purchase agreement under which the financial institution is the lessor
+
+
+ 19
+ code
+
+ Documentary import credits
+
+
+ 21
+ code
+
+ Other credit applications
+
+
+ 37
+ code
+
+ Credit-related costs
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Settlement of instalment credit
+
+
+ 54
+ code
+
+ Fixed advance – capital and interest
+
+
+ 55
+ code
+
+ Fixed advance – interest only
+
+
+ 56
+ code
+
+ Subsidy
+ Interest or capital subsidy
+
+
+ 60
+ code
+
+ Settlement of mortgage loan
+
+
+ 62
+ code
+
+ Term loan
+
+
+ 68
+ code
+
+ Documentary export credits
+
+
+ 70
+ code
+
+ Settlement of discount bank acceptance
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 30
+ family
+ Various transactions
+
+
+ 01
+ code
+
+ Spot purchase of foreign exchange
+
+
+ 03
+ code
+
+ Forward purchase of foreign exchange
+
+
+ 05
+ code
+
+ Capital and/or interest term investment
+
+
+ 33
+ code
+
+ Value (date) correction
+
+
+ 37
+ code
+
+ Costs
+
+
+ 39
+ code
+
+ Undefined transaction
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Spot sale of foreign exchange
+
+
+ 52
+ code
+
+ Forward sale of foreign exchange
+
+
+ 54
+ code
+
+ Capital and/or interest term investment
+
+
+ 55
+ code
+
+ Interest term investment
+
+
+ 83
+ code
+
+ Value (date) correction
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 89
+ code
+
+ Undefined transaction
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 35
+ family
+ Closing (periodical settlements for interest, costs,…)
+
+
+ 01
+ code
+
+ Closing
+
+
+ 37
+ code
+
+ Costs
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Closing
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 41
+ family
+ International credit transfers - non-SEPA credit transfers
+
+
+ 01
+ code
+
+ Transfer
+
+
+ 03
+ code
+
+ Standing order
+
+
+ 05
+ code
+
+ Collective payments of wages
+
+
+ 07
+ code
+
+ Collective transfers
+
+
+ 13
+ code
+
+ Transfer from your account
+ Intracompany
+
+
+ 17
+ code
+
+ Financial centralisation (debit)
+
+
+ 37
+ code
+
+ Costs relating to outgoing foreign transfers and non-SEPA transfers
+
+
+ 38
+ code
+
+ Costs relating to incoming foreign and non-SEPA transfers
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Transfer
+
+
+ 64
+ code
+
+ Transfer to your account
+ Intracompany
+
+
+ 66
+ code
+
+ Financial centralisation (credit)
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 43
+ family
+ Foreign cheques
+
+
+ 01
+ code
+
+ Payment of a foreign cheque
+ Debit of a cheque in foreign currency or in EUR in favour of a foreigner
+
+
+ 07
+ code
+
+ Unpaid foreign cheque
+ Foreign cheque remitted for collection that returns unpaid
+
+
+ 15
+ code
+
+ Purchase of an international bank cheque
+
+
+ 37
+ code
+
+ Costs relating to payment of foreign cheques
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 52
+ code
+
+ Remittance of foreign cheque credit under usual reserve
+
+
+ 58
+ code
+
+ Remittance of foreign cheque credit after collection
+
+
+ 62
+ code
+
+ Reversal of cheques
+
+
+ 70
+ code
+
+ Purchase of traveller’s cheque
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 47
+ family
+ Foreign commercial paper
+
+
+ 01
+ code
+
+ Payment of foreign bill
+
+
+ 05
+ code
+
+ Bill claimed back
+
+
+ 06
+ code
+
+ Extension
+
+
+ 07
+ code
+
+ Unpaid foreign bill
+
+
+ 11
+ code
+
+ Payment documents abroad
+ Bills of lading
+
+
+ 13
+ code
+
+ Discount foreign supplier's bills
+ Debit customer, payment of agios, interest, exchange commission, etc.
+
+
+ 14
+ code
+
+ Warrant fallen due
+
+
+ 37
+ code
+
+ Costs relating to the payment of a foreign bill
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 50
+ code
+
+ Remittance of foreign bill credit after collection
+
+
+ 52
+ code
+
+ Remittance of foreign bill credit under usual reserve
+
+
+ 54
+ code
+
+ Discount abroad
+
+
+ 56
+ code
+
+ Remittance of guaranteed foreign supplier's bill
+
+
+ 58
+ code
+
+ Idem without guarantee
+
+
+ 60
+ code
+
+ Remittance of documents abroad - credit under usual reserve
+
+
+ 62
+ code
+
+ Remittance of documents abroad - credit after collection
+
+
+ 64
+ code
+
+ Warrant
+
+
+ 87
+ code
+
+ Reimbursement of costs
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+ 49
+ family
+ Foreign counter transactions
+
+
+ 03
+ code
+
+ ATM withdrawal
+
+
+ 80
+ family
+ Separately charged costs and provisions
+
+
+ 01
+ code
+
+ Guarantee card charges
+
+
+ 02
+ code
+
+ Costs relating to electronic output
+
+
+ 03
+ code
+
+ Payment card charges
+
+
+ 04
+ code
+
+ Costs for holding a documentary cash credit
+
+
+ 05
+ code
+
+ Card charges
+
+
+ 06
+ code
+
+ Damage relating to bills and cheques
+
+
+ 07
+ code
+
+ Insurance costs
+ - insurance costs of account holders against fatal accidents - passing-on of several insurance costs
+
+
+ 08
+ code
+
+ Registering compensation for savings accounts
+
+
+ 09
+ code
+
+ Postage
+ Postage recouped to the debit of the customer (including forwarding charges)
+
+
+ 10
+ code
+
+ Purchase of Smartcard
+
+
+ 11
+ code
+
+ Costs for the safe custody of correspondence
+ Costs chargeable to clients who ask to have their correspondence kept at their disposal at the bank's counter
+
+
+ 12
+ code
+
+ Costs for opening a bank guarantee
+
+
+ 13
+ code
+
+ Renting of safes
+ Commission for renting a safe deposit box
+
+
+ 14
+ code
+
+ Handling costs instalment credit
+
+
+ 15
+ code
+
+ Night safe
+ Commission collected to the debit of the customer to whom the bank delivers a key which gives access to the night safe
+
+
+ 16
+ code
+
+ Bank confirmation to revisor or accountant
+
+
+ 17
+ code
+
+ Charge for safe custody
+ Collected for unsealed deposit of securities, and other parcels
+
+
+ 18
+ code
+
+ Trade information
+
+
+ 19
+ code
+
+ Special charge for safe custody
+ Collected for securities, gold, pass-books, etc. placed in safe custody
+
+
+ 20
+ code
+
+ Drawing up a certificate
+
+
+ 21
+ code
+
+ Pay-packet charges
+ Charges for preparing pay packets
+
+
+ 22
+ code
+
+ Management/custody
+
+
+ 23
+ code
+
+ Research costs
+ Costs charged for all kinds of research (information on past transactions, address retrieval, ...)
+
+
+ 24
+ code
+
+ Participation in and management of interest refund system
+
+
+ 25
+ code
+
+ Renting of direct debit box
+ Commission for the renting of boxes put at the disposal for the correspondence
+
+
+ 26
+ code
+
+ Travel insurance premium
+
+
+ 27
+ code
+
+ Subscription fee
+ For publications of the financial institution
+
+
+ 29
+ code
+
+ Information charges
+ Charges collected for: - commercial information - sundry information
+
+
+ 31
+ code
+
+ Writ service fee
+ E.g. for signing invoices
+
+
+ 33
+ code
+
+ Miscellaneous fees and commissions
+ Costs not specified otherwise, often with a manual communication (e.g. for collecting, ordering funds). VAT excluded = type 0 VAT included = type 3 (at least 3 articles)
+
+
+ 35
+ code
+
+ Costs
+ Costs charged for calculating the amount of the tax to be paid (e.g. Fiscomat).
+
+
+ 37
+ code
+
+ Access right to database
+ Fixed right, either one-off or periodical; for details, see "categories"
+
+
+ 39
+ code
+
+ Surety fee
+ Agios on guarantees given
+
+
+ 41
+ code
+
+ Research costs
+
+
+ 43
+ code
+
+ Printing of forms
+
+
+ 45
+ code
+
+ Documentary credit charges
+
+
+ 47
+ code
+
+ Charging fees for transactions
+
+
+ 49
+ code
+
+ Cancellation or correction
+
+
+ 99
+ code
+
+ Cancellation or correction
+
+
+
+
diff --git a/addons/account_coda/account_coda_trans_type.xml b/addons/account_coda/account_coda_trans_type.xml
new file mode 100644
index 00000000000..9be29ce622a
--- /dev/null
+++ b/addons/account_coda/account_coda_trans_type.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ 0
+ Simple amount without detailed data; e.g. : an individual credit transfer (free of charges).
+
+
+ 1
+ Amount as totalised by the customer; e.g. a file regrouping payments of wages or payments made to suppliers or a file regrouping collections for which the customer is debited or credited with one single amount. As a matter of principle, this type is also used when no detailed data is following (type 5).
+
+
+ 5
+
+ Detail of 1. Standard procedure is no detailing. However, the customer may ask for detailed data to be included into his file after the overall record (type 1).
+
+
+ 2
+ Amount as totalised by the bank; e.g. : the total amount of a series of credit transfers with a structured communication As a matter of principle, this type will also be used when no detailed data (type 6 or 7) is following.
+
+
+ 6
+
+ Detail of 2. Simple amount without detailed data. Normally, data of this kind comes after type 2. The customer may ask for a separate file containing the detailed data. In that case, one will speak of a ‘separate application’. The records in a separate application keep type 6.
+
+
+ 7
+
+ Detail of 2. Simple account with detailed data The records in a separate application keep type 7.
+
+
+ 9
+
+ Detail of 7. The records in a separate application keep type 9.
+
+
+ 3
+ Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers.
+
+
+ 8
+
+ Detail of 3.
+
+
+
+
diff --git a/addons/account_coda/account_coda_view.xml b/addons/account_coda/account_coda_view.xml
index c369cf7b921..dad84f8f727 100644
--- a/addons/account_coda/account_coda_view.xml
+++ b/addons/account_coda/account_coda_view.xml
@@ -1,92 +1,531 @@
-
+
-
- account.coda.form
- account.coda
- form
-
-
-
+
+
+
+
+
+ coda.bank.account.search
+ coda.bank.account
+ search
+
+
+
+
+ coda.bank.account.list
+ coda.bank.account
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+ coda.bank.account.form
+ coda.bank.account
+ form
+
+
+
+
+
+ CODA Bank Account Configuration
+ coda.bank.account
+ form
+ tree,form
+
+
+
+
+
+
+ account.coda.trans.type.tree
+ account.coda.trans.type
+ tree
+
+
+
+
+
+
+
+
+
+ account.coda.trans.type.form
+ account.coda.trans.type
+ form
+
+
+
+
+
+ CODA Transaction Types
+ ir.actions.act_window
+ account.coda.trans.type
+ form
+ tree,form
+
+
+
+
+ account.coda.trans.code.tree
+ account.coda.trans.code
+ tree
+
+
+
+
+
+
+
+
+
+
+ account.coda.trans.code.form
+ account.coda.trans.code
+ form
+
+
+
+
+
+ CODA Transaction Codes
+ ir.actions.act_window
+ account.coda.trans.code
+ form
+ tree,form
+
+
+
+
+
+ account.coda.trans.category.tree
+ account.coda.trans.category
+ tree
+
+
+
+
+
+
+
+
+ account.coda.trans.category.form
+ account.coda.trans.category
+ form
+
+
+
+
+
+ CODA Transaction Categories
+ ir.actions.act_window
+ account.coda.trans.category
+ form
+ tree,form
+
+
+
+
+
+ account.coda.comm.type.tree
+ account.coda.comm.type
+ tree
+
+
+
+
+
+
+
+
+ account.coda.comm.type.form
+ account.coda.comm.type
+ form
+
+
+
+
+
+ CODA Structured Communication Types
+ ir.actions.act_window
+ account.coda.comm.type
+ form
+ tree,form
+
+
+
+
+
+
+
+
- account.coda.tree
- account.coda
- tree
-
-
-
-
-
-
-
-
+ account.coda.tree
+ account.coda
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+ account.coda.form
+ account.coda
+ form
+
+
+
+
+
+
+ account.coda.search
+ account.coda
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Imported CODA Files
+ ir.actions.act_window
+ account.coda
+ form
+ tree,form
+
+
-
- account.coda.select
- account.coda
- search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
- Coda Logs
- ir.actions.act_window
- account.coda
- form
- tree,form
- {}
-
+
+
+ coda.bank.statement.list
+ coda.bank.statement
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ coda.bank.statement.form
+ coda.bank.statement
+ form
+
+
+
-
+
+ coda.bank.statement.search
+ coda.bank.statement
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ CODA Bank Statements
+ ir.actions.act_window
+ coda.bank.statement
+ form
+ tree,form
+
+
+ The CODA Bank Statements contain the information encoded in their originating CODA file in a human readable format. The Bank Statements associated with a CODA contain the subset of the CODA Bank Statement data that is required for the creation of the Accounting Entries.
+
-
+
-
+
+
+
+ coda.bank.statement.line.list
+ coda.bank.statement.line
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ coda.bank.statement.line.form
+ coda.bank.statement.line
+ form
+
+