diff --git a/account_bank_menu/README.rst b/account_bank_menu/README.rst new file mode 100644 index 00000000..43b8814c --- /dev/null +++ b/account_bank_menu/README.rst @@ -0,0 +1,57 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +================= +Account Bank Menu +================= + +This module adds a menu entry *Bank and Cash* to the *Accounting* menu +since the use of the accounting dashboard is not always practical especially +for companies with lots of bank accounts. +so that these can be cancelled and corrected via 'Set to Draft'. + +Installation +============ + +There is no specific installation procedure for this module. + +Configuration and Usage +======================= + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/92/11.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Luc De Meyer + +Do not contact contributors directly about support or help with technical issues. + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/account_bank_menu/__init__.py b/account_bank_menu/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/account_bank_menu/__manifest__.py b/account_bank_menu/__manifest__.py new file mode 100644 index 00000000..f2099131 --- /dev/null +++ b/account_bank_menu/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2009-2018 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Account Bank Menu', + 'summary': "Adds *Bank and Cash* to the *Accounting' menu", + 'version': '11.0.1.0.0', + 'category': 'Accounting & Finance', + 'website': 'https://github.com/OCA/account-financial-tools', + 'author': 'Noviat,' + 'Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ + 'account', + ], + 'data': [ + 'views/account_bank_menu.xml' + ], +} diff --git a/account_bank_menu/static/description/icon.png b/account_bank_menu/static/description/icon.png new file mode 100644 index 00000000..3a0328b5 Binary files /dev/null and b/account_bank_menu/static/description/icon.png differ diff --git a/account_bank_menu/views/account_bank_menu.xml b/account_bank_menu/views/account_bank_menu.xml new file mode 100644 index 00000000..3a18b55c --- /dev/null +++ b/account_bank_menu/views/account_bank_menu.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/account_bank_statement_advanced/README.rst b/account_bank_statement_advanced/README.rst new file mode 100644 index 00000000..ac657fe6 --- /dev/null +++ b/account_bank_statement_advanced/README.rst @@ -0,0 +1,32 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +======================= +Advanced Bank Statement +======================= + +This module extends the standard account_bank_statement object for +better scalability and e-banking support. + +This module adds: +----------------- +- value date +- batch payments +- Payment Reference field to support ISO 20022 EndToEndReference + (simple or batch. detail) or PaymentInformationIdentification (batch) +- Creditor Reference fields to support ISO 20022 CdtrRefInf + (e.g. structured communication & communication type) +- bank statement line views +- bank statements balances report +- performance improvements for digital import of bank statement +- manual reconcile extended to partners which are not marked as 'customer' or 'supplier' + +Installation guidelines +======================= + +We recommend to install this module in combination with the following module: + +- web_sheet_full_width + +cf. https://github.com/OCA/web diff --git a/account_bank_statement_advanced/__init__.py b/account_bank_statement_advanced/__init__.py new file mode 100644 index 00000000..7660e7bf --- /dev/null +++ b/account_bank_statement_advanced/__init__.py @@ -0,0 +1,3 @@ +from . import models +from . import report +from . import wizard diff --git a/account_bank_statement_advanced/__manifest__.py b/account_bank_statement_advanced/__manifest__.py new file mode 100644 index 00000000..09970038 --- /dev/null +++ b/account_bank_statement_advanced/__manifest__.py @@ -0,0 +1,31 @@ +# Copyright 2009-2019 Noviat +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Advanced Bank Statement', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'website': 'http://www.noviat.com', + 'category': 'Accounting & Finance', + 'summary': 'Advanced Bank Statement', + 'depends': [ + 'account_cancel', + 'base_iban', + 'account_bank_menu', + ], + 'data': [ + 'security/ir.model.access.csv', + 'security/account_security.xml', + 'data/ir_sequence.xml', + 'views/assets_backend.xml', + 'views/account_bank_statement.xml', + 'views/account_bank_statement_line.xml', + 'views/account_bank_statement_line_global.xml', + 'views/statement_balance_report.xml', + 'wizard/bank_statement_balance_print.xml', + 'wizard/bank_statement_automatic_reconcile_result_view.xml', + 'report/statement_balance_report.xml', + ], + 'installable': True, +} diff --git a/account_bank_statement_advanced/data/ir_sequence.xml b/account_bank_statement_advanced/data/ir_sequence.xml new file mode 100644 index 00000000..21f6602a --- /dev/null +++ b/account_bank_statement_advanced/data/ir_sequence.xml @@ -0,0 +1,15 @@ + + + + + + + Statement Line Globalisation sequence + statement.line.global + G + + + + + + diff --git a/account_bank_statement_advanced/i18n/fr.po b/account_bank_statement_advanced/i18n/fr.po new file mode 100644 index 00000000..19028879 --- /dev/null +++ b/account_bank_statement_advanced/i18n/fr.po @@ -0,0 +1,276 @@ +# French translation of Odoo 8.0. +# This file contains the translation of the following modules: +# * account_bank_statement_advanced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo 8.0\n" +"Report-Msgid-Bugs-To: support@noviat.com\n" +"POT-Creation-Date: 2015-02-09 17:14:58.868000\n" +"PO-Revision-Date: 2015-02-09 17:14:58.868000\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_advanced +#: view:account.bank.statement.line:0 +msgid "Statement Lines" +msgstr "Transactions bancaires" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Statement Line" +msgstr "Transaction bancaire" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Total Amount" +msgstr "Montant total" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Id" +msgstr "Id. glob." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Am." +msgstr "Mont. glob." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Amount" +msgstr "Montant glob." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Notes" +msgstr "Notes" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Search Bank Transactions" +msgstr "Recherche de transactions" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Debit" +msgstr "Debit" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Credit" +msgstr "Credit" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Debit Transactions." +msgstr "Transactions debit." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Credit Transactions." +msgstr "Transactions credit." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Extended Filters..." +msgstr "Filtres étendus..." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Group By..." +msgstr "Grouper par..." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Journal" +msgstr "Journal" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Statement" +msgstr "Relevé" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Fin.Account" +msgstr "Compte général" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Lvl" +msgstr "Niveau Glob." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Notes" +msgstr "Notes" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Draft" +msgstr "Brouillon" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Confirmed" +msgstr "Confirmée" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Draft Statement Lines." +msgstr "Transactions brouillon." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Confirmed Statement Lines." +msgstr "Transactions confirmées." + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,counterparty_bic:0 +msgid "Counterparty BIC" +msgstr "BIC de la contrepartie" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,counterparty_currency:0 +msgid "Counterparty Currency" +msgstr "Devise de la contrepartie" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,counterparty_number:0 +msgid "Counterparty Number" +msgstr "No de la contrepartie" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,date:0 +msgid "Entry Date" +msgstr "Date de comptabilisation" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,globalisation_amount:0 +msgid "Glob. Amount" +msgstr "Montant glob." + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,globalisation_id:0 +msgid "Globalisation ID" +msgstr "ID de globalisation" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,journal_id:0 +msgid "Journal" +msgstr "Journal" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,val_date:0 +msgid "Value Date" +msgstr "Date de valeur" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,payment_reference:0 +msgid "Payment Reference" +msgstr "Référence paiement" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,amount:0 +msgid "Amount" +msgstr "Montant" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,bank_statement_line_ids:0 +msgid "Bank Statement Lines" +msgstr "Transactions bancaires" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,child_ids:0 +msgid "Child Codes" +msgstr "Codes fils" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,code:0 +msgid "Code" +msgstr "Code" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,name:0 +msgid "Name" +msgstr "Nom" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,payment_reference:0 +msgid "Payment Reference" +msgstr "Référence paiement" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,parent_id:0 +msgid "Parent Code" +msgstr "Code parent" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,type:0 +msgid "Type" +msgstr "Type" + +#. module: account_bank_statement_advanced +#: selection:account.bank.statement.line.global,type:0 +msgid "Manual" +msgstr "Manuelle" + +#. module: account_bank_statement_advanced +#: selection:account.bank.statement.line.global,type:0 +msgid "CODA" +msgstr "CODA" + +#. module: account_bank_statement_advanced +#: selection:account.bank.statement.line.global,type:0 +msgid "ISO 20022" +msgstr "ISO 20022" + +#. module: account_bank_statement_advanced +#: model:ir.actions.act_window,name:account_bank_statement_advanced.action_bank_statement_line +msgid "Bank Statement Lines" +msgstr "Transactions bancaires" + +#. module: account_bank_statement_advanced +#: model:ir.ui.menu,name:account_bank_statement_advanced.bank_statement_line +msgid "Bank Statement Lines" +msgstr "Transactions bancaires" + +#. module: account_bank_statement_advanced +#: field:res.company,bank_ids:0 +msgid "Company Banks" +msgstr "Comptes bancaires" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Bank Statement Balances Report" +msgstr "Soldes relevés bancaires" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Name" +msgstr "Nom" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Date" +msgstr "Date" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Journal" +msgstr "Journal" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Closing Balance" +msgstr "Solde" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Total" +msgstr "Total" + diff --git a/account_bank_statement_advanced/i18n/nl.po b/account_bank_statement_advanced/i18n/nl.po new file mode 100644 index 00000000..76704e5a --- /dev/null +++ b/account_bank_statement_advanced/i18n/nl.po @@ -0,0 +1,276 @@ +# Dutch translation of Odoo 8.0. +# This file contains the translation of the following modules: +# * account_bank_statement_advanced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo 8.0\n" +"Report-Msgid-Bugs-To: support@noviat.com\n" +"POT-Creation-Date: 2015-02-09 17:14:58.868000\n" +"PO-Revision-Date: 2015-02-09 17:14:58.868000\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_advanced +#: view:account.bank.statement.line:0 +msgid "Statement Lines" +msgstr "Bank transacties" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Statement Line" +msgstr "Bank transactie" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Total Amount" +msgstr "Totaal bedrag" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Id" +msgstr "Glob. Id" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Am." +msgstr "Glob. bedrag" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Amount" +msgstr "Glob. bedrag" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Notes" +msgstr "Notities" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Search Bank Transactions" +msgstr "Transacties zoeken" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Debit" +msgstr "Debet" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Credit" +msgstr "Credit" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Debit Transactions." +msgstr "Debet transacties." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Credit Transactions." +msgstr "Credit transacties." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Extended Filters..." +msgstr "Uitgebreide filters..." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Group By..." +msgstr "Groepeer op..." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Journal" +msgstr "Dagboek" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Statement" +msgstr "Uitreksel" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Fin.Account" +msgstr "Grootboekrekening" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Glob. Lvl" +msgstr "Glob. niveau" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Notes" +msgstr "Notities" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Draft" +msgstr "Concept" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Confirmed" +msgstr "Bevestigd" + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Draft Statement Lines." +msgstr "Concept transacties." + +#. module: account_bank_statement_advanced +#: view:account.bank.statement.line:0 +msgid "Confirmed Statement Lines." +msgstr "Bevestigde transacties." + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,counterparty_bic:0 +msgid "Counterparty BIC" +msgstr "BIC tegenpartij" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,counterparty_currency:0 +msgid "Counterparty Currency" +msgstr "Munteenheid tegenpartij" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,counterparty_number:0 +msgid "Counterparty Number" +msgstr "Nummer tegenpartij" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,date:0 +msgid "Entry Date" +msgstr "Boekingsdatum" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,globalisation_amount:0 +msgid "Glob. Amount" +msgstr "Glob. bedrag" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,globalisation_id:0 +msgid "Globalisation ID" +msgstr "Globalisatie ID" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,journal_id:0 +msgid "Journal" +msgstr "Dagboek" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,val_date:0 +msgid "Value Date" +msgstr "Valutadatum" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line,payment_reference:0 +msgid "Payment Reference" +msgstr "Betaalreferte" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,amount:0 +msgid "Amount" +msgstr "Bedrag" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,bank_statement_line_ids:0 +msgid "Bank Statement Lines" +msgstr "Bank transacties" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,child_ids:0 +msgid "Child Codes" +msgstr "Subcodes" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,code:0 +msgid "Code" +msgstr "Code" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,name:0 +msgid "Name" +msgstr "Naam" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,payment_reference:0 +msgid "Payment Reference" +msgstr "Betaalreferte" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,parent_id:0 +msgid "Parent Code" +msgstr "Bovenliggende code" + +#. module: account_bank_statement_advanced +#: field:account.bank.statement.line.global,type:0 +msgid "Type" +msgstr "Type" + +#. module: account_bank_statement_advanced +#: selection:account.bank.statement.line.global,type:0 +msgid "Manual" +msgstr "Manueel" + +#. module: account_bank_statement_advanced +#: selection:account.bank.statement.line.global,type:0 +msgid "CODA" +msgstr "CODA" + +#. module: account_bank_statement_advanced +#: selection:account.bank.statement.line.global,type:0 +msgid "ISO 20022" +msgstr "ISO 20022" + +#. module: account_bank_statement_advanced +#: model:ir.actions.act_window,name:account_bank_statement_advanced.action_bank_statement_line +msgid "Bank Statement Lines" +msgstr "Bank transacties" + +#. module: account_bank_statement_advanced +#: model:ir.ui.menu,name:account_bank_statement_advanced.bank_statement_line +msgid "Bank Statement Lines" +msgstr "Bank transacties" + +#. module: account_bank_statement_advanced +#: field:res.company,bank_ids:0 +msgid "Company Banks" +msgstr "Bankrekeningen" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Bank Statement Balances Report" +msgstr "Saldi bankafschriften" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Name" +msgstr "Naam" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Date" +msgstr "Datum" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Journal" +msgstr "Dagboek" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Closing Balance" +msgstr "Saldo" + +#. module: account_bank_statement_advanced +#: view:website:account_bank_statement_advanced.report_statement_balances +msgid "Total" +msgstr "Totaal" + diff --git a/account_bank_statement_advanced/migrations/10.0.0.1/pre-migrate.py b/account_bank_statement_advanced/migrations/10.0.0.1/pre-migrate.py new file mode 100644 index 00000000..f38018bf --- /dev/null +++ b/account_bank_statement_advanced/migrations/10.0.0.1/pre-migrate.py @@ -0,0 +1,69 @@ +# Copyright 2009-2018 Noviat +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +def migrate_line_global(cr): + + g_table = 'account_bank_statement_line_global' + + cr.execute( + "SELECT column_name FROM information_schema.columns " + "WHERE table_name = '%s' " + "AND column_name = 'currency_id'" + % g_table) + + if not cr.fetchone(): + cr.execute("ALTER TABLE %s ADD COLUMN currency_id integer" % g_table) + cr.execute("COMMENT ON COLUMN %s.currency_id IS 'Currency'" % g_table) + + cr.execute( + "SELECT DISTINCT(g.id) " + "FROM account_bank_statement_line l " + "JOIN %s g " + "ON l.globalisation_id = g.id" + % g_table) + res = cr.fetchall() + gids = [x[0] for x in res] + + for gid in gids: + + cr.execute( + "SELECT id FROM account_bank_statement_line " + "WHERE globalisation_id = %s LIMIT 1" % gid) + res = cr.fetchone() + lid = res[0] + + cr.execute( + "SELECT jc.id AS jc_id, cc.id as cc_id " + "FROM account_bank_statement_line l " + "JOIN account_bank_statement s ON l.statement_id = s.id " + "JOIN account_journal j ON s.journal_id = j.id " + "JOIN res_company c ON l.company_id = c.id " + "JOIN res_currency cc ON c.currency_id = cc.id " + "LEFT OUTER JOIN res_currency jc ON j.currency_id = jc.id " + "WHERE l.id = %s" % lid) + res = cr.fetchone() + cid = res[0] or res[1] + + update = "UPDATE %s SET currency_id = %s " % (g_table, cid) + update += "WHERE id = %s" + + def update_glob_line(gid): + cr.execute(update % gid) + parent_id = gid + cr.execute( + "SELECT id FROM account_bank_statement_line_global " + "WHERE parent_id = '%s'" % parent_id) + res = cr.fetchall() + child_ids = [x[0] for x in res] + for child_id in child_ids: + update_glob_line(child_id) + + update_glob_line(gid) + + +def migrate(cr, version): + if not version: + return + + migrate_line_global(cr) diff --git a/account_bank_statement_advanced/models/__init__.py b/account_bank_statement_advanced/models/__init__.py new file mode 100644 index 00000000..cf939cd0 --- /dev/null +++ b/account_bank_statement_advanced/models/__init__.py @@ -0,0 +1,5 @@ +from . import account_bank_statement +from . import account_bank_statement_line +from . import account_bank_statement_line_global +from . import account_move +from . import account_move_line diff --git a/account_bank_statement_advanced/models/account_bank_statement.py b/account_bank_statement_advanced/models/account_bank_statement.py new file mode 100644 index 00000000..91d79ae3 --- /dev/null +++ b/account_bank_statement_advanced/models/account_bank_statement.py @@ -0,0 +1,46 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models, _ + + +class AccountBankStatement(models.Model): + _inherit = 'account.bank.statement' + + @api.multi + def automatic_reconcile(self): + reconcile_note = '' + for st in self: + reconcile_note = self._automatic_reconcile( + reconcile_note=reconcile_note) + if reconcile_note: + module = __name__.split('addons.')[1].split('.')[0] + result_view = self.env.ref( + '%s.bank_statement_automatic_reconcile_result_view_form' + % module) + return { + 'name': _("Automatic Reconcile remarks:"), + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'bank.statement.automatic.reconcile.result.view', + 'view_id': result_view.id, + 'target': 'new', + 'context': dict(self._context, note=reconcile_note), + 'type': 'ir.actions.act_window', + } + else: + return True + + def _automatic_reconcile(self, reconcile_note): + """ + Placeholder for modules that implement automatic reconciliation (e.g. + l10n_be_coda_advanced) as a preprocessing step before entering + into the standard addons javascript reconciliation screen. + This screen has also an 'auto_reconcile' option but unfortunately + - too much hardcoded + - risks on wrong reconciles + - too late in the process (the javascript screen is not usable for + lorge statements hence pre-processing is required) + """ + self.ensure_one() + return reconcile_note diff --git a/account_bank_statement_advanced/models/account_bank_statement_line.py b/account_bank_statement_advanced/models/account_bank_statement_line.py new file mode 100644 index 00000000..2c3a90db --- /dev/null +++ b/account_bank_statement_advanced/models/account_bank_statement_line.py @@ -0,0 +1,165 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from odoo import api, fields, models, _ + + +class AccountBankStatementLine(models.Model): + _inherit = 'account.bank.statement.line' + + # new fields + statement_date = fields.Date( + related='statement_id.date', string='Statement Date', + readonly=True, store=True) + val_date = fields.Date( + string='Value Date') # nl: valuta datum) + journal_code = fields.Char( + related='statement_id.journal_id.code', + string='Journal', store=True, readonly=True) + globalisation_id = fields.Many2one( + comodel_name='account.bank.statement.line.global', + string='Globalisation ID', + readonly=True, + help="Code to identify transactions belonging to the same " + "globalisation level within a batch payment") + globalisation_amount = fields.Monetary( + related='globalisation_id.amount', + string='Glob. Amount', readonly=True) + counterparty_bic = fields.Char( + string='Counterparty BIC', size=11, + states={'confirm': [('readonly', True)]}) + counterparty_number = fields.Char( + string='Counterparty Number', + states={'confirm': [('readonly', True)]}) + counterparty_currency = fields.Char( + string='Counterparty Currency', size=3, + states={'confirm': [('readonly', True)]}) + payment_reference = fields.Char( + string='Payment Reference', size=35, + states={'confirm': [('readonly', True)]}, + help="Payment Reference. For SEPA (SCT or SDD) transactions, " + "the EndToEndReference is recorded in this field.") + creditor_reference_type = fields.Char( + # To DO : change field to selection list + string='Creditor Reference Type', size=35, + states={'confirm': [('readonly', True)]}, + help="Creditor Reference Type. For SEPA (SCT) transactions, " + "the type is recorded in this field." + "\nE.g. 'BBA' for belgian structured communication " + "(Code 'SCOR', Issuer 'BBA'") + creditor_reference = fields.Char( + 'Creditor Reference', + size=35, # cf. pain.001.001.003 type="Max35Text" + states={'confirm': [('readonly', True)]}, + help="Creditor Reference. For SEPA (SCT) transactions, " + "the reference is recorded in this field.") + reconcile_get = fields.Char( + string='Reconciled', compute='_compute_reconcile_get', readonly=True) + moves_state = fields.Char( + string='Moves State', + compute='_compute_moves_state', + readonly=True) + # update existing fields + state = fields.Selection(store=True) + date = fields.Date(string='Entry Date') + partner_id = fields.Many2one( + domain=['|', ('parent_id', '=', False), ('is_company', '=', True)]) + + @api.one + @api.depends('journal_entry_ids') + def _compute_reconcile_get(self): + res = '-' + """ + TODO: + adapt logic for new aml fields: + full_reconcile_id + matched_debit_ids + matched_credit_ids + + if move: + reconciles = filter(lambda x: x.reconcile_id, move.line_id) + rec_partials = filter( + lambda x: x.reconcile_partial_id, move.line_id) + rec_total = reduce( + lambda y, t: (t.credit or 0.0) - (t.debit or 0.0) + y, + reconciles + rec_partials, 0.0) + if rec_total: + res = '%.2f' % rec_total + if rec_total != self.amount or rec_partials: + res += ' (!)' + """ + self.reconcile_get = res + + @api.one + @api.depends('journal_entry_ids') + def _compute_moves_state(self): + state = False + moves = self.journal_entry_ids.mapped('move_id') + states = moves.mapped('state') + if states: + state = any([x == 'draft' for x in states]) \ + and _('Unposted') or _('Posted') + self.moves_state = state + + @api.onchange('currency_id', 'val_date', 'date') + def _onchange_currency_id(self): + if self.currency_id: + self.amount_currency = self.statement_id.currency.with_context( + date=self.val_date or self.date).compute( + self.amount, self.currency_id) + if not self.currency_id: + self.amount_currency = 0.0 + + @api.multi + def unlink(self): + glines = self.mapped('globalisation_id') + todelete = glines.filtered( + lambda gline: all( + [stl_id in self.ids + for stl_id in gline.bank_statement_line_ids.ids]) + ) + todelete.unlink() + return super().unlink() + + @api.multi + def button_cancel_reconciliation(self): + """ + remove the account_id from the st_line for manual reconciliation + """ + for st_line in self: + if st_line.account_id: + st_line.account_id = False + super().button_cancel_reconciliation() + return True + + @api.multi + def button_view_moves(self): + self.ensure_one() + moves = self.journal_entry_ids.mapped('move_id') + act_move = { + 'name': _('Journal Entries'), + 'view_type': 'form', + 'view_mode': 'tree,form', + 'res_model': 'account.move', + 'domain': [('id', 'in', moves.ids)], + 'context': self._context, + 'type': 'ir.actions.act_window', + } + return act_move + + @api.model + def _needaction_domain_get(self): + res = super()._needaction_domain_get() + res.append(('amount', '=', True)) + return res + + @api.multi + def get_data_for_reconciliation_widget(self, excluded_ids=None): + """ + Filter out zero amount lines. + """ + lines = super().get_data_for_reconciliation_widget( + excluded_ids=excluded_ids) + lines = [l for l in lines if l['st_line']['amount'] != 0.0] + return lines diff --git a/account_bank_statement_advanced/models/account_bank_statement_line_global.py b/account_bank_statement_advanced/models/account_bank_statement_line_global.py new file mode 100644 index 00000000..0dbf298c --- /dev/null +++ b/account_bank_statement_advanced/models/account_bank_statement_line_global.py @@ -0,0 +1,86 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountBankStatementLineGlobal(models.Model): + _name = 'account.bank.statement.line.global' + _description = 'Batch Payment Info' + _rec_name = 'code' + + name = fields.Char( + string='OBI', required=True, default='/', + help="Originator to Beneficiary Information") + code = fields.Char( + required=True, + default=lambda self: self._default_code()) + parent_id = fields.Many2one( + comodel_name='account.bank.statement.line.global', + string='Parent Code', ondelete='cascade') + child_ids = fields.One2many( + comodel_name='account.bank.statement.line.global', + inverse_name='parent_id', + string='Child Codes') + type = fields.Selection( + selection=[('iso20022', 'ISO 20022'), + ('coda', 'CODA'), + ('manual', 'Manual')], + required=True) + amount = fields.Monetary( + currency_field='currency_id') + payment_reference = fields.Char( + help="Payment Reference. For SEPA (SCT or SDD) transactions, " + "the PaymentInformationIdentification " + "is recorded in this field.") + bank_statement_line_ids = fields.One2many( + comodel_name='account.bank.statement.line', + inverse_name='globalisation_id', + string='Bank Statement Lines') + company_id = fields.Many2one( + comodel_name='res.company', + string='Company', readonly=True, + default=lambda self: self._default_company_id()) + currency_id = fields.Many2one( + comodel_name='res.currency', + string='Currency', + required=True, readonly=True) + + _sql_constraints = [ + ('code_uniq', + 'unique (code, company_id)', + 'The code must be unique !')] + + @api.model + def _default_code(self): + res = self.env['ir.sequence'].next_by_code( + 'statement.line.global') + return res + + @api.model + def _default_company_id(self): + c_id = self._context.get('force_company') + if c_id: + res = self.env['res.company'].browse(c_id) + else: + res = self.env.user.company_id + return res + + @api.model + def name_search(self, name, args=None, operator='ilike', limit=100): + args = args or [] + if name: + recs = self.search([('code', '=ilike', name)] + args, limit=limit) + if not recs: + recs = self.search( + [('name', operator, name)] + args, limit=limit) + if not recs and len(name.split()) >= 2: + # Separating code and name for searching + # name can contain spaces + operand1, operand2 = name.split(' ', 1) + recs = self.search([ + ('code', '=like', operand1), ('name', operator, operand2) + ] + args, limit=limit) + else: + recs = self.browse() + return recs.name_get() diff --git a/account_bank_statement_advanced/models/account_move.py b/account_bank_statement_advanced/models/account_move.py new file mode 100644 index 00000000..40f07815 --- /dev/null +++ b/account_bank_statement_advanced/models/account_move.py @@ -0,0 +1,21 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models, _ +from odoo.exceptions import UserError + + +class AccountMove(models.Model): + _inherit = 'account.move' + + @api.multi + def button_cancel(self): + for move in self: + for move_line in move.line_ids: + st = move_line.statement_id + if st and st.state == 'confirm': + raise UserError( + _("Operation not allowed ! " + "\nYou cannot unpost an Accounting Entry " + "that is linked to a Confirmed Bank Statement.")) + return super().button_cancel() diff --git a/account_bank_statement_advanced/models/account_move_line.py b/account_bank_statement_advanced/models/account_move_line.py new file mode 100644 index 00000000..2618eea9 --- /dev/null +++ b/account_bank_statement_advanced/models/account_move_line.py @@ -0,0 +1,42 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class AccountMoveLine(models.Model): + _inherit = 'account.move.line' + + move_state = fields.Selection( + related='move_id.state', string='Move State', + readonly=True) + + @api.multi + def unlink(self): + for move_line in self: + st = move_line.statement_id + if st and st.state == 'confirm': + raise UserError( + _("Operation not allowed ! " + "\nYou cannot delete an Accounting Entry " + "that is linked to a Confirmed Bank Statement.")) + return super().unlink() + + @api.multi + def write(self, vals, **kwargs): + for move_line in self: + st = move_line.statement_id + if st and st.state == 'confirm': + for k in vals: + if k not in ['full_reconcile_id', + 'matched_debit_ids', 'matched_credit_ids']: + raise UserError( + _("Operation not allowed ! " + "\nYou cannot modify an Accounting Entry " + "that is linked to a Confirmed Bank Statement. " + "\nStatement = %s" + "\nMove = %s (id:%s)\nUpdate Values = %s") + % (st.name, move_line.move_id.name, + move_line.move_id.id, vals)) + return super().write(vals) diff --git a/account_bank_statement_advanced/report/__init__.py b/account_bank_statement_advanced/report/__init__.py new file mode 100644 index 00000000..7fc329fd --- /dev/null +++ b/account_bank_statement_advanced/report/__init__.py @@ -0,0 +1 @@ +from . import statement_balance_report diff --git a/account_bank_statement_advanced/report/statement_balance_report.py b/account_bank_statement_advanced/report/statement_balance_report.py new file mode 100644 index 00000000..413ad519 --- /dev/null +++ b/account_bank_statement_advanced/report/statement_balance_report.py @@ -0,0 +1,68 @@ +# Copyright 2009-2018 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from datetime import datetime +from odoo import api, fields, models, _ +from odoo.exceptions import UserError +from functools import reduce + + +class StatementBalanceReport(models.AbstractModel): + _name = 'report.account_bank_statement_advanced.statement_balance_report' + + @api.model + def get_report_values(self, docids, data=None): + journal_ids = data['journal_ids'] + company = self.env.user.company_id + if not journal_ids: + journals = self.env['account.journal'].search( + [('type', '=', 'bank'), + ('company_id', '=', company.id)]) + journal_ids = journals.ids + if not journal_ids: + raise UserError( + _('No financial journals found for your company!')) + self.env.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, " + "COALESCE(jcu.id,ccu.id) AS j_curr_id " + "FROM account_bank_statement s " + "INNER JOIN account_journal j ON s.journal_id = j.id " + "INNER JOIN res_company co ON j.company_id = co.id " + "LEFT OUTER JOIN res_currency jcu ON j.currency_id = jcu.id " + "LEFT OUTER JOIN res_currency ccu ON co.currency_id = ccu.id " + "INNER JOIN " + " (SELECT journal_id, max(date) AS max_date " + " FROM account_bank_statement " + " WHERE date <= %s GROUP BY journal_id) d " + " ON (s.journal_id = d.journal_id AND s.date = d.max_date) " + "WHERE s.journal_id IN %s " + "ORDER BY j_curr_id, j.code", + (data['date_balance'], tuple(journal_ids))) + lines = self.env.cr.dictfetchall() + currency_ids = set([l['j_curr_id'] for l in lines]) + currencies = self.env['res.currency'].browse(currency_ids) + currency_dict = {c.id: c for c in currencies} + [l.update({'currency': currency_dict[l['j_curr_id']]}) for l in lines] + totals = [] + for currency in currencies: + lines_currency = [x for x in lines if x['currency'] == currency] + total_amount = reduce( + lambda x, y: x + y, + [x['s_balance'] for x in lines_currency]) + totals.append({ + 'currency': currency, + 'total_amount': total_amount, + }) + if not lines: + raise UserError(_('No records found for your selection!')) + + report_date = fields.Datetime.context_timestamp( + self.env.user, datetime.now()).strftime('%Y-%m-%d %H:%M') + + return { + 'lines': lines, + 'totals': totals, + 'date_balance': data['date_balance'], + 'report_date': report_date, + } diff --git a/account_bank_statement_advanced/report/statement_balance_report.xml b/account_bank_statement_advanced/report/statement_balance_report.xml new file mode 100644 index 00000000..c07f1326 --- /dev/null +++ b/account_bank_statement_advanced/report/statement_balance_report.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/account_bank_statement_advanced/security/account_security.xml b/account_bank_statement_advanced/security/account_security.xml new file mode 100644 index 00000000..e32e70ce --- /dev/null +++ b/account_bank_statement_advanced/security/account_security.xml @@ -0,0 +1,13 @@ + + + + + + account.bank.statement.line.global model company rule + + + ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + + diff --git a/account_bank_statement_advanced/security/ir.model.access.csv b/account_bank_statement_advanced/security/ir.model.access.csv new file mode 100644 index 00000000..8f4c80ce --- /dev/null +++ b/account_bank_statement_advanced/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/account_bank_statement_advanced/static/description/icon.png b/account_bank_statement_advanced/static/description/icon.png new file mode 100644 index 00000000..889d1294 Binary files /dev/null and b/account_bank_statement_advanced/static/description/icon.png differ diff --git a/account_bank_statement_advanced/static/src/js/reconciliation_renderer.js b/account_bank_statement_advanced/static/src/js/reconciliation_renderer.js new file mode 100644 index 00000000..77b65f74 --- /dev/null +++ b/account_bank_statement_advanced/static/src/js/reconciliation_renderer.js @@ -0,0 +1,22 @@ +/* +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +*/ +odoo.define('account_bank_statement_advanced.ReconciliationRenderer', function (require) { + "use strict"; + + var ReconciliationRenderer = require('account.ReconciliationRenderer'); + + ReconciliationRenderer.LineRenderer.include({ + + _makePartnerRecord: function () { + var self = this; + return $.when(this._super.apply(this, arguments)).then(function (result) { + self.model.localData[result].fieldsInfo.default.partner_id.domain = [["parent_id", "=", false]]; + return result; + }); + }, + + }); + +}); diff --git a/account_bank_statement_advanced/views/account_bank_statement.xml b/account_bank_statement_advanced/views/account_bank_statement.xml new file mode 100644 index 00000000..614848b1 --- /dev/null +++ b/account_bank_statement_advanced/views/account_bank_statement.xml @@ -0,0 +1,103 @@ + + + + + account.bank.statement.form + account.bank.statement + + + + + + + + account.bank.statement.form + account.bank.statement + + + + + + + + amount and not journal_entry_ids + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
diff --git a/account_bank_statement_advanced/views/account_bank_statement_line.xml b/account_bank_statement_advanced/views/account_bank_statement_line.xml new file mode 100644 index 00000000..ebca24c9 --- /dev/null +++ b/account_bank_statement_advanced/views/account_bank_statement_line.xml @@ -0,0 +1,133 @@ + + + + + bank.statement.line.list + account.bank.statement.line + + + + false + amount and not journal_entry_ids + statement_date desc, sequence, id + + + + + + + + + + + + Total Amount + + + + + + + + + bank.statement.line.form + account.bank.statement.line + + +
+ false + false +
+ + 1 + + +
+
+
+ + {'readonly': [('state', '=', 'confirm')]} + + + + + + + + + + + + + + + + + + + + + +
+ + + account.bank.statement.line.search + account.bank.statement.line + + + + ['|', ('name', 'ilike', self), ('ref', 'ilike', self)] + Bank Transaction + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + Bank Transactions + + + + + +
diff --git a/account_bank_statement_advanced/views/account_bank_statement_line_global.xml b/account_bank_statement_advanced/views/account_bank_statement_line_global.xml new file mode 100644 index 00000000..fa81770c --- /dev/null +++ b/account_bank_statement_advanced/views/account_bank_statement_line_global.xml @@ -0,0 +1,37 @@ + + + + + + account.bank.statement.line.global.form + account.bank.statement.line.global + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
diff --git a/account_bank_statement_advanced/views/assets_backend.xml b/account_bank_statement_advanced/views/assets_backend.xml new file mode 100644 index 00000000..f8961dc4 --- /dev/null +++ b/account_bank_statement_advanced/views/assets_backend.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/account_bank_statement_advanced/views/statement_balance_report.xml b/account_bank_statement_advanced/views/statement_balance_report.xml new file mode 100644 index 00000000..f7a3408c --- /dev/null +++ b/account_bank_statement_advanced/views/statement_balance_report.xml @@ -0,0 +1,99 @@ + + + + + + diff --git a/account_bank_statement_advanced/wizard/__init__.py b/account_bank_statement_advanced/wizard/__init__.py new file mode 100644 index 00000000..268bc01d --- /dev/null +++ b/account_bank_statement_advanced/wizard/__init__.py @@ -0,0 +1,2 @@ +from . import bank_statement_balance_print +from . import bank_statement_automatic_reconcile_result_view diff --git a/account_bank_statement_advanced/wizard/bank_statement_automatic_reconcile_result_view.py b/account_bank_statement_advanced/wizard/bank_statement_automatic_reconcile_result_view.py new file mode 100644 index 00000000..a5476a60 --- /dev/null +++ b/account_bank_statement_advanced/wizard/bank_statement_automatic_reconcile_result_view.py @@ -0,0 +1,15 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class BankStatementAutomaticReconcileResultView(models.TransientModel): + """ + Transient Model to display Automatic Reconcile results + """ + _name = 'bank.statement.automatic.reconcile.result.view' + + note = fields.Text( + string='Notes', readonly=True, + default=lambda self: self._context.get('note')) diff --git a/account_bank_statement_advanced/wizard/bank_statement_automatic_reconcile_result_view.xml b/account_bank_statement_advanced/wizard/bank_statement_automatic_reconcile_result_view.xml new file mode 100644 index 00000000..b8d9c3c8 --- /dev/null +++ b/account_bank_statement_advanced/wizard/bank_statement_automatic_reconcile_result_view.xml @@ -0,0 +1,18 @@ + + + + + bank.statement.automatic.reconcile.result.view.form + bank.statement.automatic.reconcile.result.view + +
+ + +
+
+ +
+
+ +
diff --git a/account_bank_statement_advanced/wizard/bank_statement_balance_print.py b/account_bank_statement_advanced/wizard/bank_statement_balance_print.py new file mode 100644 index 00000000..651ba2ff --- /dev/null +++ b/account_bank_statement_advanced/wizard/bank_statement_balance_print.py @@ -0,0 +1,28 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class BankStatementBalancePrint(models.TransientModel): + _name = 'bank.statement.balance.print' + _description = 'Bank Statement Balances Report' + + journal_ids = fields.Many2many( + comodel_name='account.journal', + string='Financial Journal(s)', + domain=[('type', '=', 'bank')], + help="Select here the Financial Journal(s) you want to include " + "in your Bank Statement Balances Report.") + date_balance = fields.Date( + string='Date', required=True, default=fields.Datetime.now) + + @api.multi + def balance_print(self): + data = { + 'journal_ids': self.journal_ids.ids, + 'date_balance': self.date_balance, + } + return self.env.ref( + 'account_bank_statement_advanced.statement_balance_report_action' + ).report_action(self, data=data) diff --git a/account_bank_statement_advanced/wizard/bank_statement_balance_print.xml b/account_bank_statement_advanced/wizard/bank_statement_balance_print.xml new file mode 100644 index 00000000..4d996ad4 --- /dev/null +++ b/account_bank_statement_advanced/wizard/bank_statement_balance_print.xml @@ -0,0 +1,39 @@ + + + + + Bank Statement Balances Report + bank.statement.balance.print + +
+ + + + + + +
+
+
+
+
+ + + Bank Statement Balances Report + ir.actions.act_window + bank.statement.balance.print + form + form + new + + + report + + +
diff --git a/account_bank_statement_import_helper/README.rst b/account_bank_statement_import_helper/README.rst new file mode 100644 index 00000000..d7bf07d8 --- /dev/null +++ b/account_bank_statement_import_helper/README.rst @@ -0,0 +1,54 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +============================ +Bank statement import helper +============================ + +This module enhances the standard bank statement import as follows: + +- support for local bank accounts as subset of IBAN accounts. + +Installation +============ + +There is no specific installation procedure for this module. + +Configuration and Usage +======================= + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/174/11.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Luc De Meyer + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/account_bank_statement_import_helper/__init__.py b/account_bank_statement_import_helper/__init__.py new file mode 100644 index 00000000..40272379 --- /dev/null +++ b/account_bank_statement_import_helper/__init__.py @@ -0,0 +1 @@ +from . import wizard diff --git a/account_bank_statement_import_helper/__manifest__.py b/account_bank_statement_import_helper/__manifest__.py new file mode 100644 index 00000000..87a71128 --- /dev/null +++ b/account_bank_statement_import_helper/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Bank statement import helper', + 'version': '11.0.1.0.0', + 'category': 'Accounting & Finance', + 'summary': """ + Generic bank statement import improvements. + """, + 'author': 'Noviat,' + 'Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/bank-statement-import', + 'depends': [ + 'account_bank_statement_import', + ], + 'installable': True, + 'license': 'AGPL-3', +} diff --git a/account_bank_statement_import_helper/static/description/icon.png b/account_bank_statement_import_helper/static/description/icon.png new file mode 100644 index 00000000..3a0328b5 Binary files /dev/null and b/account_bank_statement_import_helper/static/description/icon.png differ diff --git a/account_bank_statement_import_helper/wizard/__init__.py b/account_bank_statement_import_helper/wizard/__init__.py new file mode 100644 index 00000000..7dafcd16 --- /dev/null +++ b/account_bank_statement_import_helper/wizard/__init__.py @@ -0,0 +1 @@ +from . import account_bank_statement_import diff --git a/account_bank_statement_import_helper/wizard/account_bank_statement_import.py b/account_bank_statement_import_helper/wizard/account_bank_statement_import.py new file mode 100644 index 00000000..e2ccd93f --- /dev/null +++ b/account_bank_statement_import_helper/wizard/account_bank_statement_import.py @@ -0,0 +1,34 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models +from odoo.addons.base.res.res_bank import sanitize_account_number + + +class AccountBankStatementImport(models.TransientModel): + """ + add support for local bank account numbers which are in several + countries a subset of the IBAN + """ + _inherit = 'account.bank.statement.import' + + def _find_additional_data(self, currency_code, account_number): + currency, journal = super()._find_additional_data( + currency_code, account_number) + if not journal: + sanitized_account_number = sanitize_account_number(account_number) + fin_journals = self.env['account.journal'].search( + [('type', '=', 'bank')]) + fin_journal = fin_journals.filtered( + lambda r: sanitized_account_number + in r.bank_account_id.sanitized_acc_number) + if len(fin_journal) == 1: + journal = fin_journal + return currency, journal + + def _check_journal_bank_account(self, journal, account_number): + check = super()._check_journal_bank_account(journal, account_number) + if not check: + check = account_number \ + in journal.bank_account_id.sanitized_acc_number + return check diff --git a/l10n_be_coda_advanced/README.rst b/l10n_be_coda_advanced/README.rst new file mode 100644 index 00000000..5b222c59 --- /dev/null +++ b/l10n_be_coda_advanced/README.rst @@ -0,0 +1,110 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +===================================== +Module to import CODA bank statements +===================================== + + +Features +-------- + + * CODA v1 support. + * CODA v2.x 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. + * Multi-language CODA parsing, parsing configuration data provided for EN, NL, FR. + * Support for 'globalisation' of transactions (performed by the customer or the bank). + A globalised transaction is presented in the bank statement with its global level (or levels) + showing the total amount. Also the individual transactions are available for further bank statement + processing. + * All information supplied in the CODA file is presented in the bank statement. + This includes also non-transactional data such as 'free communication' supplied + by the bank via the CODA File. + Transaction specific information can be found in the 'Notes' field of the transaction. + Generic communication is available via the 'CODA Notes' field of the Bank Statement. + * Support for zip files containing multiple CODA files + +Reconciliation logic +-------------------- + + 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 CODA Bank Accounts defined as 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) Outgoing payments are matched with the corresponding invoice/refund via the + SEPA EndToEndReference field (requires **l10n_be_coda_pain** module). + + 3) As a next 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). + In case of such a match, the transaction will be reconciled automatically + (full or partial). + + 4) When a 'Free Format Communication' is used, a lookup is performed on + outstanding invoices. Reconciliation will take place when all of the following + conditions are met: + + - exact match of transaction amount + - invoice/refund number (case insensitive) or structured communication is + present within the Free Format Communication string (substring match). + + 5) If the Sale Order number is found in the 'Free Format Communication' the + matching will be performed with the Sale Order Invoices + (requires **account_coda_sale** module). + + 6) If no matching accounting entry is found via the originating business transactions + (Payment Order, Invoice, Sales Order) a lookup is performed directly on + the accounting entries. + Reconciliation will take place when all of the following + conditions are met: + + - exact match of transaction amount + - the payment communication needs to be a subset of the accounting entry 'name' field + + 7) When the previous steps do not result in a match, the transaction counterparty + is located via the Bank Account Number configured on the OpenERP Customer + and Supplier records. + + 8) Partner records are updated automatically with the partner's bank account information + supplied in the CODA file. + + 9) After the previous steps, the Account Mapping Rules engine determines the + general account to assign for the transaction. + Also the required action is defined such as the automatic creation of + accounting moves with resulting account and tax case. + +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 specifications. +If required, you can manually adjust the descriptions via the CODA configuration menu. + +Installation instructions +------------------------- + + 1) This module is **NOT** compatible with the **l10n_be_coda** module. + + 2) We recommend to run this module in combination with the following Noviat modules: + + - l10n_be_coda_pain + - l10n_be_coda_sale + + You can download these from the apps.odoo.com. + + +Assistance +---------- + +Contact info@noviat.com for help with the implementation of Advanced CODA processing in Odoo. diff --git a/l10n_be_coda_advanced/__init__.py b/l10n_be_coda_advanced/__init__.py new file mode 100644 index 00000000..9b429614 --- /dev/null +++ b/l10n_be_coda_advanced/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/l10n_be_coda_advanced/__manifest__.py b/l10n_be_coda_advanced/__manifest__.py new file mode 100644 index 00000000..3effdc3c --- /dev/null +++ b/l10n_be_coda_advanced/__manifest__.py @@ -0,0 +1,40 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Belgium - Advanced CODA statements Import', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'website': 'http://www.noviat.com', + 'category': 'Accounting & Finance', + 'complexity': 'normal', + 'summary': 'Belgium - Advanced CODA statements Import', + 'depends': [ + 'base_iban', + 'l10n_be_invoice_bba_supplier', + 'l10n_be_partner_bank', + 'account_bank_statement_advanced', + 'account_bank_statement_import_helper', + ], + 'excludes': ['l10n_be_coda'], + 'data': [ + 'security/ir.model.access.csv', + 'security/account_security.xml', + 'data/account_coda_trans_type.xml', + 'data/account_coda_trans_code.xml', + 'data/account_coda_trans_category.xml', + 'data/account_coda_comm_type.xml', + 'views/account_bank_statement.xml', + 'views/account_bank_statement_line.xml', + 'views/account_coda.xml', + 'views/account_coda_comm_type.xml', + 'views/account_coda_trans_category.xml', + 'views/account_coda_trans_code.xml', + 'views/account_coda_trans_type.xml', + 'views/coda_bank_account.xml', + 'views/menuitem.xml', + 'wizard/account_coda_import.xml', + ], + 'installable': True, +} diff --git a/l10n_be_coda_advanced/data/account_coda_comm_type.xml b/l10n_be_coda_advanced/data/account_coda_comm_type.xml new file mode 100644 index 00000000..8571dcd4 --- /dev/null +++ b/l10n_be_coda_advanced/data/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/l10n_be_coda_advanced/data/account_coda_trans_category.xml b/l10n_be_coda_advanced/data/account_coda_trans_category.xml new file mode 100644 index 00000000..b1dac399 --- /dev/null +++ b/l10n_be_coda_advanced/data/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/l10n_be_coda_advanced/data/account_coda_trans_code.xml b/l10n_be_coda_advanced/data/account_coda_trans_code.xml new file mode 100644 index 00000000..5efbd375 --- /dev/null +++ b/l10n_be_coda_advanced/data/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/l10n_be_coda_advanced/data/account_coda_trans_type.xml b/l10n_be_coda_advanced/data/account_coda_trans_type.xml new file mode 100644 index 00000000..42a21783 --- /dev/null +++ b/l10n_be_coda_advanced/data/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/l10n_be_coda_advanced/i18n/fr.po b/l10n_be_coda_advanced/i18n/fr.po new file mode 100644 index 00000000..389f4a4a --- /dev/null +++ b/l10n_be_coda_advanced/i18n/fr.po @@ -0,0 +1,3771 @@ +# French translation of Odoo 10.0. +# This file contains the translation of the following modules: +# * l10n_be_coda_advanced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo 10.0\n" +"Report-Msgid-Bugs-To: support@noviat.com\n" +"POT-Creation-Date: 2018-11-26 21:14:24.963000\n" +"PO-Revision-Date: 2018-11-26 21:14:24.963000\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: l10n_be_coda_advanced +#: view:account.bank.statement:0 +msgid "Bank Statements" +msgstr "Relevés" + +#. module: l10n_be_coda_advanced +#: view:account.bank.statement:0 +msgid "CODA Notes" +msgstr "Notes CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_bank_statement_coda_id +msgid "CODA Data File" +msgstr "Fichier CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_bank_statement_coda_note +msgid "CODA Notes" +msgstr "Notes CODA" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "CODA Files" +msgstr "Fichiers CODA" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "CODA File" +msgstr "Fichier CODA" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "Additional Information" +msgstr "Informations additionelles" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "Bank Statements" +msgstr "Relevés" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "CODA Statements" +msgstr "Relevés de compte CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_coda_creation_date +msgid "CODA Creation Date" +msgstr "Date de création du CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_coda_data +msgid "CODA File" +msgstr "Fichier CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_date +msgid "Import Date" +msgstr "Date de l'import" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_name +msgid "CODA Filename" +msgstr "Nom du fichier CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_note +msgid "Import Log" +msgstr "Import log" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_statement_ids +msgid "Generated CODA Bank Statements" +msgstr "Relevés CODA générés" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_user_id +msgid "User" +msgstr "Utilisateur" + +#. module: l10n_be_coda_advanced +#: view:account.coda.comm.type:0 +msgid "CODA Structured Communication Types" +msgstr "Opérations CODA - Communications structurées" + +#. module: l10n_be_coda_advanced +#: view:account.coda.comm.type:0 +msgid "CODA Structured Communication Type" +msgstr "Opérations CODA - Communication structurée" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_comm_type_code +msgid "Structured Communication Type" +msgstr "Type de communication structurée" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_comm_type_description +msgid "Description" +msgstr "Description" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.category:0 +msgid "CODA Transaction Categories" +msgstr "Opérations CODA - Rubriques" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.category:0 +msgid "CODA Transaction Category" +msgstr "Opérations CODA - Rubrique" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_category_category +msgid "Transaction Category" +msgstr "Opérations CODA - Rubrique" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_category_description +msgid "Description" +msgstr "Description" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.code:0 +msgid "CODA Transaction Codes" +msgstr "Opérations CODA - Codes" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.code:0 +msgid "CODA Transaction Code" +msgstr "Opérations CODA - Code" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_code_comment +msgid "Comment" +msgstr "Commentaire" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_code_description +msgid "Description" +msgstr "Description" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_code_parent_id +msgid "Family" +msgstr "Famille" + +#. module: l10n_be_coda_advanced +#: selection:account.coda.trans.code,type:0 +msgid "Transaction Code" +msgstr "Opérations CODA - Code" + +#. module: l10n_be_coda_advanced +#: selection:account.coda.trans.code,type:0 +msgid "Transaction Family" +msgstr "Opérations CODA - Famille" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.type:0 +msgid "CODA Transaction Types" +msgstr "Opérations CODA - Types" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.type:0 +msgid "CODA Transaction Type" +msgstr "Opérations CODA - Type" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_type_description +msgid "Description" +msgstr "Description" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_type_type +msgid "Transaction Type" +msgstr "Opérations CODA - Type" + +#. module: l10n_be_coda_advanced +#: view:coda.bank.account:0 +msgid "CODA Bank Account Configuration" +msgstr "Configuration compte bancaire CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_name +msgid "Name" +msgstr "Nom" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_description1 +msgid "Primary Account Description" +msgstr "Libellé du compte" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_description2 +msgid "Secondary Account Description" +msgstr "Libellé alternatif du compte" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_journal_id +msgid "Journal" +msgstr "Journal" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_bank_id +msgid "Bank Account" +msgstr "Compte bancaire" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_currency_id +msgid "Currency" +msgstr "Devises" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_coda_st_naming +msgid "Bank Statement Naming Policy" +msgstr "Nomenclature relevé de compte" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_transfer_account +msgid "Internal Funds Transfer Account" +msgstr "Compte virements internes" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_mapping_ids +msgid "Account Mapping Rules" +msgstr "Account Mapping Rules" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_active +msgid "Active" +msgstr "Actif" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_company_id +msgid "Company" +msgstr "Nom de la société" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_state +msgid "Type" +msgstr "Type" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_import_note +msgid "Log" +msgstr "Log" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Import CODA File" +msgstr "Importer le fichier CODA" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Select Details" +msgstr "Sélectionnez les détailles" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Select your file :" +msgstr "Sélectionnez votre fichier:" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Import CODA File" +msgstr "Importer le fichier CODA" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Cancel" +msgstr "Annuler" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Import" +msgstr "Importer" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Results :" +msgstr "Résultat :" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Close" +msgstr "Clôturer" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "View Bank Statement(s)" +msgstr "Voir les relevés de compte" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "View CODA Bank Statement(s)" +msgstr "Voir les relevés CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_import_coda_data +msgid "CODA (Zip) File " +msgstr "Fichier CODA (Zip)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:10 +msgid "Bank Statements" +msgstr "Relevés" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:11 +msgid "CODA Bank Statements" +msgstr "Relevés de compte CODA" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:12 +msgid "Extra information" +msgstr "Information additionelle" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:13 +msgid "The CODA File has been processed by" +msgstr "Le fichier CODA est traité par" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:14 +msgid "Number of statements processed" +msgstr "Nombre de relevés traités" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:14 +msgid "Number of errors" +msgstr "Nombre d'erreurs" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:15 +msgid "\n\nBank Journal: %s\nCODA Version: %s\nCODA Sequence Number: %s\nPaper Statement Sequence Number: %s\nBank Account: %s\nAccount Holder Name: %s\nDate: %s, Starting Balance: %.2f, Ending Balance: %.2f%s" +msgstr "\n\nJournal financier: %s\nVersion CODA: %s\nNuméro de séquence du CODA: %s\nNuméro de séquence de l'extrait de compte papier: %s\nCompte bancaire: %s\nNom du titulaire du compte: %s\nDate: %s, Ancien solde: %.2f, Nouveau solde: %.2f%s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:16 +msgid "Transaction Type: %s - %s\nTransaction Family: %s - %s\nTransaction Code: %s - %s\nTransaction Category: %s - %s\nStructured Communication Type: %s - %s\nCommunication: %s" +msgstr "Type de l'opération: %s - %s\nFamille de l'opération: %s - %s\nCode de l'opération: %s - %s\nRubrique de l'opération: %s - %s\nType de communication structurée: %s - %s\nCommunication: %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:17 +msgid "Partner Name: %s \nPartner Account Number: %s\nTransaction Type: %s - %s\nTransaction Family: %s - %s\nTransaction Code: %s - %s\nTransaction Category: %s - %s\nStructured Communication Type: %s - %s\nPayment Reference: %s\nCommunication: %s" +msgstr "Nom du partennaire: %s \nNuméro de compte en banque du partennaire: %s\nType de l'opération: %s - %s\nFamille de l'opération: %s - %s\nCode de l'opération: %s - %s\nRubrique de l'opération: %s - %s\nType de communication structurée: %s - %s\nRéférence paiement: %s\nCommunication: %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:18 +msgid "Free Communication:\n %s" +msgstr "Message Libre:\n %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:20 +msgid "Payment with ISO 11649 structured format communication" +msgstr "Paiement avec ISO 11649 communication structurée" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:21 +msgid "Payment with a structured format communication applying the ISO standard 11649" +msgstr "Communication structurée d’un paiement conforme au standard ISO 11649" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:23 +msgid "Number (e.g. of the cheque, of the card, etc.)" +msgstr "numéro (par ex. du chèque, de la carte, etc.)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:26 +msgid "Gross amount in the currency of the account" +msgstr "Montant brut dans la devise du compte" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:27 +msgid "Gross amount in the original currency" +msgstr "Montant brut dans la devise initiale" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:28 +msgid "Rate" +msgstr "Cours de change" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:29 +msgid "Currency" +msgstr "Devise" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:30 +msgid "Structured format communication" +msgstr "Communication structurée" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:31 +msgid "Country code of the principal" +msgstr "Code-pays du donneur d'ordre" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:32 +msgid "Equivalent in EUR" +msgstr "Contre-valeur en EUR" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:34 +msgid "VAT, withholding tax on income, commission, etc." +msgstr "TVA, précompte mobilier, commission, etc." + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:35 +msgid "Equivalent in the currency of the account" +msgstr "Contre-valeur dans la devise du compte" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:36 +msgid "Amount on which % is calculated" +msgstr "Montant sur lequel le % est appliqué" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:37 +msgid "Percent" +msgstr "Taux" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:38 +msgid "Minimum applicable" +msgstr "Minimum applicable" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:39 +msgid "Minimum not applicable" +msgstr "Minimum non applicable" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:41 +msgid "Direct debit – DOM’80" +msgstr "Domiciliations – DOM'80" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:42 +msgid "Direct Debit Number" +msgstr "Numéro domiciliation" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:43 +msgid "Central (Pivot) Date" +msgstr "Date pivot" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:44 +msgid "Communication Zone" +msgstr "Zone de communication" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:45 +msgid "Paid or reason for refusal" +msgstr "Payé ou motif du refus" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:46 +msgid "Creditor's Number" +msgstr "Numéro du créancier" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:47 +msgid "paid" +msgstr "payé" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:48 +msgid "direct debit cancelled or nonexistent" +msgstr "domiciliation révoquée ou inexistante" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:49 +msgid "refusal - other reason" +msgstr "refus - autre raison" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:50 +msgid "payer disagrees" +msgstr "payeur pas d'accord" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:51 +msgid "direct debit number linked to another identification number of the creditor" +msgstr "numéro de domiciliation lié à un autre numéro d'identification créancier" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:53 +msgid "Closing" +msgstr "Clôture" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:54 +msgid "Closing, period from %s to %s" +msgstr "Clôture, période du %s à %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:55 +msgid "Interest rates, calculation basis" +msgstr "Chiffres taux, base de calcul" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:56 +msgid "Interest" +msgstr "Taux" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:58 +msgid "ATM/POS debit" +msgstr "Débit ATM/POS" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:59 +msgid "Card Number" +msgstr "Numéro de la carte" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:60 +msgid "Card Scheme" +msgstr "Schéma de carte" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:61 +msgid "Terminal Number" +msgstr "Numéro du terminal" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:62 +msgid "First Transaction Sequence Number" +msgstr "Numéro de séquence première opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:63 +msgid "Last Transaction Sequence Number" +msgstr "Numéro de séquence dernière opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:64 +msgid "Transaction Sequence Number" +msgstr "Numéro de séquence opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:65 +msgid "Date of first transaction" +msgstr "Date première opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:66 +msgid "Date of last transaction" +msgstr "Date dernière opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:67 +msgid "Time" +msgstr "Temps de l'opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:68 +msgid "Transaction Type" +msgstr "Type d'opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:69 +msgid "Terminal Identification" +msgstr "Identification du terminal" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:70 +msgid "Original Amount" +msgstr "Montant initial" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:71 +msgid "Volume" +msgstr "Volume" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:72 +msgid "Product Code" +msgstr "Code produit" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:73 +msgid "Unit Price" +msgstr "Prix unitaire" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:74 +msgid "Private" +msgstr "Privé" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:75 +msgid "Other" +msgstr "Autres" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:77 +msgid "Withdrawal" +msgstr "Retrait" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:78 +msgid "Proton loading" +msgstr "Chargement Proton" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:79 +msgid "Reimbursement Proton balance" +msgstr "Restitution solde Proton" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:80 +msgid "Reversal of purchases" +msgstr "Contre-passation achats" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:81 +msgid "Distribution sector" +msgstr "Secteur de distribution" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:82 +msgid "Teledata" +msgstr "Teledata" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:83 +msgid "Fuel" +msgstr "Énergie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:85 +msgid "POS credit - globalisation" +msgstr "Crédit POS – globalisation" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:86 +msgid "POS credit - individual transaction" +msgstr "Crédit POS – opération individuelle" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:87 +msgid "POS Number" +msgstr "Numéro POS" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:88 +msgid "Period Number" +msgstr "Numéro de la période" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:89 +msgid "Transaction Reference" +msgstr "Référence de l'opération" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:91 +msgid "Terminal cash deposit" +msgstr "Versement au terminal" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:92 +msgid "Validation Date" +msgstr "Date de validation" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:93 +msgid "Validation Sequence Number" +msgstr "Numéro de séquence de la validation" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:94 +msgid "Amount (given by the customer)" +msgstr "Montant initial" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:95 +msgid "Conformity Code" +msgstr "Code de conformité" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:96 +msgid "Message" +msgstr "Communication" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:98 +msgid "guarantee without fixed term" +msgstr "cautionnement sans échéance fixe" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:99 +msgid "Starting Date" +msgstr "Date de prise d'effet" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:100 +msgid "Maturity Date" +msgstr "Date d'échéance" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:101 +msgid "Basic Amount" +msgstr "Montant de base" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:102 +msgid "Percentage" +msgstr "Pourcentage" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:103 +msgid "Term in days" +msgstr "Durée en jours" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:104 +msgid "Guarantee Number" +msgstr "Numéro de cautionnement" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:106 +msgid "Settlement credit cards" +msgstr "Décompte cartes de crédit" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:107 +msgid "Issuing Institution" +msgstr "Établissement émetteur" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:108 +msgid "Invoice Number" +msgstr "Numéro de facture" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:109 +msgid "Identification Number" +msgstr "Numéro d'identification" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:110 +msgid "Date" +msgstr "Date" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:112 +msgid "Credit" +msgstr "Crédit" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:113 +msgid "Credit Account Number" +msgstr "Numéro de compte du crédit" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:114 +msgid "Old Balance" +msgstr "Ancien solde" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:115 +msgid "New Balance" +msgstr "Nouveau solde" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:116 +msgid "Amount" +msgstr "Montant" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:117 +msgid "End Date" +msgstr "Échéance" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:118 +msgid "Nominal Interest Rate or Rate of Charge" +msgstr "Taux d'intérêt nominal ou taux de chargement" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:120 +msgid "European direct debit (SEPA)" +msgstr "Domiciliation européenne (direct debit SEPA)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:121 +msgid "Settlement Date" +msgstr "Date de décompte" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:122 +msgid "Direct Debit Type" +msgstr "Type de domiciliation" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:123 +msgid "Direct Debit Scheme" +msgstr "Plan de domiciliation" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:124 +msgid "Creditor's Identification Code" +msgstr "Code créancier" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:125 +msgid "Mandate Reference" +msgstr "Mandat référence" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:126 +msgid "Communication" +msgstr "Communication" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:127 +msgid "R transaction Type" +msgstr "Type de transaction R" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:128 +msgid "Reason" +msgstr "Raison" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:129 +msgid "unspecified" +msgstr "non précisé" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:130 +msgid "recurrent" +msgstr "récurrent" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:131 +msgid "one-off" +msgstr "one-off" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:132 +msgid "1-st (recurrent)" +msgstr "1-st (recurrent)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:133 +msgid "last (recurrent)" +msgstr "last (recurrent)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:134 +msgid "technical problem" +msgstr "problème technique" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:135 +msgid "refusal - reason not specified" +msgstr "refus - raison non précisé" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:136 +msgid "debtor disagrees" +msgstr "débiteur pas d'accord" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:137 +msgid "debtor's account problem" +msgstr "problème du compte débiteur" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:138 +msgid "reject" +msgstr "inexécutable (reject)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:139 +msgid "return" +msgstr "impayé (return)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:140 +msgid "refund" +msgstr "rembousement (refund)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:141 +msgid "reversal" +msgstr "rectification (reversal)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:142 +msgid "cancellation" +msgstr "annulation (cancellation)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:144 +msgid "Name" +msgstr "Nom" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:145 +msgid "Street" +msgstr "Rue" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:146 +msgid "Locality" +msgstr "Localité" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:147 +msgid "Identification Code" +msgstr "Code d’identification" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:149 +msgid "Description of the detail" +msgstr "Libellé du détail" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:150 +msgid "Category" +msgstr "Rubrique" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:152 +msgid "Number of notes/coins" +msgstr "Nombre de billets/pièces" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:153 +msgid "Note/coin denomination" +msgstr "Dénomination du billet/pièce" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:154 +msgid "Total amount" +msgstr "Montant total" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.coda_bank_statement_action_goto_account_coda +msgid "CODA Data File" +msgstr "Fichier CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.coda_bank_account_action +msgid "CODA Bank Account Configuration" +msgstr "Configuration compte bancaire CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_comm_type_action +msgid "CODA Structured Communication Types" +msgstr "Opérations CODA - Communications structurées" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_trans_category_action +msgid "CODA Transaction Categories" +msgstr "Opérations CODA - Rubriques" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_trans_code_action +msgid "CODA Transaction Codes" +msgstr "Opérations CODA - Codes" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_trans_type_action +msgid "CODA Transaction Types" +msgstr "Opérations CODA - Types" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.coda_bank_statement_action +msgid "CODA Bank Statements" +msgstr "Relevés CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_action +msgid "Imported CODA Files" +msgstr "Fichiers CODA importés" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.wizard,name:l10n_be_coda_advanced.account_coda_import_action_cbs +msgid "Import CODA File" +msgstr "Importer le fichier CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.wizard,name:l10n_be_coda_advanced.wizard_account_coda_action_ac +msgid "Import CODA File" +msgstr "Importer le fichier CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.menu_coda_processing +msgid "CODA Processing" +msgstr "Traitement CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_import_menu +msgid "Import CODA Files" +msgstr "Importer les fichiers CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.coda_bank_account_menu +msgid "CODA Bank Account Configuration" +msgstr "Configuration compte bancaire CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_comm_type_menu +msgid "CODA Structured Communication Types" +msgstr "Opérations CODA - Communications structurées" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_trans_category_menu +msgid "CODA Transaction Categories" +msgstr "Opérations CODA - Rubriques" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_trans_code_menu +msgid "CODA Transaction Codes" +msgstr "Opérations CODA - Codes" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_trans_type_menu +msgid "CODA Transaction Types" +msgstr "Opérations CODA - Types" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.coda_bank_statement_menu +msgid "CODA Bank Statements" +msgstr "Relevés CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_menu +msgid "Imported CODA Files" +msgstr "Fichiers CODA importés" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.menu_coda_configuration +msgid "CODA Configuration" +msgstr "Configuration CODA" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_0 +msgid "Simple amount without detailed data; e.g. : an individual credit transfer (free of charges)." +msgstr "Montant simple sans détails, par ex. : un virement individuel (sans frais)." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_1 +msgid "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)." +msgstr "Montant globalisé par le client, par ex. un fichier avec paiements de salaire ou de fournisseurs ou un fichier avec recouvrements pour lesquels le client est débité ou crédité d'un montant unique. Ce type peut, en principe, également être utilisé s'il n'y a pas de détails (type 5) qui suivent." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_5 +msgid "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)." +msgstr "Détails de 1. De manière standard, les détails ne sont pas rendus. Le client peut toutefois choisir de recevoir les détails après l'enregistrement global (type 1) dans son fichier." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_2 +msgid "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." +msgstr "Montant globalisé par la banque, par ex. : le montant total d'une série de virements à communication structurée. Ce type peut, en principe, également être utilisé s'il n'y a pas de détails (type 6 ou 7) qui suivent." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_6 +msgid "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." +msgstr "Détails de 2. Montant simple sans détails. Normalement, ces détails suivent le type 2. Le client peut choisir de recevoir ces détails dans un fichier distinct. On parle alors d'une "application distincte". Les enregistrements dans une application distincte conservent le type 6." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_7 +msgid "Detail of 2. Simple account with detailed data The records in a separate application keep type 7." +msgstr "Détails de 2. Montant simple avec détails. Les enregistrements dans une application distincte conservent le type 7." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_9 +msgid "Detail of 7. The records in a separate application keep type 9." +msgstr "Détails de 7. Les enregistrements dans une application distincte conservent le type 9." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_3 +msgid "Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers." +msgstr "Montant simple avec détails; par ex. coûts sur virements étrangers." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_8 +msgid "Detail of 3." +msgstr "Détails de 3." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_00 +msgid "Undefined transactions" +msgstr "Opérations non définies" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_00 +msgid "Undefined transaction" +msgstr "Opérations non codées" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_33 +msgid "Value correction" +msgstr "Rectification de valeur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_35 +msgid "Correction" +msgstr "Rectification" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_37 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_39 +msgid "Cancellation of a transaction" +msgstr "Annulation d'une opération" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_83 +msgid "Value correction" +msgstr "Rectification de valeur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_85 +msgid "Correction" +msgstr "Rectification" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_87 +msgid "Costs refunded" +msgstr "Restitution de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_89 +msgid "Cancellation of a transaction" +msgstr "Annulation d'une opération" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_01 +msgid "Domestic or local SEPA credit transfers" +msgstr "Virements nationaux/locaux – SEPA credit transfers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_01 +msgid "Individual transfer order" +msgstr "Virement simple" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_02 +msgid "Individual transfer order initiated by the bank" +msgstr "Virement simple initié par la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_03 +msgid "Standing order" +msgstr "Ordre permanent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_05 +msgid "Payment of wages, etc." +msgstr "Paiement salaire, etc." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_07 +msgid "Collective transfer" +msgstr "Virement collectif" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_09 +msgid "Your semi-standing order" +msgstr "Votre ordre semi-permanent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_11 +msgid "Your semi-standing order – payment to employees" +msgstr "Votre ordre semi-permanent - paiement travailleurs" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_13 +msgid "Transfer from your account" +msgstr "Virement de votre compte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_15 +msgid "Balance due insurance premium" +msgstr "Prime d'assurance solde restant dû" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_17 +msgid "Financial centralisation" +msgstr "Centralisation financière" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_37 +msgid "Costs" +msgstr "Coûts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_39 +msgid "Your issue circular cheque" +msgstr "Votre émission chèque circulaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_50 +msgid "Transfer in your favour" +msgstr "Virement en votre faveur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_51 +msgid "Transfer in your favour – initiated by the bank" +msgstr "Virement en votre faveur initié par la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_52 +msgid "Payment in your favour" +msgstr "Versement en votre faveur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_54 +msgid "Unexecutable transfer order" +msgstr "Virement non exécutable" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_60 +msgid "Non-presented circular cheque" +msgstr "Chèque circulaire non présenté" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_62 +msgid "Unpaid postal order" +msgstr "Assignation postale impayée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_64 +msgid "Transfer to your account" +msgstr "Virement à votre compte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_66 +msgid "Financial centralization" +msgstr "Centralisation financière" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_87 +msgid "Reimbursement of costs" +msgstr "Restitution des frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_03 +msgid "Cheques" +msgstr "Chèques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_01 +msgid "Payment of your cheque" +msgstr "Paiement de votre chèque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_03 +msgid "Your purchase by payment card" +msgstr "Votre achat avec carte de paiement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_05 +msgid "Payment of voucher" +msgstr "Paiement de bon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_07 +msgid "Definitely unpaid cheque" +msgstr "Chèque définitivement impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_09 +msgid "Unpaid voucher" +msgstr "Bon impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_11 +msgid "Department store cheque" +msgstr "Chèque magasin" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_13 +msgid "Eurocheque written out abroad" +msgstr "Eurochèque émis à l'étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_15 +msgid "Your purchase bank cheque" +msgstr "Confection chèque bancaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_17 +msgid "Your certified cheque" +msgstr "Votre chèque certifié" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_19 +msgid "Settlement of credit cards" +msgstr "Décompte cartes de crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_35 +msgid "Cash advance" +msgstr "Facilité de caisse" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_37 +msgid "Cheque-related costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_38 +msgid "Provisionally unpaid" +msgstr "Provisoirement impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_39 +msgid "Provisionally unpaid due to other reason than manual presentation" +msgstr "Provisoirement impayé pour une raison autre q'une présentation manuelle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_50 +msgid "Credit of a payment via terminal" +msgstr "Crédit d'un paiement via terminal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_52 +msgid "First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve" +msgstr "Premier crédit de chèques, bons, chèques repas, assignations postales, crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_56 +msgid "Non-presented certified cheques" +msgstr "Chèques certifiés non présentés" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_58 +msgid "Remittance of cheques, vouchers, etc. credit after collection" +msgstr "Remise de chèques, bons, etc. crédit après encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_60 +msgid "Reversal of voucher" +msgstr "Contre-passation d'un bon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_62 +msgid "Reversal of cheque" +msgstr "Contre-passation chèque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_63 +msgid "Second credit of unpaid cheque" +msgstr "Deuxième crédit d’un chèque impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_64 +msgid "Reversal of settlement of credit card" +msgstr "Contre-passation décompte cartes de crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_66 +msgid "Remittance of cheque by your branch - credit under usual reserve" +msgstr "Remise d'un chèque par votre succursale" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_68 +msgid "Credit of a payment via electronic purse" +msgstr "Crédit d'un paiement via portemonnaie électronique" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_87 +msgid "Reimbursement of cheque-related costs" +msgstr "Restitution des frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_04 +msgid "Cards" +msgstr "Cartes" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_01 +msgid "Loading a GSM card" +msgstr "Chargement carte GSM " + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_02 +msgid "Payment by means of a payment card within the Eurozone" +msgstr "Paiement par carte de débit dans l’euro zone" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_03 +msgid "Settlement credit cards" +msgstr "Décompte cartes de crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_04 +msgid "Cash withdrawal from an ATM" +msgstr "Retrait d’argent via guichet automatique" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_05 +msgid "Loading Proton" +msgstr "Chargement Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_06 +msgid "Payment with tank card" +msgstr "Paiement par carte essence" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_07 +msgid "Payment by GSM" +msgstr "Paiement par GSM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_08 +msgid "Payment by means of a payment card outside the Eurozone" +msgstr "Paiement par carte de débit en dehors de l’euro zone" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_37 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_50 +msgid "Credit after a payment at a terminal" +msgstr "Crédit d’un paiement via terminal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_51 +msgid "Unloading Proton" +msgstr "Déchargement Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_52 +msgid "Loading GSM cards" +msgstr "Chargement cartes GSM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_53 +msgid "Cash deposit at an ATM" +msgstr "Versement d’argent à un guichet automatique" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_55 +msgid "Income from payments by GSM" +msgstr "Réceptions paiements par GSM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_68 +msgid "Credit after Proton payments" +msgstr "Crédit de paiements via Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_87 +msgid "Reimbursement of costs" +msgstr "Restitution frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_05 +msgid "Direct debit" +msgstr "Domiciliations – Direct Debit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_01 +msgid "Payment" +msgstr "Paiement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_03 +msgid "Unpaid debt" +msgstr "Recouvrement impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_05 +msgid "Reimbursement" +msgstr "Restitution" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_37 +msgid "Costs" +msgstr "Coûts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_50 +msgid "Credit after collection" +msgstr "Crédit après encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_52 +msgid "Credit under usual reserve" +msgstr "Crédit sauf bonne fin" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_54 +msgid "Reimbursement" +msgstr "Remboursement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_56 +msgid "Unexecutable reimbursement" +msgstr "Remboursement inexécutable" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_58 +msgid "Reversal" +msgstr "contre-passation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_07 +msgid "Domestic commercial paper" +msgstr "Effets de commerce nationaux" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_01 +msgid "Payment commercial paper" +msgstr "Paiement effet de commerce" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_03 +msgid "Payment receipt card" +msgstr "Paiement carte-récépissé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_05 +msgid "Commercial paper claimed back" +msgstr "Effet demandé en retour" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_06 +msgid "Extension of maturity date" +msgstr "Prorogation d'échéance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_07 +msgid "Unpaid commercial paper" +msgstr "Effet de commerce impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_08 +msgid "Payment in advance" +msgstr "Paiement anticipatif" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_09 +msgid "Agio on supplier's bill" +msgstr "Agios sur effet-fournisseur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_10 +msgid "Renewal of agreed maturity date" +msgstr "Renouvellement échéance conventionnelle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_12 +msgid "Safe custody" +msgstr "Mise en pension" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_14 +msgid "Warrant fallen due" +msgstr "Warrant échu" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_37 +msgid "Costs related to commercial paper" +msgstr "Frais en rapport avec l’effet de commerce" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_39 +msgid "Return of an irregular bill of exchange" +msgstr "Renvoi d'un effet irrégulier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_50 +msgid "Remittance of commercial paper - credit after collection" +msgstr "Remise d'effet de commerce avec crédit après encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_52 +msgid "Remittance of commercial paper - credit under usual reserve" +msgstr "Remise effet de commerce avec crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_54 +msgid "Remittance of commercial paper for discount" +msgstr "Remise d'effet à l'escompte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_56 +msgid "Remittance of supplier's bill with guarantee" +msgstr "Remise d'effet-fournisseur avec aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_58 +msgid "Remittance of supplier's bill without guarantee" +msgstr "Remise d'effet-fournisseur sans aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_64 +msgid "Warrant" +msgstr "Warrant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_86 +msgid "Payment after cession" +msgstr "Rentrée après cession" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_09 +msgid "Counter transactions" +msgstr "Opérations de guichet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_01 +msgid "Cash withdrawal" +msgstr "Retrait en espèces" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_03 +msgid "Cash withdrawal by card (ATM)" +msgstr "Retrait d'argent avec carte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_05 +msgid "Purchase of foreign bank notes" +msgstr "Achat devises Via le débit du compte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_07 +msgid "Purchase of gold/pieces" +msgstr "Achat d'or/pièces" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_09 +msgid "Purchase of petrol coupons" +msgstr "Achat bons d'essence" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_11 +msgid "Your purchase of luncheon vouchers" +msgstr "Votre achat de chèques repas" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_13 +msgid "Cash withdrawal by your branch or agents" +msgstr "Retrait d'argent par votre succursale/vos agents" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_15 +msgid "Your purchase of lottery tickets" +msgstr "Votre achat de billets de loterie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_17 +msgid "Purchase of fiscal stamps" +msgstr "Achat de timbres fiscaux" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_19 +msgid "Difference in payment" +msgstr "Différence de versement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_21 +msgid "Cash withdrawal on card (PROTON)" +msgstr "Retrait d'argent avec carte (PROTON)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_25 +msgid "Purchase of traveller’s cheque" +msgstr "Achat chèques de voyage" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_37 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_50 +msgid "Cash payment" +msgstr "Versement en espèces" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_52 +msgid "Payment night safe" +msgstr "Versement coffre de nuit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_54 +msgid "Your payment ATM" +msgstr "Votre versement ATM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_56 +msgid "Reserve" +msgstr "Réserve" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_58 +msgid "Payment by your branch/agents" +msgstr "Versement par votre succursale/agents" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_60 +msgid "Sale of foreign bank notes" +msgstr "Vente devises" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_62 +msgid "Sale of gold/pieces under usual reserve" +msgstr "Vente d'or/pièces sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_64 +msgid "Your winning lottery ticket" +msgstr "Votre billet de loterie gagnant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_66 +msgid "Repurchase of petrol coupons" +msgstr "Rachat bons d'essence" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_68 +msgid "Difference in payment" +msgstr "Différence de versement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_70 +msgid "Sale of traveller’s cheque" +msgstr "Vente chèques de voyage" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_11 +msgid "Securities" +msgstr "Titres, coupons" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_01 +msgid "Purchase of securities" +msgstr "Achat de titres" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_02 +msgid "Tenders" +msgstr "Adjudication" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_03 +msgid "Subscription to securities" +msgstr "Souscription de titres" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_04 +msgid "Issues" +msgstr "Emissions" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_05 +msgid "Partial payment subscription" +msgstr "Libération souscription partielle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_06 +msgid "Share option plan – exercising an option" +msgstr "Action plan d’option – exercice d’option" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_09 +msgid "Settlement of securities" +msgstr "Liquidation de titres" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_11 +msgid "Payable coupons/repayable securities" +msgstr "Coupons payables/titres remboursables" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_13 +msgid "Your repurchase of issue" +msgstr "Rachat émission" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_15 +msgid "Interim interest on subscription" +msgstr "intérêts intérimaires en cas de souscription" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_17 +msgid "Management fee" +msgstr "Commission frais de gestion" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_19 +msgid "Regularisation costs" +msgstr "Frais de régularisation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_37 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_50 +msgid "Sale of securities" +msgstr "Vente de titres" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_51 +msgid "Tender" +msgstr "Adjudication" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_52 +msgid "Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve" +msgstr "Paiement de coupons en dépôt ou décompte de coupons reçus au guichet - crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_56 +msgid "Reserve" +msgstr "Réserve" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_58 +msgid "Repayable securities from a deposit or delivered at the counter - credit under usual reserve" +msgstr "Titres remboursables provenant d'un dépôt ou remis au guichet - crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_62 +msgid "Interim interest on subscription" +msgstr "Intérêts intérimaires en cas de souscription" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_64 +msgid "Your issue" +msgstr "Votre émission" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_66 +msgid "Retrocession of issue commission" +msgstr "Rétrocession de commission de souscription" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_68 +msgid "Compensation for missing coupon" +msgstr "Indemnité pour coupon manquant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_70 +msgid "Settlement of securities" +msgstr "Liquidation de titres" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_87 +msgid "Reimbursement of costs" +msgstr "Remboursement des frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_13 +msgid "Credit" +msgstr "Crédits" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_01 +msgid "Short-term loan" +msgstr "Prêt à court terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_02 +msgid "Long-term loan" +msgstr "Prêt à long terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_05 +msgid "Settlement of fixed advance" +msgstr "Remboursement avance fixe" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_07 +msgid "Your repayment instalment credits" +msgstr "Remboursement crédits à tempérament" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_11 +msgid "Your repayment mortgage loan" +msgstr "Remboursement prêt hypothécaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_13 +msgid "Settlement of bank acceptances" +msgstr "Liquidation acceptations bancaires" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_15 +msgid "Your repayment hire-purchase and similar claims" +msgstr "Remboursement leasing et créances similaires" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_19 +msgid "Documentary import credits" +msgstr "Crédits documentaires importation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_21 +msgid "Other credit applications" +msgstr "Autres crédits" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_37 +msgid "Credit-related costs" +msgstr "Frais inhérents aux crédits" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_50 +msgid "Settlement of instalment credit" +msgstr "Paiement crédit à tempérament" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_54 +msgid "Fixed advance – capital and interest" +msgstr "Avance fixe – capital et intérêts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_55 +msgid "Fixed advance – interest only" +msgstr "Avance fixe – uniquement intérêts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_56 +msgid "Subsidy" +msgstr "Subvention" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_60 +msgid "Settlement of mortgage loan" +msgstr "Paiement prêt hypothécaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_62 +msgid "Term loan" +msgstr "Prêt à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_68 +msgid "Documentary export credits" +msgstr "Crédits documentaires exportation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_70 +msgid "Settlement of discount bank acceptance" +msgstr "Décompte escompte acceptation bancaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_30 +msgid "Various transactions" +msgstr "Opérations diverses" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_01 +msgid "Spot purchase of foreign exchange" +msgstr "Achat de devises au comptant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_03 +msgid "Forward purchase of foreign exchange" +msgstr "Achat de devises à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_05 +msgid "Capital and/or interest term investment" +msgstr "Capital et/ou intérêts placements à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_33 +msgid "Value (date) correction" +msgstr "Correction application valeur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_37 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_39 +msgid "Undefined transaction" +msgstr "Opération non codifiée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_50 +msgid "Spot sale of foreign exchange" +msgstr "Vente de devises au comptant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_52 +msgid "Forward sale of foreign exchange" +msgstr "Vente de devises à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_54 +msgid "Capital and/or interest term investment" +msgstr "Capital et/ou intérêts placements à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_55 +msgid "Interest term investment" +msgstr "Intérêts placements à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_83 +msgid "Value (date) correction" +msgstr "Correction application valeur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_89 +msgid "Undefined transaction" +msgstr "Opération non codifiée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_35 +msgid "Closing (periodical settlements for interest, costs,…)" +msgstr "Clôture (clôtures périodiques d’intérêts, frais, etc..)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_01 +msgid "Closing" +msgstr "Clôture" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_37 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_50 +msgid "Closing" +msgstr "Clôture" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_41 +msgid "International credit transfers - non-SEPA credit transfers" +msgstr "Virements internationaux/non-SEPA" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_01 +msgid "Transfer" +msgstr "Virement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_03 +msgid "Standing order" +msgstr "Ordre permanent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_05 +msgid "Collective payments of wages" +msgstr "Paiements de salaires collectifs" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_07 +msgid "Collective transfers" +msgstr "Virements collectifs" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_13 +msgid "Transfer from your account" +msgstr "Virement de votre compte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_17 +msgid "Financial centralisation (debit)" +msgstr "Centralisation financière" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_37 +msgid "Costs relating to outgoing foreign transfers and non-SEPA transfers" +msgstr "Frais relatifs aux virements internationaux, non SEPA, sortants" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_38 +msgid "Costs relating to incoming foreign and non-SEPA transfers" +msgstr "Frais relatifs aux virements internationaux, non SEPA, entrants" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_50 +msgid "Transfer" +msgstr "Virement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_64 +msgid "Transfer to your account" +msgstr "Virement à votre compte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_66 +msgid "Financial centralisation (credit)" +msgstr "Centralisation financière (crédit)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_43 +msgid "Foreign cheques" +msgstr "Chèques étrangers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_01 +msgid "Payment of a foreign cheque" +msgstr "Paiement chèque étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_07 +msgid "Unpaid foreign cheque" +msgstr "Chèque étranger impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_15 +msgid "Purchase of an international bank cheque" +msgstr "Achat chèque bancaire international" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_37 +msgid "Costs relating to payment of foreign cheques" +msgstr "Frais en rapport avec le paiement des chèques étrangers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_52 +msgid "Remittance of foreign cheque credit under usual reserve" +msgstr "Remise chèque sur l'étranger - crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_58 +msgid "Remittance of foreign cheque credit after collection" +msgstr "Remise chèque sur l'étranger – crédit après encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_62 +msgid "Reversal of cheques" +msgstr "Contre-passation chèques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_70 +msgid "Purchase of traveller’s cheque" +msgstr "Rachat chèque de voyage" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_47 +msgid "Foreign commercial paper" +msgstr "Effets de commerce étrangers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_01 +msgid "Payment of foreign bill" +msgstr "Paiement effet étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_05 +msgid "Bill claimed back" +msgstr "Effet demandé en retour" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_06 +msgid "Extension" +msgstr "Prolongation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_07 +msgid "Unpaid foreign bill" +msgstr "Effet étranger impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_11 +msgid "Payment documents abroad" +msgstr "Paiement documents étrangers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_13 +msgid "Discount foreign supplier's bills" +msgstr "Escompte effet fournisseur étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_14 +msgid "Warrant fallen due" +msgstr "Warrant échu" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_37 +msgid "Costs relating to the payment of a foreign bill" +msgstr "Frais en rapport avec le paiement de l'effet étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_50 +msgid "Remittance of foreign bill credit after collection" +msgstr "Remise d'effet étr. - crédit après encaiss." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_52 +msgid "Remittance of foreign bill credit under usual reserve" +msgstr "Remise d'effet étranger - crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_54 +msgid "Discount abroad" +msgstr "Escompte étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_56 +msgid "Remittance of guaranteed foreign supplier's bill" +msgstr "Remise d'effet fournisseur étranger avec aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_58 +msgid "Idem without guarantee" +msgstr "Idem sans aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_60 +msgid "Remittance of documents abroad - credit under usual reserve" +msgstr "Remise de documents étrangers - crédit sbf" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_62 +msgid "Remittance of documents abroad - credit after collection" +msgstr "Remise de documents étrangers - crédit après encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_64 +msgid "Warrant" +msgstr "Warrant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_87 +msgid "Reimbursement of costs" +msgstr "Remboursement de frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_49 +msgid "Foreign counter transactions" +msgstr "Opérations guichet à l'étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_49_03 +msgid "ATM withdrawal" +msgstr "Retrait ATM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_80 +msgid "Separately charged costs and provisions" +msgstr "Frais et commissions isolés" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_01 +msgid "Guarantee card charges" +msgstr "Frais de carte de garantie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_02 +msgid "Costs relating to electronic output" +msgstr "Frais output électronique" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_03 +msgid "Payment card charges" +msgstr "Frais de carte de paiement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_04 +msgid "Costs for holding a documentary cash credit" +msgstr "Frais détention crédit de caisse" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_05 +msgid "Card charges" +msgstr "Frais de carte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_06 +msgid "Damage relating to bills and cheques" +msgstr "Dommages effets et chèques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_07 +msgid "Insurance costs" +msgstr "Frais d'assurance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_08 +msgid "Registering compensation for savings accounts" +msgstr "Indemnité de classement pour comptes d'épargne" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_09 +msgid "Postage" +msgstr "Frais de port" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_10 +msgid "Purchase of Smartcard" +msgstr "Achat smartcard" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_11 +msgid "Costs for the safe custody of correspondence" +msgstr "Frais de garde de correspondance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_12 +msgid "Costs for opening a bank guarantee" +msgstr "Frais ouverture garantie bancaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_13 +msgid "Renting of safes" +msgstr "Location de coffre-fort" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_14 +msgid "Handling costs instalment credit" +msgstr "Frais dossier crédit à tempérament" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_15 +msgid "Night safe" +msgstr "Coffre de nuit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_16 +msgid "Bank confirmation to revisor or accountant" +msgstr "Déclaration bancaire au réviseur ou à l’expert-comptable" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_17 +msgid "Charge for safe custody" +msgstr "Droit de garde" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_18 +msgid "Trade information" +msgstr "Informations sur effets de commerce" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_19 +msgid "Special charge for safe custody" +msgstr "Droit de garde spécial" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_20 +msgid "Drawing up a certificate" +msgstr "Confection attestation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_21 +msgid "Pay-packet charges" +msgstr "Frais enveloppe appointements" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_22 +msgid "Management/custody" +msgstr "Gestion/garde" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_23 +msgid "Research costs" +msgstr "Frais de recherche" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_24 +msgid "Participation in and management of interest refund system" +msgstr "Adhésion et gestion système ristourne d'intérêts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_25 +msgid "Renting of direct debit box" +msgstr "Location de boîte postale" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_26 +msgid "Travel insurance premium" +msgstr "Prime assistance de voyage" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_27 +msgid "Subscription fee" +msgstr "Frais d'abonnement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_29 +msgid "Information charges" +msgstr "Frais de renseignements" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_31 +msgid "Writ service fee" +msgstr "Frais d'huissier de justice" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_33 +msgid "Miscellaneous fees and commissions" +msgstr "Commission et frais divers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_35 +msgid "Costs" +msgstr "Frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_37 +msgid "Access right to database" +msgstr "Droit d'accès banque de données" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_39 +msgid "Surety fee" +msgstr "Commission cautionnement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_41 +msgid "Research costs" +msgstr "Frais d'étude" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_43 +msgid "Printing of forms" +msgstr "Confection de formulaires" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_45 +msgid "Documentary credit charges" +msgstr "Frais de crédit documentaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_47 +msgid "Charging fees for transactions" +msgstr "Tarification d'opérations" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_49 +msgid "Cancellation or correction" +msgstr "Annulation ou correction (débit)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_99 +msgid "Cancellation or correction" +msgstr "Annulation ou correction (crédit)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_01 +msgid "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." +msgstr "Virement remis par le client sur papier ou par voie électronique, même si cette opération a une date d’exécution dans le futur. Il s’agit de paiements tant nationaux qu’européens satisfaisant aux conditions en vigueur." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_02 +msgid "The bank takes the initiative for debiting the customer’s account." +msgstr "Débit du compte d’un client à l’initiative de la banque." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_03 +msgid "Credit transfer for which the order has been given once and which is carried out again at regular intervals without any change." +msgstr "Virement pour lequel un ordre a été donné une seule fois et qui est exécuté à l’identique aux dates convenues." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_05 +msgid "The principal will be debited for the total amount of the file entered." +msgstr "Le donneur d’ordre est débité pour le montant total du fichier remis." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_07 +msgid "The principal will be debited for the total amount of the file entered." +msgstr "Le donneur d’ordre est débité pour le montant total du fichier remis." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_13 +msgid "Transfer from one account to another account of the same customer at the bank's or the customer's initiative (intracompany)." +msgstr "Virement d'un compte à un autre compte du même client à l'initiative de la banque ou du client (intracompany)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_17 +msgid "In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement." +msgstr "Si la banque globalise, cette opération est qualifiée de type 2. Cette globalisation peut être suivie des mouvements de détail." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_39 +msgid "To be used for issued circular cheques given in consignment" +msgstr "A utiliser pour les chèques circulaires émis donnés en consignation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_51 +msgid "The bank takes the initiative for crediting the customer’s account." +msgstr "Crédit du compte du client à l’initiative de la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_52 +msgid "Payment by a third person" +msgstr "Versement par un tiers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_64 +msgid "Intracompany" +msgstr "intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_66 +msgid "In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement." +msgstr "Si la banque globalise, cette opération est qualifiée de type 2. Cette globalisation peut être suivie des mouvements de détail." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_05 +msgid "Payment of holiday pay, etc." +msgstr "Bon pour pécule de vacances, etc." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_15 +msgid "Cheque drawn by the bank on itself, usually with charges." +msgstr "Chèque tiré par la banque sur ses caisses, généralement avec frais" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_17 +msgid "Amount of the cheque; if any, charges receive code 37" +msgstr "Il s'agit ici du montant du chèque, les coûts éventuels reçoivent le code 37" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_58 +msgid "Also for vouchers, postal orders, anything but bills of exchange, acquittances, promissory notes, etc." +msgstr "Egalement pour bons, assignations postales, mandats postaux, tout sauf les effets, quittances, promesses, etc." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_62 +msgid "cheques debited on account, but debit cancelled afterwards for lack of cover (double debit/contra-entry of transaction 01 or 05)" +msgstr "Chèques débités sur le compte, mais dont le débit est annulé ultérieurement pour manque de provision (débit double/ contrepassation de l'opération 01 ou 05)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_87 +msgid "Overall amount, VAT included" +msgstr "Montant global, T.V.A. comprise" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_01 +msgid "Debit customer who is loading" +msgstr "Débit client qui a chargé une carte GSM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_02 +msgid "Eurozone = countries which have the euro as their official currency" +msgstr "euro zone : pays pour lesquels l’euro est la monnaie officielle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_03 +msgid "See annexe III : communication 124" +msgstr "Voir annexe III : communication 124" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_04 +msgid "At home as well as abroad" +msgstr "Tant au niveau national qu’étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_08 +msgid "Eurozone = countries which have the euro as their official currency" +msgstr "euro zone : pays pour lesquels l’euro est la monnaie officielle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_37 +msgid "Various costs for possessing or using a payment card" +msgstr "Différents frais liés à la détention ou l’utilisation d’une carte de paiement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_50 +msgid "Except Proton" +msgstr "Excepté Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_52 +msgid "Credit provider" +msgstr "Credit provider" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_05_58 +msgid "(cancellation of an undue debit of the debtor at the initiative of the financial institution or the debtor for lack of cover)" +msgstr "(Annulation d'un débit irrégulier du débiteur à l'initiative de la banque ou du débiteur suite à un manque de provision)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_01 +msgid "Bills of exchange, acquittances, promissory notes; debit of the drawee" +msgstr "Effet, quittance, promesse, débit du tiré" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_05 +msgid "Bill claimed back at the drawer's request (bill claimed back before maturity date)" +msgstr "Effet demandé en retour par le tireur (effet réclamé avant l'échéance)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_06 +msgid "Costs chargeable to the remitter" +msgstr "Frais à charge du remettant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_07 +msgid "Contra-entry of a direct credit or of a discount" +msgstr "Contre-passation d'un crédit direct ou d'un escompte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_08 +msgid "Debit of the remitter when the drawee pays in advance directly to the remitter (regards bank acceptances)" +msgstr "Débit du remettant lorsque le tiré paie anticipativement et directement le remettant (concernant acceptations bancaires)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_09 +msgid "Debit of the agios to the account of the drawee" +msgstr "Débit des agios à charge du tiré" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_37 +msgid "If any, detail in the category (e.g. costs for presentation for acceptance, etc.)" +msgstr "Le détail figure éventuellement dans la rubrique (par ex. frais pour présentation à l'acceptation, etc.)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_39 +msgid "Debit of the drawer after credit under usual reserve or discount" +msgstr "Débit du tireur après crédit sbf ou escompte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_50 +msgid "Credit of the remitter" +msgstr "Crédit du remettant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_54 +msgid "Among other things advances or promissory notes" +msgstr "Entre autres avances ou promesses" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_01 +msgid "Withdrawal by counter cheque or receipt; cash remitted by the bank clerk" +msgstr "Retrait à l'aide d'un chèque guichet ou contre reçu; argent remis par l'employé de banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_13 +msgid "On the account of the head office" +msgstr "Sur le compte de la maison mère" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_19 +msgid "Used in case of payments accepted under reserve of count, result of overcrediting" +msgstr "Utilisé en cas de versements acceptés sous réserve de comptage; conséquence d'un crédit trop élevé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_50 +msgid "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" +msgstr "Pour compte propre - le commentaire pour le client se trouve dans la communication; ce code peut également être utilisé pour les versements mixtes (espèces + chèques) - à ne pas communiquer à la clientèle; pour les versements faits par des tiers voir famille 01" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_58 +msgid "Takes priority over transaction 52 (hence a payment made by an agent in a night safe = 58 and not 52)" +msgstr "Prime sur opération 52 (c.-à-d., un versement fait par un agent dans un coffre de nuit = 58 et non 52)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_68 +msgid "In case of payment accepted under reserve of count; result of undercrediting - see also transaction 19" +msgstr "Utilisé en cas de versements acceptés sous réserve de comptage; conséquence d'un crédit trop peu élevé - voir aussi opération 19" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_01 +msgid "Purchase of domestic or foreign securities, including subscription rights, certificates, etc." +msgstr "Achat de titres belges ou étrangers, y compris droits de souscription, certificats, etc." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_02 +msgid "Payment to the bank on maturity date" +msgstr "A l’échéance, la banque est indemnisée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_03 +msgid "Bonds, shares, tap issues of CDs, with or without payment of interest, etc." +msgstr "Obligations, actions, émissions au robinet de bons de caisse avec ou sans décompte d'intérêt, etc." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_05 +msgid "Debit of the subscriber for the complementary payment of partly-paid shares" +msgstr "Débit du souscripteur pour la libération complémentaire d'actions non entièrement libérées" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_09 +msgid "For professionals (stockbrokers) only, whoever the issuer may be (Belgian or foreigner)" +msgstr "Exclusivement pour les professionnels (agents de change), quel que soit l'émetteur (belge ou étranger)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_11 +msgid "Debit of the issuer by the bank in charge of the financial service" +msgstr "Débit de la société émettrice par la banque chargée du service financier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_13 +msgid "Unissued part (see 64)" +msgstr "Fraction non placée (voir 64)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_15 +msgid "In case of subscription before the interest due date" +msgstr "En cas de souscription avant la date prévue pour le début de la jouissance d'intérêts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_51 +msgid "Company issues paper in return for cash" +msgstr "L’entreprise émet des titres et reçoit des espèces en échange" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_52 +msgid "Whatever the currency of the security" +msgstr "Quelle que soit la devise du titre" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_62 +msgid "When reimbursed separately to the subscriber" +msgstr "Lorsque rémunération distincte pour le souscripteur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_64 +msgid "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" +msgstr "Montant versé à l'émetteur par la banque chargée du placement (prix ferme ou non); également utilisé lorsqu'on complète la libération des actions non entièrement libérées, voir opération 05" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_66 +msgid "For professionals such as insurances and stockbrokers" +msgstr "Au profit de professionnels tels que les compagnies d'assurances et les agents de change" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_68 +msgid "In case coupons attached to a purchased security are missing" +msgstr "Utilisé lorsqu'un coupon manque à un titre acheté par un client" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_70 +msgid "Only with stockbrokers when they deliver the securities to the bank" +msgstr "Exclusivement avec les agents de change lorsque ceux-ci livrent les titres à la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_01 +msgid "Capital and/or interest (specified by the category)" +msgstr "Capital et/ou intérêts (sera spécifié dans la rubrique)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_05 +msgid "Full or partial reimbursement of a fixed advance at maturity date" +msgstr "Remboursement total ou partiel d'une avance fixe à l'échéance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_07 +msgid "Often by standing order or direct debit. In case of direct debit, family 13 is used." +msgstr "Souvent par ordre permanent ou par domiciliation. En cas de domiciliation, utilisation de la Fam. 13." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_15 +msgid "Hire-purchase agreement under which the financial institution is the lessor" +msgstr "Leasing où l'établissement financier = donneur de leasing" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_56 +msgid "Interest or capital subsidy" +msgstr "Subvention en intérêts ou prime de capital" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_41_13 +msgid "Intracompany" +msgstr "Intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_41_64 +msgid "Intracompany" +msgstr "intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_43_01 +msgid "Debit of a cheque in foreign currency or in EUR in favour of a foreigner" +msgstr "Débit d'un chèque en devise étrangère ou en euro en faveur d'un étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_43_07 +msgid "Foreign cheque remitted for collection that returns unpaid" +msgstr "Chèque sur l'étranger remis à l'encaissement qui revient impayé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_47_11 +msgid "Bills of lading" +msgstr "Connaissements" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_47_13 +msgid "Debit customer, payment of agios, interest, exchange commission, etc." +msgstr "Débit client, agios décompte étranger, intérêts, commission de change, etc." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_07 +msgid "- insurance costs of account holders against fatal accidents - passing-on of several insurance costs" +msgstr "- frais d'assurance des titulaires de compte en cas d'accident mortel +- imputation de divers frais d'assurance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_09 +msgid "Postage recouped to the debit of the customer (including forwarding charges)" +msgstr "Frais de port récupérés à charge du client (y compris frais d'expédition)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_11 +msgid "Costs chargeable to clients who ask to have their correspondence kept at their disposal at the bank's counter" +msgstr "Frais à charge des clients qui demandent que leur courrier soit gardé à leur disposition au guichet de la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_13 +msgid "Commission for renting a safe deposit box" +msgstr "Commission de location de coffres-forts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_15 +msgid "Commission collected to the debit of the customer to whom the bank delivers a key which gives access to the night safe" +msgstr "Commission perçue à charge du client à qui la banque confie une clef donnant accès au coffre de nuit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_17 +msgid "Collected for unsealed deposit of securities, and other parcels" +msgstr "Perçu pour la conservation à découvert de titres et autres colis" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_19 +msgid "Collected for securities, gold, pass-books, etc. placed in safe custody" +msgstr "Perçu pour titres, or, carnets, etc. confiés en dépôt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_21 +msgid "Charges for preparing pay packets" +msgstr "Frais pour la préparation d'enveloppes d'appointements" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_23 +msgid "Costs charged for all kinds of research (information on past transactions, address retrieval, ...)" +msgstr "Coûts facturés pour diverses recherches (renseignements concernant des opérations passées, recherche d'adresses, ...)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_25 +msgid "Commission for the renting of boxes put at the disposal for the correspondence" +msgstr "Commission de location de boîtes pour la mise à disposition du courrier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_27 +msgid "For publications of the financial institution" +msgstr "Pour publications de l'institution financière" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_29 +msgid "Charges collected for: - commercial information - sundry information" +msgstr "Frais perçus pour : +- des renseignements commerciaux +- renseignements divers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_31 +msgid "E.g. for signing invoices" +msgstr "Par ex. pour la signature de factures" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_33 +msgid "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)" +msgstr "Frais non définis ailleurs, souvent avec avis manuel (par ex. pour retrait, commande de valeurs) +Sans TVA = type 0 +Avec TVA = type 3 (minimum 3 articles)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_35 +msgid "Costs charged for calculating the amount of the tax to be paid (e.g. Fiscomat)." +msgstr "Frais imputés pour le calcul du montant de l'impôt à payer (par ex. Fiscomat)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_37 +msgid "Fixed right, either one-off or periodical; for details, see "categories"" +msgstr "Droit d'accès fixe - peut être unique ou périodique - pour les détails voir "rubriques"" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_39 +msgid "Agios on guarantees given" +msgstr "Frais d'ouverture d'une garantie bancaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_000 +msgid "Net amount" +msgstr "Montant net" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_001 +msgid "Interest received" +msgstr "Intérêts crédités" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_002 +msgid "Interest paid" +msgstr "Intérêts débités" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_003 +msgid "Credit commission" +msgstr "Commission de crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_004 +msgid "Postage" +msgstr "Frais de port" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_005 +msgid "Renting of letterbox" +msgstr "Loyer boîte courrier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_006 +msgid "Various fees/commissions" +msgstr "Commissions et frais divers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_007 +msgid "Access right to database" +msgstr "Droit d'accès banque de données" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_008 +msgid "Information charges" +msgstr "Frais pour renseignements" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_009 +msgid "Travelling expenses" +msgstr "Frais de déplacement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_010 +msgid "Writ service fee" +msgstr "Frais d'huissier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_011 +msgid "VAT" +msgstr "TVA" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_012 +msgid "Exchange commission" +msgstr "Commission de change" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_013 +msgid "Payment commission" +msgstr "Commission de paiement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_014 +msgid "Collection commission" +msgstr "Commission d'encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_015 +msgid "Correspondent charges" +msgstr "Frais correspondant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_016 +msgid "BLIW/IBLC dues" +msgstr "Redevance I.B.L.C." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_017 +msgid "Research costs" +msgstr "Frais d'étude" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_018 +msgid "Tental guarantee charges" +msgstr "Frais pour garantie locative" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_019 +msgid "Tax on physical delivery" +msgstr "Taxe livraison matérielle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_020 +msgid "Costs of physical delivery" +msgstr "Coûts livraison matérielle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_021 +msgid "Costs for drawing up a bank cheque" +msgstr "Frais confection chèque bancaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_022 +msgid "Priority costs" +msgstr "Frais de priorité" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_023 +msgid "Exercising fee" +msgstr "Commission d'exercice" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_024 +msgid "Growth premium" +msgstr "Prime de croissance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_025 +msgid "Individual entry for exchange charges" +msgstr "Comptab. indiv. de frais de change" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_026 +msgid "Handling commission" +msgstr "Commission de manipulation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_027 +msgid "Charges for unpaid bills" +msgstr "Frais traites impayées" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_028 +msgid "Fidelity premium" +msgstr "Prime de fidélité" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_029 +msgid "Protest charges" +msgstr "Frais de protêt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_030 +msgid "Account insurance" +msgstr "Assurance compte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_031 +msgid "Charges foreign cheque" +msgstr "Frais chèque étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_032 +msgid "Drawing up a circular cheque" +msgstr "Confection chèque circulaire" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_033 +msgid "Charges for a foreign bill" +msgstr "Frais effet étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_034 +msgid "Reinvestment fee" +msgstr "Indemnité de remploi" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_035 +msgid "Charges foreign documentary bill" +msgstr "Frais effet documentaire étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_036 +msgid "Costs relating to a refused cheque" +msgstr "Frais chèque refusé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_037 +msgid "Commission for handling charges" +msgstr "Commission pour frais de dossier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_039 +msgid "Telecommunications" +msgstr "Télécommunications" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_041 +msgid "Credit card costs" +msgstr "Frais carte de crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_042 +msgid "Payment card costs" +msgstr "Frais carte de paiement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_043 +msgid "Insurance costs" +msgstr "Frais d'assurance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_045 +msgid "Handling costs" +msgstr "Frais de dossier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_047 +msgid "Charges extension bill" +msgstr "Frais de prolongation d'un effet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_049 +msgid "Fiscal stamps/stamp duty" +msgstr "Timbres fiscaux/droit de timbre" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_050 +msgid "Capital term investment" +msgstr "Capital placement à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_051 +msgid "Withholding tax" +msgstr "Précompte mobilier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_052 +msgid "Residence state tax" +msgstr "Prélèvement (européen) pour l’Etat de résidence" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_053 +msgid "Printing of forms" +msgstr "Confection de formulaires" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_055 +msgid "Repayment loan or credit capital" +msgstr "Amortis. capital d'un prêt ou d'un crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_057 +msgid "Interest subsidy" +msgstr "Subvention en intérêts" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_058 +msgid "Capital premium" +msgstr "Prime de capital" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_059 +msgid "Default interest" +msgstr "Intérêts moratoires" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_061 +msgid "Charging fees for transactions" +msgstr "Tarification d'opérations" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_063 +msgid "Rounding differences" +msgstr "Différences d'arrondi" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_065 +msgid "Interest payment advice" +msgstr "Avis de bonification" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_066 +msgid "Fixed loan advance - reimbursement" +msgstr "Acompte fixe crédits – remboursement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_067 +msgid "Fixed loan advance - extension" +msgstr "Acompte fixe crédits – prolongation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_068 +msgid "Countervalue of an entry" +msgstr "Contre-valeur d'une écriture" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_069 +msgid "Forward arbitrage contracts : sum to be supplied by customer" +msgstr "Contrats à terme arbitrage : somme à payer par le client" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_070 +msgid "Forward arbitrage contracts : sum to be supplied by bank" +msgstr "Contrats à terme arbitrage : somme à payer par la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_071 +msgid "Fixed loan advance - availability" +msgstr "Acompte fixe crédits – mise à disposition" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_072 +msgid "Countervalue of commission to third party" +msgstr "Contre-valeur commissions à des tiers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_073 +msgid "Costs of ATM abroad" +msgstr "Coûts guichets automatiques étrangers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_074 +msgid "Mailing costs" +msgstr "Coûts de courrier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_100 +msgid "Gross amount" +msgstr "Montant brut" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_200 +msgid "Overall documentary credit charges" +msgstr "Frais de crédit documentaire global" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_201 +msgid "Advice notice commission" +msgstr "Commission de préavis" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_202 +msgid "Advising commission | Additional advising commission" +msgstr "Commission de notification | Commission de notification additionnelle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_203 +msgid "Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission" +msgstr "Commission de confirmation | Commission de confirmation additionnelle | Commission d'engagement | Commission flat | Commission de réservation de confirmation | Commission de réservation additionnelle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_204 +msgid "Amendment fee" +msgstr "Commission de modification" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_205 +msgid "Documentary payment commission | Document commission | Drawdown fee | Negotiation fee" +msgstr "Commission de paiement documentaire | Commission documentaire | Commission d'utilisation | Commission de négociation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_206 +msgid "Surety fee/payment under reserve" +msgstr "Commission pour garanties/paiement sous réserve" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_207 +msgid "Non-conformity fee" +msgstr "Commission pour divergences" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_208 +msgid "Commitment fee deferred payment" +msgstr "Commission d'engagement paiement différé" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_209 +msgid "Transfer commission" +msgstr "Commission de transfert" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_210 +msgid "Commitment fee" +msgstr "Commission de mise à disposition" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_211 +msgid "Credit arrangement fee | Additional credit arrangement fee" +msgstr "Commission d'ouverture de crédit | Commission d'ouverture de crédit additionnelle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_212 +msgid "Warehousing fee" +msgstr "Commission de d’entreposage" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_213 +msgid "Financing fee" +msgstr "Commission de financement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_214 +msgid "Issue commission (delivery order)" +msgstr "Commission d'émission (laissez-suivre)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_400 +msgid "Acceptance fee" +msgstr "Commission d'acceptation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_401 +msgid "Visa charges" +msgstr "Frais de visa" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_402 +msgid "Certification costs" +msgstr "Frais de certification" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_403 +msgid "Minimum discount rate" +msgstr "Droit minimum d'escompte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_404 +msgid "Discount commission" +msgstr "Commission d'escompte" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_405 +msgid "Bill guarantee commission" +msgstr "Commission d'aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_406 +msgid "Collection charges" +msgstr "Frais de recouvrement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_407 +msgid "Costs Article 45" +msgstr "Frais d'article 45" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_408 +msgid "Cover commission" +msgstr "Commission de couverture" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_409 +msgid "Safe deposit charges" +msgstr "Frais de garde" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_410 +msgid "Reclamation charges" +msgstr "Frais de retour" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_411 +msgid "Fixed collection charge" +msgstr "Droit fixe d'encaissement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_412 +msgid "Advice of expiry charges" +msgstr "Frais d'avis d'expiration" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_413 +msgid "Acceptance charges" +msgstr "Frais d'acceptation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_414 +msgid "Regularisation charges" +msgstr "Frais de régularisation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_415 +msgid "Surety fee" +msgstr "Commission de cautionnement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_416 +msgid "Charges for the deposit of security" +msgstr "Frais de dépôt de caution" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_418 +msgid "Endorsement commission" +msgstr "Commission d'endossement" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_419 +msgid "Bank service fee" +msgstr "Commission d'intervention" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_420 +msgid "Retention charges" +msgstr "Frais de retenue" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_425 +msgid "Foreign broker's commission" +msgstr "Courtage étranger" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_426 +msgid "Belgian broker's commission" +msgstr "Courtage belge" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_427 +msgid "Belgian Stock Exchange tax" +msgstr "Taxe boursière belge" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_428 +msgid "Interest accrued" +msgstr "Intérêts courus" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_429 +msgid "Foreign Stock Exchange tax" +msgstr "Taxe boursière étrangère" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_430 +msgid "Recovery of foreign tax" +msgstr "Récupération taxe étrangère" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_431 +msgid "Delivery of a copy" +msgstr "Livraison copie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_001 +msgid "Data concerning the counterparty" +msgstr "Données de la contrepartie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_002 +msgid "Communication of the bank" +msgstr "Communication de la banque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_003 +msgid "RBP data" +msgstr "données RBP" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_004 +msgid "Counterparty’s banker" +msgstr "Banquier de la contrepartie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_005 +msgid "Data concerning the correspondent" +msgstr "Données du correspondant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_006 +msgid "Information concerning the detail amount" +msgstr "Informations relatives à des montants du détail" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_007 +msgid "Information concerning the detail cash" +msgstr "Informations relatives aux espèces" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_008 +msgid "Identification of the de ultimate beneficiary/creditor (SEPA SCT/SDD)" +msgstr "Identification du créditeur final/ultime du SEPA CT ou DD" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_009 +msgid "Identification of the de ultimate ordering customer/debtor (SEPA SCT/SDD)" +msgstr "Identification du débiteur final/ultime du SEPA CT ou DD" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_010 +msgid "Information pertaining to sale or purchase of securities" +msgstr "Informations relatives à une vente ou à un achat de titres" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_011 +msgid "Information pertaining to coupons" +msgstr "Information relative à des coupons" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_100 +msgid "(SEPA) payment with a structured format communication applying the ISO standard 11649: Structured creditor reference to remittance information" +msgstr "Communication structurée d’un paiement conforme au standard ISO 11649: "Structured creditor reference to remittance information"" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_101 +msgid "Credit transfer or cash payment with structured format communication" +msgstr "Virement ou versement à communication structurée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_102 +msgid "Credit transfer or cash payment with reconstituted structured format communication" +msgstr "Virement ou versement à communication structurée reconstituée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_103 +msgid "number (e.g. of the cheque, of the card, etc.)" +msgstr "numéro" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_104 +msgid "Equivalent in EUR" +msgstr "montant de la contre-valeur en EUR" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_105 +msgid "original amount of the transaction" +msgstr "montant initial de l'opération" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_106 +msgid "Method of calculation (VAT, withholding tax on income, commission, etc.)" +msgstr "Mode de calcul (TVA, précompte mobilier, commission, etc.)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_107 +msgid "Direct debit – DOM’80" +msgstr "Domiciliations – DOM'80" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_108 +msgid "Closing" +msgstr "Clôture" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_111 +msgid "POS credit – Globalisation" +msgstr "Crédit POS – globalisation" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_112 +msgid "ATM payment (usually Eurocheque card)" +msgstr "Versement ATM ( généralement carte eurochèque)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_113 +msgid "ATM/POS debit" +msgstr "Débit ATM/POS" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_114 +msgid "POS credit - individual transaction" +msgstr "Crédit POS – opération individuelle" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_115 +msgid "Terminal cash deposit" +msgstr "Versement au terminal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_120 +msgid "Correction of a transaction" +msgstr "Opération corrigée" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_121 +msgid "Commercial bills" +msgstr "Effets de commerce" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_122 +msgid "Bills - calculation of interest" +msgstr "Effets - calcul de l'intérêt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_123 +msgid "Fees and commissions" +msgstr "Frais et commissions" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_124 +msgid "Number of the credit card" +msgstr "Numéro de la carte de crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_125 +msgid "Credit" +msgstr "Crédit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_126 +msgid "Term investments" +msgstr "Placements à terme" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_127 +msgid "European direct debit (SEPA)" +msgstr "Domiciliation européenne (Direct debit SEPA)" + diff --git a/l10n_be_coda_advanced/i18n/nl.po b/l10n_be_coda_advanced/i18n/nl.po new file mode 100644 index 00000000..04af25d9 --- /dev/null +++ b/l10n_be_coda_advanced/i18n/nl.po @@ -0,0 +1,3761 @@ +# Dutch translation of Odoo 10.0. +# This file contains the translation of the following modules: +# * l10n_be_coda_advanced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo 10.0\n" +"Report-Msgid-Bugs-To: support@noviat.com\n" +"POT-Creation-Date: 2018-11-26 21:14:24.945000\n" +"PO-Revision-Date: 2018-11-26 21:14:24.945000\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: l10n_be_coda_advanced +#: view:account.bank.statement:0 +msgid "Bank Statements" +msgstr "Afschriften" + +#. module: l10n_be_coda_advanced +#: view:account.bank.statement:0 +msgid "CODA Notes" +msgstr "CODA notities" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_bank_statement_coda_id +msgid "CODA Data File" +msgstr "CODA bestand" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_bank_statement_coda_note +msgid "CODA Notes" +msgstr "CODA notities" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "CODA Files" +msgstr "CODA bestanden" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "CODA File" +msgstr "CODA bestand" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "Additional Information" +msgstr "Bijkomende informatie" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "Bank Statements" +msgstr "Afschriften" + +#. module: l10n_be_coda_advanced +#: view:account.coda:0 +msgid "CODA Statements" +msgstr "CODA dagafschriften" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_coda_creation_date +msgid "CODA Creation Date" +msgstr "Datum aanmaak CODA" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_coda_data +msgid "CODA File" +msgstr "CODA bestand" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_date +msgid "Import Date" +msgstr "Datum import" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_name +msgid "CODA Filename" +msgstr "CODA bestandsnaam" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_note +msgid "Import Log" +msgstr "Import log" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_statement_ids +msgid "Generated CODA Bank Statements" +msgstr "Gegenereerde CODA dagafschriften" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_user_id +msgid "User" +msgstr "Gebruiker" + +#. module: l10n_be_coda_advanced +#: view:account.coda.comm.type:0 +msgid "CODA Structured Communication Types" +msgstr "CODA verrichtingen - Gestructureerde mededelingen" + +#. module: l10n_be_coda_advanced +#: view:account.coda.comm.type:0 +msgid "CODA Structured Communication Type" +msgstr "CODA verrichtingen - Gestructureerde mededeling" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_comm_type_code +msgid "Structured Communication Type" +msgstr "Type gestructureerde mededeling" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_comm_type_description +msgid "Description" +msgstr "Omschrijving" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.category:0 +msgid "CODA Transaction Categories" +msgstr "CODA verrichtingen - Rubrieken" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.category:0 +msgid "CODA Transaction Category" +msgstr "CODA verrichtingen - Rubriek" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_category_category +msgid "Transaction Category" +msgstr "CODA verrichtingen - Rubriek" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_category_description +msgid "Description" +msgstr "Omschrijving" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.code:0 +msgid "CODA Transaction Codes" +msgstr "CODA verrichtingen - Codes" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.code:0 +msgid "CODA Transaction Code" +msgstr "CODA verrichtingen - Code" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_code_comment +msgid "Comment" +msgstr "Toelichting" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_code_description +msgid "Description" +msgstr "Omschrijving" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_code_parent_id +msgid "Family" +msgstr "Familie" + +#. module: l10n_be_coda_advanced +#: selection:account.coda.trans.code,type:0 +msgid "Transaction Code" +msgstr "CODA verrichtingen - Code" + +#. module: l10n_be_coda_advanced +#: selection:account.coda.trans.code,type:0 +msgid "Transaction Family" +msgstr "CODA verrichtingen - Family" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.type:0 +msgid "CODA Transaction Types" +msgstr "CODA verrichtingen - Types" + +#. module: l10n_be_coda_advanced +#: view:account.coda.trans.type:0 +msgid "CODA Transaction Type" +msgstr "CODA verrichtingen - Type" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_type_description +msgid "Description" +msgstr "Omschrijving" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_trans_type_type +msgid "Transaction Type" +msgstr "CODA verrichtingen - Type" + +#. module: l10n_be_coda_advanced +#: view:coda.bank.account:0 +msgid "CODA Bank Account Configuration" +msgstr "CODA bankrekening instellingen" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_name +msgid "Name" +msgstr "Naam" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_description1 +msgid "Primary Account Description" +msgstr "Omschrijving van de rekening" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_description2 +msgid "Secondary Account Description" +msgstr "Alternatieve omschrijving van de rekening" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_journal_id +msgid "Journal" +msgstr "Dagboek" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_bank_id +msgid "Bank Account" +msgstr "Bankrekening" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_coda_st_naming +msgid "Bank Statement Naming Policy" +msgstr "Bankafschrift naamgeving" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_transfer_account +msgid "Internal Funds Transfer Account" +msgstr "Rekening interne overboekingen" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_mapping_ids +msgid "Account Mapping Rules" +msgstr "Toewijzingsregels rekeningen" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_active +msgid "Active" +msgstr "Actief" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_company_id +msgid "Company" +msgstr "Bedrijfsnaam" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_coda_bank_account_state +msgid "Type" +msgstr "Type" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_import_note +msgid "Log" +msgstr "Log" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Import CODA File" +msgstr "Importeer CODA bestand" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Select Details" +msgstr "Selecteer details" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Select your file :" +msgstr "Selecteer uw bestand:" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Import CODA File" +msgstr "Importeer CODA bestand" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Cancel" +msgstr "Annuleer" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Import" +msgstr "Importeer" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Results :" +msgstr "Resultaat :" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "Close" +msgstr "Sluiten" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "View Bank Statement(s)" +msgstr "Bekijk bankafschrift(en)" + +#. module: l10n_be_coda_advanced +#: view:account.coda.import:0 +msgid "View CODA Bank Statement(s)" +msgstr "Bekijk CODA dagafschrift(en)" + +#. module: l10n_be_coda_advanced +#: model:ir.model.fields,field_description:l10n_be_coda_advanced.field_account_coda_import_coda_data +msgid "CODA (Zip) File " +msgstr "CODA (Zip) bestand" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:10 +msgid "Bank Statements" +msgstr "Afschriften" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:11 +msgid "CODA Bank Statements" +msgstr "CODA dagafschriften" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:12 +msgid "Extra information" +msgstr "Extra informatie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:13 +msgid "The CODA File has been processed by" +msgstr "Het CODA bestand is verwerkt door" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:14 +msgid "Number of statements processed" +msgstr "Aantal verwerkte afschriften" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:14 +msgid "Number of errors" +msgstr "Aantal fouten" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:15 +msgid "\n\nBank Journal: %s\nCODA Version: %s\nCODA Sequence Number: %s\nPaper Statement Sequence Number: %s\nBank Account: %s\nAccount Holder Name: %s\nDate: %s, Starting Balance: %.2f, Ending Balance: %.2f%s" +msgstr "\n\nFinancieel dagboek: %s\nCODA Versie: %s\nVolgnummer CODA: %s\nVolgnummer papieren afschrift: %s\nBankrekening: %s\nNaam rekeninghouder: %s\nDatum: %s, Oud saldo: %.2f, Nieuw saldo: %.2f%s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:16 +msgid "Transaction Type: %s - %s\nTransaction Family: %s - %s\nTransaction Code: %s - %s\nTransaction Category: %s - %s\nStructured Communication Type: %s - %s\nCommunication: %s" +msgstr "Verrichtingstype: %s - %s\nVerrichtingsfamilie: %s - %s\nVerrichtingscode: %s - %s\nVerrichtingsrubriek: %s - %s\nType gestructureerde mededeling: %s - %s\nMededeling: %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:17 +msgid "Partner Name: %s \nPartner Account Number: %s\nTransaction Type: %s - %s\nTransaction Family: %s - %s\nTransaction Code: %s - %s\nTransaction Category: %s - %s\nStructured Communication Type: %s - %s\nPayment Reference: %s\nCommunication: %s" +msgstr "Naam Partner: %s \nBankrekeningnummer partner: %s\nVerrichtingstype: %s - %s\nVerrichtingsfamilie: %s - %s\nVerrichtingscode: %s - %s\nVerrichtingsrubriek: %s - %s\nType gestructureerde mededeling: %s - %s\nBetaalreferte: %s\nMededeling: %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:18 +msgid "Free Communication:\n %s" +msgstr "Vrij bericht:\n %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:20 +msgid "Payment with ISO 11649 structured format communication" +msgstr "Betaling met ISO 11649 gestructureerde mededeling" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:21 +msgid "Payment with a structured format communication applying the ISO standard 11649" +msgstr "Betaling met een gestructureerde mededeling volgens ISO standaard 11649" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:23 +msgid "Number (e.g. of the cheque, of the card, etc.)" +msgstr "Nummer (bijv. van de cheque, kaart, enz.)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:26 +msgid "Gross amount in the currency of the account" +msgstr "Brutobedrag in de munt van de rekening" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:27 +msgid "Gross amount in the original currency" +msgstr "Brutobedrag in oorspronkelijk munt" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:28 +msgid "Rate" +msgstr "Koers" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:29 +msgid "Currency" +msgstr "Devies" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:30 +msgid "Structured format communication" +msgstr "Gestructureerde mededeling" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:31 +msgid "Country code of the principal" +msgstr "Landcode van de opdrachtgever" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:32 +msgid "Equivalent in EUR" +msgstr "Tegenwaarde in EUR" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:34 +msgid "VAT, withholding tax on income, commission, etc." +msgstr "BTW, roerende voorheffing, provisie, enz." + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:35 +msgid "Equivalent in the currency of the account" +msgstr "Tegenwaarde in de munt van de rekening" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:36 +msgid "Amount on which % is calculated" +msgstr "Bedrag waarop % wordt berekend" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:37 +msgid "Percent" +msgstr "Percent" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:38 +msgid "Minimum applicable" +msgstr "Minimum van toepassing" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:39 +msgid "Minimum not applicable" +msgstr "Minimum niet van toepassing" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:41 +msgid "Direct debit – DOM’80" +msgstr "Domiciliëringen – DOM’80" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:42 +msgid "Direct Debit Number" +msgstr "Domiciliëringsnummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:43 +msgid "Central (Pivot) Date" +msgstr "Spildatum" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:44 +msgid "Communication Zone" +msgstr "Mededelingszone" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:45 +msgid "Paid or reason for refusal" +msgstr "Betaald of reden van weigering" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:46 +msgid "Creditor's Number" +msgstr "Nummer schuldeiser" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:47 +msgid "paid" +msgstr "betaald" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:48 +msgid "direct debit cancelled or nonexistent" +msgstr "herroepen of onbestaande domiciliëring" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:49 +msgid "refusal - other reason" +msgstr "weigering - andere reden" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:50 +msgid "payer disagrees" +msgstr "betaler niet akkoord" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:51 +msgid "direct debit number linked to another identification number of the creditor" +msgstr "domiciliëringsnummer gekoppeld aan een ander identificatienummer schuldeiser" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:53 +msgid "Closing" +msgstr "Afsluiting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:54 +msgid "Closing, period from %s to %s" +msgstr "Afsluiting, periode van %s tot %s" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:55 +msgid "Interest rates, calculation basis" +msgstr "Rentegetallen, berekeningsbasis" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:56 +msgid "Interest" +msgstr "Rente" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:58 +msgid "ATM/POS debit" +msgstr "Debet ATM/POS" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:59 +msgid "Card Number" +msgstr "Kaartnummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:60 +msgid "Card Scheme" +msgstr "Kaartschema" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:61 +msgid "Terminal Number" +msgstr "Terminalnummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:62 +msgid "First Transaction Sequence Number" +msgstr "Volgnummer eerste verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:63 +msgid "Last Transaction Sequence Number" +msgstr "Volgnummer laatste verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:64 +msgid "Transaction Sequence Number" +msgstr "Volgnummer verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:65 +msgid "Date of first transaction" +msgstr "Datum eerste verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:66 +msgid "Date of last transaction" +msgstr "Datum laatste verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:67 +msgid "Time" +msgstr "Tijdstip" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:68 +msgid "Transaction Type" +msgstr "Soort verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:69 +msgid "Terminal Identification" +msgstr "Identificatie van de terminal" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:70 +msgid "Original Amount" +msgstr "Oorspronkelijk bedrag" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:71 +msgid "Volume" +msgstr "Volume" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:72 +msgid "Product Code" +msgstr "Productcode" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:73 +msgid "Unit Price" +msgstr "Eenheidsprijs" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:74 +msgid "Private" +msgstr "Privé" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:75 +msgid "Other" +msgstr "Andere" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:77 +msgid "Withdrawal" +msgstr "Afhaling" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:78 +msgid "Proton loading" +msgstr "Proton oplading" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:79 +msgid "Reimbursement Proton balance" +msgstr "Teruggave proton saldo" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:80 +msgid "Reversal of purchases" +msgstr "Terugboeking aankopen" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:81 +msgid "Distribution sector" +msgstr "Distributiesector" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:82 +msgid "Teledata" +msgstr "Teledata" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:83 +msgid "Fuel" +msgstr "Brandstof" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:85 +msgid "POS credit - globalisation" +msgstr "Credit POS - globalisatie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:86 +msgid "POS credit - individual transaction" +msgstr "Credit POS - individuele verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:87 +msgid "POS Number" +msgstr "POS-nummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:88 +msgid "Period Number" +msgstr "Periodenummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:89 +msgid "Transaction Reference" +msgstr "Referte verrichting" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:91 +msgid "Terminal cash deposit" +msgstr "Storting aan terminal" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:92 +msgid "Validation Date" +msgstr "Datum van validatie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:93 +msgid "Validation Sequence Number" +msgstr "Volgnummer validatie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:94 +msgid "Amount (given by the customer)" +msgstr "Oorspronkelijk bedrag" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:95 +msgid "Conformity Code" +msgstr "Code conformiteit" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:96 +msgid "Message" +msgstr "Mededeling" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:98 +msgid "guarantee without fixed term" +msgstr "borgstelling zonder vaste termijn" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:99 +msgid "Starting Date" +msgstr "Begindatum" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:100 +msgid "Maturity Date" +msgstr "Vervaldatum" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:101 +msgid "Basic Amount" +msgstr "Basisbedrag" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:102 +msgid "Percentage" +msgstr "Percentage" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:103 +msgid "Term in days" +msgstr "Termijn in dagen" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:104 +msgid "Guarantee Number" +msgstr "Borgstellingsnummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:106 +msgid "Settlement credit cards" +msgstr "Afrekening kredietkaarten" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:107 +msgid "Issuing Institution" +msgstr "Uitgevende instelling" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:108 +msgid "Invoice Number" +msgstr "Factuurnummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:109 +msgid "Identification Number" +msgstr "Identificatienummer" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:110 +msgid "Date" +msgstr "Datum" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:112 +msgid "Credit" +msgstr "Krediet" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:113 +msgid "Credit Account Number" +msgstr "Rekeningnummer van het krediet" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:114 +msgid "Old Balance" +msgstr "Oud saldo" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:115 +msgid "New Balance" +msgstr "Nieuw saldo" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:116 +msgid "Amount" +msgstr "Bedrag" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:117 +msgid "End Date" +msgstr "Einddatum" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:118 +msgid "Nominal Interest Rate or Rate of Charge" +msgstr "Nominale rentevoet of lastenpercentage" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:120 +msgid "European direct debit (SEPA)" +msgstr "Europese domiciliëring (direct debit SEPA)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:121 +msgid "Settlement Date" +msgstr "Datum afrekening" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:122 +msgid "Direct Debit Type" +msgstr "Type domiciliëring" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:123 +msgid "Direct Debit Scheme" +msgstr "Schema domiciliëring" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:124 +msgid "Creditor's Identification Code" +msgstr "Identificatiecode van de schuldeiser" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:125 +msgid "Mandate Reference" +msgstr "Mandaat referentie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:126 +msgid "Communication" +msgstr "Mededeling" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:127 +msgid "R transaction Type" +msgstr "Type R transactie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:128 +msgid "Reason" +msgstr "Reden" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:129 +msgid "unspecified" +msgstr "niet bepaald" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:130 +msgid "recurrent" +msgstr "recurrent" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:131 +msgid "one-off" +msgstr "one-off" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:132 +msgid "1-st (recurrent)" +msgstr "1-st (recurrent)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:133 +msgid "last (recurrent)" +msgstr "last (recurrent)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:134 +msgid "technical problem" +msgstr "technisch probleem" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:135 +msgid "refusal - reason not specified" +msgstr "weigering - reden niet bepaald" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:136 +msgid "debtor disagrees" +msgstr "schuldenaar niet akkoord" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:137 +msgid "debtor's account problem" +msgstr "probleem met rekening schuldenaar" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:138 +msgid "reject" +msgstr "onuitvoerbaar (reject)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:139 +msgid "return" +msgstr "onbetaald (return)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:140 +msgid "refund" +msgstr "terugbetaling (refund)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:141 +msgid "reversal" +msgstr "rechtzetting (reversal)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:142 +msgid "cancellation" +msgstr "annulatie (cancellation)" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:144 +msgid "Name" +msgstr "Naam" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:145 +msgid "Street" +msgstr "Straat" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:146 +msgid "Locality" +msgstr "Lokaliteit" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:147 +msgid "Identification Code" +msgstr "Identificatiecode" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:149 +msgid "Description of the detail" +msgstr "Aard van het detail" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:150 +msgid "Category" +msgstr "Rubriek" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:152 +msgid "Number of notes/coins" +msgstr "Aantal biljetten/munten" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:153 +msgid "Note/coin denomination" +msgstr "Biljet/munt denominatie" + +#. module: l10n_be_coda_advanced +#: code:addons/l10n_be_coda_advanced/wizard/coda_import.py:154 +msgid "Total amount" +msgstr "Totaal bedrag" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.coda_bank_statement_action_goto_account_coda +msgid "CODA Data File" +msgstr "CODA bestand" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.coda_bank_account_action +msgid "CODA Bank Account Configuration" +msgstr "CODA bankrekening instellingen" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_comm_type_action +msgid "CODA Structured Communication Types" +msgstr "CODA verrichtingen - Gestructureerde mededelingen" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_trans_category_action +msgid "CODA Transaction Categories" +msgstr "CODA verrichtingen - Rubrieken" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_trans_code_action +msgid "CODA Transaction Codes" +msgstr "CODA verrichtingen - Codes" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_trans_type_action +msgid "CODA Transaction Types" +msgstr "CODA verrichtingen - Types" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.coda_bank_statement_action +msgid "CODA Bank Statements" +msgstr "CODA dagafschriften" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.act_window,name:l10n_be_coda_advanced.account_coda_action +msgid "Imported CODA Files" +msgstr "Geïmporteerde CODA bestanden" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.wizard,name:l10n_be_coda_advanced.account_coda_import_action_cbs +msgid "Import CODA File" +msgstr "Importeer CODA bestand" + +#. module: l10n_be_coda_advanced +#: model:ir.actions.wizard,name:l10n_be_coda_advanced.wizard_account_coda_action_ac +msgid "Import CODA File" +msgstr "Importeer CODA bestand" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.menu_coda_processing +msgid "CODA Processing" +msgstr "CODA verwerking" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_import_menu +msgid "Import CODA Files" +msgstr "Importeer CODA bestanden" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.coda_bank_account_menu +msgid "CODA Bank Account Configuration" +msgstr "CODA bankrekening instellingen" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_comm_type_menu +msgid "CODA Structured Communication Types" +msgstr "CODA verrichtingen - Gestructureerde mededelingen" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_trans_category_menu +msgid "CODA Transaction Categories" +msgstr "CODA verrichtingen - Rubrieken" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_trans_code_menu +msgid "CODA Transaction Codes" +msgstr "CODA verrichtingen - Codes" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_trans_type_menu +msgid "CODA Transaction Types" +msgstr "CODA verrichtingen - Types" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.coda_bank_statement_menu +msgid "CODA Bank Statements" +msgstr "CODA dagafschriften" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.account_coda_menu +msgid "Imported CODA Files" +msgstr "Geïmporteerde CODA bestanden" + +#. module: l10n_be_coda_advanced +#: model:ir.ui.menu,name:l10n_be_coda_advanced.menu_coda_configuration +msgid "CODA Configuration" +msgstr "CODA configuratie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_0 +msgid "Simple amount without detailed data; e.g. : an individual credit transfer (free of charges)." +msgstr "Enkelvoudig bedrag zonder details; bijv. : een individuele overschrijving (zonder kosten)." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_1 +msgid "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)." +msgstr "Bedrag getotaliseerd door de cliënt; bijv. een bestand met loon- of leveranciersbetalingen of een bestand met invorderingen waarvoor de cliënt in één bedrag wordt gedebiteerd of gecrediteerd. Dit type wordt in principe ook gebruikt als er geen details (type 5) volgen." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_5 +msgid "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)." +msgstr "Detail van 1. Standaard worden de details niet weergegeven. De cliënt kan er echter wel voor kiezen om de details na het globaal record (type 1) te ontvangen in zijn bestand." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_2 +msgid "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." +msgstr "Bedrag getotaliseerd door de bank; bijv. : het totale bedrag van een reeks overschrijvingen met gestructureerde mededeling. Dit type wordt in principe ook gebruikt als er geen details (type 6 of 7) volgen." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_6 +msgid "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." +msgstr "Detail van 2. Enkelvoudig bedrag zonder details. Normaal volgen deze details op het type 2. De cliënt kan er voor kiezen om deze details in een apart bestand te ontvangen. Men spreekt dan van een ‘afzonderlijke toepassing’. De records in een afzonderlijke toepassing behouden het type 6" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_7 +msgid "Detail of 2. Simple account with detailed data The records in a separate application keep type 7." +msgstr "Detail van 2. Enkelvoudig bedrag met details. De records in een afzonderlijke toepassing behouden het type 7." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_9 +msgid "Detail of 7. The records in a separate application keep type 9." +msgstr "Detail van 7. De records in een afzonderlijke toepassing behouden het type 9." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_3 +msgid "Simple amount with detailed data; e.g. in case of charges for cross-border credit transfers." +msgstr "Enkelvoudig bedrag met details; bijv. bij kosten op buitenlandse overschrijvingen." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.type,description:l10n_be_coda_advanced.actt_8 +msgid "Detail of 3." +msgstr "Detail van 3." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_00 +msgid "Undefined transactions" +msgstr "Niet gedefinieerde verrichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_00 +msgid "Undefined transaction" +msgstr "Niet gecodeerde verrichting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_33 +msgid "Value correction" +msgstr "Correctie valutering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_35 +msgid "Correction" +msgstr "Correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_39 +msgid "Cancellation of a transaction" +msgstr "Annulatie van creditboeking" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_83 +msgid "Value correction" +msgstr "Correctie valutering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_85 +msgid "Correction" +msgstr "Correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_87 +msgid "Costs refunded" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_00_89 +msgid "Cancellation of a transaction" +msgstr "Annulatie van debetboeking" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_01 +msgid "Domestic or local SEPA credit transfers" +msgstr "Binnenlandse/lokale overschrijvingen - SEPA credit transfers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_01 +msgid "Individual transfer order" +msgstr "Enkelvoudige overschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_02 +msgid "Individual transfer order initiated by the bank" +msgstr "Enkelvoudige overschrijving geïnitieerd door de bank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_03 +msgid "Standing order" +msgstr "Doorlopende opdracht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_05 +msgid "Payment of wages, etc." +msgstr "Betaling lonen, e.d." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_07 +msgid "Collective transfer" +msgstr "Collectieve overschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_09 +msgid "Your semi-standing order" +msgstr "Uw half doorlopende opdracht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_11 +msgid "Your semi-standing order – payment to employees" +msgstr "Uw half doorlopende opdracht - betaling werknemers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_13 +msgid "Transfer from your account" +msgstr "Overschrijving van uw rekening" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_15 +msgid "Balance due insurance premium" +msgstr "Premie schuldsaldoverzekering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_17 +msgid "Financial centralisation" +msgstr "Financiële centralisatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_39 +msgid "Your issue circular cheque" +msgstr "Uw emissie circulaire cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_50 +msgid "Transfer in your favour" +msgstr "Overschrijving te uwen gunste" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_51 +msgid "Transfer in your favour – initiated by the bank" +msgstr "Overschrijving te uwen gunste – geïnitieerd door de bank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_52 +msgid "Payment in your favour" +msgstr "Storting te uwen gunste" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_54 +msgid "Unexecutable transfer order" +msgstr "Onuitvoerbare overschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_60 +msgid "Non-presented circular cheque" +msgstr "Niet aangeboden circulaire cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_62 +msgid "Unpaid postal order" +msgstr "Niet uitbetaalde postassignatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_64 +msgid "Transfer to your account" +msgstr "Overschrijving naar uw rekening intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_66 +msgid "Financial centralization" +msgstr "Financiële centralisatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_01_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_03 +msgid "Cheques" +msgstr "Cheques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_01 +msgid "Payment of your cheque" +msgstr "Betaling van uw cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_03 +msgid "Your purchase by payment card" +msgstr "Uw aankoop met betaalkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_05 +msgid "Payment of voucher" +msgstr "Betaling van bon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_07 +msgid "Definitely unpaid cheque" +msgstr "Definitief onbetaalde cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_09 +msgid "Unpaid voucher" +msgstr "Onbetaalde bon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_11 +msgid "Department store cheque" +msgstr "Warenhuischeque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_13 +msgid "Eurocheque written out abroad" +msgstr "Eurocheque uitgeschreven in het buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_15 +msgid "Your purchase bank cheque" +msgstr "Aanmaak bankcheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_17 +msgid "Your certified cheque" +msgstr "Uw gecertificeerde cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_19 +msgid "Settlement of credit cards" +msgstr "Afrekening kredietkaarten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_35 +msgid "Cash advance" +msgstr "Cash advance" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_37 +msgid "Cheque-related costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_38 +msgid "Provisionally unpaid" +msgstr "Voorlopig onbetaald" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_39 +msgid "Provisionally unpaid due to other reason than manual presentation" +msgstr "Voorlopig onbetaald omwille van andere reden dan manuele aanbieding" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_50 +msgid "Credit of a payment via terminal" +msgstr "Credit van een betaling via terminal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_52 +msgid "First credit of cheques, vouchers, luncheon vouchers, postal orders, credit under usual reserve" +msgstr "Eerste credit van cheques, bons, maaltijdbons, postassignaties, credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_56 +msgid "Non-presented certified cheques" +msgstr "Niet aangeboden gecertificeerde cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_58 +msgid "Remittance of cheques, vouchers, etc. credit after collection" +msgstr "Remise cheques, bons, enz. credit na inning" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_60 +msgid "Reversal of voucher" +msgstr "Terugboeking bon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_62 +msgid "Reversal of cheque" +msgstr "Terugboeking cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_63 +msgid "Second credit of unpaid cheque" +msgstr "Tweede creditering van onbetaald gestelde cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_64 +msgid "Reversal of settlement of credit card" +msgstr "Terugboeking afrekening kredietkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_66 +msgid "Remittance of cheque by your branch - credit under usual reserve" +msgstr "Remise cheque door uw bijhuis credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_68 +msgid "Credit of a payment via electronic purse" +msgstr "Credit van een betaling via elektronische geldbeugel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_87 +msgid "Reimbursement of cheque-related costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_03_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_04 +msgid "Cards" +msgstr "Kaarten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_01 +msgid "Loading a GSM card" +msgstr "Opladen van GSM kaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_02 +msgid "Payment by means of a payment card within the Eurozone" +msgstr "Betaling met debetkaart binnen eurozone" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_03 +msgid "Settlement credit cards" +msgstr "Afrekening kredietkaarten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_04 +msgid "Cash withdrawal from an ATM" +msgstr "Geldopneming via automaat" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_05 +msgid "Loading Proton" +msgstr "Opladen Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_06 +msgid "Payment with tank card" +msgstr "Betaling met tankkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_07 +msgid "Payment by GSM" +msgstr "Betaling met GSM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_08 +msgid "Payment by means of a payment card outside the Eurozone" +msgstr "Betaling met debetkaart buiten eurozone" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_50 +msgid "Credit after a payment at a terminal" +msgstr "Credit van een betaling via terminal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_51 +msgid "Unloading Proton" +msgstr "Ontlading Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_52 +msgid "Loading GSM cards" +msgstr "Opladen van GSM kaarten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_53 +msgid "Cash deposit at an ATM" +msgstr "Geldstorting aan automaat" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_55 +msgid "Income from payments by GSM" +msgstr "Ontvangsten betalingen met GSM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_68 +msgid "Credit after Proton payments" +msgstr "Credit van betalingen via Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_04_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_05 +msgid "Direct debit" +msgstr "Domiciliëringen - Direct debit" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_01 +msgid "Payment" +msgstr "Betaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_03 +msgid "Unpaid debt" +msgstr "Onbetaalde invordering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_05 +msgid "Reimbursement" +msgstr "Terugbetaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_50 +msgid "Credit after collection" +msgstr "credit na inning" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_52 +msgid "Credit under usual reserve" +msgstr "credit onder gewoon voorbehoud" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_54 +msgid "Reimbursement" +msgstr "Terugbetaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_56 +msgid "Unexecutable reimbursement" +msgstr "Onuitvoerbare terugbetaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_58 +msgid "Reversal" +msgstr "Terugboeking" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_05_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_07 +msgid "Domestic commercial paper" +msgstr "Binnenlands handelspapier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_01 +msgid "Payment commercial paper" +msgstr "Betaling handelspapier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_03 +msgid "Payment receipt card" +msgstr "Betaling ontvangkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_05 +msgid "Commercial paper claimed back" +msgstr "Teruggevraagd handelspapier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_06 +msgid "Extension of maturity date" +msgstr "Verlenging vervaldag" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_07 +msgid "Unpaid commercial paper" +msgstr "Onbetaald handelspapier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_08 +msgid "Payment in advance" +msgstr "Vervroegde betaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_09 +msgid "Agio on supplier's bill" +msgstr "Agio's op leverancierwissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_10 +msgid "Renewal of agreed maturity date" +msgstr "Vernieuwing van conventionele vervaldag" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_12 +msgid "Safe custody" +msgstr "Inbewaargeving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_14 +msgid "Warrant fallen due" +msgstr "Vervallen warrant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_37 +msgid "Costs related to commercial paper" +msgstr "Kosten i.v.m. handelspapier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_39 +msgid "Return of an irregular bill of exchange" +msgstr "Terugzending onregelmatige wissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_50 +msgid "Remittance of commercial paper - credit after collection" +msgstr "Remise handelspapier credit na inning" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_52 +msgid "Remittance of commercial paper - credit under usual reserve" +msgstr "Remise handelspapier credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_54 +msgid "Remittance of commercial paper for discount" +msgstr "Remise handelspapier ter disconto" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_56 +msgid "Remittance of supplier's bill with guarantee" +msgstr "Remise leverancierswissel met aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_58 +msgid "Remittance of supplier's bill without guarantee" +msgstr "Remise leverancierswissel zonder aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_64 +msgid "Warrant" +msgstr "Warrant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_86 +msgid "Payment after cession" +msgstr "Betaling na cessie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_07_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_09 +msgid "Counter transactions" +msgstr "Loketverrichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_01 +msgid "Cash withdrawal" +msgstr "Geldopneming" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_03 +msgid "Cash withdrawal by card (ATM)" +msgstr "Opneming van contanten met kaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_05 +msgid "Purchase of foreign bank notes" +msgstr "Aankoop deviezen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_07 +msgid "Purchase of gold/pieces" +msgstr "Aankoop goud/penningen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_09 +msgid "Purchase of petrol coupons" +msgstr "Aankoop benzinebons" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_11 +msgid "Your purchase of luncheon vouchers" +msgstr "Uw aankoop maaltijdcheques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_13 +msgid "Cash withdrawal by your branch or agents" +msgstr "Geldopneming door uw bijhuis/of agenten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_15 +msgid "Your purchase of lottery tickets" +msgstr "Uw aankoop loterijbiljet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_17 +msgid "Purchase of fiscal stamps" +msgstr "Aankoop fiscale zegels" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_19 +msgid "Difference in payment" +msgstr "Verschil in storting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_21 +msgid "Cash withdrawal on card (PROTON)" +msgstr "Geldopneming op kaart (PROTON)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_25 +msgid "Purchase of traveller’s cheque" +msgstr "Aankoop reischeque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_50 +msgid "Cash payment" +msgstr "Storting in contanten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_52 +msgid "Payment night safe" +msgstr "Storting nachtkluis" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_54 +msgid "Your payment ATM" +msgstr "Uw storting ATM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_56 +msgid "Reserve" +msgstr "Reserve" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_58 +msgid "Payment by your branch/agents" +msgstr "Storting door uw bijhuis/agenten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_60 +msgid "Sale of foreign bank notes" +msgstr "Verkoop deviezen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_62 +msgid "Sale of gold/pieces under usual reserve" +msgstr "Verkoop goud/penningen ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_64 +msgid "Your winning lottery ticket" +msgstr "Uw winnend loterijbiljet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_66 +msgid "Repurchase of petrol coupons" +msgstr "Terugkoop benzinebons" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_68 +msgid "Difference in payment" +msgstr "Verschil in storting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_70 +msgid "Sale of traveller’s cheque" +msgstr "Verkoop reischeque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_09_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_11 +msgid "Securities" +msgstr "Effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_01 +msgid "Purchase of securities" +msgstr "Aankoop effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_02 +msgid "Tenders" +msgstr "Aanbestedingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_03 +msgid "Subscription to securities" +msgstr "Intekening op effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_04 +msgid "Issues" +msgstr "Emissies" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_05 +msgid "Partial payment subscription" +msgstr "Gedeeltelijke storting inschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_06 +msgid "Share option plan – exercising an option" +msgstr "Aandelen optieplan – uitoefening optie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_09 +msgid "Settlement of securities" +msgstr "Liquidatie van effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_11 +msgid "Payable coupons/repayable securities" +msgstr "Betaalbare coupons/terugbetaalbare effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_13 +msgid "Your repurchase of issue" +msgstr "Uw terugkoop emissie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_15 +msgid "Interim interest on subscription" +msgstr "Tussentijdse intresten bij inschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_17 +msgid "Management fee" +msgstr "Commissie beheersloon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_19 +msgid "Regularisation costs" +msgstr "Regularisatiekosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_50 +msgid "Sale of securities" +msgstr "Verkoop van effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_51 +msgid "Tender" +msgstr "Aanbesteding" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_52 +msgid "Payment of coupons from a deposit or settlement of coupons delivered over the counter - credit under usual reserve" +msgstr "Betaling van coupons afkomstig uit bewaargeving of afrekening coupons aan het loket afgegeven credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_56 +msgid "Reserve" +msgstr "Reserve" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_58 +msgid "Repayable securities from a deposit or delivered at the counter - credit under usual reserve" +msgstr "Terugbetaalbare effecten afkomstig uit bewaargeving of afgegeven aan het loket - credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_62 +msgid "Interim interest on subscription" +msgstr "Tussentijdse interesten bij inschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_64 +msgid "Your issue" +msgstr "Uw emissie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_66 +msgid "Retrocession of issue commission" +msgstr "Retrocessie provisie inschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_68 +msgid "Compensation for missing coupon" +msgstr "Schadevergoeding ontbrekende coupon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_70 +msgid "Settlement of securities" +msgstr "Liquidatie effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_11_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_13 +msgid "Credit" +msgstr "Kredieten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_01 +msgid "Short-term loan" +msgstr "Lening op korte termijn" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_02 +msgid "Long-term loan" +msgstr "Lening op lange termijn" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_05 +msgid "Settlement of fixed advance" +msgstr "Aanzuivering vast voorschot" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_07 +msgid "Your repayment instalment credits" +msgstr "Uw terugbetaling afbetalingskredieten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_11 +msgid "Your repayment mortgage loan" +msgstr "Uw terugbetaling hypothecaire lening" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_13 +msgid "Settlement of bank acceptances" +msgstr "Vereffening bankaccepten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_15 +msgid "Your repayment hire-purchase and similar claims" +msgstr "Uw terugbetaling leasing en soortgelijke vorderingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_19 +msgid "Documentary import credits" +msgstr "Documentaire kredieten import" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_21 +msgid "Other credit applications" +msgstr "Overige kredietvorderingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_37 +msgid "Credit-related costs" +msgstr "Kosten i.v.m. kredieten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_50 +msgid "Settlement of instalment credit" +msgstr "Uitbetaling afbetalingskrediet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_54 +msgid "Fixed advance – capital and interest" +msgstr "Vast voorschot – kapitaal en rente" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_55 +msgid "Fixed advance – interest only" +msgstr "Vast voorschot – enkel rente" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_56 +msgid "Subsidy" +msgstr "Subsidie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_60 +msgid "Settlement of mortgage loan" +msgstr "Uitbetaling hypothecaire lening" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_62 +msgid "Term loan" +msgstr "Lening op termijn" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_68 +msgid "Documentary export credits" +msgstr "Documentaire kredieten export" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_70 +msgid "Settlement of discount bank acceptance" +msgstr "Afrekening disconto bankaccept" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_13_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_30 +msgid "Various transactions" +msgstr "Diverse verrichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_01 +msgid "Spot purchase of foreign exchange" +msgstr "Aankoop van deviezen contant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_03 +msgid "Forward purchase of foreign exchange" +msgstr "Aankoop van deviezen op termijn" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_05 +msgid "Capital and/or interest term investment" +msgstr "Kapitaal en/of intrest termijnbelegging" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_33 +msgid "Value (date) correction" +msgstr "Correctie valutering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_39 +msgid "Undefined transaction" +msgstr "Niet gedefinieerde verrichting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_50 +msgid "Spot sale of foreign exchange" +msgstr "Verkoop van deviezen contant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_52 +msgid "Forward sale of foreign exchange" +msgstr "Verkoop van deviezen op termijn" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_54 +msgid "Capital and/or interest term investment" +msgstr "Kapitaal en/of intrest termijnbelegging" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_55 +msgid "Interest term investment" +msgstr "Interest termijnbelegging" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_83 +msgid "Value (date) correction" +msgstr "Correctie valutering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_89 +msgid "Undefined transaction" +msgstr "Niet gedefinieerde verrichting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_30_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_35 +msgid "Closing (periodical settlements for interest, costs,…)" +msgstr "Afsluiting (periodieke afrekeningen van intresten, kosten,…)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_01 +msgid "Closing" +msgstr "Afsluiting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_37 +msgid "Costs" +msgstr "Kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_50 +msgid "Closing" +msgstr "Afsluiting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_35_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_41 +msgid "International credit transfers - non-SEPA credit transfers" +msgstr "Internationale overschrijvingen - non-SEPA credit transfers" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_01 +msgid "Transfer" +msgstr "Overschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_03 +msgid "Standing order" +msgstr "Doorlopende opdracht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_05 +msgid "Collective payments of wages" +msgstr "Collectieve loonbetalingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_07 +msgid "Collective transfers" +msgstr "Collectieve overschrijvingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_13 +msgid "Transfer from your account" +msgstr "Overschrijving van uw rekening" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_17 +msgid "Financial centralisation (debit)" +msgstr "Financiële centralisatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_37 +msgid "Costs relating to outgoing foreign transfers and non-SEPA transfers" +msgstr "Kosten op uitgaande internationale en non-sepa overschrijvingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_38 +msgid "Costs relating to incoming foreign and non-SEPA transfers" +msgstr "Kosten op inkomende internationale en non-sepa overschrijvingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_50 +msgid "Transfer" +msgstr "Overschrijving" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_64 +msgid "Transfer to your account" +msgstr "Overschrijving op uw rekening" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_66 +msgid "Financial centralisation (credit)" +msgstr "Financiële centralisatie (credit)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_41_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_43 +msgid "Foreign cheques" +msgstr "Buitenlandse cheques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_01 +msgid "Payment of a foreign cheque" +msgstr "Betaling buitenlandse cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_07 +msgid "Unpaid foreign cheque" +msgstr "Onbetaalde buitenlandse cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_15 +msgid "Purchase of an international bank cheque" +msgstr "Aankoop internationale bankcheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_37 +msgid "Costs relating to payment of foreign cheques" +msgstr "Kosten op betaling van buitenlandse cheques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_52 +msgid "Remittance of foreign cheque credit under usual reserve" +msgstr "Remise buitenlandse cheque credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_58 +msgid "Remittance of foreign cheque credit after collection" +msgstr "Remise buitenlandse cheque credit na inning" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_62 +msgid "Reversal of cheques" +msgstr "Terugboeking cheques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_70 +msgid "Purchase of traveller’s cheque" +msgstr "Inkoop reischeque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_87 +msgid "Reimbursement of costs" +msgstr "Terugstorting kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_43_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_47 +msgid "Foreign commercial paper" +msgstr "Buitenlands handelspapier" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_01 +msgid "Payment of foreign bill" +msgstr "Betaling buitenlandse wissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_05 +msgid "Bill claimed back" +msgstr "Teruggevraagde wissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_06 +msgid "Extension" +msgstr "Verlenging" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_07 +msgid "Unpaid foreign bill" +msgstr "Onbetaalde buitenlandse wissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_11 +msgid "Payment documents abroad" +msgstr "Betaling documenten buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_13 +msgid "Discount foreign supplier's bills" +msgstr "Disconto buitenlandse leverancierwissels" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_14 +msgid "Warrant fallen due" +msgstr "Vervallen warrant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_37 +msgid "Costs relating to the payment of a foreign bill" +msgstr "Kosten op de betaling van buitenlandse wissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_50 +msgid "Remittance of foreign bill credit after collection" +msgstr "Remise buitenl. Wissel credit na inning" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_52 +msgid "Remittance of foreign bill credit under usual reserve" +msgstr "Remise buitenlandse wissel credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_54 +msgid "Discount abroad" +msgstr "Disconto buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_56 +msgid "Remittance of guaranteed foreign supplier's bill" +msgstr "Remise buitenlandse leveranciers wissel met aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_58 +msgid "Idem without guarantee" +msgstr "Idem zonder aval" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_60 +msgid "Remittance of documents abroad - credit under usual reserve" +msgstr "Remise doc. Buitenl. Credit ogv" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_62 +msgid "Remittance of documents abroad - credit after collection" +msgstr "Remise doc. Buitenl. Credit na inning" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_64 +msgid "Warrant" +msgstr "Warrant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_87 +msgid "Reimbursement of costs" +msgstr "Terugbetaling van kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_47_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_49 +msgid "Foreign counter transactions" +msgstr "Loketverrichtingen in het buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_49_03 +msgid "ATM withdrawal" +msgstr "Opname ATM" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcf_80 +msgid "Separately charged costs and provisions" +msgstr "Los aangerekende kosten en provisies" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_01 +msgid "Guarantee card charges" +msgstr "Kosten garantiekaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_02 +msgid "Costs relating to electronic output" +msgstr "Kosten voor elektronische output" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_03 +msgid "Payment card charges" +msgstr "Kosten betaalkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_04 +msgid "Costs for holding a documentary cash credit" +msgstr "Kosten voor het aanhouden van een kaskrediet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_05 +msgid "Card charges" +msgstr "Kosten kaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_06 +msgid "Damage relating to bills and cheques" +msgstr "Schade bij wissels en cheques" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_07 +msgid "Insurance costs" +msgstr "Verzekeringskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_08 +msgid "Registering compensation for savings accounts" +msgstr "Klasseervergoeding voor spaarrekeningen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_09 +msgid "Postage" +msgstr "Portkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_10 +msgid "Purchase of Smartcard" +msgstr "Aankoop smartcard" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_11 +msgid "Costs for the safe custody of correspondence" +msgstr "Kosten voor bewaring van briefwisseling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_12 +msgid "Costs for opening a bank guarantee" +msgstr "Openingskost bankgarantie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_13 +msgid "Renting of safes" +msgstr "Safehuur" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_14 +msgid "Handling costs instalment credit" +msgstr "Dossierkosten afbetalingskrediet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_15 +msgid "Night safe" +msgstr "Nachtkluis" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_16 +msgid "Bank confirmation to revisor or accountant" +msgstr "Bankbevestiging aan revisor of accountant" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_17 +msgid "Charge for safe custody" +msgstr "Bewaarloon Geïnd voor de open bewaring van effecten, en andere pakken" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_18 +msgid "Trade information" +msgstr "Handelsinlichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_19 +msgid "Special charge for safe custody" +msgstr "Bijzonder bewaarloon" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_20 +msgid "Drawing up a certificate" +msgstr "Aanmaken attest" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_21 +msgid "Pay-packet charges" +msgstr "Kosten loonzakje" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_22 +msgid "Management/custody" +msgstr "Beheer/bewaring" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_23 +msgid "Research costs" +msgstr "Opzoekingskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_24 +msgid "Participation in and management of interest refund system" +msgstr "Toetreding en beheer renteristornosysteem" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_25 +msgid "Renting of direct debit box" +msgstr "Huur domiciliëringsbus" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_26 +msgid "Travel insurance premium" +msgstr "Premie reisbijstandsverzekering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_27 +msgid "Subscription fee" +msgstr "Abonnementsgeld" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_29 +msgid "Information charges" +msgstr "Inlichtingskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_31 +msgid "Writ service fee" +msgstr "Kosten gerechtsdeurwaarder" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_33 +msgid "Miscellaneous fees and commissions" +msgstr "Diverse kosten en provisies" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_35 +msgid "Costs" +msgstr "Kosten Kosten aangerekend voor het berekenen van het bedrag van de te betalen belasting (vb. Fiscomat)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_37 +msgid "Access right to database" +msgstr "Toegangsrecht tot databank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_39 +msgid "Surety fee" +msgstr "Borgstellingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_41 +msgid "Research costs" +msgstr "Studiekosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_43 +msgid "Printing of forms" +msgstr "Aanmaak formulieren" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_45 +msgid "Documentary credit charges" +msgstr "Kosten documentair krediet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_47 +msgid "Charging fees for transactions" +msgstr "Tarifering van verrichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_49 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,description:l10n_be_coda_advanced.actcc_80_99 +msgid "Cancellation or correction" +msgstr "Annulering of correctie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_01 +msgid "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." +msgstr "Overschrijving door de cliënt afgegeven op papier of via elektronische weg, ook als deze verrichting een uitvoeringsdatum in de toekomst heeft. Het betreft zowel binnenlandse betalingen als eurobetalingen die aan de geldende voorwaarden voldoen." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_02 +msgid "The bank takes the initiative for debiting the customer’s account." +msgstr "Debiteren van de rekening van een cliënt op initiatief van de bank." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_03 +msgid "Credit transfer for which the order has been given once and which is carried out again at regular intervals without any change." +msgstr "Overschrijving waarvoor eenmalig een opdracht is gegeven en die op afgesproken tijdstippen opnieuw en ongewijzigd wordt uitgevoerd." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_05 +msgid "The principal will be debited for the total amount of the file entered." +msgstr "Opdrachtgever wordt voor het totale bedrag van het afgegeven bestand gedebiteerd." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_07 +msgid "The principal will be debited for the total amount of the file entered." +msgstr "Opdrachtgever wordt voor het totale bedrag van het afgegeven bestand gedebiteerd." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_13 +msgid "Transfer from one account to another account of the same customer at the bank's or the customer's initiative (intracompany)." +msgstr "Overschrijving van een rekening naar een andere rekening van dezelfde cliënt op initiatief van de bank of van de cliënt (intracompany)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_17 +msgid "In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement." +msgstr "Indien de bank totaliseert, krijgt deze verrichting het type 2. Dit globaal kan gevolgd worden door de detailbewegingen." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_39 +msgid "To be used for issued circular cheques given in consignment" +msgstr "Te gebruiken voor uitgegeven circulaire cheques in consignatie afgegeven" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_51 +msgid "The bank takes the initiative for crediting the customer’s account." +msgstr "Crediteren van de rekening van de cliënt op initiatief van de bank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_52 +msgid "Payment by a third person" +msgstr "Storting door een derde" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_64 +msgid "Intracompany" +msgstr "Intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_01_66 +msgid "In case of centralisation by the bank, type 2 will be allotted to this transaction. This total can be followed by the detailed movement." +msgstr "Indien de bank totaliseert, krijgt deze verrichting het type 2. Dit globaal kan gevolgd worden door de detailbewegingen." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_05 +msgid "Payment of holiday pay, etc." +msgstr "Bon voor vakantiegelden, enz." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_15 +msgid "Cheque drawn by the bank on itself, usually with charges." +msgstr "Cheque getrokken door de bank op zichzelf, doorgaans met kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_17 +msgid "Amount of the cheque; if any, charges receive code 37" +msgstr "Het gaat hier om het bedrag van de cheque, eventuele kosten krijgen de code 37." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_58 +msgid "Also for vouchers, postal orders, anything but bills of exchange, acquittances, promissory notes, etc." +msgstr "Ook voor bons, postassignaties, postwissels, alles behalve wissels, kwijtingen, promessen, enz." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_62 +msgid "cheques debited on account, but debit cancelled afterwards for lack of cover (double debit/contra-entry of transaction 01 or 05)" +msgstr "cheques gedebiteerd op rekening, maar debet nadien geannuleerd wegens ontoereikende dekking (dubbele debitering/tegenboeking van verrichting 01 of 05)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_03_87 +msgid "Overall amount, VAT included" +msgstr "Globaal bedrag, B.T.W. inbegr." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_01 +msgid "Debit customer who is loading" +msgstr "Debet cliënt oplader" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_02 +msgid "Eurozone = countries which have the euro as their official currency" +msgstr "eurozone = landen met euro als officiële munt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_03 +msgid "See annexe III : communication 124" +msgstr "Zie bijlage III : mededeling 124" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_04 +msgid "At home as well as abroad" +msgstr "Zowel in binnen- als buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_08 +msgid "Eurozone = countries which have the euro as their official currency" +msgstr "eurozone = landen met euro als officiële munt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_37 +msgid "Various costs for possessing or using a payment card" +msgstr "Allerlei kosten voor het bezitten of gebruiken van een betaalkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_50 +msgid "Except Proton" +msgstr "Uitgezonderd Proton" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_04_52 +msgid "Credit provider" +msgstr "Credit provider" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_05_58 +msgid "(cancellation of an undue debit of the debtor at the initiative of the financial institution or the debtor for lack of cover)" +msgstr "(annulering van een onrechtmatige debitering van de schuldenaar op initiatief van de bank of van de schuldenaar bij gebrek aan provisie)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_01 +msgid "Bills of exchange, acquittances, promissory notes; debit of the drawee" +msgstr "Wissels, kwijtingen, promessen; debet van de betrokkene" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_05 +msgid "Bill claimed back at the drawer's request (bill claimed back before maturity date)" +msgstr "Teruggevraagde wissel op verzoek van de trekker (wissel teruggevraagd voor vervaldag)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_06 +msgid "Costs chargeable to the remitter" +msgstr "Kosten ten laste van de remittent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_07 +msgid "Contra-entry of a direct credit or of a discount" +msgstr "Tegenboeking van directe creditering of van een disconto" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_08 +msgid "Debit of the remitter when the drawee pays in advance directly to the remitter (regards bank acceptances)" +msgstr "Debitering van de remittent wanneer de betrokkene vroegtijdig betaalt rechtstreeks aan de remittent (betreft bankaccepten)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_09 +msgid "Debit of the agios to the account of the drawee" +msgstr "Debitering van de agio's ten laste van de betrokkene" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_37 +msgid "If any, detail in the category (e.g. costs for presentation for acceptance, etc.)" +msgstr "Detail eventueel in de rubriek (b.v. kosten voor aanbieding ter acceptatie, enz.)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_39 +msgid "Debit of the drawer after credit under usual reserve or discount" +msgstr "Debet van de trekker na creditering ogv of disconto" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_50 +msgid "Credit of the remitter" +msgstr "Creditering van de remittent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_07_54 +msgid "Among other things advances or promissory notes" +msgstr "Onder meer voorschotten of promessen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_01 +msgid "Withdrawal by counter cheque or receipt; cash remitted by the bank clerk" +msgstr "Opneming met loketcheque of ontvangstbewijs; geld overhandigd door de bankbediende" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_13 +msgid "On the account of the head office" +msgstr "Op de rekening van het hoofdhuis" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_19 +msgid "Used in case of payments accepted under reserve of count, result of overcrediting" +msgstr "Gebruikt in geval van stortingen aanvaard onder voorbehoud van telling, gevolg van een te veel crediteren" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_50 +msgid "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" +msgstr "Voor eigen rekening - de commentaar voor de cliënt bevindt zich in de mededeling; ook voor gemengde stortingen (contanten + cheques) - niet mede te delen aan de cliënten; voor stortingen door een derde : zie familie 01" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_58 +msgid "Takes priority over transaction 52 (hence a payment made by an agent in a night safe = 58 and not 52)" +msgstr "Primeert op verrichting 52 (m.a.w. een storting door een agent in een nachtkluis = 58 en niet 52)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_09_68 +msgid "In case of payment accepted under reserve of count; result of undercrediting - see also transaction 19" +msgstr "In geval van storting aanvaard onder voorbehoud van telling; gevolg van te weinig creditering - zie ook verrichting 19" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_01 +msgid "Purchase of domestic or foreign securities, including subscription rights, certificates, etc." +msgstr "Aankoop van binnenlandse of buitenlandse effecten, inbegrepen inschrijvingsrechten, certificaten, enz." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_02 +msgid "Payment to the bank on maturity date" +msgstr "Op vervaldag wordt de bank vergoed" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_03 +msgid "Bonds, shares, tap issues of CDs, with or without payment of interest, etc." +msgstr "Obligaties, aandelen, doorlopende emissies van kasbons, met of zonder afrekening van rente, enz." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_05 +msgid "Debit of the subscriber for the complementary payment of partly-paid shares" +msgstr "Debitering van de inschrijver voor de complementaire storting van niet-volstorte aandelen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_09 +msgid "For professionals (stockbrokers) only, whoever the issuer may be (Belgian or foreigner)" +msgstr "Uitsluitend voor professionelen (wisselagenten), welke ook de emittent is (Belg of buitenlander)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_11 +msgid "Debit of the issuer by the bank in charge of the financial service" +msgstr "Debitering van de uitgever door de bank belast met de financiële dienst" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_13 +msgid "Unissued part (see 64)" +msgstr "Gedeelte dat niet geplaatst is (zie 64)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_15 +msgid "In case of subscription before the interest due date" +msgstr "In geval van inschrijving voor de startdatum van het rentegenot" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_51 +msgid "Company issues paper in return for cash" +msgstr "Bedrijf geeft papier uit en krijgt cash in de plaats" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_52 +msgid "Whatever the currency of the security" +msgstr "Wat ook de munt van het effect is" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_62 +msgid "When reimbursed separately to the subscriber" +msgstr "Wanneer afzonderlijk aan inschrijververgoed" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_64 +msgid "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" +msgstr "Bedrag gestort aan de emittent door de bank belast met de plaatsing (vaste overname of niet); tevens gebruikt bij de volstorting van niet-volstorte aandelen, zie verrichting 05" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_66 +msgid "For professionals such as insurances and stockbrokers" +msgstr "Voor professionelen als verzekeringen en wisselagenten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_68 +msgid "In case coupons attached to a purchased security are missing" +msgstr "Gebruikt ingeval coupons aan een aangekocht effect ontbreken" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_11_70 +msgid "Only with stockbrokers when they deliver the securities to the bank" +msgstr "Alleen met wisselagenten wanneer deze de effecten leveren aan de bank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_01 +msgid "Capital and/or interest (specified by the category)" +msgstr "Kapitaal en/of interest (wordt gespecificeerd via de rubriek)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_05 +msgid "Full or partial reimbursement of a fixed advance at maturity date" +msgstr "Geheel of gedeeltelijke terugbetaling van een vast voorschot op vervaldag" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_07 +msgid "Often by standing order or direct debit. In case of direct debit, family 13 is used." +msgstr "Dikwijls via doorlopende opdracht of via domiciliëring.In geval van domiciliëring wordt er via de fam. 13 gewerkt." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_15 +msgid "Hire-purchase agreement under which the financial institution is the lessor" +msgstr "Leasing waarbij de financiële instelling de leasinggever is." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_13_56 +msgid "Interest or capital subsidy" +msgstr "Rentetoelage of kapitaalsubsidie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_41_13 +msgid "Intracompany" +msgstr "Intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_41_64 +msgid "Intracompany" +msgstr "intracompany" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_43_01 +msgid "Debit of a cheque in foreign currency or in EUR in favour of a foreigner" +msgstr "Debet van een cheque in vreemde munt of in euro ten gunste van een buitenlander" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_43_07 +msgid "Foreign cheque remitted for collection that returns unpaid" +msgstr "Cheque op het buitenland ter incasso gegeven die onbetaald terugkomt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_47_11 +msgid "Bills of lading" +msgstr "Connossementen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_47_13 +msgid "Debit customer, payment of agios, interest, exchange commission, etc." +msgstr "Debet cliënt, afrekening agio's, rente, wisselprovisie, enz." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_07 +msgid "- insurance costs of account holders against fatal accidents - passing-on of several insurance costs" +msgstr "- kosten van verzekering van rekeninghouders tegen dodelijke ongevallen + - doorrekening van diverse verzekeringskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_09 +msgid "Postage recouped to the debit of the customer (including forwarding charges)" +msgstr "Portkosten gerecupereerd ten laste van de cliënt (inclusief verzendingskosten)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_11 +msgid "Costs chargeable to clients who ask to have their correspondence kept at their disposal at the bank's counter" +msgstr "Kosten ten laste van cliënten die vragen dat de voor hen bestemde briefwisseling aan het loket van de bank te hunner beschikking wordt gehouden" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_13 +msgid "Commission for renting a safe deposit box" +msgstr "Provisie voor de verhuur van safes" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_15 +msgid "Commission collected to the debit of the customer to whom the bank delivers a key which gives access to the night safe" +msgstr "Provisie geïnd ten laste van de cliënt aan wie de bank een sleutel geeft voor de toegang tot de nachtkluis" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_19 +msgid "Collected for securities, gold, pass-books, etc. placed in safe custody" +msgstr "Geïnd voor effecten, goud, boekjes, enz . in bewaring gegeven" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_21 +msgid "Charges for preparing pay packets" +msgstr "Kosten voor het klaarmaken van loonzakjes" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_23 +msgid "Costs charged for all kinds of research (information on past transactions, address retrieval, ...)" +msgstr "Kosten aangerekend voor diverse opzoekingen (inlichtingen aangaande voorbije verrichtingen, opsporing van adressen, ...)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_25 +msgid "Commission for the renting of boxes put at the disposal for the correspondence" +msgstr "Provisie voor de verhuur van bussen voor het ter beschikking stellen van de briefwisseling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_27 +msgid "For publications of the financial institution" +msgstr "Voor publicaties van de financiële instelling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_29 +msgid "Charges collected for: - commercial information - sundry information" +msgstr "Kosten geïnd voor : + - commerciële inlichtingen + - diverse inlichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_31 +msgid "E.g. for signing invoices" +msgstr "Bv. voor het tekenen van facturen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_33 +msgid "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)" +msgstr "Elders niet gedefinieerde kosten, dikwijls met manueel bericht (vb. voor afhalen, bestellen van fondsen) +Zonder B.T.W. = type 0 +Met B.T.W. = type 3 (minimum 3 artikels)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_37 +msgid "Fixed right, either one-off or periodical; for details, see "categories"" +msgstr "Vast recht, kan eenmalig of periodiek zijn; voor details zie "rubrieken"" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.code,comment:l10n_be_coda_advanced.actcc_80_39 +msgid "Agios on guarantees given" +msgstr "Openingskost van een bankgarantie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_000 +msgid "Net amount" +msgstr "Netto bedrag" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_001 +msgid "Interest received" +msgstr "Ontvangen rente" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_002 +msgid "Interest paid" +msgstr "Betaalde rente" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_003 +msgid "Credit commission" +msgstr "Kredietprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_004 +msgid "Postage" +msgstr "Portokosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_005 +msgid "Renting of letterbox" +msgstr "Huur brievenbus" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_006 +msgid "Various fees/commissions" +msgstr "Diverse provisies/kosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_007 +msgid "Access right to database" +msgstr "Toegangsrecht tot databank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_008 +msgid "Information charges" +msgstr "Kosten voor inlichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_009 +msgid "Travelling expenses" +msgstr "Reiskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_010 +msgid "Writ service fee" +msgstr "Kosten deurwaarder" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_011 +msgid "VAT" +msgstr "B.T.W." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_012 +msgid "Exchange commission" +msgstr "Wisselprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_013 +msgid "Payment commission" +msgstr "Betalingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_014 +msgid "Collection commission" +msgstr "Incassoprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_015 +msgid "Correspondent charges" +msgstr "Kosten correspondent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_016 +msgid "BLIW/IBLC dues" +msgstr "Retributie B.L.I.W." + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_017 +msgid "Research costs" +msgstr "Studiekosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_018 +msgid "Tental guarantee charges" +msgstr "Kosten voor huurgarantie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_019 +msgid "Tax on physical delivery" +msgstr "Belasting op materiële levering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_020 +msgid "Costs of physical delivery" +msgstr "Kosten voor materiële levering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_021 +msgid "Costs for drawing up a bank cheque" +msgstr "Kosten aanmaak bankcheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_022 +msgid "Priority costs" +msgstr "Prioriteitskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_023 +msgid "Exercising fee" +msgstr "Uitoefenprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_024 +msgid "Growth premium" +msgstr "Aangroeipremie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_025 +msgid "Individual entry for exchange charges" +msgstr "Indiv. boeking voor wisselkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_026 +msgid "Handling commission" +msgstr "Behandelingscommissie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_027 +msgid "Charges for unpaid bills" +msgstr "Kosten onbetaalde wissels" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_028 +msgid "Fidelity premium" +msgstr "Getrouwheidspremie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_029 +msgid "Protest charges" +msgstr "Protestkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_030 +msgid "Account insurance" +msgstr "Rekeningverzekering" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_031 +msgid "Charges foreign cheque" +msgstr "Kosten cheque buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_032 +msgid "Drawing up a circular cheque" +msgstr "Aanmaak circulaire cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_033 +msgid "Charges for a foreign bill" +msgstr "Kosten wissel buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_034 +msgid "Reinvestment fee" +msgstr "Herbeleggingsvergoeding" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_035 +msgid "Charges foreign documentary bill" +msgstr "Kosten docum. wissel buitenland" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_036 +msgid "Costs relating to a refused cheque" +msgstr "Kosten geweigerde cheque" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_037 +msgid "Commission for handling charges" +msgstr "Provisie voor dossierkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_039 +msgid "Telecommunications" +msgstr "Telecommunicatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_041 +msgid "Credit card costs" +msgstr "Kosten kredietkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_042 +msgid "Payment card costs" +msgstr "Kosten betaalkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_043 +msgid "Insurance costs" +msgstr "Verzekeringskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_045 +msgid "Handling costs" +msgstr "Dossierkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_047 +msgid "Charges extension bill" +msgstr "Kosten verlenging wissel" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_049 +msgid "Fiscal stamps/stamp duty" +msgstr "Fiscale zegels/zegelrecht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_050 +msgid "Capital term investment" +msgstr "Kapitaal termijnbelegging" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_051 +msgid "Withholding tax" +msgstr "Roerende voorheffing" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_052 +msgid "Residence state tax" +msgstr "Woonstaatheffing" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_053 +msgid "Printing of forms" +msgstr "Aanmaak formulieren" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_055 +msgid "Repayment loan or credit capital" +msgstr "Afloss. kapitaal lening of krediet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_057 +msgid "Interest subsidy" +msgstr "Rentesubsidie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_058 +msgid "Capital premium" +msgstr "Kapitaalpremie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_059 +msgid "Default interest" +msgstr "Verwijlintrest" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_061 +msgid "Charging fees for transactions" +msgstr "Tarifering van verrichtingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_063 +msgid "Rounding differences" +msgstr "Afrondingsverschillen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_065 +msgid "Interest payment advice" +msgstr "Bonificatiebericht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_066 +msgid "Fixed loan advance - reimbursement" +msgstr "Vast voorschot kredieten - terugbetaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_067 +msgid "Fixed loan advance - extension" +msgstr "Vast voorschot kredieten - verlenging" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_068 +msgid "Countervalue of an entry" +msgstr "Tegenwaarde van een boeking" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_069 +msgid "Forward arbitrage contracts : sum to be supplied by customer" +msgstr "Termijncontracten arbitrage: te leveren som door cliënt" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_070 +msgid "Forward arbitrage contracts : sum to be supplied by bank" +msgstr "Termijncontracten arbitrage: te leveren som door bank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_071 +msgid "Fixed loan advance - availability" +msgstr "Vast voorschot kredieten - ter beschikking stelling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_072 +msgid "Countervalue of commission to third party" +msgstr "Tegenwaarde commissie aan derde" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_073 +msgid "Costs of ATM abroad" +msgstr "Kosten buitenlandse geldautomaat" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_074 +msgid "Mailing costs" +msgstr "Koerierkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_100 +msgid "Gross amount" +msgstr "Brutobedrag" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_200 +msgid "Overall documentary credit charges" +msgstr "Kosten docum. krediet globaal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_201 +msgid "Advice notice commission" +msgstr "Opzeggingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_202 +msgid "Advising commission | Additional advising commission" +msgstr "Adviesprovisie | Aanvullende adviesprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_203 +msgid "Confirmation fee | Additional confirmation fee | Commitment fee | Flat fee | Confirmation reservation commission | Additional reservation commission" +msgstr "Confirmatieprovisie | Aanvullende confirmatieprovisie | Verbinternisprovisie | Flatprovisie | Confirmatiereserveringsprovisie | Aanvullende reserveringsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_204 +msgid "Amendment fee" +msgstr "Wijzigingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_205 +msgid "Documentary payment commission | Document commission | Drawdown fee | Negotiation fee" +msgstr "Provisie voor documentaire betaling | Documentenprovisie | Opnemingsprovisie | Negotiëringsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_206 +msgid "Surety fee/payment under reserve" +msgstr "Garantieprovisie/betaling onder voorbehoud" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_207 +msgid "Non-conformity fee" +msgstr "Provisie voor afwijkingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_208 +msgid "Commitment fee deferred payment" +msgstr "Verbintenisprovisie uitgestelde betaling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_209 +msgid "Transfer commission" +msgstr "Transferprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_210 +msgid "Commitment fee" +msgstr "Bereidstellingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_211 +msgid "Credit arrangement fee | Additional credit arrangement fee" +msgstr "Kredietopeningsprovisie | Aanvullende kredietopeningsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_212 +msgid "Warehousing fee" +msgstr "Opslagprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_213 +msgid "Financing fee" +msgstr "Financieringsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_214 +msgid "Issue commission (delivery order)" +msgstr "Emissieprovisie (volgbriefje)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_400 +msgid "Acceptance fee" +msgstr "Acceptprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_401 +msgid "Visa charges" +msgstr "Visumkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_402 +msgid "Certification costs" +msgstr "Kosten certificatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_403 +msgid "Minimum discount rate" +msgstr "Minimum discontorecht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_404 +msgid "Discount commission" +msgstr "Discontoprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_405 +msgid "Bill guarantee commission" +msgstr "Avalprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_406 +msgid "Collection charges" +msgstr "Incassokosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_407 +msgid "Costs Article 45" +msgstr "Kosten artikel 45" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_408 +msgid "Cover commission" +msgstr "Dekkingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_409 +msgid "Safe deposit charges" +msgstr "Kosten bewaring" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_410 +msgid "Reclamation charges" +msgstr "Terugvragingskosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_411 +msgid "Fixed collection charge" +msgstr "Vast incassorecht" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_412 +msgid "Advice of expiry charges" +msgstr "Kosten bericht van afloop" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_413 +msgid "Acceptance charges" +msgstr "Acceptkosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_414 +msgid "Regularisation charges" +msgstr "Regularisatiekosten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_415 +msgid "Surety fee" +msgstr "Borgstellingsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_416 +msgid "Charges for the deposit of security" +msgstr "Kosten voor neerlegging van borg" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_418 +msgid "Endorsement commission" +msgstr "Endosseringsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_419 +msgid "Bank service fee" +msgstr "Tussenkomstprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_420 +msgid "Retention charges" +msgstr "Kosten voor inhouding" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_425 +msgid "Foreign broker's commission" +msgstr "Buitenlandse makelaarsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_426 +msgid "Belgian broker's commission" +msgstr "Belgische makelaarsprovisie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_427 +msgid "Belgian Stock Exchange tax" +msgstr "Belgische beursbelasting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_428 +msgid "Interest accrued" +msgstr "Opgelopen renten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_429 +msgid "Foreign Stock Exchange tax" +msgstr "Buitenlandse beursbelasting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_430 +msgid "Recovery of foreign tax" +msgstr "Recuperatie buitenlandse belasting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.trans.category,description:l10n_be_coda_advanced.actrca_431 +msgid "Delivery of a copy" +msgstr "Aflevering kopie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_001 +msgid "Data concerning the counterparty" +msgstr "Gegevens over de tegenpartij" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_002 +msgid "Communication of the bank" +msgstr "Mededeling van de bank" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_003 +msgid "RBP data" +msgstr "RBP gegevens" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_004 +msgid "Counterparty’s banker" +msgstr "bankier van de tegenpartij" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_005 +msgid "Data concerning the correspondent" +msgstr "gegevens van de correspondent" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_006 +msgid "Information concerning the detail amount" +msgstr "Informatie met betrekking tot detail bedragen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_007 +msgid "Information concerning the detail cash" +msgstr "Detail van cash" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_008 +msgid "Identification of the de ultimate beneficiary/creditor (SEPA SCT/SDD)" +msgstr "Identificatie van de ultieme begunstigde/schuldeiser (SEPA SCT/SDD)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_009 +msgid "Identification of the de ultimate ordering customer/debtor (SEPA SCT/SDD)" +msgstr "Identificatie van de ultieme opdrachtgever/schuldenaar (SEPA SCT/SDD)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_010 +msgid "Information pertaining to sale or purchase of securities" +msgstr "Informatie met betrekking tot de verkoop of de aankoop van effecten" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_011 +msgid "Information pertaining to coupons" +msgstr "Informatie betreffende coupons" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_100 +msgid "(SEPA) payment with a structured format communication applying the ISO standard 11649: Structured creditor reference to remittance information" +msgstr "betaling met een gestructureerde mededeling volgens ISO standaard 11649" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_101 +msgid "Credit transfer or cash payment with structured format communication" +msgstr "overschrijving of storting met een gestructureerde mededeling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_102 +msgid "Credit transfer or cash payment with reconstituted structured format communication" +msgstr "overschrijving of storting met een wedersamengestelde gestructureerde mededeling" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_103 +msgid "number (e.g. of the cheque, of the card, etc.)" +msgstr "nummer" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_104 +msgid "Equivalent in EUR" +msgstr "tegenwaarde in EUR" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_105 +msgid "original amount of the transaction" +msgstr "oorspronkelijk bedrag van de verrichting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_106 +msgid "Method of calculation (VAT, withholding tax on income, commission, etc.)" +msgstr "berekeningswijze" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_107 +msgid "Direct debit – DOM’80" +msgstr "domiciliëringen - DOM80" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_108 +msgid "Closing" +msgstr "afsluiting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_111 +msgid "POS credit – Globalisation" +msgstr "credit POS - globalisatie" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_112 +msgid "ATM payment (usually Eurocheque card)" +msgstr "ATM storting (meestal eurochequekaart)" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_113 +msgid "ATM/POS debit" +msgstr "debet ATM/POS" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_114 +msgid "POS credit - individual transaction" +msgstr "credit POS - individuele verrichting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_115 +msgid "Terminal cash deposit" +msgstr "storting aan terminal" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_120 +msgid "Correction of a transaction" +msgstr "Correctie van een verrichting" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_121 +msgid "Commercial bills" +msgstr "handelswissels" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_122 +msgid "Bills - calculation of interest" +msgstr "wissels - berekening van de rente" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_123 +msgid "Fees and commissions" +msgstr "kosten en provisies" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_124 +msgid "Number of the credit card" +msgstr "nummer van de kredietkaart" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_125 +msgid "Credit" +msgstr "krediet" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_126 +msgid "Term investments" +msgstr "termijnbeleggingen" + +#. module: l10n_be_coda_advanced +#: model:account.coda.comm.type,description:l10n_be_coda_advanced.acct_127 +msgid "European direct debit (SEPA)" +msgstr "europese domicilëring" + diff --git a/l10n_be_coda_advanced/images/coda_config.png b/l10n_be_coda_advanced/images/coda_config.png new file mode 100644 index 00000000..b4eb19e7 Binary files /dev/null and b/l10n_be_coda_advanced/images/coda_config.png differ diff --git a/l10n_be_coda_advanced/images/import_coda.png b/l10n_be_coda_advanced/images/import_coda.png new file mode 100644 index 00000000..272614d4 Binary files /dev/null and b/l10n_be_coda_advanced/images/import_coda.png differ diff --git a/l10n_be_coda_advanced/models/__init__.py b/l10n_be_coda_advanced/models/__init__.py new file mode 100644 index 00000000..f1636957 --- /dev/null +++ b/l10n_be_coda_advanced/models/__init__.py @@ -0,0 +1,8 @@ +from . import account_bank_statement +from . import account_bank_statement_line +from . import account_coda +from . import account_coda_comm_type +from . import account_coda_trans_type +from . import account_coda_trans_code +from . import account_coda_trans_category +from . import coda_bank_account diff --git a/l10n_be_coda_advanced/models/account_bank_statement.py b/l10n_be_coda_advanced/models/account_bank_statement.py new file mode 100644 index 00000000..bd0aaa71 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_bank_statement.py @@ -0,0 +1,48 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import time + +from odoo import api, fields, models, _ + + +class AccountBankStatement(models.Model): + _inherit = 'account.bank.statement' + + coda_id = fields.Many2one( + comodel_name='account.coda', string='CODA Data File') + coda_note = fields.Text('CODA Notes') + coda_bank_account_id = fields.Many2one( + comodel_name='coda.bank.account') + + @api.multi + def button_confirm_bank(self): + """ + Some of the function in this method are handled (differently) by the + CODA processing hence we bypass those here. + """ + coda_statements = self.filtered(lambda r: r.coda_id) + non_coda_statements = self - coda_statements + super(AccountBankStatement, non_coda_statements).button_confirm_bank() + + coda_statements._balance_check() + coda_statements = coda_statements.filtered( + lambda r: r.state == 'open') + moves = coda_statements.mapped('line_ids').mapped('journal_entry_ids') + unposted = moves.filtered(lambda r: r.state == 'draft') + unposted.post() + for statement in coda_statements: + statement.message_post( + body=_('Statement %s confirmed, journal items were created.' + ) % (statement.name,)) + coda_statements.write({ + 'state': 'confirm', + 'date_done': time.strftime("%Y-%m-%d %H:%M:%S")}) + return True + + def _automatic_reconcile(self, reconcile_note): + if self.coda_bank_account_id: + wiz = self.env['account.coda.import'] + reconcile_note = wiz._automatic_reconcile( + self, reconcile_note) + return super()._automatic_reconcile(reconcile_note) diff --git a/l10n_be_coda_advanced/models/account_bank_statement_line.py b/l10n_be_coda_advanced/models/account_bank_statement_line.py new file mode 100644 index 00000000..ece53854 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_bank_statement_line.py @@ -0,0 +1,22 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountBankStatementLine(models.Model): + _inherit = 'account.bank.statement.line' + + coda_transaction_dict = fields.Char( + string='CODA transaction details', + help='JSON dictionary with the results of the CODA parsing') + + @api.one + @api.constrains('amount') + def _check_amount(self): + """ + Allow zero amount transactions + Such lines are used in CODA files to give additional information). + """ + if not self.coda_transaction_dict: + super()._check_amount() diff --git a/l10n_be_coda_advanced/models/account_coda.py b/l10n_be_coda_advanced/models/account_coda.py new file mode 100644 index 00000000..5de1cb13 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_coda.py @@ -0,0 +1,80 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class AccountCoda(models.Model): + _name = 'account.coda' + _description = 'Object to store CODA Data Files' + _order = 'coda_creation_date desc' + + name = fields.Char(string='CODA Filename', readonly=True) + coda_data = fields.Binary(string='CODA File', readonly=True) + bank_statement_ids = fields.One2many( + comodel_name='account.bank.statement', + inverse_name='coda_id', + string='Generated Bank Statements', readonly=True) + note = fields.Text(string='Import Log', readonly=True) + coda_creation_date = fields.Date( + string='CODA Creation Date', readonly=True) + date = fields.Date( + string='Import Date', + default=lambda self: fields.Date.context_today(self), + readonly=True) + user_id = fields.Many2one( + comodel_name='res.users', string='User', + default=lambda self: self.env.user, + readonly=True) + state = fields.Selection( + [('draft', 'Draft'), + ('done', 'Done')], + string='State', + default='done', + required=True, readonly=True) + company_id = fields.Many2one( + comodel_name='res.company', + string='Company', readonly=True) + + _sql_constraints = [ + ('coda_uniq', 'unique (name, coda_creation_date)', + 'This CODA has already been imported !') + ] + + @api.multi + def unlink(self): + for coda in self: + if coda.state != 'draft': + raise UserError( + _("Only CODA File objects in state" + " 'draft' can be deleted !")) + coda.bank_statement_ids.unlink() + return super().unlink() + + @api.multi + def set_to_draft(self): + return self.write({'state': 'draft'}) + + @api.multi + def process(self): + self.ensure_one() + wiz_vals = { + 'coda_data': self.coda_data, + 'coda_fname': self.name, + } + wizard = self.env['account.coda.import'].create(wiz_vals) + module = __name__.split('addons.')[1].split('.')[0] + wiz_view = self.env.ref( + '%s.account_coda_import_view_form_process' % module) + return { + 'name': _('Process CODA File'), + 'res_id': wizard.id, + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': wizard._name, + 'view_id': wiz_view.id, + 'target': 'new', + 'context': dict(self._context, coda_id=self.id), + 'type': 'ir.actions.act_window', + } diff --git a/l10n_be_coda_advanced/models/account_coda_comm_type.py b/l10n_be_coda_advanced/models/account_coda_comm_type.py new file mode 100644 index 00000000..b2c9ca76 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_coda_comm_type.py @@ -0,0 +1,57 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountCodaCommType(models.Model): + _name = 'account.coda.comm.type' + _description = 'CODA structured communication type' + _order = 'code' + + _sql_constraints = [ + ('code_uniq', 'unique (code)', + "The Structured Communication Code must be unique !") + ] + + name = fields.Char(compute='_compute_name', readonly=True) + code = fields.Char( + string='Structured Communication Type', size=3, required=True) + description = fields.Char(string='Description', translate=True) + + @api.one + @api.depends('code', 'description') + def _compute_name(self): + name = self.code + if self.description: + name += ' ' + self.description + self.name = len(name) > 55 \ + and name[:55] + '...' \ + or name + + @api.model + def name_search(self, name, args=None, operator='ilike', limit=100): + args = args or [] + recs = self.browse() + if name: + recs = self.search([('code', 'like', name)] + args, limit=limit) + if not recs: + recs = self.search( + [('description', operator, name)] + args, limit=limit) + return [(r.id, r.name) for r in recs] + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + if not args: + args = [] + new_args = [] + for arg in args: + if len(arg) == 3 and arg[0] == 'name': + new_arg = ['|', + ('code', arg[1], arg[2]), + ('description', arg[1], arg[2])] + new_args += new_arg + else: + new_args.append(arg) + return super().search( + new_args, offset=offset, limit=limit, order=order, count=count) diff --git a/l10n_be_coda_advanced/models/account_coda_trans_category.py b/l10n_be_coda_advanced/models/account_coda_trans_category.py new file mode 100644 index 00000000..cb37b9c9 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_coda_trans_category.py @@ -0,0 +1,53 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountCodaTransCategory(models.Model): + _name = 'account.coda.trans.category' + _description = 'CODA transaction category' + _order = 'category' + + name = fields.Char(compute='_compute_name', readonly=True) + category = fields.Char( + string='Transaction Category', size=3, required=True) + description = fields.Char(string='Description', translate=True) + + @api.one + @api.depends('category', 'description') + def _compute_name(self): + name = self.category + if self.description: + name += ' ' + self.description + self.name = len(name) > 55 \ + and name[:55] + '...' \ + or name + + @api.model + def name_search(self, name, args=None, operator='ilike', limit=100): + args = args or [] + recs = self.browse() + if name: + recs = self.search( + [('category', 'like', name)] + args, limit=limit) + if not recs: + recs = self.search( + [('description', operator, name)] + args, limit=limit) + return [(r.id, r.name) for r in recs] + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + if not args: + args = [] + new_args = [] + for arg in args: + if len(arg) == 3 and arg[0] == 'name': + new_arg = ['|', + ('category', arg[1], arg[2]), + ('description', arg[1], arg[2])] + new_args += new_arg + else: + new_args.append(arg) + return super().search( + new_args, offset=offset, limit=limit, order=order, count=count) diff --git a/l10n_be_coda_advanced/models/account_coda_trans_code.py b/l10n_be_coda_advanced/models/account_coda_trans_code.py new file mode 100644 index 00000000..d0dcba85 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_coda_trans_code.py @@ -0,0 +1,61 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ + + +class AccountCodaTransCode(models.Model): + _name = 'account.coda.trans.code' + _description = 'CODA transaction code' + _order = 'code' + + name = fields.Char( + compute='_compute_name', readonly=True) + code = fields.Char(string='Code', size=2, required=True) + type = fields.Selection( + [('code', 'Transaction Code'), + ('family', 'Transaction Family')], + string='Type', required=True) + parent_id = fields.Many2one('account.coda.trans.code', string='Family') + description = fields.Char(string='Description', translate=True) + comment = fields.Text('Comment', translate=True) + + @api.one + @api.depends('code', 'description', 'type', 'parent_id') + def _compute_name(self): + name = self.code + if self.description: + name += ' ' + self.description + if self.type == 'code': + family = self.parent_id.code + name += ' (' + _('Family %s') % family + ')' + self.name = len(name) > 55 \ + and name[:55] + '...' \ + or name + + @api.model + def name_search(self, name, args=None, operator='ilike', limit=100): + args = args or [] + recs = self.browse() + if name: + recs = self.search([('code', 'like', name)] + args, limit=limit) + if not recs: + recs = self.search( + [('description', operator, name)] + args, limit=limit) + return [(r.id, r.name) for r in recs] + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + if not args: + args = [] + new_args = [] + for arg in args: + if len(arg) == 3 and arg[0] == 'name': + new_arg = ['|', + ('code', arg[1], arg[2]), + ('description', arg[1], arg[2])] + new_args += new_arg + else: + new_args.append(arg) + return super().search( + new_args, offset=offset, limit=limit, order=order, count=count) diff --git a/l10n_be_coda_advanced/models/account_coda_trans_type.py b/l10n_be_coda_advanced/models/account_coda_trans_type.py new file mode 100644 index 00000000..efc90b36 --- /dev/null +++ b/l10n_be_coda_advanced/models/account_coda_trans_type.py @@ -0,0 +1,52 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountCodaTransType(models.Model): + _name = 'account.coda.trans.type' + _description = 'CODA transaction type' + _order = 'type' + + name = fields.Char(compute='_compute_name', readonly=True) + type = fields.Char(string='Transaction Type', size=1, required=True) + parent_id = fields.Many2one('account.coda.trans.type', string='Parent') + description = fields.Text(string='Description', translate=True) + + @api.one + @api.depends('type', 'description') + def _compute_name(self): + name = self.type + if self.description: + name += ' ' + self.description + self.name = len(name) > 55 \ + and name[:55] + '...' \ + or name + + @api.model + def name_search(self, name, args=None, operator='ilike', limit=100): + args = args or [] + recs = self.browse() + if name: + recs = self.search([('type', '=', name)] + args, limit=limit) + if not recs: + recs = self.search( + [('description', operator, name)] + args, limit=limit) + return [(r.id, r.name) for r in recs] + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + if not args: + args = [] + new_args = [] + for arg in args: + if len(arg) == 3 and arg[0] == 'name': + new_arg = ['|', + ('type', arg[1], arg[2]), + ('description', arg[1], arg[2])] + new_args += new_arg + else: + new_args.append(arg) + return super().search( + new_args, offset=offset, limit=limit, order=order, count=count) diff --git a/l10n_be_coda_advanced/models/coda_bank_account.py b/l10n_be_coda_advanced/models/coda_bank_account.py new file mode 100644 index 00000000..318190ee --- /dev/null +++ b/l10n_be_coda_advanced/models/coda_bank_account.py @@ -0,0 +1,288 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class CodaBankAccount(models.Model): + _name = 'coda.bank.account' + _description = 'CODA Bank Account Configuration' + _order = 'name' + _sql_constraints = [ + ('account_uniq_1', 'unique (journal_id, description1, currency_id)', + "The combination of Bank Account, Primary Account Description " + "and Currency must be unique !"), + ('account_uniq_2', 'unique (journal_id, description2, currency_id)', + "The combination of Bank Account, Secondary Account Description " + "and Currency must be unique !"), + ] + + name = fields.Char(string='Name', required=True) + description1 = fields.Char( + string='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( + string='Secondary Account Description', size=35, + help="The Primary or Secondary Account Description should match " + "the corresponding Account Description in the CODA file.") + journal_id = fields.Many2one( + comodel_name='account.journal', string='Journal', + domain=[('type', '=', 'bank')], copy=False, required=True, + help='Bank Journal for the Bank Statement') + bank_id = fields.Many2one( + comodel_name='res.partner.bank', + string='Bank Account', readonly=True, + related='journal_id.bank_account_id', + help="Bank Account Number.\nThe CODA import function will " + "find its CODA processing parameters on this number.") + currency_id = fields.Many2one( + comodel_name='res.currency', string='Currency', + compute='_compute_currency_id', + store=True, readonly=True, + help='The currency of the CODA Bank Statement') + coda_st_naming = fields.Char( + string='Bank Statement Naming Policy', size=64, + default='%(code)s-%(y)s-%(coda)s', + 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" + "\nYear (of CODA 'New Balance Date') with Century: %(year)s" + "\nYear (of CODA 'New Balance Date') without Century: %(y)s" + "\nCODA sequence number: %(coda)s" + "\nPaper Statement sequence number " + "(as specified on 'Old Balance' record): %(paper_ob)s" + "\nPaper Statement sequence number " + "(as specified on 'New Balance' record): %(paper)s") + # TODO: rename to transfer_account_id + transfer_account = fields.Many2one( + comodel_name='account.account', + string='Internal Funds Transfer Account', + domain=[('code', '=like', '58%')], + 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).") + account_mapping_ids = fields.One2many( + comodel_name='coda.account.mapping.rule', + inverse_name='coda_bank_account_id', + string='Account Mapping Rules') + find_bbacom = fields.Boolean( + string="Lookup Structured Communication of type 'BBA'", + default=True, + help="Partner lookup and reconciliation " + "via the 'BBA' Structured Communication." + "'\nA partial reconciliation will be created when there is " + "no exact match between the Invoice " + "and Bank Transaction amounts.") + find_inv_number = fields.Boolean( + string='Lookup Invoice Number', + default=True, + help="Partner lookup and reconciliation via the Invoice Number " + "when a communication in free format is used." + "\nA reconciliation will only be created in case of " + "exact match between the Invoice and " + "Bank Transaction amounts.") + find_account_move_line = fields.Boolean( + string='Lookup Accounting Entries', + default=False, # default = False since this lookup may burn resources + help="Find matching accounting entry when previous lookups " + "(payment order, invoice, sales order) have failed." + "\nThis allows e.g. to match with manually encoded " + "accounting entries (journal item 'name' field combined " + "exact match on amount) or non payable/receivable entries.") + find_partner = fields.Boolean( + string='Lookup Partner', + default=True, + help="Partner lookup via Bank Account Number " + "in order to facilitate the reconciliation.") + update_partner = fields.Boolean( + string='Update Partner Bank Accounts', + default=True, + help="Update Partner record when the Counterparty's Bank Account " + "has not been registered yet.") + balance_start_enforce = fields.Boolean( + string='Prevent invalid Opening Balances', + default=True, + help="Do not process Statements with an Opening Balance that " + "doesn't match the previous Closing Balance.") + discard_dup = fields.Boolean( + string='Discard Duplicates', + help="Duplicate Bank Statements will be discarded. " + "Select the corresponding 'CODA Bank Statement' in order " + "to view the contents of such duplicates.") + active = fields.Boolean( + string='Active', default=True, + help="If the active field is set to False, " + "it will allow you to hide the " + "CODA Bank Account Configuration without removing it.") + company_id = fields.Many2one( + comodel_name='res.company', string='Company', + default=lambda self: self.env.user.company_id, + required=True) + display_name = fields.Char( + compute='_compute_display_name', string="Display Name", + store=True, readonly=True) + + @api.one + @api.depends('journal_id') + def _compute_currency_id(self): + if self.journal_id: + aa = self.journal_id.default_debit_account_id + if not aa: + raise ValidationError(_( + "Configuration error !\n" + "No 'Default Debit Account' defined on your bank journal" + )) + self.currency_id = aa.currency_id \ + or self.journal_id.company_id.currency_id + + @api.one + @api.depends('bank_id', 'currency_id', 'description1') + def _compute_display_name(self): + display_name = self.bank_id.acc_number \ + + ' (' + self.currency_id.name + ')' + if self.description1: + display_name += ' ' + self.description1 + self.display_name = len(display_name) > 55 \ + and display_name[:55] + '...' \ + or display_name + + @api.onchange('company_id') + def _onchange_company_id(self): + self.transfer_account = self.company_id.transfer_account_id + + @api.one + @api.returns('self', lambda value: value.id) + def copy(self, default=None): + default = {} if default is None else default.copy() + default.update({ + 'journal_id': False, + 'name': (self.name or '') + ' (copy)', + 'description1': (self.description1 or '') + ' (copy)', + 'description2': (self.description2 or '') + ' (copy)', + }) + return super().copy(default) + + +class CodaAccountMappingRule(models.Model): + _name = 'coda.account.mapping.rule' + _description = 'Rules Engine to assign accounts during CODA parsing' + _order = 'sequence' + + coda_bank_account_id = fields.Many2one( + comodel_name='coda.bank.account', + string='CODA Bank Account', ondelete='cascade') + sequence = fields.Integer( + string='Sequence', + help='Determines the order of the rules to assign accounts') + name = fields.Char(string='Rule Name', required=True) + active = fields.Boolean( + default=True, help='Switch on/off this rule.') + # matching criteria + trans_type_id = fields.Many2one( + comodel_name='account.coda.trans.type', + string='Transaction Type') + trans_family_id = fields.Many2one( + comodel_name='account.coda.trans.code', + string='Transaction Family', + domain=[('type', '=', 'family')]) + trans_code_id = fields.Many2one( + comodel_name='account.coda.trans.code', + string='Transaction Code', + domain=[('type', '=', 'code')]) + trans_category_id = fields.Many2one( + comodel_name='account.coda.trans.category', + string='Transaction Category') + partner_id = fields.Many2one( + comodel_name='res.partner', string='Partner', ondelete='cascade', + domain=['|', ('parent_id', '=', False), ('is_company', '=', True)]) + freecomm = fields.Char(string='Free Communication', size=128) + struct_comm_type_id = fields.Many2one( + comodel_name='account.coda.comm.type', + string='Structured Communication Type') + structcomm = fields.Char(string='Structured Communication', size=128) + payment_reference = fields.Char( + string='Payment Reference', size=35, + help="Payment Reference. For SEPA (SCT or SDD) transactions, " + "the EndToEndReference is recorded in this field.") + # results + account_id = fields.Many2one( + comodel_name='account.account', string='Account', + ondelete='cascade', required=True, + domain=[('deprecated', '=', False)]) + account_tax_id = fields.Many2one( + comodel_name='account.tax', string='Tax', ondelete='cascade') + tax_type = fields.Selection( + selection=[('base', 'Base'), + ('tax', 'Tax')]) + analytic_account_id = fields.Many2one( + comodel_name='account.analytic.account', string='Analytic Account', + ondelete='set null') + + def _rule_select_extra(self, coda_bank_account_id): + """ + Use this method to customize the mapping rule engine. + Cf. l10n_be_coda_analytic_plan module for an example. + """ + return '' + + def _rule_result_extra(self, coda_bank_account_id): + """ + Use this method to customize the mapping rule engine. + Cf. l10n_be_coda_analytic_plan module for an example. + """ + return [] + + @api.model + def rule_get(self, coda_bank_account_id, + trans_type_id=None, trans_family_id=None, + trans_code_id=None, trans_category_id=None, + struct_comm_type_id=None, partner_id=None, + freecomm=None, structcomm=None, payment_reference=None): + + select = ( + "SELECT trans_type_id, trans_family_id, trans_code_id, " + "trans_category_id, " + "struct_comm_type_id, partner_id, freecomm, structcomm, " + "account_id, analytic_account_id, account_tax_id, tax_type, " + "payment_reference") + select += self._rule_select_extra(coda_bank_account_id) + ' ' + select += ( + "FROM coda_account_mapping_rule " + "WHERE active = TRUE AND coda_bank_account_id = %s " + "ORDER BY sequence") % coda_bank_account_id + self._cr.execute(select) + rules = self._cr.dictfetchall() + condition = ( + "(not rule['trans_type_id'] or " + "(trans_type_id == rule['trans_type_id'])) and " + "(not rule['trans_family_id'] or " + "(trans_family_id == rule['trans_family_id'])) " + "and (not rule['trans_code_id'] or " + "(trans_code_id == rule['trans_code_id'])) and " + "(not rule['trans_category_id'] or " + "(trans_category_id == rule['trans_category_id'])) " + "and (not rule['struct_comm_type_id'] or " + "(struct_comm_type_id == rule['struct_comm_type_id'])) and " + "(not rule['partner_id'] or " + "(partner_id == rule['partner_id'])) " + "and (not rule['freecomm'] or (rule['freecomm'].lower() in " + "(freecomm and freecomm.lower() or ''))) " + "and (not rule['structcomm'] or " + "(rule['structcomm'] in (structcomm or ''))) " + "and (not rule['payment_reference'] or " + "(rule['payment_reference'] in (payment_reference or ''))) ") + result_fields = [ + 'account_id', 'account_tax_id', 'tax_type', 'analytic_account_id'] + result_fields += self._rule_result_extra(coda_bank_account_id) + res = {} + for rule in rules: + if eval(condition): + for f in result_fields: + res[f] = rule[f] + break + return res diff --git a/l10n_be_coda_advanced/security/account_security.xml b/l10n_be_coda_advanced/security/account_security.xml new file mode 100644 index 00000000..0b9a7e77 --- /dev/null +++ b/l10n_be_coda_advanced/security/account_security.xml @@ -0,0 +1,13 @@ + + + + + + Account Coda model company rule + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + + diff --git a/l10n_be_coda_advanced/security/ir.model.access.csv b/l10n_be_coda_advanced/security/ir.model.access.csv new file mode 100644 index 00000000..5d14fabe --- /dev/null +++ b/l10n_be_coda_advanced/security/ir.model.access.csv @@ -0,0 +1,15 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_coda_manager,account.coda manager,model_account_coda,account.group_account_manager,1,1,1,1 +access_account_coda_user,account.coda user,model_account_coda,account.group_account_user,1,0,0,0 +access_account_coda_trans_type_manager,account.coda.trans.type manager,model_account_coda_trans_type,account.group_account_manager,1,1,1,1 +access_account_coda_trans_type_user,account.coda.trans.type user,model_account_coda_trans_type,account.group_account_user,1,0,0,0 +access_account_coda_trans_code_manager,account.coda.trans.code manager,model_account_coda_trans_code,account.group_account_manager,1,1,1,1 +access_account_coda_trans_code_user,account.coda.trans.code user,model_account_coda_trans_code,account.group_account_user,1,0,0,0 +access_account_coda_trans_category_manager,account.coda.trans.category manager,model_account_coda_trans_category,account.group_account_manager,1,1,1,1 +access_account_coda_trans_category_user,account.coda.trans.category user,model_account_coda_trans_category,account.group_account_user,1,0,0,0 +access_account_coda_comm_type_manager,account.coda.comm.type manager,model_account_coda_comm_type,account.group_account_manager,1,1,1,1 +access_account_coda_comm_type_user,account.coda.comm.type user,model_account_coda_comm_type,account.group_account_user,1,0,0,0 +access_coda_bank_account_manager,coda.bank.account manager,model_coda_bank_account,account.group_account_manager,1,1,1,1 +access_coda_bank_account_user,coda.bank.account user,model_coda_bank_account,account.group_account_user,1,0,0,0 +access_coda_account_mapping_rule_manager,coda.account.mapping.rule manager,model_coda_account_mapping_rule,account.group_account_manager,1,1,1,1 +access_coda_account_mapping_rule_user,coda.account.mapping.rule user,model_coda_account_mapping_rule,account.group_account_user,1,0,0,0 diff --git a/l10n_be_coda_advanced/static/description/icon.png b/l10n_be_coda_advanced/static/description/icon.png new file mode 100644 index 00000000..889d1294 Binary files /dev/null and b/l10n_be_coda_advanced/static/description/icon.png differ diff --git a/l10n_be_coda_advanced/test_coda_file/Ontvangen CODA.2011-01-11-18.59.15.txt b/l10n_be_coda_advanced/test_coda_file/Ontvangen CODA.2011-01-11-18.59.15.txt new file mode 100644 index 00000000..3270c6bb --- /dev/null +++ b/l10n_be_coda_advanced/test_coda_file/Ontvangen CODA.2011-01-11-18.59.15.txt @@ -0,0 +1,24 @@ +0000011011172505 00178299 DE MEYER LUC KREDBEBB 00820512013 00000 2 +12135BE33737018595246 EUR0000000011812700270710NOVIAT NV KBC-Business Comfortrekening 003 +2100010000OL44483FW SCTOFBIONLO1000000000435000110111001010000MEDEDELING 11011113501 0 +2200010000 GKCCBEBB 1 0 +2300010000BE41063012345610 PARTNER 1 0 1 +3100010001OL44483FW SCTOFBIONLO001010001001PARTNER 1 0 0 +2100020000OL4414AC8BOVSOVSOVERS00000000030444501101110015000002010237 11011113501 0 +2200020000 BBRUBEBB 1 0 +2300020000BE61310126985517 PARTNER 2 0 1 +3100020001OL4414AC8BOVSOVSOVERS001500001001PARTNER 2 1 0 +3200020001MOLENSTRAAT 60 9340 LEDE 0 0 +2100030000AFECA0CVA IKLINNINNIG1000000000479040110111313410000 KBC-INVESTERINGSKREDIET 737-6543210-21 11011113510 0 +2100030001AFECA0CVA IKLINNINNIG1000000000419920110111813410660 11011113500 0 +2100030002AFECA0CVA IKLINNINNIG1000000000059120110111813410020 11011113510 0 +2100040000AFECA0CVA IKLINNINNIG1000000000479040110111313410000 KBC-INVESTERINGSKREDIET 737-6543210-21 11011113510 0 +2100040001AFECA0CVA IKLINNINNIG1000000000419920110111813410660 11011113500 0 +2100040002AFECA0CVA IKLINNINNIG1000000000059120110111813410020 11011113510 0 +2100050000AOGM00160BSCTOBOGOVER0000000000063740110111001500000TERUGGAVE 37232481 8400083296 . 11011113501 0 +2200050000 362/363 KREDBEBB 1 0 +2300050000BE43730004200601 KBC VERZEKERINGEN NV 0 1 +3100050001AOGM00160BSCTOBOGOVER001500001001KBC VERZEKERINGEN NV 1 0 +3200050001VAN OVERSTRAETENPLEIN 2 3000 LEUVEN 0 0 +8135BE44734024486445 EUR0000000013527810110111 0 +9 000022000000001393080000000003108190 2 diff --git a/l10n_be_coda_advanced/views/account_bank_statement.xml b/l10n_be_coda_advanced/views/account_bank_statement.xml new file mode 100644 index 00000000..c67656b4 --- /dev/null +++ b/l10n_be_coda_advanced/views/account_bank_statement.xml @@ -0,0 +1,21 @@ + + + + + account.bank.statement.coda.form + account.bank.statement + + + + + + + + + + + + diff --git a/l10n_be_coda_advanced/views/account_bank_statement_line.xml b/l10n_be_coda_advanced/views/account_bank_statement_line.xml new file mode 100644 index 00000000..66160b57 --- /dev/null +++ b/l10n_be_coda_advanced/views/account_bank_statement_line.xml @@ -0,0 +1,16 @@ + + + + + bank.statement.line.list + account.bank.statement.line + + + + + + + + + + diff --git a/l10n_be_coda_advanced/views/account_coda.xml b/l10n_be_coda_advanced/views/account_coda.xml new file mode 100644 index 00000000..55fe8f54 --- /dev/null +++ b/l10n_be_coda_advanced/views/account_coda.xml @@ -0,0 +1,88 @@ + + + + + account.coda.tree + account.coda + + + + + + + + + + + + + + account.coda.form + account.coda + +
+
+
+ + + + + + + + + + + + + + + + +
+
+
+ + + account.coda.search + account.coda + + + + + + + + + + + + + + + + + + + + + + Imported CODA Files + ir.actions.act_window + account.coda + form + tree,form + + + + +
diff --git a/l10n_be_coda_advanced/views/account_coda_comm_type.xml b/l10n_be_coda_advanced/views/account_coda_comm_type.xml new file mode 100644 index 00000000..d5e24fd8 --- /dev/null +++ b/l10n_be_coda_advanced/views/account_coda_comm_type.xml @@ -0,0 +1,36 @@ + + + + + account.coda.comm.type.tree + account.coda.comm.type + + + + + + + + + + account.coda.comm.type.form + account.coda.comm.type + +
+ + + + +
+
+
+ + + CODA Structured Communication Types + ir.actions.act_window + account.coda.comm.type + form + tree,form + + +
diff --git a/l10n_be_coda_advanced/views/account_coda_trans_category.xml b/l10n_be_coda_advanced/views/account_coda_trans_category.xml new file mode 100644 index 00000000..7bff028f --- /dev/null +++ b/l10n_be_coda_advanced/views/account_coda_trans_category.xml @@ -0,0 +1,36 @@ + + + + + account.coda.trans.category.tree + account.coda.trans.category + + + + + + + + + + account.coda.trans.category.form + account.coda.trans.category + +
+ + + + +
+
+
+ + + CODA Transaction Categories + ir.actions.act_window + account.coda.trans.category + form + tree,form + + +
diff --git a/l10n_be_coda_advanced/views/account_coda_trans_code.xml b/l10n_be_coda_advanced/views/account_coda_trans_code.xml new file mode 100644 index 00000000..40949cee --- /dev/null +++ b/l10n_be_coda_advanced/views/account_coda_trans_code.xml @@ -0,0 +1,41 @@ + + + + + account.coda.trans.code.tree + account.coda.trans.code + + + + + + + + + + + + account.coda.trans.code.form + account.coda.trans.code + +
+ + + + + + + +
+
+
+ + + CODA Transaction Codes + ir.actions.act_window + account.coda.trans.code + form + tree,form + + +
diff --git a/l10n_be_coda_advanced/views/account_coda_trans_type.xml b/l10n_be_coda_advanced/views/account_coda_trans_type.xml new file mode 100644 index 00000000..892770d3 --- /dev/null +++ b/l10n_be_coda_advanced/views/account_coda_trans_type.xml @@ -0,0 +1,38 @@ + + + + + account.coda.trans.type.tree + account.coda.trans.type + + + + + + + + + + + account.coda.trans.type.form + account.coda.trans.type + +
+ + + + + +
+
+
+ + + CODA Transaction Types + ir.actions.act_window + account.coda.trans.type + form + tree,form + + +
diff --git a/l10n_be_coda_advanced/views/coda_bank_account.xml b/l10n_be_coda_advanced/views/coda_bank_account.xml new file mode 100644 index 00000000..b288f6a4 --- /dev/null +++ b/l10n_be_coda_advanced/views/coda_bank_account.xml @@ -0,0 +1,122 @@ + + + + + coda.bank.account.search + coda.bank.account + + + + + + + + + + + + + + + + + + + coda.bank.account.tree + coda.bank.account + + + + + + + + + + + + + + coda.bank.account.form + coda.bank.account + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + CODA Bank Account Configuration + coda.bank.account + form + tree,form + + + +
diff --git a/l10n_be_coda_advanced/views/menuitem.xml b/l10n_be_coda_advanced/views/menuitem.xml new file mode 100644 index 00000000..f2ff6a4b --- /dev/null +++ b/l10n_be_coda_advanced/views/menuitem.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n_be_coda_advanced/wizard/__init__.py b/l10n_be_coda_advanced/wizard/__init__.py new file mode 100644 index 00000000..2b91fdff --- /dev/null +++ b/l10n_be_coda_advanced/wizard/__init__.py @@ -0,0 +1 @@ +from . import account_coda_import diff --git a/l10n_be_coda_advanced/wizard/account_coda_import.py b/l10n_be_coda_advanced/wizard/account_coda_import.py new file mode 100644 index 00000000..401f784d --- /dev/null +++ b/l10n_be_coda_advanced/wizard/account_coda_import.py @@ -0,0 +1,2962 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import base64 +import json +import logging +import re +import time +import zipfile +from io import BytesIO +from sys import exc_info +from traceback import format_exception + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError +from .coda_helpers import \ + calc_iban_checksum, check_bban, check_iban, get_iban_and_bban, \ + repl_special, str2date, str2time, list2float, number2float + +_logger = logging.getLogger(__name__) + +INDENT = '\n' + 8 * ' ' +ST_LINE_NAME_FAMILIES = ['13', '35', '41', '80'] +PARSE_COMMS_MOVE = [ + '100', '101', '102', '103', '105', '106', '107', '108', '111', '113', + '114', '115', '121', '122', '123', '124', '125', '126', '127'] +PARSE_COMMS_INFO = [ + '001', '002', '004', '005', '006', '007', + '107', '008', '009', '010', '011'] + + +class AccountCodaImport(models.TransientModel): + _name = 'account.coda.import' + _description = 'Import CODA File' + + coda_data = fields.Binary( + string='CODA (Zip) File', required=True) + coda_fname = fields.Char( + string='CODA Filename', default='', required=True) + coda_fname_dummy = fields.Char( + related='coda_fname', string='CODA Filename', readonly=True) + accounting_date = fields.Date( + help="Keep empty to use the date in the CODA File") + reconcile = fields.Boolean( + help="Launch Automatic Reconcile after CODA import.", default=True) + skip_undefined = fields.Boolean( + help="Skip Bank Statements for accounts which have not been defined " + "in the CODA configuration.", default=True) + note = fields.Text(string='Log') + + @api.onchange('coda_data') + def onchange_fdata(self): + self.coda_fname_dummy = self.coda_fname + + @api.model + def _check_account_payment(self): + res = self.env['ir.module.module'].search( + [('name', '=', 'account_payment'), ('state', '=', 'installed')]) + return res and True or False + + def _coda_record_0(self, coda_statement, line, coda_parsing_note): + + coda_version = line[127] + if coda_version not in ['1', '2']: + err_string = _( + "\nCODA V%s statements are not supported, " + "please contact your bank !") % coda_version + raise UserError(err_string) + coda_statement['coda_version'] = coda_version + coda_statement['coda_transactions'] = {} + coda_statement['date'] = str2date(line[5:11]) + coda_statement['coda_creation_date'] = str2date(line[5:11]) + coda_statement['bic'] = line[60:71].strip() + coda_statement['separate_application'] = line[83:88] + coda_statement['first_transaction_date'] = False + coda_statement['state'] = 'draft' + coda_statement['coda_note'] = '' + coda_statement['skip'] = False + coda_statement['main_move_stack'] = [] + coda_statement['glob_lvl_stack'] = [0] + return coda_parsing_note + + def _coda_record_1(self, coda_statement, line, coda_parsing_note): + + skip = False + coda_statement['currency'] = 'EUR' # default currency + if coda_statement['coda_version'] == '1': + coda_statement['acc_number'] = line[5:17] + if line[18:21].strip(): + coda_statement['currency'] = line[18:21] + elif line[1] == '0': # Belgian bank account BBAN structure + coda_statement['acc_number'] = line[5:17] + coda_statement['currency'] = line[18:21] + elif line[1] == '1': # foreign bank account BBAN structure + coda_statement['acc_number'] = line[5:39].strip() + coda_statement['currency'] = line[39:42] + elif line[1] == '2': # Belgian bank account IBAN structure + coda_statement['acc_number'] = line[5:21] + coda_statement['currency'] = line[39:42] + elif line[1] == '3': # foreign bank account IBAN structure + coda_statement['acc_number'] = line[5:39].strip() + coda_statement['currency'] = line[39:42] + else: + err_string = _("\nUnsupported bank account structure !") + raise UserError(err_string) + coda_statement['description'] = line[90:125].strip() + + def cba_filter(coda_bank): + acc_number = coda_bank.bank_id.sanitized_acc_number + if acc_number: + cba_numbers = get_iban_and_bban(acc_number) + cba_currency = coda_bank.currency_id.name + cba_descriptions = [ + coda_bank.description1 or '', + coda_bank.description2 or ''] + if coda_statement['acc_number'] in cba_numbers \ + and coda_statement['currency'] == cba_currency \ + and coda_statement['description'] in cba_descriptions: + return True + return False + + cba = self._coda_banks.filtered(cba_filter) + + if cba: + coda_statement['coda_bank_params'] = cba + self._company_bank_accounts = \ + cba.company_id.bank_journal_ids.mapped( + 'bank_account_id').mapped('sanitized_acc_number') + else: + if self.skip_undefined: + self._coda_import_note += _( + "\n\nNo matching CODA Bank Account Configuration " + "record found !") + \ + _("\nPlease check if the 'Bank Account Number', " + "'Currency' and 'Account Description' fields " + "of your configuration record match with" + " '%s', '%s' and '%s' if you need to import " + "statements for this Bank Account Number !" + ) % (coda_statement['acc_number'], + coda_statement['currency'], + coda_statement['description']) + skip = True + else: + err_string = _( + "\nNo matching CODA Bank Account Configuration " + "record found !") + \ + _("\nPlease check if the 'Bank Account Number', " + "'Currency' and 'Account Description' fields " + "of your configuration record match with" + " '%s', '%s' and '%s' !" + ) % (coda_statement['acc_number'], + coda_statement['currency'], + coda_statement['description']) + raise UserError(err_string) + bal_start = list2float(line[43:58]) # old balance data + if line[42] == '1': # 1= Debit + bal_start = - bal_start + coda_statement['balance_start'] = bal_start + coda_statement['old_balance_date'] = str2date(line[58:64]) + coda_statement['acc_holder'] = line[64:90] + coda_statement['paper_ob_seq_number'] = line[2:5] + coda_statement['coda_seq_number'] = line[125:128] + + if skip: + coda_statement['skip'] = skip + return coda_parsing_note + + # we already initialise the coda_statement['name'] field + # with the currently available date + # in case an 8 record is present, this data will be updated + if cba.coda_st_naming: + coda_statement['name'] = cba.coda_st_naming % { + 'code': cba.journal_id.code or '', + 'year': coda_statement['date'][:4], + 'y': coda_statement['date'][2:4], + 'coda': coda_statement['coda_seq_number'], + 'paper_ob': coda_statement['paper_ob_seq_number'], + 'paper': coda_statement['paper_ob_seq_number'], + } + # We have to skip the already processed statements + # when we reprocess CODA file + if self._coda_id: + old_statements = self.env['account.bank.statement'].search( + [('coda_id', '=', self._coda_id), + ('name', '=', coda_statement['name'])]) + if old_statements: + skip = True + else: + coda_statement['name'] = '/' + # hook to allow further customisation + if not skip: + self._coda_statement_init_hook(coda_statement) + coda_statement['skip'] = skip + + return coda_parsing_note + + def _coda_record_2(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + if line[1] == '1': + coda_parsing_note, transaction_seq = self._coda_record_21( + coda_statement, line, coda_parsing_note, transaction_seq) + + elif line[1] == '2': + coda_parsing_note = self._coda_record_22( + coda_statement, line, coda_parsing_note, transaction_seq) + + elif line[1] == '3': + coda_parsing_note = self._coda_record_23( + coda_statement, line, coda_parsing_note, transaction_seq) + + else: + # movement data record 2.x (x <> 1,2,3) + err_string = _( + "\nMovement data records of type 2.%s are not supported !" + ) % line[1] + raise UserError(err_string) + + return coda_parsing_note, transaction_seq + + def _coda_record_21(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + # list of lines parsed already + coda_transactions = coda_statement['coda_transactions'] + + transaction = {} + transaction_seq = transaction_seq + 1 + transaction['sequence'] = transaction_seq + transaction['type'] = 'regular' + transaction['trans_family'] = False + transaction['struct_comm_type'] = '' + transaction['struct_comm_type_id'] = False + transaction['struct_comm_type_desc'] = '' + transaction['struct_comm_bba'] = '' + transaction['communication'] = '' + transaction['payment_reference'] = '' + transaction['creditor_reference_type'] = '' + transaction['creditor_reference'] = '' + transaction['partner_name'] = '' + transaction['counterparty_bic'] = '' + transaction['counterparty_number'] = '' + transaction['counterparty_currency'] = '' + transaction['glob_lvl_flag'] = False + transaction['globalisation_amount'] = False + transaction['amount'] = 0.0 + + transaction['ref'] = line[2:10] + transaction['ref_move'] = line[2:6] + transaction['ref_move_detail'] = line[6:10] + + main_move_stack = coda_statement['main_move_stack'] + previous_main_move = main_move_stack and main_move_stack[-1] or False + main_move_stack_pop = True + + if main_move_stack \ + and transaction['ref_move'] != main_move_stack[-1]['ref_move']: + # initialise main_move_stack + # used to link 2.1 detail records to 2.1 main record + # The main_move_stack contains the globalisation level move + # or moves (in case of multiple levels) + # plus the previous transaction move. + main_move_stack = [] + main_move_stack_pop = False + coda_statement['main_move_stack'] = main_move_stack + # initialise globalisation stack + coda_statement['glob_lvl_stack'] = [0] + + if main_move_stack: + if main_move_stack[-1]['type'] == 'globalisation': + transaction['glob_sequence'] = main_move_stack[-1]['sequence'] + elif main_move_stack[-1].get('glob_sequence'): + transaction['glob_sequence'] = \ + main_move_stack[-1]['glob_sequence'] + + glob_lvl_stack = coda_statement['glob_lvl_stack'] + glob_lvl_stack_pop = False + glob_lvl_stack_append = False + + transaction['trans_ref'] = line[10:31] + transaction_amt = list2float(line[32:47]) + if line[31] == '1': # 1=debit + transaction_amt = -transaction_amt + + transaction['trans_type'] = line[53] + trans_type = [x for x in self._trans_types + if transaction['trans_type'] == x.type] + if not trans_type: + err_string = _( + "\nThe File contains an invalid CODA Transaction Type : %s !" + ) % transaction['trans_type'] + raise UserError(err_string) + transaction['trans_type_id'] = trans_type[0].id + transaction['trans_type_desc'] = trans_type[0].description + + # processing of amount depending on globalisation + glob_lvl_flag = int(line[124]) + transaction['glob_lvl_flag'] = glob_lvl_flag + if glob_lvl_flag > 0: + if glob_lvl_stack and glob_lvl_stack[-1] == glob_lvl_flag: + transaction['amount'] = transaction_amt + glob_lvl_stack_pop = True + else: + transaction['type'] = 'globalisation' + transaction['amount'] = 0.0 + transaction['globalisation_amount'] = transaction_amt + main_move_stack_pop = False + glob_lvl_stack_append = True + else: + transaction['amount'] = transaction_amt + if previous_main_move and previous_main_move['glob_lvl_flag'] > 0: + main_move_stack_pop = False + + # The 'globalisation' concept can also be implemented + # without the globalisation level flag. + # This is e.g. used by Europabank to give the details of + # Card Payments. + if previous_main_move and \ + transaction['ref_move'] == previous_main_move['ref_move']: + if transaction['ref_move_detail'] == '9999': + # Current CODA parsing logic doesn't + # support > 9999 detail lines + err_string = _( + '\nTransaction Detail Limit reached !') + raise UserError(err_string) + elif transaction['ref_move_detail'] != '0000': + if glob_lvl_stack[-1] == 0 \ + and previous_main_move['type'] != 'globalisation': + # promote associated move record + # into a globalisation + glob_lvl_flag = 1 + glob_lvl_stack_append = True + k = previous_main_move['sequence'] + to_promote = coda_transactions[k] + if not previous_main_move.get('detail_cnt'): + to_promote.update({ + 'type': 'globalisation', + 'glob_lvl_flag': glob_lvl_flag, + 'globalisation_amount': + previous_main_move['amount'], + 'amount': 0.0, + 'account_id': False}) + previous_main_move['promoted'] = True + main_move_stack_pop = False + if not previous_main_move.get('detail_cnt'): + previous_main_move['detail_cnt'] = 1 + else: + previous_main_move['detail_cnt'] += 1 + + # positions 48-53 : Value date or 000000 if not known (DDMMYY) + transaction['val_date'] = str2date(line[47:53]) + # positions 54-61 : transaction code + transaction['trans_family'] = line[54:56] + trans_family = [x for x in self._trans_codes + if (x.type == 'family') + and (x.code == transaction['trans_family'])] + if not trans_family: + err_string = _( + "\nThe File contains an invalid " + "CODA Transaction Family : %s !" + ) % transaction['trans_family'] + raise UserError(err_string) + trans_family = trans_family[0] + transaction['trans_family_id'] = trans_family.id + transaction['trans_family_desc'] = trans_family.description + transaction['trans_code'] = line[56:58] + trans_code = [x for x in self._trans_codes + if (x.type == 'code') and + (x.code == transaction['trans_code']) and + (trans_family.id == x.parent_id.id)] + if trans_code: + transaction['trans_code_id'] = trans_code[0].id + transaction['trans_code_desc'] = trans_code[0].description + else: + transaction['trans_code_id'] = None + transaction['trans_code_desc'] = _( + "Transaction Code unknown, " + "please consult your bank.") + transaction['trans_category'] = line[58:61] + trans_category = [x for x in self._trans_categs + if transaction['trans_category'] == x.category] + if trans_category: + transaction['trans_category_id'] = trans_category[0].id + transaction['trans_category_desc'] = trans_category[0].description + else: + transaction['trans_category_id'] = None + transaction['trans_category_desc'] = _( + "Transaction Category unknown, " + "please consult your bank.") + # positions 61-115 : communication + if line[61] == '1': + transaction['struct_comm_type'] = line[62:65] + comm_type = [x for x in self._comm_types + if x.code == transaction['struct_comm_type']] + if not comm_type: + err_string = _( + "\nThe File contains an invalid " + "Structured Communication Type : %s !" + ) % transaction['struct_comm_type'] + raise UserError(err_string) + transaction['struct_comm_type_id'] = comm_type[0].id + transaction['struct_comm_type_desc'] = comm_type[0].description + transaction['communication'] = transaction['name'] = line[65:115] + if transaction['struct_comm_type'] in ['101', '102']: + bbacomm = line[65:77] + transaction['struct_comm_bba'] = transaction['name'] = \ + '+++' + bbacomm[0:3] + '/' + bbacomm[3:7] + \ + '/' + bbacomm[7:] + '+++' + # SEPA SCT type + transaction['creditor_reference_type'] = 'BBA' + # SEPA SCT reference + transaction['creditor_reference'] = bbacomm + else: + transaction['communication'] = transaction['name'] = \ + line[62:115].strip() + transaction['entry_date'] = str2date(line[115:121]) + if transaction['sequence'] == 1: + coda_statement['first_transaction_date'] = \ + transaction['entry_date'] + # positions 122-124 not processed + + # store transaction + coda_transactions[transaction_seq] = transaction + + if previous_main_move: + + if previous_main_move.get('detail_cnt') and \ + previous_main_move.get('promoted'): + # add closing globalisation level on previous detail record + # in order to correctly close moves that have been + # 'promoted' to globalisation + closeglobalise = coda_transactions[transaction_seq - 1] + closeglobalise.update({ + 'glob_lvl_flag': previous_main_move['glob_lvl_flag']}) + else: + # Demote record with globalisation code from + # 'globalisation' to 'regular' when no detail records. + # The same logic is repeated on the New Balance Record + # ('8 Record') in order to cope with CODA files containing + # a single 2.1 record that needs to be 'demoted'. + if previous_main_move['type'] == 'globalisation' \ + and not previous_main_move.get('detail_cnt'): + # demote record with globalisation code from + # 'globalisation' to 'regular' when no detail records + k = previous_main_move['sequence'] + to_demote = coda_transactions[k] + to_demote.update({ + 'type': 'regular', + 'glob_lvl_flag': 0, + 'globalisation_amount': False, + 'amount': previous_main_move['globalisation_amount'], + }) + + if main_move_stack_pop: + main_move_stack.pop() + + main_move_stack.append(transaction) + if glob_lvl_stack_append: + glob_lvl_stack.append(glob_lvl_flag) + if glob_lvl_stack_pop: + glob_lvl_stack.pop() + + return coda_parsing_note, transaction_seq + + def _coda_record_22(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + transaction = coda_statement['coda_transactions'][transaction_seq] + if transaction['ref'][0:4] != line[2:6]: + err_string = _( + "\nCODA parsing error on movement data record 2.2, seq nr %s!" + "\nPlease report this issue via your Odoo support channel." + ) % line[2:10] + raise UserError(err_string) + comm_extra = line[10:63] + if not transaction.get('struct_comm_type_id'): + comm_extra = comm_extra.rstrip() + transaction['name'] += comm_extra.rstrip() + transaction['communication'] += comm_extra + transaction['payment_reference'] = line[63:98].strip() + transaction['counterparty_bic'] = line[98:109].strip() + + return coda_parsing_note + + def _coda_record_23(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + transaction = coda_statement['coda_transactions'][transaction_seq] + if transaction['ref'][0:4] != line[2:6]: + err_string = _( + "\nCODA parsing error on movement data record 2.3, seq nr %s!" + "'\nPlease report this issue via your Odoo support channel." + ) % line[2:10] + raise UserError(err_string) + + if coda_statement['coda_version'] == '1': + counterparty_number = line[10:22].strip() + counterparty_name = line[47:125].strip() + counterparty_currency = '' + else: + if line[22] == ' ': + counterparty_number = line[10:22].strip() + counterparty_currency = line[23:26].strip() + else: + counterparty_number = line[10:44].strip() + counterparty_currency = line[44:47].strip() + counterparty_name = line[47:82].strip() + comm_extra = line[82:125] + if not transaction.get('struct_comm_type_id'): + comm_extra = comm_extra.rstrip() + transaction['name'] += comm_extra.rstrip() + transaction['communication'] += comm_extra + transaction['counterparty_number'] = counterparty_number + transaction['counterparty_currency'] = counterparty_currency + transaction['partner_name'] = counterparty_name + + return coda_parsing_note + + def _coda_record_3(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + if line[1] == '1': + coda_parsing_note, transaction_seq = self._coda_record_31( + coda_statement, line, coda_parsing_note, transaction_seq) + + elif line[1] == '2': + coda_parsing_note = self._coda_record_32( + coda_statement, line, coda_parsing_note, transaction_seq) + + elif line[1] == '3': + coda_parsing_note = self._coda_record_33( + coda_statement, line, coda_parsing_note, transaction_seq) + + return coda_parsing_note, transaction_seq + + def _coda_record_31(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + # list of lines parsed already + transaction = coda_statement['coda_transactions'][transaction_seq] + + info_line = {} + info_line['entry_date'] = transaction['entry_date'] + info_line['type'] = 'information' + transaction_seq = transaction_seq + 1 + info_line['sequence'] = transaction_seq + info_line['struct_comm_type'] = '' + info_line['struct_comm_type_desc'] = '' + info_line['communication'] = '' + info_line['ref'] = line[2:10] + info_line['ref_move'] = line[2:6] + info_line['ref_move_detail'] = line[6:10] + info_line['trans_ref'] = line[10:31] + # get key of associated transaction record + mm_seq = coda_statement['main_move_stack'][-1]['sequence'] + trans_check = \ + coda_statement['coda_transactions'][mm_seq]['trans_ref'] + if info_line['trans_ref'] != trans_check: + err_string = _( + "\nCODA parsing error on " + "information data record 3.1, seq nr %s !" + "\nPlease report this issue via your Odoo support channel." + ) % line[2:10] + raise UserError(err_string) + info_line['main_move_sequence'] = mm_seq + # positions 32-38 : transaction code + info_line['trans_type'] = line[31] + trans_type = [x for x in self._trans_types + if x.type == info_line['trans_type']] + if not trans_type: + err_string = _( + "\nThe File contains an invalid CODA Transaction Type : %s !" + ) % info_line['trans_type'] + raise UserError(err_string) + info_line['trans_type_desc'] = trans_type[0].description + info_line['trans_family'] = line[32:34] + trans_family = [x for x in self._trans_codes + if (x.type == 'family') and + (x.code == info_line['trans_family'])] + if not trans_family: + err_string = _( + "\nThe File contains an invalid CODA Transaction Family : %s !" + ) % info_line['trans_family'] + raise UserError(err_string) + trans_family = trans_family[0] + info_line['trans_family_desc'] = trans_family.description + info_line['trans_code'] = line[34:36] + trans_code = [x for x in self._trans_codes + if (x.type == 'code') and + (x.code == info_line['trans_code']) and + (x.parent_id.id == trans_family.id)] + if trans_code: + info_line['trans_code_desc'] = trans_code[0].description + else: + info_line['trans_code_desc'] = _( + "Transaction Code unknown, please consult your bank.") + info_line['trans_category'] = line[36:39] + trans_category = [x for x in self._trans_categs + if x.category == info_line['trans_category']] + if trans_category: + info_line['trans_category_desc'] = \ + trans_category[0].description + else: + info_line['trans_category_desc'] = _( + "Transaction Category unknown, please consult your bank.") + # positions 40-113 : communication + if line[39] == '1': + info_line['struct_comm_type'] = line[40:43] + comm_type = [x for x in self._comm_types + if x.code == info_line['struct_comm_type']] + if not comm_type: + err_string = _( + "\nThe File contains an invalid " + "Structured Communication Type : %s !" + ) % info_line['struct_comm_type'] + raise UserError(err_string) + info_line['struct_comm_type_desc'] = comm_type[0].description + info_line['communication'] = line[43:113] + info_line['name'] = info_line['communication'].strip() + else: + name = _("Extra information") + info = line[40:113] + info_line['name'] = name + ': ' + info + info_line['communication'] = INDENT + name + ':' + info_line['communication'] += INDENT + info + # positions 114-128 not processed + + # store transaction + coda_statement['coda_transactions'][transaction_seq] = info_line + return coda_parsing_note, transaction_seq + + def _coda_record_32(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + transaction = coda_statement['coda_transactions'][transaction_seq] + if transaction['ref_move'] != line[2:6]: + err_string = _( + "\nCODA parsing error on " + "information data record 3.2, seq nr %s!" + "\nPlease report this issue via your Odoo support channel." + ) % transaction['ref'] + raise UserError(err_string) + comm_extra = line[10:115] + if not transaction.get('struct_comm_type_id'): + comm_extra = comm_extra.rstrip() + transaction['name'] += comm_extra.rstrip() + transaction['communication'] += comm_extra + + return coda_parsing_note + + def _coda_record_33(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + transaction = coda_statement['coda_transactions'][transaction_seq] + if transaction['ref_move'] != line[2:6]: + err_string = _( + "\nCODA parsing error on " + "information data record 3.3, seq nr %s !" + "\nPlease report this issue via your Odoo support channel." + ) % line[2:10] + raise UserError(err_string) + comm_extra = line[10:100].rstrip() + transaction['name'] += comm_extra + transaction['communication'] += comm_extra + + return coda_parsing_note + + def _coda_record_4(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + comm_line = {} + comm_line['type'] = 'communication' + transaction_seq = transaction_seq + 1 + comm_line['sequence'] = transaction_seq + comm_line['ref'] = line[2:10] + comm_line['communication'] = comm_line['name'] = line[32:112].strip() + coda_statement['coda_transactions'][transaction_seq] = comm_line + + return coda_parsing_note, transaction_seq + + def _coda_record_8(self, coda_statement, line, coda_parsing_note, + transaction_seq): + + cba = coda_statement['coda_bank_params'] + # get list of lines parsed already + coda_transactions = coda_statement['coda_transactions'] + + last_transaction = coda_statement['main_move_stack'][-1] + if last_transaction['type'] == 'globalisation' \ + and not last_transaction.get('detail_cnt'): + # demote record with globalisation code from + # 'globalisation' to 'regular' when no detail records + main_transaction_seq = last_transaction['sequence'] + to_demote = coda_transactions[main_transaction_seq] + to_demote.update({ + 'type': 'regular', + 'glob_lvl_flag': 0, + 'globalisation_amount': False, + 'amount': last_transaction['globalisation_amount'], + }) + # add closing globalisation level on previous detail record + # in order to correctly close moves that have been 'promoted' + # to globalisation + if last_transaction.get('detail_cnt') \ + and last_transaction.get('promoted'): + closeglobalise = coda_transactions[transaction_seq - 1] + closeglobalise.update({ + 'glob_lvl_flag': last_transaction['glob_lvl_flag']}) + coda_statement['paper_nb_seq_number'] = line[1:4] + bal_end = list2float(line[42:57]) + new_balance_date = str2date(line[57:63]) + if not new_balance_date: + # take date of last transaction + new_balance_date = last_transaction.get('entry_date') + coda_statement['new_balance_date'] = new_balance_date + if line[41] == '1': # 1=Debit + bal_end = - bal_end + coda_statement['balance_end_real'] = bal_end + + # update coda_statement['name'] with data from 8 record + if cba.coda_st_naming: + coda_statement['name'] = cba.coda_st_naming % { + 'code': cba.journal_id.code or '', + 'year': + coda_statement['new_balance_date'] and + coda_statement['new_balance_date'][:4] or + coda_statement['date'][:4], + 'y': + coda_statement['new_balance_date'] and + coda_statement['new_balance_date'][2:4] or + coda_statement['date'][2:4], + 'coda': coda_statement['coda_seq_number'], + 'paper_ob': coda_statement['paper_ob_seq_number'], + 'paper': coda_statement['paper_nb_seq_number'], + } + # We have to skip the already processed statements + # when we reprocess CODA file + if self._coda_id: + old_statements = self.env['account.bank.statement'].search( + [('coda_id', '=', self._coda_id), + ('name', '=', coda_statement['name'])]) + if old_statements: + coda_statement['skip'] = True + else: + coda_statement['name'] = '/' + + return coda_parsing_note + + def _coda_record_9(self, coda_statement, line, coda_parsing_note): + + coda_statement['balance_min'] = list2float(line[22:37]) + coda_statement['balance_plus'] = list2float(line[37:52]) + if not coda_statement.get('balance_end_real'): + coda_statement['balance_end_real'] = \ + coda_statement['balance_start'] \ + + coda_statement['balance_plus'] \ + - coda_statement['balance_min'] + if coda_parsing_note: + coda_statement['coda_parsing_note'] = _( + "'\nStatement Line matching results:" + ) + coda_parsing_note + else: + coda_statement['coda_parsing_note'] = '' + + return coda_parsing_note + + def _check_duplicate(self, coda_statement): + cba = coda_statement['coda_bank_params'] + discard = False + if cba.discard_dup: + dups = self.env['account.bank.statement'].search( + [('name', '=', coda_statement['name']), + ('company_id', '=', cba.company_id.id)]) + if dups: + # don't create a bank statement for duplicates + discard = True + coda_statement['coda_parsing_note'] += _( + "\n\nThe Bank Statement %s already exists, " + "hence no duplicate Bank Statement has been created." + ) % coda_statement['name'] + return discard + + def _create_bank_statement(self, coda_statement): + + bank_st = False + cba = coda_statement['coda_bank_params'] + journal = cba.journal_id + balance_start_check = False + balance_start_check_date = coda_statement[ + 'first_transaction_date'] or coda_statement['date'] + st_check = self.env['account.bank.statement'].search( + [('journal_id', '=', journal.id), + ('date', '<', balance_start_check_date)], + order='date DESC, id DESC', limit=1) + if st_check: + balance_start_check = st_check.balance_end_real + else: + account = ( + journal.default_credit_account_id == + journal.default_debit_account_id + ) and journal.default_debit_account_id + if not account: + self._nb_err += 1 + self._err_string += _( + "'\nConfiguration Error in journal %s!" + "\nPlease verify the Default Debit and Credit Account " + "settings.") % journal.name + return bank_st + else: + data = self.env['account.move.line'].read_group( + [('account_id', '=', account.id), + ('date', '<', balance_start_check_date)], + ['balance'], []) + balance_start_check = data and data[0]['balance'] or 0.0 + + if balance_start_check != coda_statement['balance_start']: + balance_start_err_string = _( + "'\nThe CODA Statement %s Starting Balance (%.2f) " + "does not correspond with the previous " + "Closing Balance (%.2f) in journal %s!" + ) % (coda_statement['name'], + coda_statement['balance_start'], + balance_start_check, journal.name) + if cba.balance_start_enforce: + self._nb_err += 1 + self._err_string += balance_start_err_string + return bank_st + else: + coda_statement[ + 'coda_parsing_note'] += '\n' + balance_start_err_string + + st_vals = { + 'name': coda_statement['name'], + 'journal_id': journal.id, + 'coda_id': self._coda_id, + 'date': self.accounting_date + or coda_statement['new_balance_date'], + 'balance_start': coda_statement['balance_start'], + 'balance_end_real': coda_statement['balance_end_real'], + 'state': 'open', + 'company_id': cba.company_id.id, + 'coda_bank_account_id': cba.id, + } + + try: + with self._cr.savepoint(): + ctx = dict(self._context, force_company=cba.company_id.id) + st = self.env['account.bank.statement'].with_context(ctx) + bank_st = st.create(st_vals) + except (UserError, ValidationError) as e: + self._nb_err += 1 + self._err_string += _('\nError ! ') + str(e) + tb = ''.join(format_exception(*exc_info())) + _logger.error( + "Application Error while processing Statement %s\n%s", + coda_statement.get('name', '/'), tb) + except Exception as e: + self._nb_err += 1 + self._err_string += _('\nSystem Error : ') + str(e) + tb = ''.join(format_exception(*exc_info())) + _logger.error( + "System Error while processing Statement %s\n%s", + coda_statement.get('name', '/'), tb) + + return bank_st + + def _prepare_statement_line(self, coda_statement, transaction, + coda_parsing_note): + + cba = coda_statement['coda_bank_params'] + ctx = dict(self._context, force_company=cba.company_id.id) + + if not transaction['type'] == 'communication': + if transaction['trans_family'] in ST_LINE_NAME_FAMILIES: + transaction['name'] = self._get_st_line_name(transaction) + if transaction['type'] == 'information': + if transaction['struct_comm_type'] in PARSE_COMMS_INFO: + transaction['name'], transaction['communication'] = \ + self._parse_comm_info(coda_statement, transaction) + elif transaction['struct_comm_type'] in PARSE_COMMS_MOVE: + transaction['name'], transaction['communication'] = \ + self._parse_comm_move(coda_statement, transaction) + elif transaction['struct_comm_type'] in PARSE_COMMS_MOVE: + transaction['name'], transaction['communication'] = \ + self._parse_comm_move(coda_statement, transaction) + + transaction['name'] = transaction['name'].strip() + + # handling transactional records, transaction['type'] in + # ['globalisation', 'regular'] + + if transaction['type'] in ['globalisation', 'regular']: + + if transaction['ref_move_detail'] == '0000': + # initialise stack with tuples + # (glob_lvl_flag, glob_code, glob_id, glob_name) + coda_statement['glob_id_stack'] = [(0, '', 0, '')] + + glob_lvl_flag = transaction['glob_lvl_flag'] + if glob_lvl_flag: + if coda_statement['glob_id_stack'][-1][0] == glob_lvl_flag: + transaction['globalisation_id'] = \ + coda_statement['glob_id_stack'][-1][2] + coda_statement['glob_id_stack'].pop() + else: + glob_name = transaction['name'].strip() or '/' + seq_mod = self.env['ir.sequence'].with_context(ctx) + glob_code = seq_mod.next_by_code( + 'statement.line.global') + glob_mod = self.env[ + 'account.bank.statement.line.global' + ].with_context(ctx) + glob_line = glob_mod.create({ + 'code': glob_code, + 'name': glob_name, + 'type': 'coda', + 'parent_id': coda_statement['glob_id_stack'][-1][2], + 'amount': transaction['globalisation_amount'], + 'payment_reference': transaction['payment_reference'], + 'currency_id': cba.currency_id.id, + }) + transaction['globalisation_id'] = glob_line.id + coda_statement['glob_id_stack'].append( + (glob_lvl_flag, glob_code, glob_line.id, glob_name)) + + transaction['note'] = _( + 'Partner Name: %s \nPartner Account Number: %s' + '\nTransaction Type: %s - %s' + '\nTransaction Family: %s - %s' + '\nTransaction Code: %s - %s' + '\nTransaction Category: %s - %s' + '\nStructured Communication Type: %s - %s' + '\nPayment Reference: %s' + '\nCommunication: %s' + ) % (transaction['partner_name'], + transaction['counterparty_number'], + transaction['trans_type'], + transaction['trans_type_desc'], + transaction['trans_family'], + transaction['trans_family_desc'], + transaction['trans_code'], + transaction['trans_code_desc'], + transaction['trans_category'], + transaction['trans_category_desc'], + transaction['struct_comm_type'], + transaction['struct_comm_type_desc'], + transaction['payment_reference'], + transaction['communication']) + + if glob_lvl_flag == 0: + transaction['globalisation_id'] = \ + coda_statement['glob_id_stack'][-1][2] + + transaction['create_bank_st_line'] = True + if transaction['amount'] != 0.0: + if not transaction['name']: + if transaction['globalisation_id']: + transaction['name'] = \ + coda_statement['glob_id_stack'][-1][3] or '' + + # handling non-transactional records: + # transaction['type'] in ['information', 'communication'] + + elif transaction['type'] == 'information': + + transaction['globalisation_id'] = \ + coda_statement['glob_id_stack'][-1][2] + transaction['note'] = _( + 'Transaction Type' ': %s - %s' + '\nTransaction Family: %s - %s' + '\nTransaction Code: %s - %s' + '\nTransaction Category: %s - %s' + '\nStructured Communication Type: %s - %s' + '\nCommunication: %s' + ) % (transaction['trans_type'], transaction['trans_type_desc'], + transaction['trans_family'], transaction['trans_family_desc'], + transaction['trans_code'], transaction['trans_code_desc'], + transaction['trans_category'], + transaction['trans_category_desc'], + transaction['struct_comm_type'], + transaction['struct_comm_type_desc'], + transaction['communication']) + + # update transaction values generated from the + # 2.x move record + mm_seq = transaction['main_move_sequence'] + coda_statement['coda_transactions'][mm_seq]['note'] += \ + '\n' + transaction['communication'] + + elif transaction['type'] == 'communication': + transaction['name'] = 'free communication' + coda_statement['coda_note'] += \ + '\n' + transaction['communication'] + + if not transaction['name']: + transaction['name'] = ', '.join([ + transaction['trans_family_desc'], + transaction['trans_code_desc'], + transaction['trans_category_desc']]) + return coda_parsing_note + + def _get_st_line_move_name(self, coda_statement, transaction): + move_name = '%s/%s' % ( + coda_statement['name'], + str(transaction['sequence']).rjust(3, '0')) + return move_name + + def _prepare_st_line_vals(self, coda_statement, transaction): + + g_seq = transaction.get('glob_sequence') + if g_seq: + transaction['upper_transaction'] = \ + coda_statement['coda_transactions'][g_seq] + move_name = self._get_st_line_move_name(coda_statement, transaction) + st_line_vals = { + 'sequence': transaction['sequence'], + 'ref': transaction['ref'], + 'name': transaction['name'], + 'val_date': transaction['val_date'], + 'date': transaction['entry_date'], + 'amount': transaction['amount'], + 'partner_name': transaction['partner_name'], + 'counterparty_bic': transaction['counterparty_bic'], + 'counterparty_number': transaction['counterparty_number'], + 'counterparty_currency': transaction['counterparty_currency'], + 'globalisation_id': transaction['globalisation_id'], + 'payment_reference': transaction['payment_reference'], + 'statement_id': coda_statement['bank_st_id'], + 'move_name': move_name, + 'note': transaction['note'], + 'coda_transaction_dict': json.dumps(transaction)} + + if transaction.get('bank_account_id'): + st_line_vals['bank_account_id'] = transaction['bank_account_id'] + + return st_line_vals + + def _create_bank_statement_line(self, coda_statement, transaction): + st_line_vals = self._prepare_st_line_vals(coda_statement, transaction) + cba = coda_statement['coda_bank_params'] + ctx = dict(self._context, force_company=cba.company_id.id) + stl = self.env['account.bank.statement.line'].with_context(ctx) + st_line = stl.create(st_line_vals) + transaction['st_line_id'] = st_line.id + + def _discard_empty_statement(self, coda_statement): + """ + Return False if you do not want to create a bank statement + for CODA files without transactions. + """ + coda_statement['coda_parsing_note'] += _( + "\n\nThe CODA Statement %s does not contain transactions, " + "hence no Bank Statement has been created." + "\nSelect the 'CODA Bank Statement' " + "to check the contents of %s." + ) % (coda_statement['name'], coda_statement['name']) + return True + + def _coda_statement_init_hook(self, coda_statement): + """ + Use this method to take customer specific actions + once a specific statement has been identified in a coda file. + """ + + def _coda_statement_hook(self, coda_statement): + """ + Use this method to take customer specific actions + after the creation of the 'coda_statement' dict by the parsing engine. + + e.g. Do not generate statements without transactions: + self._normal2info(coda_statement) + """ + + def _coda_transaction_hook(self, coda_statement, transaction): + """ + Use this method to adapt the transaction created by the + CODA parsing to customer specific needs. + """ + transaction_copy = transaction.copy() + return [transaction_copy] + + @api.multi + def coda_parsing(self): + if self.coda_fname.split('.')[-1].lower() == 'zip': + return self._coda_zip() + return self._coda_parsing() + + def _coda_zip(self): + """ + Expand ZIP archive before CODA parsing. + TODO: refactor code to share logic with 'l10n_be_coda_batch' module + """ + self._ziplog_note = '' + self._ziperr_log = '' + coda_files = [] + try: + coda_data = base64.decodestring(self.coda_data) + with zipfile.ZipFile(BytesIO(coda_data)) as coda_zip: + for fn in coda_zip.namelist(): + if not fn.endswith('/'): + coda_files.append((coda_zip.read(fn), fn)) + # fall back to regular CODA file processing if zip expand fails + except zipfile.BadZipfile as e: + _logger.error(str(e)) + return self._coda_parsing() + except Exception: + tb = ''.join(format_exception(*exc_info())) + _logger.error("Unknown Error while reading zip file\n%s", tb) + return self._coda_parsing() + coda_files = self._sort_files(coda_files) + coda_ids = [] + bk_st_ids = [] + + # process CODA files + for coda_file in coda_files: + time_start = time.time() + try: + statements = self._coda_parsing( + codafile=coda_file[1], codafilename=coda_file[2], + batch=True) + coda_ids += [self._coda_id] + bk_st_ids += statements.ids + if self.reconcile: + reconcile_note = '' + for statement in statements: + reconcile_note = self._automatic_reconcile( + statement, reconcile_note=reconcile_note) + if reconcile_note: + self._ziplog_note += reconcile_note + self._ziplog_note += '\n\n' + _( + "CODA File '%s' has been imported.\n" + ) % coda_file[2] + self._ziplog_note += ( + '\n' + _("Number of statements processed") + + ' : {}'.format(len(bk_st_ids)) + ) + except UserError as e: + self._ziperr_log += _( + "\n\nError while processing CODA File '%s' :\n%s" + ) % (coda_file[2], ''.join(e.args)) + except Exception: + tb = ''.join(format_exception(*exc_info())) + self._ziperr_log += _( + "\n\nError while processing CODA File '%s' :\n%s" + ) % (coda_file[2], tb) + file_import_time = time.time() - time_start + _logger.warn( + 'File %s processing time = %.3f seconds', + coda_file[2], file_import_time) + + note = _("ZIP archive import results:") + note += self._ziperr_log + self._ziplog_note + log_footer = _('\n\nNumber of files : %s') % str(len(coda_files)) + self.note = note + log_footer + + ctx = dict(self.env.context, coda_ids=coda_ids, bk_st_ids=bk_st_ids) + module = __name__.split('addons.')[1].split('.')[0] + result_view = self.env.ref( + '%s.account_coda_import_view_form_result' % module) + return { + 'name': _('CODA ZIP import result'), + 'res_id': self.id, + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'account.coda.import', + 'view_id': result_view.id, + 'target': 'new', + 'context': ctx, + 'type': 'ir.actions.act_window', + } + + def _msg_duplicate(self, filename): + self._nb_err += 1 + self._ziperr_log += _( + "\n\nError while processing CODA File '%s' :") % (filename) + self._ziperr_log += _( + "\nThis CODA File is marked by your bank as a 'Duplicate' !") + self._ziperr_log += _( + '\nPlease treat this CODA File manually !') + + def _msg_exception(self, filename): + self._nb_err += 1 + self._ziperr_log += _( + "\n\nError while processing CODA File '%s' :") % (filename) + self._ziperr_log += _('\nInvalid Header Record !') + + def _msg_noheader(self, filename): + self._nb_err += 1 + self._ziperr_log += _( + "\n\nError while processing CODA File '%s' :") % (filename) + self._ziperr_log += _("\nMissing Header Record !") + + def _sort_files(self, coda_files_in): + """ + Sort CODA files on creation date. + """ + coda_files = [] + for data, filename in coda_files_in: + coda_creation_date = False + recordlist = str( + data, 'windows-1252', 'strict').split('\n') + if not recordlist: + self._nb_err += 1 + self._ziperr_log += _( + "\n\nError while processing CODA File '%s' :" + ) % (filename) + self._ziperr_log += _("\nEmpty File !") + else: + for line in recordlist: + if not line: + pass + elif line[0] == '0': + try: + coda_creation_date = str2date(line[5:11]) + if line[16] == 'D': + self._msg_duplicate(filename) + else: + coda_files += [ + (coda_creation_date, + data, + filename)] + except Exception: + self._msg_exception(filename) + break + else: + self._msg_noheader(filename) + break + coda_files.sort() + return coda_files + + def _coda_parsing(self, codafile=None, codafilename=None, + batch=False): + """ + TODO: + refactor code to return statements and coda file when called + in batch mode. + """ + if batch: + self._batch = True + recordlist = str( + codafile, 'windows-1252', 'strict').split('\n') + else: + self.ensure_one() + self._batch = False + codafile = self.coda_data + codafilename = self.coda_fname + recordlist = str( + base64.decodestring(codafile), + 'windows-1252', 'strict').split('\n') + + self._coda_id = self._context.get('coda_id') + self._coda_banks = self.env['coda.bank.account'].search([]) + self._trans_types = self.env['account.coda.trans.type'].search([]) + self._trans_codes = self.env['account.coda.trans.code'].search([]) + self._trans_categs = self.env[ + 'account.coda.trans.category'].search([]) + self._comm_types = self.env['account.coda.comm.type'].search([]) + self._coda_import_note = '' + coda_statements = [] + + # parse lines in coda file and store result in coda_statements list + coda_statement = {} + skip = False + for line in recordlist: + + skip = coda_statement.get('skip') + if not line: + continue + if line[0] != '0' and not coda_statement: + raise UserError(_( + "CODA Import Failed." + "\nIncorrect input file format")) + elif line[0] == '0': + # start of a new statement within the CODA file + coda_statement = {} + st_line_seq = 0 + coda_parsing_note = '' + + coda_parsing_note = self._coda_record_0( + coda_statement, line, coda_parsing_note) + + if not self._coda_id: + codas = self.env['account.coda'].search( + [('name', '=', codafilename), + ('coda_creation_date', '=', coda_statement['date'])]) + self._coda_id = codas and codas[0].id or False + if self._coda_id: + self._coda_import_note += '\n\n' + self._coda_import_note += _( + "CODA File %s has already been imported." + ) % codafilename + coda_statement['skip'] = True + + elif line[0] == '1': + coda_parsing_note = self._coda_record_1( + coda_statement, line, coda_parsing_note) + + elif line[0] == '2' and not skip: + # movement data record 2 + coda_parsing_note, st_line_seq = self._coda_record_2( + coda_statement, line, coda_parsing_note, st_line_seq) + + elif line[0] == '3' and not skip: + # information data record 3 + coda_parsing_note, st_line_seq = self._coda_record_3( + coda_statement, line, coda_parsing_note, st_line_seq) + + elif line[0] == '4' and not skip: + # free communication data record 4 + coda_parsing_note, st_line_seq = self._coda_record_4( + coda_statement, line, coda_parsing_note, st_line_seq) + + elif line[0] == '8' and not skip: + # new balance record + coda_parsing_note = self._coda_record_8( + coda_statement, line, coda_parsing_note, st_line_seq) + + elif line[0] == '9': + # footer record + coda_parsing_note = self._coda_record_9( + coda_statement, line, coda_parsing_note) + if not coda_statement['skip']: + coda_statements.append(coda_statement) + + # end for line in recordlist: + + if not self._coda_id: + err_string = '' + try: + with self._cr.savepoint(): + if self._batch: + codafile = base64.encodestring(codafile) + coda = self.env['account.coda'].create({ + 'name': codafilename, + 'coda_data': codafile, + 'coda_creation_date': coda_statement['date'], + 'date': fields.Date.context_today(self), + 'user_id': self._uid, + }) + self._coda_id = coda.id + except (UserError, ValidationError) as e: + err_string = _('\nApplication Error : ') + str(e) + except Exception as e: + err_string = _('\nSystem Error : ') + str(e) + if err_string: + raise UserError(_('CODA Import failed !') + err_string) + + self._nb_err = 0 + self._err_string = '' + bank_statements = self.env['account.bank.statement'] + + for coda_statement in coda_statements: + + bank_st = False + cba = coda_statement['coda_bank_params'] + self._coda_statement_hook(coda_statement) + discard = self._check_duplicate(coda_statement) + transactions = coda_statement['coda_transactions'] + + if not transactions: + err_string = _( + "\nThe CODA File contains empty CODA Statement %s " + "for Bank Account %s !") % ( + coda_statement['coda_seq_number'], + coda_statement['acc_number'] + ' (' + + coda_statement['currency'] + + ') - ' + coda_statement['description']) + self._coda_import_note += '\n' + err_string + discard = self._discard_empty_statement(coda_statement) + + if not discard and not coda_statement.get('skip'): + bank_st = self._create_bank_statement(coda_statement) + if bank_st: + bank_statements += bank_st + coda_statement['bank_st_id'] = bank_st.id + else: + break + + # prepare bank statement line values and merge + # information records into the statement line + coda_statement['glob_id_stack'] = [] + + coda_parsing_note = coda_statement['coda_parsing_note'] + + for x in transactions: + transaction = transactions[x] + coda_parsing_note = self._prepare_statement_line( + coda_statement, transaction, coda_parsing_note) + + bank_st_transactions = [] + for x in transactions: + transaction = transactions[x] + if transaction.get('create_bank_st_line'): + res_transaction_hook = self._coda_transaction_hook( + coda_statement, transaction) + if res_transaction_hook: + bank_st_transactions += res_transaction_hook + + # resequence since _coda_transaction_hook may add/remove lines + transaction_seq = 0 + st_balance_end = round(coda_statement['balance_start'], 2) + for transaction in bank_st_transactions: + transaction_seq += 1 + transaction['sequence'] = transaction_seq + st_balance_end += round(transaction['amount'], 2) + self._create_bank_statement_line( + coda_statement, transaction) + + if round(st_balance_end - + coda_statement['balance_end_real'], 2): + err_string = _( + "\nIncorrect ending Balance in CODA Statement %s " + "for Bank Account %s !") % ( + coda_statement['coda_seq_number'], + coda_statement['acc_number'] + ' (' + + coda_statement['currency'] + + ') - ' + coda_statement['description']) + coda_statement['coda_parsing_note'] += '\n' + err_string + + # trigger calculate balance_end + bank_st.write( + {'balance_start': coda_statement['balance_start']}) + journal_name = cba.journal_id.name + + coda_statement['coda_parsing_note'] = coda_parsing_note + + self._coda_import_note = self._coda_import_note + \ + _('\n\nBank Journal: %s' + '\nCODA Version: %s' + '\nCODA Sequence Number: %s' + '\nPaper Statement Sequence Number: %s' + '\nBank Account: %s' + '\nAccount Holder Name: %s' + '\nDate: %s, Starting Balance: %.2f, Ending Balance: %.2f' + '%s' + ) % (journal_name, + coda_statement['coda_version'], + coda_statement['coda_seq_number'], + coda_statement.get('paper_nb_seq_number') or + coda_statement['paper_ob_seq_number'], + coda_statement['acc_number'] + + ' (' + coda_statement['currency'] + ') - ' + + coda_statement['description'], + coda_statement['acc_holder'], + coda_statement['date'], + float(coda_statement['balance_start']), + float(coda_statement['balance_end_real']), + coda_statement['coda_parsing_note'] % { + 'name': coda_statement['name']}) + + if coda_statement.get('separate_application') != '00000': + self._coda_import_note += _( + "'\nCode Separate Application: %s" + ) % coda_statement['separate_application'] + if coda_statement['coda_note']: + bank_st.write({'coda_note': coda_statement['coda_note']}) + + # end 'for coda_statement in coda_statements' + + coda_note_header = '>>> ' + time.strftime('%Y-%m-%d %H:%M:%S') + ' ' + coda_note_header += _("The CODA File has been processed by") + coda_note_header += " %s :" % self.env.user.name + coda_note_footer = '\n\n' + _("Number of statements processed") \ + + ' : ' + str(len(coda_statements)) + + if not self._nb_err: + coda = self.env['account.coda'].browse(self._coda_id) + old_note = coda.note and (coda.note + '\n\n') or '' + note = coda_note_header + self._coda_import_note \ + + coda_note_footer + coda.write({'note': old_note + note, 'state': 'done'}) + if self._batch: + return bank_statements + else: + raise UserError( + _("CODA Import failed !") + self._err_string) + + if self.reconcile: + reconcile_note = '' + for st in bank_statements: + reconcile_note = st._automatic_reconcile(reconcile_note) + if reconcile_note: + note += '\n\n' + note += _("Automatic Reconcile remarks:") + reconcile_note + + self.note = note + + ctx = dict(self.env.context, + coda_ids=[self._coda_id], + bk_st_ids=bank_statements.ids) + module = __name__.split('addons.')[1].split('.')[0] + result_view = self.env.ref( + '%s.account_coda_import_view_form_result' % module) + return { + 'name': _('Import CODA File result'), + 'res_id': self.id, + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'account.coda.import', + 'view_id': result_view.id, + 'target': 'new', + 'context': ctx, + 'type': 'ir.actions.act_window', + } + + def _automatic_reconcile(self, statement, reconcile_note=None): + reconcile_note = reconcile_note or '' + cba = statement.coda_bank_account_id + if cba: + self._company_bank_accounts = \ + cba.company_id.bank_journal_ids.mapped( + 'bank_account_id').mapped('sanitized_acc_number') + for st_line in statement.line_ids: + if st_line.amount and not st_line.journal_entry_ids: + transaction = st_line.coda_transaction_dict \ + and json.loads(st_line.coda_transaction_dict) + if transaction: + try: + with self._cr.savepoint(): + reconcile_note = self._st_line_reconcile( + st_line, cba, transaction, reconcile_note) + except Exception: + exctype, value = exc_info()[:2] + reconcile_note += '\n\n' + _( + "Error while processing statement line " + "with ref '%s':\n%s, \n%s" + ) % (transaction['ref'], str(exctype), + ', '.join(v for v in value if v)) + return reconcile_note + + def _st_line_reconcile(self, st_line, cba, transaction, reconcile_note): + + reconcile_note = self._match_and_reconcile( + st_line, cba, transaction, reconcile_note) + if cba.update_partner: + reconcile_note = self._update_partner_bank( + st_line, cba, transaction, reconcile_note) + + # override default account mapping by mappings + # defined in rules engine + if not transaction.get('counterpart_aml_id') \ + or transaction.get('account_id'): + if cba.account_mapping_ids: + kwargs = { + 'coda_bank_account_id': cba.id, + 'trans_type_id': transaction['trans_type_id'], + 'trans_family_id': transaction['trans_family_id'], + 'trans_code_id': transaction['trans_code_id'], + 'trans_category_id': + transaction['trans_category_id'], + 'struct_comm_type_id': + transaction['struct_comm_type_id'], + 'partner_id': transaction.get('partner_id'), + 'freecomm': transaction['communication'] + if not transaction['struct_comm_type'] else None, + 'structcomm': transaction['communication'] + if transaction['struct_comm_type'] else None, + 'payment_reference': transaction['payment_reference'] + if transaction['payment_reference'] else None, + } + rule = self.env[ + 'coda.account.mapping.rule'].rule_get(**kwargs) + if rule: + for k in rule: + transaction[k] = rule[k] + + if transaction.get('counterpart_aml_id') \ + or transaction.get('account_id'): + reconcile_note = self._create_move_and_reconcile( + st_line, cba, transaction, reconcile_note) + + if transaction.get('partner_id'): + st_line.write({'partner_id': transaction['partner_id']}) + + return reconcile_note + + def _match_and_reconcile(self, st_line, cba, transaction, reconcile_note): + """ + Matching and Reconciliation logic. + Returns: reconcile_note + """ + # match on payment reference + reconcile_note, match = self._match_payment_reference( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note + + # match on invoice + reconcile_note, match = self._match_invoice( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note + + # match on sale order + reconcile_note, match = self._match_sale_order( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note + + # match on open accounting entries + reconcile_note, match = self._match_account_move_line( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note + + # check if internal_transfer or find partner via counterparty_number + # when previous lookup steps fail + reconcile_note, match = self._match_counterparty( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note + + return reconcile_note + + def _match_payment_reference(self, st_line, cba, transaction, + reconcile_note): + """ + placeholder for ISO 20022 Payment Order matching, + cf. module l10n_be_coda_pain + """ + return reconcile_note, {} + + def _match_sale_order(self, st_line, cba, transaction, reconcile_note): + """ + placeholder for sale order matching, cf. module l10n_be_coda_sale + """ + return reconcile_note, {} + + def _match_invoice_number(self, st_Line, cba, transaction, + reconcile_note, free_comm): + """ + check matching invoice number in free form communication + combined with matching amount + """ + inv_ids = False + amount_fmt = '%.2f' + if transaction['amount'] > 0: + amount_rounded = \ + amount_fmt % round(transaction['amount'], 2) + else: + amount_rounded = \ + amount_fmt % round(-transaction['amount'], 2) + + select = \ + "SELECT id FROM " \ + "(SELECT id, type, state, amount_total, number, " \ + "reference_type, reference, " \ + "'%s'::text AS free_comm FROM account_invoice " \ + "WHERE state = 'open' AND company_id = %s) sq " \ + "WHERE amount_total = %s" \ + % (free_comm, cba.company_id.id, amount_rounded) + + # 'out_invoice', 'in_refund' + if transaction['amount'] > 0: + select2 = " AND type = 'out_invoice' AND " \ + "free_comm ilike '%'||number||'%'" + self._cr.execute(select + select2) + res = self._cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + else: + select2 = " AND type = 'in_refund' AND " \ + "free_comm ilike '%'||reference||'%'" + self._cr.execute(select + select2) + res = self._cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + + # 'in_invoice', 'out_refund' + else: + select2 = " AND type = 'in_invoice' AND " \ + "free_comm ilike '%'||reference||'%'" + self._cr.execute(select + select2) + res = self._cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + else: + select2 = " AND type = 'out_refund' AND " \ + "free_comm ilike '%'||number||'%'" + self._cr.execute(select + select2) + res = self._cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + + return inv_ids + + def _match_invoice(self, st_line, cba, transaction, reconcile_note): + + match = {} + + # check bba scor in bank statement line against open invoices + if transaction['struct_comm_bba'] and cba.find_bbacom: + if transaction['amount'] > 0: + dom_customer = [('type', '=', 'out_invoice')] + dom_supplier = [('type', '=', 'in_refund')] + else: + dom_customer = [('type', '=', 'out_refund')] + dom_supplier = [('type', '=', 'in_invoice')] + dom_customer += [ + ('state', '=', 'open'), + ('reference', '=', transaction['struct_comm_bba']), + ('reference_type', '=', 'bba')] + dom_supplier += [ + ('state', '=', 'open'), + ('supplier_payment_ref', '=', transaction['struct_comm_bba']), + ('supplier_payment_ref_type', '=', 'bba')] + invoices = self.env['account.invoice'].search(dom_customer) + if not invoices: + invoices = self.env['account.invoice'].search(dom_supplier) + if not invoices: + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + "\n There is no invoice matching the " + "Structured Communication '%s' !" + ) % (st_line.statement_id.name, transaction['ref'], + transaction['struct_comm_bba']) + elif len(invoices) == 1: + match['invoice_id'] = invoices[0].id + elif len(invoices) > 1: + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + "\n There are multiple invoices matching the " + "Structured Communication '%s' !" + "\n A manual reconciliation is required." + ) % (st_line.statement_id.name, transaction['ref'], + transaction['struct_comm_bba']) + + # use free comm in bank statement line + # for lookup against open invoices + if not match and cba.find_bbacom: + # extract possible bba scor from free form communication + # and try to find matching invoice + free_comm_digits = re.sub( + '\D', '', transaction['communication'] or '') + select = ( + "SELECT id FROM " + "(SELECT id, type, state, amount_total, number, " + "reference_type, reference, " + "'%s'::text AS free_comm_digits FROM account_invoice) sq " + "WHERE state = 'open' AND reference_type = 'bba' " + "AND free_comm_digits LIKE" + " '%%'||regexp_replace(reference, '\D', '', 'g')||'%%'" + ) % (free_comm_digits) + if transaction['amount'] > 0: + select2 = " AND type IN ('out_invoice', 'in_refund')" + else: + select2 = " AND type IN ('in_invoice', 'out_refund')" + self._cr.execute(select + select2) + res = self._cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + if len(inv_ids) == 1: + match['invoice_id'] = inv_ids[0] + + if not match and transaction['communication'] and cba.find_inv_number: + + # check matching invoice number in free form communication + free_comm = repl_special(transaction['communication'].strip()) + inv_ids = self._match_invoice_number( + st_line, cba, transaction, reconcile_note, free_comm) + if not inv_ids: + # check matching invoice number in free form communication + # of upper globalisation level line + if transaction.get('upper_transaction'): + free_comm = repl_special( + transaction['upper_transaction']['communication'] + .strip()) + inv_ids = self._match_invoice_number( + st_line, cba, transaction, reconcile_note, free_comm) + + if inv_ids: + if len(inv_ids) == 1: + match['invoice_id'] = inv_ids[0] + elif len(inv_ids) > 1: + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + "\n There are multiple invoices matching the " + "Invoice Amount and Reference." + "\n A manual reconciliation is required." + ) % (st_line.statement_id.name, transaction['ref']) + + if match: + invoice = self.env['account.invoice'].browse(match['invoice_id']) + partner = invoice.partner_id.commercial_partner_id + transaction['partner_id'] = partner.id + imls = self.env['account.move.line'].search( + [('move_id', '=', invoice.move_id.id), + ('full_reconcile_id', '=', False), + ('account_id', '=', invoice.account_id.id)]) + if imls: + transaction['counterpart_aml_id'] = imls[0].id + else: + err_string = _( + "\nThe CODA parsing detected a database inconsistency " + "while processing movement data record 2.3, seq nr %s !" + "'\nPlease report this issue via your " + "Odoo support channel." + ) % transaction['ref'] + err_code = 'M0001' + if self.batch: + return (err_code, err_string) + raise UserError(err_string) + + return reconcile_note, match + + def _match_aml_other_domain_field(self, st_line, cba, transaction): + """ + Customise search input data and field. + """ + search_field = 'ref' + search_input = repl_special(transaction['communication'].strip()) + return search_field, search_input + + def _match_aml_other_domain(self, st_line, cba, transaction): + + search_field, search_input = self._match_aml_other_domain_field( + st_line, cba, transaction) + domain = [(search_field, '=', search_input), + ('full_reconcile_id', '=', False), + ('account_id.reconcile', '=', True), + ('user_type_id.type', 'not in', ['payable', 'receivable'])] + return domain + + def _match_aml_other(self, st_line, cba, transaction, reconcile_note): + """ + check matching with non payable/receivable open accounting entries. + """ + cur = cba.currency_id + match = {} + + domain = self._match_aml_other_domain(st_line, cba, transaction) + amls = self.env['account.move.line'].search(domain) + + matches = [] + for aml in amls: + sign = (aml.debit - aml.credit) > 0 and 1 or -1 + if cur.name == 'EUR': + amt = sign * aml.amount_residual + if cur.is_zero(amt - transaction['amount']): + matches.append(aml) + else: + if aml.currency_id == cur: + amt = sign * aml.amount_residual_currency + if cur.is_zero(amt - transaction['amount']): + matches.append(aml) + + if len(matches) == 1: + aml = matches[0] + match['move_line_id'] = aml.id + transaction['partner_id'] = aml.partner_id.id + transaction['counterpart_aml_id'] = aml.id + + return reconcile_note, match + + def _match_aml_arap_domain_field(self, st_line, cba, transaction): + """ + Customise search input data and field. + + The search field is differenct from the one used in the + standard (manual) bank statement reconciliation. + By default we search on the 'name' in stead of 'ref' field. + + The ref field is equal to the 'account.move,ref' field. We already + cover this case in the invoice matching logic (executed before + falling back to accounting entry matching). + By a lookup on name, we allow to match on e.g. a set of + open Payables/Receivables encoded manually or imported from + an external accounting package + (hence not generated from an Odoo invoice). + """ + search_field = 'name' + search_input = transaction['communication'].strip() + return search_field, search_input + + def _match_aml_arap_refine(self, st_line, cba, transaction, + coda_parsing_note, matches): + """ + Refine matching logic by parsing the 'search_field'. + """ + search_field, search_input = self._match_aml_arap_domain_field( + st_line, cba, transaction) + refined = [] + for aml in matches: + aml_lookup_field = getattr(aml, search_field) + if transaction['struct_comm_bba']: + aml_lookup_field = re.sub('\D', '', aml_lookup_field) + if search_input in aml_lookup_field: + refined.append(aml) + return refined + + def _match_aml_arap_domain(self, st_line, cba, transaction): + domain = [('full_reconcile_id', '=', False), + ('user_type_id.type', 'in', ['payable', 'receivable']), + ('partner_id', '!=', False)] + return domain + + def _match_aml_arap(self, st_line, cba, transaction, reconcile_note): + """ + Check match with open payables/receivables. + This matching logic can be very resource intensive for databases with + a large number of unreconciled transactions. + As a consequence this logic is by default disabled when creating a new + 'CODA Bank Account'. + """ + cur = cba.currency_id + cpy_cur = cba.company_id.currency_id + match = {} + + search_field, search_input = self._match_aml_arap_domain_field( + st_line, cba, transaction) + if not search_field or not search_input: + # skip resource intensive mathcing logic + return reconcile_note, match + + domain = self._match_aml_arap_domain(st_line, cba, transaction) + amls = self.env['account.move.line'].search(domain) + + matches = [] + for aml in amls: + sign = (aml.debit - aml.credit) > 0 and 1 or -1 + if cur == cpy_cur: + amt = sign * aml.amount_residual + if cur.is_zero(amt - transaction['amount']): + matches.append(aml) + else: + if aml.currency_id == cur: + amt = sign * aml.amount_residual_currency + if cur.is_zero(amt - transaction['amount']): + matches.append(aml) + + matches = self._match_aml_arap_refine( + st_line, cba, transaction, reconcile_note, matches) + + if len(matches) == 1: + aml = matches[0] + match['move_line_id'] = aml.id + transaction['partner_id'] = aml.partner_id.id + transaction['counterpart_aml_id'] = aml.id + + return reconcile_note, match + + def _match_account_move_line(self, st_line, cba, transaction, + reconcile_note): + """ + Match against open acounting entries. + """ + match = {} + + if cba.find_account_move_line: + + # exclude non-partner related transactions (e.g. bank costs) + if not transaction['counterparty_number']: + return reconcile_note, match + + # match on open receivables/payables + reconcile_note, match = self._match_aml_arap( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note, match + + # match on other open entries + reconcile_note, match = self._match_aml_other( + st_line, cba, transaction, reconcile_note) + if match: + return reconcile_note, match + + return reconcile_note, match + + def _match_counterparty(self, st_line, cba, transaction, reconcile_note): + + match = {} + partner_banks = False + cp_number = transaction['counterparty_number'] + if not cp_number: + return reconcile_note, match + + transfer_accounts = [x for x in self._company_bank_accounts + if cp_number in x] + if transfer_accounts: + # exclude transactions from + # counterparty_number = bank account number of this statement + if cp_number not in get_iban_and_bban( + cba.bank_id.sanitized_acc_number): + transaction['account_id'] = cba.transfer_account.id + match['transfer_account'] = True + + if match or not cba.find_partner: + return reconcile_note, match + + partner_banks = self.env['res.partner.bank'].search( + [('sanitized_acc_number', '=', cp_number)]) + partner_banks = partner_banks.filtered(lambda r: r.partner_id.active) + if partner_banks: + # filter out partners that belong to other companies + # TODO : + # adapt this logic to cope with + # res.partner record rule customisations + partner_banks_2 = [] + for pb in partner_banks: + add_pb = True + pb_partner = pb.partner_id + if not pb_partner.is_company and pb_partner.parent_id: + add_pb = False + try: + if pb_partner.company_id and ( + pb_partner.company_id.id != cba.company_id.id): + add_pb = False + except Exception: + add_pb = False + if add_pb: + partner_banks_2.append(pb) + if len(partner_banks_2) > 1: + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + "\n No partner record assigned: " + "There are multiple partners with the same " + "Bank Account Number '%s'!" + ) % (st_line.statement_id.name, + transaction['ref'], cp_number) + elif len(partner_banks_2) == 1: + partner_bank = partner_banks_2[0] + transaction['bank_account_id'] = partner_bank.id + transaction['partner_id'] = partner_bank.partner_id.id + match['partner_id'] = transaction['partner_id'] + else: + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + "\n The bank account '%s' is " + "not defined for the partner '%s' !" + ) % (st_line.statement_id.name, + transaction['ref'], cp_number, + transaction['partner_name']) + + return reconcile_note, match + + def _unlink_duplicate_partner_banks(self, st_line, cba, transaction, + reconcile_note, partner_banks): + """ + Clean up partner bank duplicates, keep most recently created. + This logic may conflict with factoring. + We recommend to receive factoring payments via a separate bank account + configured without partner bank update. + """ + partner_bank_dups = partner_banks[:-1] + partner = partner_banks[0].partner_id + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + "\n Duplicate Bank Account(s) with account number '%s' " + "for partner '%s' (id:%s) have been removed." + ) % (st_line.statement_id.name, + transaction['ref'], + partner_banks[0].acc_number, + partner.name, + partner.id) + partner_bank_dups.unlink() + return reconcile_note + + def _update_partner_bank(self, st_line, cba, transaction, reconcile_note): + """ add bank account to partner record """ + + cp = transaction['counterparty_number'] + if transaction.get('partner_id') and cp \ + and transaction.get('account_id') != cba.transfer_account.id: + partner_banks = self.env['res.partner.bank'].search( + [('sanitized_acc_number', '=', cp), + ('partner_id', '=', transaction['partner_id'])], + order='id') + if len(partner_banks) > 1: + reconcile_note = self._unlink_duplicate_partner_banks( + st_line, cba, transaction, reconcile_note, partner_banks) + + if not partner_banks: + feedback = self.update_partner_bank( + transaction['counterparty_bic'], + transaction['counterparty_number'], + transaction['partner_id'], transaction['partner_name']) + if feedback: + reconcile_note += _( + "\n Bank Statement '%s' line '%s':" + ) % (st_line.statement_id.name, transaction['ref'] + ) + feedback + + return reconcile_note + + def _prepare_new_aml_dict(self, st_line, cba, transaction): + + new_aml_dict = { + 'account_id': transaction['account_id'], + 'name': transaction['name'], + } + if transaction.get('account_tax_id'): + if transaction['tax_type'] == 'base': + new_aml_dict['tax_ids'] = [transaction['account_tax_id']] + else: + new_aml_dict['tax_line_id'] = transaction['account_tax_id'] + if transaction.get('analytic_account_id'): + new_aml_dict['analytic_account_id'] = \ + transaction['analytic_account_id'] + # the process_reconciliation method takes assumes that the + # input mv_line_dict 'debit'/'credit' contains the amount + # in bank statement line currency and will handle the currency + # conversions + if transaction['amount'] > 0: + new_aml_dict['debit'] = 0.0 + new_aml_dict['credit'] = transaction['amount'] + else: + new_aml_dict['debit'] = -transaction['amount'] + new_aml_dict['credit'] = 0.0 + + return new_aml_dict + + def _prepare_counterpart_aml_dict(self, st_line, cba, transaction): + + aml = self.env['account.move.line'].browse( + transaction['counterpart_aml_id']) + am_name = aml.move_id.name if aml.move_id.name != '/' else '' + aml_name = aml.name + name = ' '.join([am_name, aml_name]) + counterpart_aml_dict = { + 'move_line': aml, + 'name': name, + } + # the process_reconciliation method takes assumes that the + # input mv_line_dict 'debit'/'credit' contains the amount + # in bank statement line currency and will handle the currency + # conversions + if transaction['amount'] > 0: + counterpart_aml_dict['debit'] = 0.0 + counterpart_aml_dict['credit'] = transaction['amount'] + else: + counterpart_aml_dict['debit'] = -transaction['amount'] + counterpart_aml_dict['credit'] = 0.0 + + return counterpart_aml_dict + + def _create_move_and_reconcile(self, st_line, cba, transaction, + reconcile_note): + + counterpart_aml_dicts = payment_aml_rec = new_aml_dicts = None + if transaction.get('counterpart_aml_id'): + counterpart_aml_dict = self._prepare_counterpart_aml_dict( + st_line, cba, transaction) + counterpart_aml_dicts = [counterpart_aml_dict] + if transaction.get('account_id'): + new_aml_dict = self._prepare_new_aml_dict( + st_line, cba, transaction) + new_aml_dicts = [new_aml_dict] + if counterpart_aml_dicts or payment_aml_rec or new_aml_dicts: + err = '\n\n' + _( + "Error while processing statement line " + "with ref '%s':" + ) % transaction['ref'] + try: + with self._cr.savepoint(): + st_line.process_reconciliation( + counterpart_aml_dicts=counterpart_aml_dicts, + payment_aml_rec=payment_aml_rec, + new_aml_dicts=new_aml_dicts) + except (UserError, ValidationError) as e: + name, value = e[:2] + reconcile_note += err + _('\nApplication Error : ') + name + if value: + reconcile_note += ', ' + value + except Exception as e: + reconcile_note += err + _('\nSystem Error : ') + str(e) + return reconcile_note + + @api.multi + def action_open_bank_statements(self): + self.ensure_one() + action = self.env['ir.actions.act_window'].for_xml_id( + 'account', 'action_bank_statement_tree') + domain = eval(action.get('domain') or '[]') + domain += [('coda_id', 'in', self.env.context.get('coda_ids'))] + action.update({'domain': domain}) + return action + + @api.multi + def action_open_coda_files(self): + self.ensure_one() + action = self.env['ir.actions.act_window'].for_xml_id( + 'l10n_be_coda_advanced', 'account_coda_action') + domain = eval(action.get('domain') or '[]') + domain += [('id', 'in', self.env.context.get('coda_ids'))] + action.update({'domain': domain}) + return action + + @api.multi + def button_close(self): + self.ensure_one() + return {'type': 'ir.actions.act_window_close'} + + def _get_st_line_name(self, transaction): + st_line_name = transaction['name'] + + if transaction['trans_family'] == '35' \ + and transaction['trans_code'] in ['01', '37']: + st_line_name = ', '.join( + [_('Closing'), + transaction['trans_code_desc'], + transaction['trans_category_desc']]) + + if transaction['trans_family'] in ['13', '41']: + st_line_name = ', '.join( + [transaction['trans_family_desc'], + transaction['trans_code_desc'], + transaction['trans_category_desc']]) + + if transaction['trans_family'] in ['80']: + st_line_name = ', '.join( + [transaction['trans_code_desc'], + transaction['trans_category_desc']]) + + return st_line_name + + def get_bank(self, bic, iban): + + feedback = False + country_code = iban[:2] + bank = self.env['res.bank'] + country = self.env['res.country'].search( + [('code', '=', country_code)]) + if not country: + feedback = _( + "\n Bank lookup failed due to missing Country " + "definition for Country Code '%s' !" + ) % (country_code) + else: + bank_country = country[0] + if iban[:2] == 'BE': + # To DO : extend for other countries + bank_code = iban[4:7] + if bic: + banks = self.env['res.bank'].search( + [('bic', '=', bic), + ('code', '=', bank_code), + ('country', '=', bank_country.id)]) + if banks: + bank = banks[0] + else: + bank = self.env['res.bank'].create({ + 'name': bic, + 'code': bank_code, + 'bic': bic, + 'country': bank_country.id, + }) + else: + banks = self.env['res.bank'].search( + [('code', '=', bank_code), + ('country', '=', bank_country.id)]) + if banks: + bank = banks[0] + bic = bank.bic + else: + feedback = _( + "\n Bank lookup failed. " + "Please define a Bank with " + "Code '%s' and Country '%s' !" + ) % (bank_code, bank_country.name) + else: + if not bic: + feedback = _( + "\n Bank lookup failed due to missing BIC " + "in Bank Statement for IBAN '%s' !" + ) % (iban) + else: + banks = self.env['res.bank'].search( + [('bic', '=', bic), + ('country', '=', bank_country.id)]) + if not banks: + bank_name = bic + bank = self.env['res.bank'].create({ + 'name': bank_name, + 'bic': bic, + 'country': bank_country.id, + }) + else: + bank = banks[0] + + bank_id = bank and bank.id or False + bank_name = bank and bank.name or False + return bank_id, bic, bank_name, feedback + + def update_partner_bank(self, bic, iban, partner_id, partner_name): + + bank_id = False + feedback = False + if check_iban(iban): + bank_id, bic, bank_name, feedback = self.get_bank(bic, iban) + if not bank_id: + return feedback + else: + # convert belgian BBAN numbers to IBAN + if check_bban('BE', iban): + kk = calc_iban_checksum('BE', iban) + iban = 'BE' + kk + iban + bank_id, bic, bank_name, feedback = self.get_bank(bic, iban) + if not bank_id: + return feedback + + if bank_id: + self.env['res.partner.bank'].create({ + 'partner_id': partner_id, + 'bank_id': bank_id, + 'acc_type': 'iban', + 'acc_number': iban, + }) + return feedback + + def _parse_comm_move(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + method_name = '_parse_comm_move_' + comm_type + if method_name in dir(self): + method_instance = getattr(self, method_name) + st_line_name, st_line_comm = method_instance( + coda_statement, transaction) + else: # To DO : '121', '122', '126' + _logger.warn( + "The parsing of Structured Commmunication Type %s " + "has not yet been implemented. " + "Please contact Noviat (info@noviat.com) for more information" + " about the development roadmap", comm_type) + st_line_name = transaction['name'] + st_line_comm = transaction['communication'] + return st_line_name, st_line_comm + + def _parse_comm_move_100(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = _( + "Payment with ISO 11649 structured format communication") + st_line_comm = '\n' + INDENT + _( + "Payment with a structured format communication " + "applying the ISO standard 11649" + ) + ':' + st_line_comm += INDENT + _( + "Structured creditor reference to remittance information") + st_line_comm += INDENT + comm + return st_line_name, st_line_comm + + def _parse_comm_move_101(self, coda_statement, transaction): + comm = st_line_comm = transaction['communication'] + st_line_name = st_line_comm = \ + '+++' + comm[0:3] + '/' + comm[3:7] + '/' + comm[7:12] + '+++' + return st_line_name, st_line_comm + + def _parse_comm_move_102(self, coda_statement, transaction): + comm = st_line_comm = transaction['communication'] + st_line_name = st_line_comm = \ + '+++' + comm[0:3] + '/' + comm[3:7] + '/' + comm[7:12] + '+++' + return st_line_name, st_line_comm + + def _parse_comm_move_103(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = ', '.join( + [transaction['trans_family_desc'], _('Number')]) + st_line_comm = comm + return st_line_name, st_line_comm + + def _parse_comm_move_105(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = st_line_comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + amount = transaction.get('amount', 0.0) + sign = amount < 0 and -1 or 1 + amount_currency_account = sign * list2float(comm[0:15]) + amount_currency_original = sign * list2float(comm[15:30]) + rate = number2float(comm[30:42], 8) + currency = comm[42:45].strip() + struct_format_comm = comm[45:57].strip() + country_code = comm[57:59].strip() + amount_eur = sign * list2float(comm[59:74]) + st_line_comm = '\n' + INDENT + st_line_name + INDENT + _( + "Gross amount in the currency of the account" + ) + ': %.2f' % amount_currency_account + if amount_currency_original: + st_line_comm += INDENT + _( + "Gross amount in the original currency" + ) + ': %.2f' % amount_currency_original + if rate: + st_line_comm += INDENT + _('Rate') + ': %.4f' % rate + if currency: + st_line_comm += INDENT + _('Currency') + ': %s' % currency + if struct_format_comm: + st_line_comm += INDENT + _('Structured format communication') \ + + ': %s' % struct_format_comm + if country_code: + st_line_comm += INDENT + _('Country code of the principal') \ + + ': %s' % country_code + if amount_eur: + st_line_comm += INDENT + _('Equivalent in EUR') \ + + ': %.2f' % amount_eur + st_line_comm += '\n' + return st_line_name, st_line_comm + + def _parse_comm_move_106(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = _( + "VAT, withholding tax on income, commission, etc.") + st_line_comm = '\n' + INDENT + st_line_name + INDENT + _( + "Equivalent in the currency of the account" + ) + ': %.2f' % list2float(comm[0:15]) + st_line_comm += INDENT + _('Amount on which % is calculated') \ + + ': %.2f' % list2float(comm[15:30]) + st_line_comm += INDENT + _('Percent') \ + + ': %.4f' % number2float(comm[30:42], 8) + st_line_comm += INDENT + ( + comm[42] == 1 and + _('Minimum applicable') or + _('Minimum not applicable') + ) + st_line_comm += INDENT + _('Equivalent in EUR') \ + + ': %.2f' % list2float(comm[43:58]) + return st_line_name, st_line_comm + + def _parse_comm_move_107(self, coda_statement, transaction): + comm = transaction['communication'] + paid_refusals = { + '0': _('paid'), + '1': _('direct debit cancelled or nonexistent'), + '2': _('refusal - other reason'), + 'D': _('payer disagrees'), + 'E': _('direct debit number linked to another ' + 'identification number of the creditor')} + st_line_name = _('Direct debit - DOM\'80') + direct_debit_number = comm[0:12].strip() + pivot_date = str2date(comm[12:18]) + comm_zone = comm[18:48] + paid_refusal = paid_refusals.get(comm[48], '') + creditor_number = comm[49:60].strip() + st_line_comm = '\n' + INDENT + st_line_name + INDENT + _( + 'Direct Debit Number') + ': %s' % direct_debit_number + st_line_comm += INDENT + _('Central (Pivot) Date') \ + + ': %s' % pivot_date + st_line_comm += INDENT + _('Communication Zone') \ + + ': %s' % comm_zone + st_line_comm += INDENT + _('Paid or reason for refusal') \ + + ': %s' % paid_refusal + st_line_comm += INDENT + _("Creditor's Number") \ + + ': %s' % creditor_number + return st_line_name, st_line_comm + + def _parse_comm_move_108(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = _( + 'Closing, period from %s to %s' + ) % (str2date(comm[42:48]), str2date(comm[48:54])) + interest = comm[30:42].strip('0') + st_line_comm = '\n' + INDENT + st_line_name + INDENT + _( + 'Equivalent in the currency of the account' + ) + ': %.2f' % list2float(comm[0:15]) + if interest: + st_line_comm += INDENT + _( + 'Interest rates, calculation basis' + ) + ': %.2f' % list2float(comm[15:30]) + INDENT + _( + 'Interest' + ) + ': %.2f' % list2float(comm[30:42]) + return st_line_name, st_line_comm + + def _parse_comm_move_111(self, coda_statement, transaction): + comm = transaction['communication'] + card_schemes = { + '1': 'Bancontact/Mister Cash', + '2': _('Private'), + '3': 'Maestro', + '5': 'TINA', + '9': _('Other')} + trans_types = { + '1': _('Withdrawal'), + '2': _('Cumulative on network'), + '7': _('Distribution sector'), + '8': _('Teledata'), + '9': _('Fuel')} + st_line_name = _('POS credit - globalisation') + card_scheme = card_schemes.get(comm[0], '') + pos_number = comm[1:7].strip() + period_number = comm[7:10].strip() + first_sequence_number = comm[10:16].strip() + trans_first_date = str2date(comm[16:22]) + last_sequence_number = comm[22:28].strip() + trans_last_date = str2date(comm[28:34]) + trans_type = trans_types.get(comm[34], '') + terminal_name = comm[35:50].strip() + terminal_city = comm[51:60].strip() + st_line_comm = '\n' + INDENT + st_line_name + INDENT \ + + _('Card Scheme') + ': %s' % card_scheme + st_line_comm += INDENT + _('POS Number') + ': %s' % pos_number + st_line_comm += INDENT + _('Period Number') \ + + ': %s' % period_number + st_line_comm += INDENT + _('First Transaction Sequence Number') \ + + ': %s' % first_sequence_number + st_line_comm += INDENT + _('Date of first transaction') \ + + ': %s' % trans_first_date + st_line_comm += INDENT + _('Last Transaction Sequence Number') \ + + ': %s' % last_sequence_number + st_line_comm += INDENT + _('Date of last transaction') \ + + ': %s' % trans_last_date + st_line_comm += INDENT + _('Transaction Type') \ + + ': %s' % trans_type + st_line_comm += INDENT + _('Terminal Identification') + \ + ': %s' % terminal_name + ', ' + terminal_city + return st_line_name, st_line_comm + + def _parse_comm_move_113(self, coda_statement, transaction): + comm = transaction['communication'] + card_schemes = { + '1': 'Bancontact/Mister Cash', + '2': 'Maestro', + '3': _('Private'), + '9': _('Other')} + trans_types = { + '1': _('Withdrawal'), + '2': _('Proton loading'), + '3': _('Reimbursement Proton balance'), + '4': _('Reversal of purchases'), + '7': _('Distribution sector'), + '8': _('Teledata'), + '9': _('Fuel')} + product_codes = { + '01': _('premium with lead substitute'), + '02': _('europremium'), + '03': _('diesel'), + '04': _('LPG'), + '06': _('premium plus 98 oct'), + '07': _('regular unleaded'), + '08': _('domestic fuel oil'), + '09': _('lubricants'), + '10': _('petrol'), + '11': _('premium 99+'), + '12': _('Avgas'), + '16': _('other types'), + } + st_line_name = _('ATM/POS debit') + card_number = comm[0:16].strip() + card_scheme = card_schemes.get(comm[16], '') + terminal_number = comm[17:23].strip() + sequence_number = comm[23:29].strip() + trans_date = comm[29:35].strip() and str2date(comm[29:35]) or '' + trans_hour = comm[35:39].strip() and str2time(comm[35:39]) or '' + trans_type = trans_types.get(comm[39], '') + terminal_name = comm[40:56].strip() + terminal_city = comm[56:66].strip() + orig_amount = comm[66:81].strip() and list2float(comm[66:81]) + rate = number2float(comm[81:93], 8) + currency = comm[93:96] + volume = number2float(comm[96:101], 2) + product_code = product_codes.get(comm[101:103], '') + unit_price = number2float(comm[103:108], 2) + st_line_comm = '\n' + INDENT + st_line_name + INDENT \ + + _('Card Number') + ': %s' % card_number + st_line_comm += INDENT + _('Card Scheme') + ': %s' % card_scheme + if terminal_number: + st_line_comm += INDENT + _('Terminal Number') \ + + ': %s' % terminal_number + st_line_comm += INDENT + _('Transaction Sequence Number') \ + + ': %s' % sequence_number + st_line_comm += INDENT + _('Time') \ + + ': %s' % trans_date + ' ' + trans_hour + st_line_comm += INDENT + _('Transaction Type') \ + + ': %s' % trans_type + st_line_comm += INDENT + _('Terminal Identification') \ + + ': %s' % terminal_name + ', ' + terminal_city + if orig_amount: + st_line_comm += INDENT + _('Original Amount') \ + + ': %.2f' % orig_amount + st_line_comm += INDENT + _('Rate') + ': %.4f' % rate + st_line_comm += INDENT + _('Currency') + ': %s' % currency + if volume: + st_line_comm += INDENT + _('Volume') + ': %.2f' % volume + if product_code: + st_line_comm += INDENT + _('Product Code') \ + + ': %s' % product_code + if unit_price: + st_line_comm += INDENT + _('Unit Price') \ + + ': %.2f' % unit_price + return st_line_name, st_line_comm + + def _parse_comm_move_114(self, coda_statement, transaction): + comm = transaction['communication'] + card_schemes = { + '1': 'Bancontact/Mister Cash', + '2': 'Maestro', + '3': _('Private'), + '5': 'TINA', + '9': _('Other')} + trans_types = { + '1': _('Withdrawal'), + '7': _('Distribution sector'), + '8': _('Teledata'), + '9': _('Fuel')} + st_line_name = _('POS credit - individual transaction') + card_scheme = card_schemes.get(comm[0], '') + pos_number = comm[1:7].strip() + period_number = comm[7:10].strip() + sequence_number = comm[10:16].strip() + trans_date = str2date(comm[16:22]) + trans_hour = str2time(comm[22:26]) + trans_type = trans_types.get(comm[26], '') + terminal_name = comm[27:43].strip() + terminal_city = comm[43:53].strip() + trans_reference = comm[53:69].strip() + st_line_comm = '\n' + INDENT + st_line_name + INDENT \ + + _('Card Scheme') + ': %s' % card_scheme + if pos_number: + st_line_comm += INDENT + _('POS Number') + ': %s' % pos_number + if period_number: + st_line_comm += INDENT + _('Period Number') \ + + ': %s' % period_number + if sequence_number: + st_line_comm += INDENT + _('Transaction Sequence Number') \ + + ': %s' % sequence_number + if trans_date or trans_hour: + st_line_comm += INDENT + _('Time') \ + + ': %s' % trans_date + ' ' + trans_hour + if trans_type: + st_line_comm += INDENT + _('Transaction Type') \ + + ': %s' % trans_type + if terminal_name or terminal_city: + st_line_comm += INDENT + _('Terminal Identification') \ + + ': %s' % terminal_name + ', ' + terminal_city + if trans_reference: + st_line_comm += INDENT + _('Transaction Reference') \ + + ': %s' % trans_reference + return st_line_name, st_line_comm + + def _parse_comm_move_115(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = _('Terminal cash deposit') + card_schemes = { + '2': _('Private'), + '9': _('Other')} + card_number = comm[:16].strip() + card_scheme = card_schemes.get(comm[16], '') + terminal_number = comm[17:23].strip() + sequence_number = comm[23:29].strip() + payment_day = comm[29:35].strip() + payment_hour = comm[35:39].strip() + validation_date = comm[39:45].strip() + validation_sequence_number = comm[45:51].strip() + amount = list2float(comm[51:66]) + conformity_code = comm[66].strip() + terminal_name = comm[67:83].strip() + terminal_city = comm[83:93].strip() + message = comm[93:105].strip() + td = {} + st_line_comm = '\n' + INDENT + st_line_name + if card_number: + td['card_number'] = card_number + st_line_comm += INDENT + _('Card Number') + ': %s' % card_number + if card_scheme: + td['card_scheme'] = card_scheme + st_line_comm += INDENT + _('Card Scheme') + ': %s' % card_scheme + if terminal_number: + td['terminal_number'] = terminal_number + st_line_comm += INDENT + _('Terminal Number') \ + + ': %s' % terminal_number + if sequence_number: + td['sequence_number'] = sequence_number + st_line_comm += INDENT + _('Transaction Sequence Number') \ + + ': %s' % sequence_number + if payment_day or payment_hour: + td['payment_day'] = payment_day + td['payment_hour'] = payment_hour + st_line_comm += INDENT + _('Time') \ + + ': %s' % payment_day + ' ' + payment_hour + if validation_date: + td['validation_date'] = validation_date + st_line_comm += INDENT + _('Validation Date') \ + + ': %s' % validation_date + if validation_sequence_number: + td['validation_sequence_number'] = validation_sequence_number + st_line_comm += INDENT + _('Validation Sequence Number') \ + + ': %s' % validation_sequence_number + td['amount'] = amount + st_line_comm += INDENT + _('Amount (given by the customer)') \ + + ': %.2f' % amount + if conformity_code: + td['conformity_code'] = conformity_code + st_line_comm += INDENT + _('Conformity Code') \ + + ': %s' % conformity_code + if terminal_name or terminal_city: + td['terminal_name'] = terminal_name + td['terminal_city'] = terminal_city + st_line_comm += INDENT + _('Terminal Identification') \ + + ': %s' % terminal_name + ', ' + terminal_city + if message: + td['message'] = message + st_line_comm += INDENT + _('Message') + ': %s' % message + transaction['struct_comm_115'] = td + return st_line_name, st_line_comm + + def _parse_comm_move_123(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = transaction['name'] + starting_date = str2date(comm[0:6]) + maturity_date = comm[6:12] == '999999' \ + and _('guarantee without fixed term') or str2date(comm[0:6]) + basic_amount = list2float(comm[12:27]) + percent = number2float(comm[27:39], 8) + term = comm[39:43].lstrip('0') + minimum = comm[43] == '1' and True or False + guarantee_number = comm[44:57].strip() + st_line_comm = '\n' + INDENT + st_line_name + INDENT \ + + _('Starting Date') + ': %s' % starting_date + st_line_comm += INDENT + _('Maturity Date') \ + + ': %s' % maturity_date + st_line_comm += INDENT + _('Basic Amount') \ + + ': %.2f' % basic_amount + st_line_comm += INDENT + _('Percentage') + ': %.4f' % percent + st_line_comm += INDENT + _('Term in days') + ': %s' % term + st_line_comm += INDENT + ( + minimum and _('Minimum applicable') or + _('Minimum not applicable')) + st_line_comm += INDENT + _( + 'Guarantee Number') + ': %s' % guarantee_number + return st_line_name, st_line_comm + + def _parse_comm_move_124(self, coda_statement, transaction): + comm = transaction['communication'] + card_issuers = { + '1': 'Mastercard', + '2': 'Visa', + '3': 'American Express', + '4': 'Diners Club', + '9': _('Other')} + st_line_name = _('Settlement credit cards') + card_number = comm[0:20].strip() + card_issuer = card_issuers.get(comm[20], '') + invoice_number = comm[21:33].strip() + identification_number = comm[33:48].strip() + date = comm[48:54].strip() and str2date(comm[48:54]) or '' + st_line_comm = '\n' + INDENT + st_line_name + INDENT \ + + _('Card Number') + ': %s' % card_number + st_line_comm += INDENT + _('Issuing Institution') \ + + ': %s' % card_issuer + st_line_comm += INDENT + _('Invoice Number') \ + + ': %s' % invoice_number + st_line_comm += INDENT + _('Identification Number') \ + + ': %s' % identification_number + st_line_comm += INDENT + _('Date') + ': %s' % date + return st_line_name, st_line_comm + + def _parse_comm_move_125(self, coda_statement, transaction): + comm = transaction['communication'] + st_line_name = transaction['name'] + if transaction['trans_family'] not in ST_LINE_NAME_FAMILIES: + st_line_name = _('Credit') + credit_account = comm[0:27].strip() + if check_bban('BE', credit_account): + credit_account = '-'.join( + [credit_account[:3], + credit_account[3:10], + credit_account[10:]]) + old_balance = list2float(comm[27:42]) + new_balance = list2float(comm[42:57]) + amount = list2float(comm[57:72]) + currency = comm[72:75] + start_date = str2date(comm[75:81]) + end_date = str2date(comm[81:87]) + rate = number2float(comm[87:99], 8) + trans_reference = comm[99:112].strip() + st_line_comm = '\n' + INDENT + st_line_name + INDENT \ + + _('Credit Account Number') + ': %s' % credit_account + st_line_comm += INDENT + _('Old Balance') + ': %.2f' % old_balance + st_line_comm += INDENT + _('New Balance') + ': %.2f' % new_balance + st_line_comm += INDENT + _('Amount') + ': %.2f' % amount + st_line_comm += INDENT + _('Currency') + ': %s' % currency + st_line_comm += INDENT + _('Starting Date') + ': %s' % start_date + st_line_comm += INDENT + _('End Date') + ': %s' % end_date + st_line_comm += INDENT + _( + 'Nominal Interest Rate or Rate of Charge') + ': %.4f' % rate + st_line_comm += INDENT + _( + 'Transaction Reference') + ': %s' % trans_reference + return st_line_name, st_line_comm + + def _parse_comm_move_127(self, coda_statement, transaction): + comm = transaction['communication'] + direct_debit_types = { + '0': _('unspecified'), + '1': _('recurrent'), + '2': _('one-off'), + '3': _('1-st (recurrent)'), + '4': _('last (recurrent)')} + direct_debit_schemes = { + '0': _('unspecified'), + '1': _('SEPA core'), + '2': _('SEPA B2B')} + paid_refusals = { + '0': _('paid'), + '1': _('technical problem'), + '2': _('refusal - reason not specified'), + '3': _('debtor disagrees'), + '4': _('debtor\'s account problem')} + R_types = { + '0': _('paid'), + '1': _('reject'), + '2': _('return'), + '3': _('refund'), + '4': _('reversal'), + '5': _('cancellation')} + st_line_name = _('European direct debit (SEPA)') + settlement_date = str2date(comm[0:6]) + direct_debit_type = direct_debit_types.get(comm[6]) + direct_debit_scheme = direct_debit_schemes.get(comm[7]) + paid_refusal = paid_refusals.get(comm[8]) + creditor_id = comm[9:44].strip() + mandate_ref = comm[44:79].strip() + comm_zone = comm[79:141].strip() + R_type = R_types.get(comm[141]) + reason = comm[142:146].strip() + td = {} + st_line_comm = '\n' + INDENT + st_line_name + if settlement_date: + td['settlement_date'] = settlement_date + st_line_comm += INDENT + _('Settlement Date') \ + + ': %s' % settlement_date + if direct_debit_type: + td['direct_debit_type'] = direct_debit_type + st_line_comm += INDENT + _('Direct Debit Type') \ + + ': %s' % direct_debit_type + if direct_debit_scheme: + td['direct_debit_scheme'] = direct_debit_scheme + st_line_comm += INDENT + _('Direct Debit Scheme') \ + + ': %s' % direct_debit_scheme + if paid_refusal: + td['paid_refusal'] = paid_refusal + st_line_comm += INDENT + _('Paid or reason for refusal') \ + + ': %s' % paid_refusal + if creditor_id: + td['creditor_id'] = creditor_id + st_line_comm += INDENT + _('Creditor\'s Identification Code') \ + + ': %s' % creditor_id + if mandate_ref: + td['mandate_ref'] = mandate_ref + st_line_comm += INDENT + _('Mandate Reference') \ + + ': %s' % mandate_ref + if comm_zone: + td['comm_zone'] = comm_zone + st_line_comm += INDENT + _('Communication') + ': %s' % comm_zone + if R_type: + td['R_type'] = R_type + st_line_comm += INDENT + _('R transaction Type') + ': %s' % R_type + if reason: + td['reason'] = reason + st_line_comm += INDENT + _('Reason') + ': %s' % reason + transaction['struct_comm_127'] = td + return st_line_name, st_line_comm + + def _parse_comm_info(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + method_name = '_parse_comm_info_' + comm_type + if method_name in dir(self): + method_instance = getattr(self, method_name) + st_line_name, st_line_comm = method_instance( + coda_statement, transaction) + else: # To DO : 010, 011 + _logger.warn( + "The parsing of Structured Commmunication Type %s " + "has not yet been implemented. " + "Please contact Noviat (info@noviat.com) for " + "more information about the development roadmap", comm_type) + st_line_name = transaction['name'] + st_line_comm = '\n' + INDENT + st_line_name + st_line_comm += '\n' + INDENT + transaction['communication'] + return st_line_name, st_line_comm + + def _parse_comm_info_001(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = INDENT + st_line_name + ':' + val = comm[0:70].strip() + if val: + st_line_comm += INDENT + _('Name') + ': %s' % val + val = comm[70:105].strip() + if val: + st_line_comm += INDENT + _('Street') + ': %s' % val + val = comm[105:140].strip() + if val: + st_line_comm += INDENT + _('Locality') + ': %s' % val + val = comm[140:175].strip() + if val: + st_line_comm += INDENT + _('Identification Code') + ': %s' % val + return st_line_name, st_line_comm + + def _parse_comm_info_002(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = comm.strip() + return st_line_name, st_line_comm + + def _parse_comm_info_004(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = comm.strip() + return st_line_name, st_line_comm + + def _parse_comm_info_005(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = comm.strip() + return st_line_name, st_line_comm + + def _parse_comm_info_006(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + amount_sign = comm[48] + amount = (amount_sign == '1' and '-' or '') \ + + ('%.2f' % list2float(comm[33:48])) + ' ' + comm[30:33] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = INDENT + st_line_name + ':' + st_line_comm += INDENT + _('Description of the detail') \ + + ': %s' % comm[0:30].strip() + st_line_comm += INDENT + _('Amount') \ + + ': %s' % amount + st_line_comm += INDENT + _('Category') \ + + ': %s' % comm[49:52].strip() + return st_line_name, st_line_comm + + def _parse_comm_info_007(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = INDENT + st_line_name + ':' + st_line_comm += INDENT + _('Number of notes/coins') \ + + ': %s' % comm[0:7] + st_line_comm += INDENT + _('Note/coin denomination') \ + + ': %s' % comm[7:13] + st_line_comm += INDENT + _('Total amount') \ + + ': %.2f' % list2float(comm[13:28]) + return st_line_name, st_line_comm + + def _parse_comm_info_008(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = INDENT + st_line_name + ':' + st_line_comm += INDENT + _('Name') + ': %s' % comm[0:70].strip() + st_line_comm += INDENT + _('Identification Code') \ + + ': %s' % comm[70:105].strip() + return st_line_name, st_line_comm + + def _parse_comm_info_009(self, coda_statement, transaction): + comm_type = transaction['struct_comm_type'] + comm = transaction['communication'] + st_line_name = self._comm_types.filtered( + lambda r, t=comm_type: r.code == t).description + st_line_comm = INDENT + st_line_name + ':' + st_line_comm += INDENT + _('Name') + ': %s' % comm[0:70].strip() + st_line_comm += INDENT + _('Identification Code') \ + + ': %s' % comm[70:105].strip() + return st_line_name, st_line_comm diff --git a/l10n_be_coda_advanced/wizard/account_coda_import.xml b/l10n_be_coda_advanced/wizard/account_coda_import.xml new file mode 100644 index 00000000..92699ae8 --- /dev/null +++ b/l10n_be_coda_advanced/wizard/account_coda_import.xml @@ -0,0 +1,85 @@ + + + + + Import CODA File + account.coda.import + 1 + +
+ + + + + + + + + +
+
+
+
+
+ + + Process CODA File + account.coda.import + +
+ + + + + +
+
+
+
+
+ + + Import CODA File + account.coda.import + 2 + +
+ + +
+
+ +
+
+ + + Import CODA File + ir.actions.act_window + account.coda.import + form + form + new + + + + + +
diff --git a/l10n_be_coda_advanced/wizard/coda_helpers.py b/l10n_be_coda_advanced/wizard/coda_helpers.py new file mode 100644 index 00000000..dca5f059 --- /dev/null +++ b/l10n_be_coda_advanced/wizard/coda_helpers.py @@ -0,0 +1,187 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import re +import time + + +def _format_iban(iban_str): + if iban_str: + return re.sub(r'\W+', '', iban_str).upper() + return '' + + +def calc_iban_checksum(country, bban): + bban = bban.replace(' ', '').upper() + country.upper() + '00' + base = '' + for c in bban: + if c.isdigit(): + base += c + else: + base += str(ord(c) - ord('A') + 10) + kk = 98 - int(base) % 97 + return str(kk).rjust(2, '0') + + +def check_bban(country, bban): + if country == 'BE': + try: + int(bban) + except Exception: + return False + if len(bban) != 12: + return False + return True + + +def check_iban(iban): + """ + Check the IBAN number + Logic partially based upon base_iban module, cf. is_iban_valid method + """ + iban = _format_iban(iban).lower() + if iban[:2] not in _map_iban_template: + return False + if len(iban) != len(_format_iban(_map_iban_template[iban[:2]])): + return False + # the four first digits have to be shifted to the end + iban = iban[4:] + iban[:4] + # letters have to be transformed into numbers (a = 10, b = 11, ...) + iban2 = "" + for char in iban: + if char.isalpha(): + iban2 += str(ord(char) - 87) + else: + iban2 += char + # iban is correct if modulo 97 == 1 + return int(iban2) % 97 == 1 + + +def get_iban_and_bban(number): + """ + return IBAN and BBAN numbers + Logic partially based upon base_iban module, cf. get_bban_from_iban method + """ + mapping_list = { + # TODO add rules for others countries + 'be': lambda x: x[4:], + 'fr': lambda x: x[14:], + 'ch': lambda x: x[9:], + 'gb': lambda x: x[14:], + } + + number = number.replace(' ', '') + for code, function in list(mapping_list.items()): + if number.lower().startswith(code): + return [function(number), number] + return [number] + + +def repl_special(s): + s = s.replace("\'", "\'" + "'") + return s + + +def str2date(date_str): + try: + return time.strftime('%Y-%m-%d', time.strptime(date_str, '%d%m%y')) + except Exception: + return False + + +def str2time(time_str): + return time_str[:2] + ':' + time_str[2:] + + +def str2float(str): + try: + return float(str) + except Exception: + return 0.0 + + +def list2float(lst): + try: + return str2float((lambda s: s[:-3] + '.' + s[-3:])(lst)) + except Exception: + return 0.0 + + +def number2float(s, d): + try: + return float(s[:len(s) - d] + '.' + s[len(s) - d:]) + except Exception: + return False + + +# Map ISO 3166-1 -> IBAN template, as described here : +# http://en.wikipedia.org/wiki/International_Bank_Account_Number#IBAN_formats_by_country +_map_iban_template = { + 'ad': 'ADkk BBBB SSSS CCCC CCCC CCCC', # Andorra + 'ae': 'AEkk BBBC CCCC CCCC CCCC CCC', # United Arab Emirates + 'al': 'ALkk BBBS SSSK CCCC CCCC CCCC CCCC', # Albania + 'at': 'ATkk BBBB BCCC CCCC CCCC', # Austria + 'az': 'AZkk BBBB CCCC CCCC CCCC CCCC CCCC', # Azerbaijan + 'ba': 'BAkk BBBS SSCC CCCC CCKK', # Bosnia and Herzegovina + 'be': 'BEkk BBBC CCCC CCXX', # Belgium + 'bg': 'BGkk BBBB SSSS DDCC CCCC CC', # Bulgaria + 'bh': 'BHkk BBBB CCCC CCCC CCCC CC', # Bahrain + 'br': 'BRkk BBBB BBBB SSSS SCCC CCCC CCCT N', # Brazil + 'ch': 'CHkk BBBB BCCC CCCC CCCC C', # Switzerland + 'cr': 'CRkk BBBC CCCC CCCC CCCC C', # Costa Rica + 'cy': 'CYkk BBBS SSSS CCCC CCCC CCCC CCCC', # Cyprus + 'cz': 'CZkk BBBB SSSS SSCC CCCC CCCC', # Czech Republic + 'de': 'DEkk BBBB BBBB CCCC CCCC CC', # Germany + 'dk': 'DKkk BBBB CCCC CCCC CC', # Denmark + 'do': 'DOkk BBBB CCCC CCCC CCCC CCCC CCCC', # Dominican Republic + 'ee': 'EEkk BBSS CCCC CCCC CCCK', # Estonia + 'es': 'ESkk BBBB SSSS KKCC CCCC CCCC', # Spain + 'fi': 'FIkk BBBB BBCC CCCC CK', # Finland + 'fo': 'FOkk CCCC CCCC CCCC CC', # Faroe Islands + 'fr': 'FRkk BBBB BGGG GGCC CCCC CCCC CKK', # France + 'gb': 'GBkk BBBB SSSS SSCC CCCC CC', # United Kingdom + 'ge': 'GEkk BBCC CCCC CCCC CCCC CC', # Georgia + 'gi': 'GIkk BBBB CCCC CCCC CCCC CCC', # Gibraltar + 'gl': 'GLkk BBBB CCCC CCCC CC', # Greenland + 'gr': 'GRkk BBBS SSSC CCCC CCCC CCCC CCC', # Greece + 'gt': 'GTkk BBBB MMTT CCCC CCCC CCCC CCCC', # Guatemala + 'hr': 'HRkk BBBB BBBC CCCC CCCC C', # Croatia + 'hu': 'HUkk BBBS SSSC CCCC CCCC CCCC CCCC', # Hungary + 'ie': 'IEkk BBBB SSSS SSCC CCCC CC', # Ireland + 'il': 'ILkk BBBS SSCC CCCC CCCC CCC', # Israel + 'is': 'ISkk BBBB SSCC CCCC XXXX XXXX XX', # Iceland + 'it': 'ITkk KBBB BBSS SSSC CCCC CCCC CCC', # Italy + 'jo': 'JOkk BBBB NNNN CCCC CCCC CCCC CCCC CC', # Jordan + 'kw': 'KWkk BBBB CCCC CCCC CCCC CCCC CCCC CC', # Kuwait + 'kz': 'KZkk BBBC CCCC CCCC CCCC', # Kazakhstan + 'lb': 'LBkk BBBB CCCC CCCC CCCC CCCC CCCC', # Lebanon + 'li': 'LIkk BBBB BCCC CCCC CCCC C', # Liechtenstein + 'lt': 'LTkk BBBB BCCC CCCC CCCC', # Lithuania + 'lu': 'LUkk BBBC CCCC CCCC CCCC', # Luxembourg + 'lv': 'LVkk BBBB CCCC CCCC CCCC C', # Latvia + 'mc': 'MCkk BBBB BGGG GGCC CCCC CCCC CKK', # Monaco + 'md': 'MDkk BBCC CCCC CCCC CCCC CCCC', # Moldova + 'me': 'MEkk BBBC CCCC CCCC CCCC KK', # Montenegro + 'mk': 'MKkk BBBC CCCC CCCC CKK', # Macedonia + 'mr': 'MRkk BBBB BSSS SSCC CCCC CCCC CKK', # Mauritania + 'mt': 'MTkk BBBB SSSS SCCC CCCC CCCC CCCC CCC', # Malta + 'mu': 'MUkk BBBB BBSS CCCC CCCC CCCC CCCC CC', # Mauritius + 'nl': 'NLkk BBBB CCCC CCCC CC', # Netherlands + 'no': 'NOkk BBBB CCCC CCK', # Norway + 'pk': 'PKkk BBBB CCCC CCCC CCCC CCCC', # Pakistan + 'pl': 'PLkk BBBS SSSK CCCC CCCC CCCC CCCC', # Poland + 'ps': 'PSkk BBBB XXXX XXXX XCCC CCCC CCCC C', # Palestinian + 'pt': 'PTkk BBBB SSSS CCCC CCCC CCCK K', # Portugal + 'qa': 'QAkk BBBB CCCC CCCC CCCC CCCC CCCC C', # Qatar + 'ro': 'ROkk BBBB CCCC CCCC CCCC CCCC', # Romania + 'rs': 'RSkk BBBC CCCC CCCC CCCC KK', # Serbia + 'sa': 'SAkk BBCC CCCC CCCC CCCC CCCC', # Saudi Arabia + 'se': 'SEkk BBBB CCCC CCCC CCCC CCCC', # Sweden + 'si': 'SIkk BBSS SCCC CCCC CKK', # Slovenia + 'sk': 'SKkk BBBB SSSS SSCC CCCC CCCC', # Slovakia + 'sm': 'SMkk KBBB BBSS SSSC CCCC CCCC CCC', # San Marino + 'tn': 'TNkk BBSS SCCC CCCC CCCC CCCC', # Tunisia + 'tr': 'TRkk BBBB BRCC CCCC CCCC CCCC CC', # Turkey + 'vg': 'VGkk BBBB CCCC CCCC CCCC CCCC', # Virgin Islands + 'xk': 'XKkk BBBB CCCC CCCC CCCC', # Kosovo +} diff --git a/l10n_be_coda_batch/README.rst b/l10n_be_coda_batch/README.rst new file mode 100644 index 00000000..d2744a23 --- /dev/null +++ b/l10n_be_coda_batch/README.rst @@ -0,0 +1,19 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +===================================================== +Module to enable batch import of CODA bank statements +===================================================== + +This module allows batch processing of CODA files. +The CODA files must be stored in a directory of the Odoo Server before the batch import. + +A Log is created during the import in order to document import errors. +If errors have been detected, the Batch Import Log state is set to 'error'. +When all CODA Files have been imported correctly, the Batch Import Log state is set to 'done'. + +The user can always redo the batch import until all errors have been cleared. + +As an alternative, the user can force the Batch Import Log state to 'done' +(e.g. when the errors have been circumvented via single CODA file import or manual encoding). diff --git a/l10n_be_coda_batch/__init__.py b/l10n_be_coda_batch/__init__.py new file mode 100644 index 00000000..9b429614 --- /dev/null +++ b/l10n_be_coda_batch/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/l10n_be_coda_batch/__manifest__.py b/l10n_be_coda_batch/__manifest__.py new file mode 100644 index 00000000..24968683 --- /dev/null +++ b/l10n_be_coda_batch/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Belgium - CODA statements batch import', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'website': 'http://www.noviat.com', + 'category': 'Accounting & Finance', + 'summary': 'CODA statements batch import', + 'depends': ['l10n_be_coda_advanced'], + 'data': [ + 'security/ir.model.access.csv', + 'views/account_coda_batch_log.xml', + 'views/res_company.xml', + 'wizard/account_coda_batch_import.xml' + ], + 'installable': True, +} diff --git a/l10n_be_coda_batch/i18n/fr.po b/l10n_be_coda_batch/i18n/fr.po new file mode 100644 index 00000000..1ce5a34c --- /dev/null +++ b/l10n_be_coda_batch/i18n/fr.po @@ -0,0 +1,46 @@ +# French translation of Odoo 8.0. +# This file contains the translation of the following modules: +# * l10n_be_coda_batch +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo 8.0\n" +"Report-Msgid-Bugs-To: support@noviat.com\n" +"POT-Creation-Date: 2015-06-15 23:23:19.413000\n" +"PO-Revision-Date: 2015-06-15 23:23:19.413000\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: l10n_be_coda_batch +#: view:account.coda.batch.log:0 +msgid "Cancel" +msgstr "Annuler" + +#. module: l10n_be_coda_batch +#: view:account.coda.batch.log:0 +msgid "Restart Import" +msgstr "Réimport" + +#. module: l10n_be_coda_batch +#: view:account.coda.batch.log:0 +msgid "Mark Done" +msgstr "Effectué" + +#. module: l10n_be_coda_batch +#: selection:account.coda.batch.log,state:0 +msgid "Draft" +msgstr "Brouillon" + +#. module: l10n_be_coda_batch +#: selection:account.coda.batch.log,state:0 +msgid "Done" +msgstr "Effectué" + +#. module: l10n_be_coda_batch +#: selection:account.coda.batch.log,state:0 +msgid "Error" +msgstr "Erreur" + diff --git a/l10n_be_coda_batch/i18n/nl.po b/l10n_be_coda_batch/i18n/nl.po new file mode 100644 index 00000000..27356565 --- /dev/null +++ b/l10n_be_coda_batch/i18n/nl.po @@ -0,0 +1,46 @@ +# Dutch translation of Odoo 8.0. +# This file contains the translation of the following modules: +# * l10n_be_coda_batch +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo 8.0\n" +"Report-Msgid-Bugs-To: support@noviat.com\n" +"POT-Creation-Date: 2015-06-15 23:23:19.397000\n" +"PO-Revision-Date: 2015-06-15 23:23:19.397000\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: l10n_be_coda_batch +#: view:account.coda.batch.log:0 +msgid "Cancel" +msgstr "Annuleer" + +#. module: l10n_be_coda_batch +#: view:account.coda.batch.log:0 +msgid "Restart Import" +msgstr "Herstart import" + +#. module: l10n_be_coda_batch +#: view:account.coda.batch.log:0 +msgid "Mark Done" +msgstr "Verwerkt" + +#. module: l10n_be_coda_batch +#: selection:account.coda.batch.log,state:0 +msgid "Draft" +msgstr "Concept" + +#. module: l10n_be_coda_batch +#: selection:account.coda.batch.log,state:0 +msgid "Done" +msgstr "Verwerkt" + +#. module: l10n_be_coda_batch +#: selection:account.coda.batch.log,state:0 +msgid "Error" +msgstr "Fout" + diff --git a/l10n_be_coda_batch/models/__init__.py b/l10n_be_coda_batch/models/__init__.py new file mode 100644 index 00000000..2d246dcc --- /dev/null +++ b/l10n_be_coda_batch/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_coda_batch_log +from . import res_company diff --git a/l10n_be_coda_batch/models/account_coda_batch_log.py b/l10n_be_coda_batch/models/account_coda_batch_log.py new file mode 100644 index 00000000..7a71135f --- /dev/null +++ b/l10n_be_coda_batch/models/account_coda_batch_log.py @@ -0,0 +1,97 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class AccountCodaBatchLog(models.Model): + _name = 'account.coda.batch.log' + _description = 'Object to store CODA Batch Import Logs' + _order = 'name desc' + + name = fields.Char(string='Name', required=True) + directory = fields.Char( + string='CODA Batch Import Folder', + required=True, readonly=True, + help='Folder containing the CODA Files for the batch import.') + log_ids = fields.One2many( + 'coda.batch.log.item', 'batch_id', + string='Batch Import Log Items', readonly=True) + state = fields.Selection([ + ('draft', 'Draft'), + ('error', 'Error'), + ('done', 'Done')], + string='State', required=True, readonly=True, default='draft') + date = fields.Date( + string='Log Creation Date', readonly=True, + default=fields.Date.today()) + user_id = fields.Many2one( + 'res.users', string='User', readonly=True, + default=lambda self: self.env.user) + reconcile = fields.Boolean( + help="Launch Automatic Reconcile after CODA import.", default=True) + company_id = fields.Many2one( + 'res.company', string='Company', readonly=True, + default=lambda self: self.env.user.company_id) + + _sql_constraints = [ + ('dir_uniq', 'unique (directory)', + 'This folder has already been processed !') + ] + + @api.multi + def unlink(self): + for log in self: + if log.state != 'draft': + raise UserError( + _("Only log objects in state 'draft' can be deleted !")) + return super().unlink() + + @api.multi + def button_cancel(self): + self.state = 'draft' + + @api.multi + def button_done(self): + self.state = 'done' + + @api.multi + def button_import(self): + self.ensure_one() + ctx = self._context.copy() + ctx.update({ + 'active_model': 'account.coda.batch.log', + 'active_id': self.id, + 'coda_batch_restart': True, + 'automatic_reconcile': self.reconcile, + }) + self.env['account.coda.batch.import'].with_context( + ctx).coda_batch_import() + + +class CodaBatchLogItem(models.Model): + _name = 'coda.batch.log.item' + _description = 'Object to store CODA Batch Import Log Items' + _order = 'date desc' + _rec_name = 'batch_id' + + batch_id = fields.Many2one( + 'account.coda.batch.log', string='Import Object', + ondelete='cascade', readonly=True) + date = fields.Datetime( + string='Log Creation Time', readonly=True) + state = fields.Selection([ + ('draft', 'Draft'), + ('error', 'Error'), + ('done', 'Done')], + string='State', required=True, readonly=True) + note = fields.Text( + string='Batch Import Log', readonly=True) + file_count = fields.Integer( + string='Number of Files', required=True, default=0) + error_count = fields.Integer( + string='Number of Errors', required=True, default=0) + user_id = fields.Many2one( + 'res.users', string='User', readonly=True, + default=lambda self: self.env.user) diff --git a/l10n_be_coda_batch/models/res_company.py b/l10n_be_coda_batch/models/res_company.py new file mode 100644 index 00000000..31ce53af --- /dev/null +++ b/l10n_be_coda_batch/models/res_company.py @@ -0,0 +1,17 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ResCompany(models.Model): + _inherit = 'res.company' + + coda_batch_root = fields.Char( + string='CODA Batch Root', + default=lambda self: self._default_batch_root(), + help="Root Directory for CODA Batch Folders.") + + @api.model + def _default_batch_root(self): + return '/'.join(['/home/odoo/coda_batch_root', self.env.cr.dbname]) diff --git a/l10n_be_coda_batch/security/ir.model.access.csv b/l10n_be_coda_batch/security/ir.model.access.csv new file mode 100644 index 00000000..6f354af5 --- /dev/null +++ b/l10n_be_coda_batch/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_coda_batch_log_manager,account.coda.batch.log manager,model_account_coda_batch_log,account.group_account_manager,1,1,1,1 +access_account_coda_batch_log_user,account.coda.batch.log user,model_account_coda_batch_log,account.group_account_user,1,0,0,0 +access_coda_batch_log_item_manager,coda.batch.log..item manager,model_coda_batch_log_item,account.group_account_manager,1,1,1,1 +access_account_coda_batch_log_item_user,coda.batch.log.item user,model_coda_batch_log_item,account.group_account_user,1,0,0,0 diff --git a/l10n_be_coda_batch/static/description/icon.png b/l10n_be_coda_batch/static/description/icon.png new file mode 100644 index 00000000..889d1294 Binary files /dev/null and b/l10n_be_coda_batch/static/description/icon.png differ diff --git a/l10n_be_coda_batch/views/account_coda_batch_log.xml b/l10n_be_coda_batch/views/account_coda_batch_log.xml new file mode 100644 index 00000000..818a0ad4 --- /dev/null +++ b/l10n_be_coda_batch/views/account_coda_batch_log.xml @@ -0,0 +1,106 @@ + + + + + account.coda.batch.log.search + account.coda.batch.log + + + + + + + + + + + + + + + + + + + + + account.coda.batch.log.tree + account.coda.batch.log + + + + + + + + + + + + + + account.coda.batch.log.form + account.coda.batch.log + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + CODA Batch Import Logs + ir.actions.act_window + account.coda.batch.log + form + tree,form + + + + + + +
diff --git a/l10n_be_coda_batch/views/res_company.xml b/l10n_be_coda_batch/views/res_company.xml new file mode 100644 index 00000000..c258d8e6 --- /dev/null +++ b/l10n_be_coda_batch/views/res_company.xml @@ -0,0 +1,16 @@ + + + + + res.company.form.coda_batch + + res.company + + + + + + + + + diff --git a/l10n_be_coda_batch/wizard/__init__.py b/l10n_be_coda_batch/wizard/__init__.py new file mode 100644 index 00000000..0a1353bc --- /dev/null +++ b/l10n_be_coda_batch/wizard/__init__.py @@ -0,0 +1 @@ +from . import account_coda_batch_import diff --git a/l10n_be_coda_batch/wizard/account_coda_batch_import.py b/l10n_be_coda_batch/wizard/account_coda_batch_import.py new file mode 100644 index 00000000..f10964d3 --- /dev/null +++ b/l10n_be_coda_batch/wizard/account_coda_batch_import.py @@ -0,0 +1,276 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging +import os +import time +from sys import exc_info +from traceback import format_exception + +from odoo import api, fields, models, _ +from openerp.exceptions import UserError + +_logger = logging.getLogger(__name__) + + +class AccountCodaBatchImport(models.TransientModel): + _name = 'account.coda.batch.import' + _description = 'CODA Batch Import' + + todo_id = fields.Many2one( + comodel_name='account.coda.batch.import.todo', + string='CODA Batch Import Folder', + default=lambda self: self._default_todo_id(), + help='Folder containing the CODA Files for the batch import.') + note = fields.Text(string='Batch Import Log', readonly=True) + reconcile = fields.Boolean( + help="Launch Automatic Reconcile after CODA import.", default=True) + + @api.model + def _default_todo_id(self): + todo_model = self.env['account.coda.batch.import.todo'] + todos = todo_model.search([]) + return len(todos) == 1 and todos or todo_model + + @api.model + def view_init(self, fields_list): + company = self.env.user.company_id + coda_batch_root = company.coda_batch_root + if not coda_batch_root: + raise UserError( + _("Configuration Error!" + "\nNo Root Directory configured for CODA Batch Folders !")) + path = os.path.normpath(coda_batch_root) + if not os.path.exists(path): + raise UserError( + _("Configuration Error!" + "\nPath %s does not exist.") + % path) + + todos = self._create_todos() + if not todos: + raise UserError(_("No unprocessed Batch Import Folders found !")) + + @api.model + def _create_todos(self): + company = self.env.user.company_id + coda_batch_root = company.coda_batch_root + path = os.path.normpath(coda_batch_root) + folder_start = len(path) + + batch_logs = self.env['account.coda.batch.log'].search( + [('company_id', '=', company.id)]) + processed = batch_logs.mapped('directory') + + todo_model = self.env['account.coda.batch.import.todo'] + todos = todo_model + old_todos = todo_model.search([]) + for root, folders, files in os.walk(path, followlinks=False): + if files: + folder = root[folder_start + 1:] + if folder not in processed: + old_todo = old_todos.filtered(lambda r: r.name == folder) + if old_todo: + todos += old_todo + else: + todos += todo_model.create({'name': folder}) + (old_todos - todos).unlink() + return todos + + @api.multi + def coda_batch_import(self): + ctx = self.env.context.copy() + restart = ctx.get('coda_batch_restart') + batch_obj = self.env['account.coda.batch.log'] + log_obj = self.env['coda.batch.log.item'] + coda_import_wiz = self.env['account.coda.import'] + + note = False + if restart: + if ctx.get('active_model') == 'account.coda.batch.log': + coda_batch = batch_obj.browse(ctx.get('active_id')) + directory = coda_batch.directory + else: + raise UserError( + _("Programming Error")) + else: + directory = self.todo_id.name + + company = self.env.user.company_id + coda_batch_root = company.coda_batch_root + path = os.path.normpath(coda_batch_root + '/' + directory) + files = os.listdir(path) + log_date = time.strftime('%Y-%m-%d %H:%M:%S') + log_header = _('>>> Import by %s. Results:') % self.env.user.name + log_footer = _('\n\nNumber of files : %s\n\n') % str(len(files)) + self._log_note = '' + self._nb_err = 0 + self._err_log = '' + + if not restart: + coda_batch = batch_obj.create( + {'name': directory.split('/')[-1], + 'directory': directory}) + self.env.cr.commit() + ctx.update({'batch_id': coda_batch.id}) + coda_files = self._sort_files(path, files) + + # process CODA files + for coda_file in coda_files: + time_start = time.time() + try: + statements = coda_import_wiz._coda_parsing( + codafile=coda_file[1], codafilename=coda_file[2], + batch=True) + if self.reconcile or self.env.context.get( + 'automatic_reconcile'): + reconcile_note = '' + for statement in statements: + reconcile_note = coda_import_wiz._automatic_reconcile( + statement, reconcile_note=reconcile_note) + if reconcile_note: + self._log_note += reconcile_note + self._log_note += _( + "\n\nCODA File '%s' has been imported.\n" + ) % coda_file[2] + except UserError as e: + self._nb_err += 1 + self._err_log += _( + "\n\nError while processing CODA File '%s' :\n%s" + ) % (coda_file[2], ''.join(e.args)) + except Exception: + self._nb_err += 1 + tb = ''.join(format_exception(*exc_info())) + self._err_log += _( + "\n\nError while processing CODA File '%s' :\n%s" + ) % (coda_file[2], tb) + file_import_time = time.time() - time_start + _logger.warn( + 'File %s processing time = %.3f seconds', + coda_file[2], file_import_time) + + if self._nb_err: + log_state = 'error' + else: + log_state = 'done' + + if self._err_log or self._log_note: + note = self._err_log + self._log_note + + log_obj.create({ + 'batch_id': coda_batch.id, + 'date': log_date, + 'state': log_state, + 'note': note, + 'file_count': len(files), + 'error_count': self._nb_err, + }) + coda_batch.state = log_state + + if restart: + return True + else: + module = __name__.split('addons.')[1].split('.')[0] + result_view = self.env.ref( + '%s.account_coda_batch_import_view_form_result' % module) + + note = note or "" + self.note = log_header + '\n' + note + log_footer + return { + 'name': _('CODA Batch Import result'), + 'res_id': self.id, + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'account.coda.batch.import', + 'view_id': result_view.id, + 'target': 'new', + 'context': ctx, + 'type': 'ir.actions.act_window', + } + + @api.multi + def action_open_log(self): + self.ensure_one + return { + 'name': _('CODA Batch Import Log'), + 'res_id': self._context.get('batch_id'), + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'account.coda.batch.log', + 'view_id': False, + 'type': 'ir.actions.act_window', + } + + def _msg_duplicate(self, filename): + self._nb_err += 1 + self._err_log += _( + "\n\nError while processing CODA File '%s' :" + ) % (filename) + self._err_log += _( + "\nThis CODA File is marked by your bank as a 'Duplicate' !" + ) + self._err_log += _( + '\nPlease treat this CODA File manually !') + + def _msg_exception(self, filename): + self._nb_err += 1 + self._err_log += _( + "\n\nError while processing CODA File '%s' :") % (filename) + self._err_log += _('\nInvalid Header Record !') + + def _msg_noheader(self, filename): + self._nb_err += 1 + self._err_log += _( + "\n\nError while processing CODA File '%s' :") % (filename) + self._err_log += _("\nMissing Header Record !") + + def _sort_files(self, path, files): + """ + Sort CODA files on creation date + """ + coda_files = [] + for filename in files: + coda_creation_date = False + with open(path + '/' + filename, 'rb') as codafile: + data = codafile.read() + recordlist = str( + data, 'windows-1252', 'strict').split('\n') + if not recordlist: + self._nb_err += 1 + self._err_log += _( + "\n\nError while processing CODA File '%s' :" + ) % (filename) + self._err_log += _("\nEmpty File !") + else: + for line in recordlist: + if not line: + pass + elif line[0] == '0': + try: + coda_creation_date = str2date(line[5:11]) + if line[16] == 'D': + self._msg_duplicate(filename) + else: + coda_files += [ + (coda_creation_date, + data, + filename)] + except Exception: + self._msg_exception(filename) + break + else: + self._msg_noheader(filename) + break + coda_files.sort() + return coda_files + + +class AccountCodaBatchImportTodo(models.TransientModel): + _name = 'account.coda.batch.import.todo' + _description = 'Unprocessed CODA Batch Import Directories' + + name = fields.Char(string='Unprocessed directory') + + +def str2date(date_str): + return time.strftime('%Y-%m-%d', time.strptime(date_str, '%d%m%y')) diff --git a/l10n_be_coda_batch/wizard/account_coda_batch_import.xml b/l10n_be_coda_batch/wizard/account_coda_batch_import.xml new file mode 100644 index 00000000..f906d53a --- /dev/null +++ b/l10n_be_coda_batch/wizard/account_coda_batch_import.xml @@ -0,0 +1,74 @@ + + + + + CODA Batch Import + account.coda.batch.import + 1 + +
+ + + + + + + + +
+
+
+
+
+ + + CODA Batch Import + account.coda.batch.import + 2 + +
+
+
+ + +
+
+ +
+
+ + + CODA Batch Import + ir.actions.act_window + account.coda.batch.import + form + form + new + + + + + + + +
diff --git a/l10n_be_coda_pain/README.rst b/l10n_be_coda_pain/README.rst new file mode 100644 index 00000000..050f26ad --- /dev/null +++ b/l10n_be_coda_pain/README.rst @@ -0,0 +1,22 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +============================================== +CODA Import - ISO 20022 Payment Order Matching +============================================== + +This Module adds logic to match CODA transactions with ISO 20022 Payment Order transactions. + +Installation +============ + +There is nothing specific to do to install this module, + +Known issues / Roadmap +====================== + +The current version of this module doesn't have matching logic for ISO 20022 Direct Debit Orders. + +The matching logic for ISO 20022 Credit Transfers is currently limited to Payment Modes without +Transfer Accounts and non-grouped payments (hence direct reconcile with supplier invoice or customer credit note). diff --git a/l10n_be_coda_pain/__init__.py b/l10n_be_coda_pain/__init__.py new file mode 100644 index 00000000..9b429614 --- /dev/null +++ b/l10n_be_coda_pain/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/l10n_be_coda_pain/__manifest__.py b/l10n_be_coda_pain/__manifest__.py new file mode 100644 index 00000000..a61692e8 --- /dev/null +++ b/l10n_be_coda_pain/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2009-2018 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'CODA Import - ISO 20022 Payment Order Matching', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'website': 'http://www.noviat.com', + 'category': 'Accounting & Finance', + 'complexity': 'normal', + 'summary': 'CODA Import - ISO 20022 Payment Order Matching', + 'depends': [ + 'l10n_be_coda_advanced', + 'account_banking_sepa_credit_transfer', + ], + 'data': [ + 'views/coda_bank_account.xml', + ], + 'installable': True, +} diff --git a/l10n_be_coda_pain/models/__init__.py b/l10n_be_coda_pain/models/__init__.py new file mode 100644 index 00000000..a0868a67 --- /dev/null +++ b/l10n_be_coda_pain/models/__init__.py @@ -0,0 +1 @@ +from . import coda_bank_account diff --git a/l10n_be_coda_pain/models/coda_bank_account.py b/l10n_be_coda_pain/models/coda_bank_account.py new file mode 100644 index 00000000..6280eb1e --- /dev/null +++ b/l10n_be_coda_pain/models/coda_bank_account.py @@ -0,0 +1,15 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class CodaBankAccount(models.Model): + _inherit = 'coda.bank.account' + + find_payment = fields.Boolean( + string='Lookup Payment Reference', default=True, + help="Invoice lookup and reconciliation via " + "the SEPA EndToEndReference." + "\nInstall the 'account_pain' module if you want " + "to take advantage of this feature.") diff --git a/l10n_be_coda_pain/static/description/icon.png b/l10n_be_coda_pain/static/description/icon.png new file mode 100644 index 00000000..889d1294 Binary files /dev/null and b/l10n_be_coda_pain/static/description/icon.png differ diff --git a/l10n_be_coda_pain/views/coda_bank_account.xml b/l10n_be_coda_pain/views/coda_bank_account.xml new file mode 100644 index 00000000..eb5bc797 --- /dev/null +++ b/l10n_be_coda_pain/views/coda_bank_account.xml @@ -0,0 +1,15 @@ + + + + + coda.bank.account.form + coda.bank.account + + + + + + + + + diff --git a/l10n_be_coda_pain/wizard/__init__.py b/l10n_be_coda_pain/wizard/__init__.py new file mode 100644 index 00000000..2b91fdff --- /dev/null +++ b/l10n_be_coda_pain/wizard/__init__.py @@ -0,0 +1 @@ +from . import account_coda_import diff --git a/l10n_be_coda_pain/wizard/account_coda_import.py b/l10n_be_coda_pain/wizard/account_coda_import.py new file mode 100644 index 00000000..457867e4 --- /dev/null +++ b/l10n_be_coda_pain/wizard/account_coda_import.py @@ -0,0 +1,44 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, _ +from odoo.exceptions import UserError + + +class AccountCodaImport(models.TransientModel): + _inherit = 'account.coda.import' + + def _match_payment_reference(self, st_line, cba, transaction, + reconcile_note): + """ + check payment reference in bank statement line + against payment order lines + TODO: + Extend logic to support Transfer Accounts and grouped transactions. + """ + payment_reference = transaction['payment_reference'] + match = {} + + if payment_reference and cba.find_payment \ + and transaction['amount'] < 0: + bankpaylines = self.env['bank.payment.line'].search( + [('name', '=', payment_reference)]) + if bankpaylines: + if len(bankpaylines) == 1: + match['bank_payment_line_id'] = bankpaylines.id + transaction['bank_payment_line_id'] = bankpaylines.id + transaction['partner_id'] = bankpaylines.partner_id.id + paylines = bankpaylines.payment_line_ids + if len(paylines) == 1 and paylines.move_line_id: + transaction['reconcile_id'] = paylines.move_line_id.id + else: + err_string = _( + "\nThe CODA parsing detected a " + "payment reference ambiguity while processing " + "movement data record 2.3, ref %s!" + "\nPlease check your Payment Gateway configuration " + "or contact your Odoo support channel." + ) % transaction['ref'] + raise UserError(_('Error!'), err_string) + + return reconcile_note, match diff --git a/l10n_be_coda_sale/README.rst b/l10n_be_coda_sale/README.rst new file mode 100644 index 00000000..318ca902 --- /dev/null +++ b/l10n_be_coda_sale/README.rst @@ -0,0 +1,19 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +================================= +CODA Import - Sale Order Matching +================================= + +This Module adds logic to match CODA transactions with the originating Sale Order. + +Installation +============ + +There is nothing specific to do to install this module, + +Known issues / Roadmap +====================== + +None. diff --git a/l10n_be_coda_sale/__init__.py b/l10n_be_coda_sale/__init__.py new file mode 100644 index 00000000..9b429614 --- /dev/null +++ b/l10n_be_coda_sale/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/l10n_be_coda_sale/__manifest__.py b/l10n_be_coda_sale/__manifest__.py new file mode 100644 index 00000000..7ca613da --- /dev/null +++ b/l10n_be_coda_sale/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'CODA Import - Sale Order Matching', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'category': 'Accounting & Finance', + 'complexity': 'normal', + 'summary': 'CODA Import - Sale Order Matching', + 'website': 'http://www.noviat.com', + 'depends': [ + 'l10n_be_coda_advanced', + 'sale', + ], + 'data': [ + 'views/coda_bank_account.xml', + ], + 'installable': True, +} diff --git a/l10n_be_coda_sale/models/__init__.py b/l10n_be_coda_sale/models/__init__.py new file mode 100644 index 00000000..a0868a67 --- /dev/null +++ b/l10n_be_coda_sale/models/__init__.py @@ -0,0 +1 @@ +from . import coda_bank_account diff --git a/l10n_be_coda_sale/models/coda_bank_account.py b/l10n_be_coda_sale/models/coda_bank_account.py new file mode 100644 index 00000000..2311ea53 --- /dev/null +++ b/l10n_be_coda_sale/models/coda_bank_account.py @@ -0,0 +1,15 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields + + +class CodaBankAccount(models.Model): + _inherit = 'coda.bank.account' + + find_so_number = fields.Boolean( + string='Lookup Sales Order Number', default=True, + help="Partner lookup and reconciliation via the Sales Order " + "when a communication in free format is used." + "\nA reconciliation will only be created in case of exact match " + "between the Sales Order Invoice and Bank Transaction amounts.") diff --git a/l10n_be_coda_sale/static/description/icon.png b/l10n_be_coda_sale/static/description/icon.png new file mode 100644 index 00000000..889d1294 Binary files /dev/null and b/l10n_be_coda_sale/static/description/icon.png differ diff --git a/l10n_be_coda_sale/views/coda_bank_account.xml b/l10n_be_coda_sale/views/coda_bank_account.xml new file mode 100644 index 00000000..b7e31299 --- /dev/null +++ b/l10n_be_coda_sale/views/coda_bank_account.xml @@ -0,0 +1,15 @@ + + + + + coda.bank.account.form + coda.bank.account + + + + + + + + + diff --git a/l10n_be_coda_sale/wizard/__init__.py b/l10n_be_coda_sale/wizard/__init__.py new file mode 100644 index 00000000..2b91fdff --- /dev/null +++ b/l10n_be_coda_sale/wizard/__init__.py @@ -0,0 +1 @@ +from . import account_coda_import diff --git a/l10n_be_coda_sale/wizard/account_coda_import.py b/l10n_be_coda_sale/wizard/account_coda_import.py new file mode 100644 index 00000000..36530026 --- /dev/null +++ b/l10n_be_coda_sale/wizard/account_coda_import.py @@ -0,0 +1,72 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class AccountCodaImport(models.TransientModel): + _inherit = 'account.coda.import' + + def _get_sale_order(self, st_line, cba, transaction, reconcile_note): + """ + check matching Sales Order number in free form communication + """ + free_comm = repl_special(transaction['communication'].strip()) + select = ( + "SELECT id FROM (SELECT id, name, '%s'::text AS free_comm, " + "regexp_replace(name, '[0]{3,10}', '0%%0') AS name_match " + "FROM sale_order WHERE state not in ('cancel', 'done') " + "AND company_id = %s) sq " + "WHERE free_comm ILIKE '%%'||name_match||'%%'" + ) % (free_comm, cba.company_id.id) + self.env.cr.execute(select) + res = self.env.cr.fetchall() + return reconcile_note, res + + def _match_sale_order(self, st_line, cba, transaction, reconcile_note): + + match = {} + + if transaction['communication'] and cba.find_so_number \ + and transaction['amount'] > 0: + reconcile_note, so_res = self._get_sale_order( + st_line, cba, transaction, reconcile_note) + if so_res and len(so_res) == 1: + so_id = so_res[0][0] + match['sale_order_id'] = so_id + sale_order = self.env['sale.order'].browse(so_id) + partner = sale_order.partner_id.commercial_partner_id + transaction['partner_id'] = partner.id + inv_ids = [x.id for x in sale_order.invoice_ids] + if inv_ids: + amount_fmt = '%.2f' + if transaction['amount'] > 0: + amount_rounded = \ + amount_fmt % round(transaction['amount'], 2) + else: + amount_rounded = amount_fmt \ + % round(-transaction['amount'], 2) + self.env.cr.execute( + "SELECT id FROM account_invoice " + "WHERE state = 'open' AND amount_total = %s " + "AND id in %s", + (amount_rounded, tuple(inv_ids))) + res = self.env.cr.fetchall() + if res: + inv_ids = [x[0] for x in res] + if len(inv_ids) == 1: + invoice = self.env['account.invoice'].browse( + inv_ids[0]) + imls = self.env['account.move.line'].search( + [('move_id', '=', invoice.move_id.id), + ('reconcile_id', '=', False), + ('account_id', '=', invoice.account_id.id)]) + if imls: + transaction['reconcile'] = imls[0].id + + return reconcile_note, match + + +def repl_special(s): + s = s.replace("\'", "\'" + "'") + return s diff --git a/l10n_be_invoice_bba_supplier/README.rst b/l10n_be_invoice_bba_supplier/README.rst new file mode 100644 index 00000000..c3e6b4e5 --- /dev/null +++ b/l10n_be_invoice_bba_supplier/README.rst @@ -0,0 +1,10 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +====================================================== +Supplier payment with Belgian structured communication +====================================================== + +This module add a separate field to the supplier invoice in order to record +the Belgian structured communication for use in payment orders. diff --git a/l10n_be_invoice_bba_supplier/__init__.py b/l10n_be_invoice_bba_supplier/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/l10n_be_invoice_bba_supplier/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/l10n_be_invoice_bba_supplier/__manifest__.py b/l10n_be_invoice_bba_supplier/__manifest__.py new file mode 100644 index 00000000..7fb4c6f2 --- /dev/null +++ b/l10n_be_invoice_bba_supplier/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Supplier payment with Belgian structured communication', + 'version': '11.0.1.0.0', + 'category': 'Accounting & Finance', + 'website': 'https://www.noviat.com', + 'author': 'Noviat', + 'license': 'AGPL-3', + 'data': [ + 'views/account_invoice.xml', + ], + 'depends': [ + 'l10n_be_invoice_bba', + ], + 'installable': True, +} diff --git a/l10n_be_invoice_bba_supplier/models/__init__.py b/l10n_be_invoice_bba_supplier/models/__init__.py new file mode 100644 index 00000000..8e072db8 --- /dev/null +++ b/l10n_be_invoice_bba_supplier/models/__init__.py @@ -0,0 +1 @@ +from . import account_invoice diff --git a/l10n_be_invoice_bba_supplier/models/account_invoice.py b/l10n_be_invoice_bba_supplier/models/account_invoice.py new file mode 100644 index 00000000..f68d1b24 --- /dev/null +++ b/l10n_be_invoice_bba_supplier/models/account_invoice.py @@ -0,0 +1,72 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import re + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + supplier_payment_ref_type = fields.Selection( + selection='_selection_supplier_payment_ref_type', + string='Payment Reference Type', + required=True, default='normal') + supplier_payment_ref = fields.Char( + string='Payment Reference', + help="Payment reference for use within payment orders.") + + @api.model + def _selection_supplier_payment_ref_type(self): + return [ + ('normal', _('Free Communication')), + ('bba', _('BBA Structured Communication'))] + + @api.constrains('supplier_payment_ref_type', 'supplier_payment_ref') + def _check_communication(self): + for inv in self: + if inv.supplier_payment_ref_type == 'bba' \ + and not self.check_bbacomm(inv.supplier_payment_ref): + raise ValidationError( + _("Invalid BBA Structured Communication !")) + + @api.onchange('supplier_payment_ref_type', 'reference') + def _onchange_reference(self): + if self.type == 'in_invoice' \ + and self.supplier_payment_ref_type == 'normal': + self.supplier_payment_ref = self.reference + + @api.model + def create(self, vals): + if vals.get('supplier_payment_ref_type') == 'bba' \ + and self._context.get('type') == 'in_invoice': + pay_ref = vals.get('supplier_payment_ref') + if self.check_bbacomm(pay_ref): + vals['supplier_payment_ref'] = self._format_bbacomm(pay_ref) + return super().create(vals) + + @api.multi + def write(self, vals): + for inv in self: + if inv.state == 'draft': + if 'supplier_payment_ref_type' in vals: + pay_ref_type = vals['supplier_payment_ref_type'] + else: + pay_ref_type = inv.supplier_payment_ref_type + if pay_ref_type == 'bba': + if 'supplier_payment_ref' in vals: + bbacomm = vals['supplier_payment_ref'] + else: + bbacomm = inv.supplier_payment_ref or '' + if self.check_bbacomm(bbacomm): + vals['supplier_payment_ref'] = self._format_bbacomm( + bbacomm) + return super().write(vals) + + def _format_bbacomm(self, val): + bba = re.sub('\D', '', val) + bba = '+++%s/%s/%s+++' % ( + bba[0:3], bba[3:7], bba[7:]) + return bba diff --git a/l10n_be_invoice_bba_supplier/static/description/icon.png b/l10n_be_invoice_bba_supplier/static/description/icon.png new file mode 100644 index 00000000..32740c0c Binary files /dev/null and b/l10n_be_invoice_bba_supplier/static/description/icon.png differ diff --git a/l10n_be_invoice_bba_supplier/views/account_invoice.xml b/l10n_be_invoice_bba_supplier/views/account_invoice.xml new file mode 100644 index 00000000..a02f31f5 --- /dev/null +++ b/l10n_be_invoice_bba_supplier/views/account_invoice.xml @@ -0,0 +1,19 @@ + + + + + account.invoice.supplier.form.inherit + account.invoice + + + + + + + + + + + + diff --git a/l10n_be_partner_bank/README.rst b/l10n_be_partner_bank/README.rst new file mode 100644 index 00000000..9838b2e5 --- /dev/null +++ b/l10n_be_partner_bank/README.rst @@ -0,0 +1,13 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +================================================ +Belgium - BBAN/IBAN conversion for Belgian banks +================================================ + +This module adds the following functionality + +- list of Belgian banks with BBAN and IBAN are added when installing the module +- automatic BBAN/IBAN conversion when adding a bank to a partner + diff --git a/l10n_be_partner_bank/__init__.py b/l10n_be_partner_bank/__init__.py new file mode 100644 index 00000000..78083759 --- /dev/null +++ b/l10n_be_partner_bank/__init__.py @@ -0,0 +1,16 @@ +from . import models + + +def update_bank_refs(cr): + """ + pre_init_hook: + update partner bank ir_model_data entries + for migrations from 8.0 l10n_be_partner module + """ + old = 'l10n_be_partner' + new = 'l10n_be_partner_bank' + model = 'res.bank' + cr.execute( + "UPDATE ir_model_data SET module = %s " + "WHERE module = %s AND model = %s", + (new, old, model)) diff --git a/l10n_be_partner_bank/__manifest__.py b/l10n_be_partner_bank/__manifest__.py new file mode 100644 index 00000000..dde67a82 --- /dev/null +++ b/l10n_be_partner_bank/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Belgium - Partner Bank BBAN/IBAN conversion', + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Noviat, Odoo Community Association (OCA)', + 'category': 'Localization', + 'summary': 'Belgium - Partner Bank BBAN/IBAN conversion', + 'depends': [ + 'base_iban', + ], + 'data': [ + 'data/be_banks.xml', + 'views/res_bank.xml', + ], + 'installable': True, + 'pre_init_hook': 'update_bank_refs', +} diff --git a/l10n_be_partner_bank/data/be_banks.xml b/l10n_be_partner_bank/data/be_banks.xml new file mode 100644 index 00000000..ed8120be --- /dev/null +++ b/l10n_be_partner_bank/data/be_banks.xml @@ -0,0 +1,4760 @@ + + + + + + + 000 + BPOTBEB1 + Bank van de Post + + + + 001 + GEBABEBB + BNP Paribas Fortis + + + + 002 + GEBABEBB + BNP Paribas Fortis + + + + 003 + GEBABEBB + BNP Paribas Fortis + + + + 004 + GEBABEBB + BNP Paribas Fortis + + + + 005 + GEBABEBB + BNP Paribas Fortis + + + + 006 + GEBABEBB + BNP Paribas Fortis + + + + 007 + GEBABEBB + BNP Paribas Fortis + + + + 008 + GEBABEBB + BNP Paribas Fortis + + + + 009 + GEBABEBB + BNP Paribas Fortis + + + + 010 + GEBABEBB + BNP Paribas Fortis + + + + 011 + GEBABEBB + BNP Paribas Fortis + + + + 012 + GEBABEBB + BNP Paribas Fortis + + + + 013 + GEBABEBB + BNP Paribas Fortis + + + + 014 + GEBABEBB + BNP Paribas Fortis + + + + 015 + GEBABEBB + BNP Paribas Fortis + + + + 016 + GEBABEBB + BNP Paribas Fortis + + + + 017 + GEBABEBB + BNP Paribas Fortis + + + + 018 + GEBABEBB + BNP Paribas Fortis + + + + 019 + GEBABEBB + BNP Paribas Fortis + + + + 020 + GEBABEBB + BNP Paribas Fortis + + + + 021 + GEBABEBB + BNP Paribas Fortis + + + + 022 + GEBABEBB + BNP Paribas Fortis + + + + 023 + GEBABEBB + BNP Paribas Fortis + + + + 024 + GEBABEBB + BNP Paribas Fortis + + + + 025 + GEBABEBB + BNP Paribas Fortis + + + + 026 + GEBABEBB + BNP Paribas Fortis + + + + 027 + GEBABEBB + BNP Paribas Fortis + + + + 028 + GEBABEBB + BNP Paribas Fortis + + + + 029 + GEBABEBB + BNP Paribas Fortis + + + + 030 + GEBABEBB + BNP Paribas Fortis + + + + 031 + GEBABEBB + BNP Paribas Fortis + + + + 032 + GEBABEBB + BNP Paribas Fortis + + + + 033 + GEBABEBB + BNP Paribas Fortis + + + + 034 + GEBABEBB + BNP Paribas Fortis + + + + 035 + GEBABEBB + BNP Paribas Fortis + + + + 036 + GEBABEBB + BNP Paribas Fortis + + + + 037 + GEBABEBB + BNP Paribas Fortis + + + + 038 + GEBABEBB + BNP Paribas Fortis + + + + 039 + GEBABEBB + BNP Paribas Fortis + + + + 040 + GEBABEBB + BNP Paribas Fortis + + + + 046 + GEBABEBB + BNP Paribas Fortis + + + + 047 + GEBABEBB + BNP Paribas Fortis + + + + 048 + GEBABEBB + BNP Paribas Fortis + + + + 049 + GEBABEBB + BNP Paribas Fortis + + + + 050 + GKCCBEBB + Dexia + + + + 051 + GKCCBEBB + Dexia + + + + 052 + GKCCBEBB + Dexia + + + + 053 + GKCCBEBB + Dexia + + + + 054 + GKCCBEBB + Dexia + + + + 055 + GKCCBEBB + Dexia + + + + 056 + GKCCBEBB + Dexia + + + + 057 + GKCCBEBB + Dexia + + + + 058 + GKCCBEBB + Dexia + + + + 059 + GKCCBEBB + Dexia + + + + 060 + GKCCBEBB + Dexia + + + + 061 + GKCCBEBB + Dexia + + + + 062 + GKCCBEBB + Dexia + + + + 063 + GKCCBEBB + Dexia + + + + 064 + GKCCBEBB + Dexia + + + + 065 + GKCCBEBB + Dexia + + + + 066 + GKCCBEBB + Dexia + + + + 067 + GKCCBEBB + Dexia + + + + 068 + GKCCBEBB + Dexia + + + + 069 + GKCCBEBB + Dexia + + + + 070 + GKCCBEBB + Dexia + + + + 071 + GKCCBEBB + Dexia + + + + 072 + GKCCBEBB + Dexia + + + + 073 + GKCCBEBB + Dexia + + + + 074 + GKCCBEBB + Dexia + + + + 075 + GKCCBEBB + Dexia + + + + 076 + GKCCBEBB + Dexia + + + + 077 + GKCCBEBB + Dexia + + + + 078 + GKCCBEBB + Dexia + + + + 079 + GKCCBEBB + Dexia + + + + 080 + GKCCBEBB + Dexia + + + + 081 + GKCCBEBB + Dexia + + + + 082 + GKCCBEBB + Dexia + + + + 083 + GKCCBEBB + Dexia + + + + 084 + GKCCBEBB + Dexia + + + + 085 + GKCCBEBB + Dexia + + + + 086 + GKCCBEBB + Dexia + + + + 087 + GKCCBEBB + Dexia + + + + 088 + GKCCBEBB + Dexia + + + + 089 + GKCCBEBB + Dexia + + + + 090 + GKCCBEBB + Dexia + + + + 091 + GKCCBEBB + Dexia + + + + 092 + GKCCBEBB + Dexia + + + + 093 + GKCCBEBB + Dexia + + + + 094 + GKCCBEBB + Dexia + + + + 095 + GKCCBEBB + Dexia + + + + 096 + GKCCBEBB + Dexia + + + + 097 + GKCCBEBB + Dexia + + + + 098 + GKCCBEBB + Dexia + + + + 099 + GKCCBEBB + Dexia + + + + 100 + NBBEBEBB + Nationale Bank van Belgie + + + + 103 + NICABEBB + Landbouwkrediet + + + + 104 + NICABEBB + Landbouwkrediet + + + + 105 + NICABEBB + Landbouwkrediet + + + + 106 + NICABEBB + Landbouwkrediet + + + + 107 + NICABEBB + Landbouwkrediet + + + + 108 + NICABEBB + Landbouwkrediet + + + + 109 + CPIMBE71 + Credit Professionnel Interfederal (C.P.I.) + + + + 110 + BKCPBEBB + Beroepskrediet + + + + 111 + ABERBE21 + Antwerps Beroepskrediet (A.B.K.) + + + + 113 + MDEKBE21 + Middenstands Deposito-en Kredietkantoor (M.D.K) + + + + 114 + CBCPBEB1 + Bank van Brabant + + + + 119 + FKVBBE81 + Federale Kas voor het Beroepskrediet + + + + 120 + FKVBBE81 + Federale Kas voor het Beroepskrediet + + + + 121 + WESBBE81 + Westvlaamse Bank (WVB) + + + + 122 + BMOVBE21 + O.B.K. Bank + + + + 123 + BMOVBE21 + O.B.K. Bank + + + + 124 + OOBEBE91 + Oostvlaams Beroepskrediet + + + + 125 + CPDHBE71 + BANQUE CPH + + + + 126 + CPDHBE71 + BANQUE CPH + + + + 127 + CPBQBE51 + Banque de Credit Professionnel + + + + 128 + CPBQBE51 + Banque de Credit Professionnel + + + + 129 + CPBQBE51 + Banque de Credit Professionnel + + + + 131 + CPBQBE51 + Banque de Credit Professionnel + + + + 132 + BNAGBEBB + Delta Lloyd Bank + + + + 133 + CPBQBE51 + Banque de Credit Professionnel + + + + 134 + CPBQBE51 + Banque de Credit Professionnel + + + + 137 + GEBABEBB + BNP Paribas Fortis + + + + 140 + GEBABEBB + BNP Paribas Fortis + + + + 141 + GEBABEBB + BNP Paribas Fortis + + + + 142 + GEBABEBB + BNP Paribas Fortis + + + + 143 + GEBABEBB + BNP Paribas Fortis + + + + 144 + GEBABEBB + BNP Paribas Fortis + + + + 145 + GEBABEBB + BNP Paribas Fortis + + + + 146 + GEBABEBB + BNP Paribas Fortis + + + + 147 + GEBABEBB + BNP Paribas Fortis + + + + 148 + GEBABEBB + BNP Paribas Fortis + + + + 149 + GEBABEBB + BNP Paribas Fortis + + + + 168 + BKCPBEBB + Limburgse Federale voor Ambachtskrediet (CVBA) + + + + 171 + CEVTBE71 + Caisse d Epargne de la Ville de Tournai + + + + 172 + RABOBE22 + Rabobank International Antwerp Branch + + + + 176 + BSCHBEBR + Banco Santander Central Hispano + + + + 177 + BSCHBEBR + Banco Santander Central Hispano + + + + 178 + COBABEBX + Commerzbank + + + + 179 + COBABEBX + Commerzbank + + + + 183 + BARBBEBB + Bank of Baroda + + + + 185 + BBRUBEBB + Record Bank + + + + 189 + SMBCBEBB + Sumitomo Mitsui Banking Corporation (SMBC) + + + + 190 + CREGBEBB + CBC + + + + 191 + CREGBEBB + CBC + + + + 192 + CREGBEBB + CBC + + + + 193 + CREGBEBB + CBC + + + + 194 + CREGBEBB + CBC + + + + 195 + CREGBEBB + CBC + + + + 196 + CREGBEBB + CBC + + + + 197 + CREGBEBB + CBC + + + + 198 + CREGBEBB + CBC + + + + 199 + CREGBEBB + CBC + + + + 200 + GEBABEBB + BNP Paribas Fortis + + + + 201 + GEBABEBB + BNP Paribas Fortis + + + + 202 + GEBABEBB + BNP Paribas Fortis + + + + 203 + GEBABEBB + BNP Paribas Fortis + + + + 204 + GEBABEBB + BNP Paribas Fortis + + + + 205 + GEBABEBB + BNP Paribas Fortis + + + + 206 + GEBABEBB + BNP Paribas Fortis + + + + 207 + GEBABEBB + BNP Paribas Fortis + + + + 208 + GEBABEBB + BNP Paribas Fortis + + + + 209 + GEBABEBB + BNP Paribas Fortis + + + + 210 + GEBABEBB + BNP Paribas Fortis + + + + 211 + GEBABEBB + BNP Paribas Fortis + + + + 212 + GEBABEBB + BNP Paribas Fortis + + + + 213 + GEBABEBB + BNP Paribas Fortis + + + + 214 + GEBABEBB + BNP Paribas Fortis + + + + 220 + GEBABEBB + BNP Paribas Fortis + + + + 221 + GEBABEBB + BNP Paribas Fortis + + + + 222 + GEBABEBB + BNP Paribas Fortis + + + + 223 + GEBABEBB + BNP Paribas Fortis + + + + 224 + GEBABEBB + BNP Paribas Fortis + + + + 225 + GEBABEBB + BNP Paribas Fortis + + + + 226 + GEBABEBB + BNP Paribas Fortis + + + + 227 + GEBABEBB + BNP Paribas Fortis + + + + 228 + GEBABEBB + BNP Paribas Fortis + + + + 229 + GEBABEBB + BNP Paribas Fortis + + + + 230 + GEBABEBB + BNP Paribas Fortis + + + + 231 + GEBABEBB + BNP Paribas Fortis + + + + 232 + GEBABEBB + BNP Paribas Fortis + + + + 233 + GEBABEBB + BNP Paribas Fortis + + + + 234 + GEBABEBB + BNP Paribas Fortis + + + + 235 + GEBABEBB + BNP Paribas Fortis + + + + 236 + GEBABEBB + BNP Paribas Fortis + + + + 237 + GEBABEBB + BNP Paribas Fortis + + + + 238 + GEBABEBB + BNP Paribas Fortis + + + + 239 + GEBABEBB + BNP Paribas Fortis + + + + 240 + GEBABEBB + BNP Paribas Fortis + + + + 241 + GEBABEBB + BNP Paribas Fortis + + + + 242 + GEBABEBB + BNP Paribas Fortis + + + + 243 + GEBABEBB + BNP Paribas Fortis + + + + 244 + GEBABEBB + BNP Paribas Fortis + + + + 245 + GEBABEBB + BNP Paribas Fortis + + + + 246 + GEBABEBB + BNP Paribas Fortis + + + + 247 + GEBABEBB + BNP Paribas Fortis + + + + 248 + GEBABEBB + BNP Paribas Fortis + + + + 249 + GEBABEBB + BNP Paribas Fortis + + + + 250 + GEBABEBB + BNP Paribas Fortis + + + + 251 + GEBABEBB + BNP Paribas Fortis + + + + 257 + GEBABEBB + BNP Paribas Fortis + + + + 259 + GEBABEBB + BNP Paribas Fortis + + + + 260 + GEBABEBB + BNP Paribas Fortis + + + + 261 + GEBABEBB + BNP Paribas Fortis + + + + 262 + GEBABEBB + BNP Paribas Fortis + + + + 263 + GEBABEBB + BNP Paribas Fortis + + + + 264 + GEBABEBB + BNP Paribas Fortis + + + + 265 + GEBABEBB + BNP Paribas Fortis + + + + 266 + GEBABEBB + BNP Paribas Fortis + + + + 267 + GEBABEBB + BNP Paribas Fortis + + + + 268 + GEBABEBB + BNP Paribas Fortis + + + + 269 + GEBABEBB + BNP Paribas Fortis + + + + 270 + GEBABEBB + BNP Paribas Fortis + + + + 271 + GEBABEBB + BNP Paribas Fortis + + + + 272 + GEBABEBB + BNP Paribas Fortis + + + + 273 + GEBABEBB + BNP Paribas Fortis + + + + 274 + GEBABEBB + BNP Paribas Fortis + + + + 275 + GEBABEBB + BNP Paribas Fortis + + + + 276 + GEBABEBB + BNP Paribas Fortis + + + + 277 + GEBABEBB + BNP Paribas Fortis + + + + 278 + GEBABEBB + BNP Paribas Fortis + + + + 279 + GEBABEBB + BNP Paribas Fortis + + + + 280 + GEBABEBB + BNP Paribas Fortis + + + + 281 + GEBABEBB + BNP Paribas Fortis + + + + 282 + GEBABEBB + BNP Paribas Fortis + + + + 283 + GEBABEBB + BNP Paribas Fortis + + + + 284 + GEBABEBB + BNP Paribas Fortis + + + + 285 + GEBABEBB + BNP Paribas Fortis + + + + 286 + GEBABEBB + BNP Paribas Fortis + + + + 287 + GEBABEBB + BNP Paribas Fortis + + + + 288 + GEBABEBB + BNP Paribas Fortis + + + + 289 + GEBABEBB + BNP Paribas Fortis + + + + 290 + GEBABEBB + BNP Paribas Fortis + + + + 291 + GEBABEBB + BNP Paribas Fortis + + + + 292 + GEBABEBB + BNP Paribas Fortis + + + + 293 + GEBABEBB + BNP Paribas Fortis + + + + 294 + GEBABEBB + BNP Paribas Fortis + + + + 295 + GEBABEBB + BNP Paribas Fortis + + + + 296 + GEBABEBB + BNP Paribas Fortis + + + + 297 + GEBABEBB + BNP Paribas Fortis + + + + 298 + GEBABEBB + BNP Paribas Fortis + + + + 299 + BPOTBEB1 + Bank van de Post + + + + 300 + BBRUBEBB + ING + + + + 301 + BBRUBEBB + ING + + + + 302 + BBRUBEBB + ING + + + + 303 + BBRUBEBB + ING + + + + 304 + BBRUBEBB + ING + + + + 305 + BBRUBEBB + ING + + + + 306 + BBRUBEBB + ING + + + + 307 + BBRUBEBB + ING + + + + 308 + BBRUBEBB + ING + + + + 309 + BBRUBEBB + ING + + + + 310 + BBRUBEBB + ING + + + + 311 + BBRUBEBB + ING + + + + 312 + BBRUBEBB + ING + + + + 313 + BBRUBEBB + ING + + + + 314 + BBRUBEBB + ING + + + + 315 + BBRUBEBB + ING + + + + 316 + BBRUBEBB + ING + + + + 317 + BBRUBEBB + ING + + + + 318 + BBRUBEBB + ING + + + + 319 + BBRUBEBB + ING + + + + 320 + BBRUBEBB + ING + + + + 321 + BBRUBEBB + ING + + + + 322 + BBRUBEBB + ING + + + + 323 + BBRUBEBB + ING + + + + 324 + BBRUBEBB + ING + + + + 325 + BBRUBEBB + ING + + + + 326 + BBRUBEBB + ING + + + + 327 + BBRUBEBB + ING + + + + 328 + BBRUBEBB + ING + + + + 329 + BBRUBEBB + ING + + + + 330 + BBRUBEBB + ING + + + + 331 + BBRUBEBB + ING + + + + 332 + BBRUBEBB + ING + + + + 333 + BBRUBEBB + ING + + + + 334 + BBRUBEBB + ING + + + + 335 + BBRUBEBB + ING + + + + 336 + BBRUBEBB + ING + + + + 337 + BBRUBEBB + ING + + + + 338 + BBRUBEBB + ING + + + + 339 + BBRUBEBB + ING + + + + 340 + BBRUBEBB + ING + + + + 341 + BBRUBEBB + ING + + + + 342 + BBRUBEBB + ING + + + + 343 + BBRUBEBB + ING + + + + 344 + BBRUBEBB + ING + + + + 345 + BBRUBEBB + ING + + + + 346 + BBRUBEBB + ING + + + + 347 + BBRUBEBB + ING + + + + 348 + BBRUBEBB + ING + + + + 349 + BBRUBEBB + ING + + + + 350 + BBRUBEBB + ING + + + + 351 + BBRUBEBB + ING + + + + 352 + BBRUBEBB + ING + + + + 353 + BBRUBEBB + ING + + + + 354 + BBRUBEBB + ING + + + + 355 + BBRUBEBB + ING + + + + 356 + BBRUBEBB + ING + + + + 357 + BBRUBEBB + ING + + + + 358 + BBRUBEBB + ING + + + + 359 + BBRUBEBB + ING + + + + 360 + BBRUBEBB + ING + + + + 361 + BBRUBEBB + ING + + + + 362 + BBRUBEBB + ING + + + + 363 + BBRUBEBB + ING + + + + 364 + BBRUBEBB + ING + + + + 365 + BBRUBEBB + ING + + + + 366 + BBRUBEBB + ING + + + + 367 + BBRUBEBB + ING + + + + 368 + BBRUBEBB + ING + + + + 369 + BBRUBEBB + ING + + + + 370 + BBRUBEBB + ING + + + + 371 + BBRUBEBB + ING + + + + 372 + BBRUBEBB + ING + + + + 373 + BBRUBEBB + ING + + + + 374 + BBRUBEBB + ING + + + + 375 + BBRUBEBB + ING + + + + 376 + BBRUBEBB + ING + + + + 377 + BBRUBEBB + ING + + + + 378 + BBRUBEBB + ING + + + + 379 + BBRUBEBB + ING + + + + 380 + BBRUBEBB + ING + + + + 381 + BBRUBEBB + ING + + + + 382 + BBRUBEBB + ING + + + + 383 + BBRUBEBB + ING + + + + 384 + BBRUBEBB + ING + + + + 385 + BBRUBEBB + ING + + + + 386 + BBRUBEBB + ING + + + + 387 + BBRUBEBB + ING + + + + 388 + BBRUBEBB + ING + + + + 389 + BBRUBEBB + ING + + + + 390 + BBRUBEBB + ING + + + + 391 + BBRUBEBB + ING + + + + 392 + BBRUBEBB + ING + + + + 393 + BBRUBEBB + ING + + + + 394 + BBRUBEBB + ING + + + + 395 + BBRUBEBB + ING + + + + 396 + BBRUBEBB + ING + + + + 397 + BBRUBEBB + ING + + + + 398 + BBRUBEBB + ING + + + + 399 + BBRUBEBB + ING + + + + 400 + KREDBEBB + KBC + + + + 401 + KREDBEBB + KBC + + + + 402 + KREDBEBB + KBC + + + + 403 + KREDBEBB + KBC + + + + 404 + KREDBEBB + KBC + + + + 405 + KREDBEBB + KBC + + + + 406 + KREDBEBB + KBC + + + + 407 + KREDBEBB + KBC + + + + 408 + KREDBEBB + KBC + + + + 409 + KREDBEBB + KBC + + + + 410 + KREDBEBB + KBC + + + + 411 + KREDBEBB + KBC + + + + 412 + KREDBEBB + KBC + + + + 413 + KREDBEBB + KBC + + + + 414 + KREDBEBB + KBC + + + + 415 + KREDBEBB + KBC + + + + 416 + KREDBEBB + KBC + + + + 417 + KREDBEBB + KBC + + + + 418 + KREDBEBB + KBC + + + + 419 + KREDBEBB + KBC + + + + 420 + KREDBEBB + KBC + + + + 421 + KREDBEBB + KBC + + + + 422 + KREDBEBB + KBC + + + + 423 + KREDBEBB + KBC + + + + 424 + KREDBEBB + KBC + + + + 425 + KREDBEBB + KBC + + + + 426 + KREDBEBB + KBC + + + + 427 + KREDBEBB + KBC + + + + 428 + KREDBEBB + KBC + + + + 429 + KREDBEBB + KBC + + + + 430 + KREDBEBB + KBC + + + + 431 + KREDBEBB + KBC + + + + 432 + KREDBEBB + KBC + + + + 433 + KREDBEBB + KBC + + + + 434 + KREDBEBB + KBC + + + + 435 + KREDBEBB + KBC + + + + 436 + KREDBEBB + KBC + + + + 437 + KREDBEBB + KBC + + + + 438 + KREDBEBB + KBC + + + + 439 + KREDBEBB + KBC + + + + 440 + KREDBEBB + KBC + + + + 441 + KREDBEBB + KBC + + + + 442 + KREDBEBB + KBC + + + + 443 + KREDBEBB + KBC + + + + 444 + KREDBEBB + KBC + + + + 445 + KREDBEBB + KBC + + + + 446 + KREDBEBB + KBC + + + + 447 + KREDBEBB + KBC + + + + 448 + KREDBEBB + KBC + + + + 449 + KREDBEBB + KBC + + + + 450 + KREDBEBB + KBC + + + + 451 + KREDBEBB + KBC + + + + 452 + KREDBEBB + KBC + + + + 453 + KREDBEBB + KBC + + + + 454 + KREDBEBB + KBC + + + + 455 + KREDBEBB + KBC + + + + 456 + KREDBEBB + KBC + + + + 457 + KREDBEBB + KBC + + + + 458 + KREDBEBB + KBC + + + + 459 + KREDBEBB + KBC + + + + 460 + KREDBEBB + KBC + + + + 461 + KREDBEBB + KBC + + + + 462 + KREDBEBB + KBC + + + + 463 + KREDBEBB + KBC + + + + 464 + KREDBEBB + KBC + + + + 465 + KREDBEBB + KBC + + + + 466 + KREDBEBB + KBC + + + + 467 + KREDBEBB + KBC + + + + 468 + KREDBEBB + KBC + + + + 469 + KREDBEBB + KBC + + + + 470 + KREDBEBB + KBC + + + + 471 + KREDBEBB + KBC + + + + 472 + KREDBEBB + KBC + + + + 473 + KREDBEBB + KBC + + + + 474 + KREDBEBB + KBC + + + + 475 + KREDBEBB + KBC + + + + 476 + KREDBEBB + KBC + + + + 477 + KREDBEBB + KBC + + + + 478 + KREDBEBB + KBC + + + + 479 + KREDBEBB + KBC + + + + 480 + KREDBEBB + KBC + + + + 481 + KREDBEBB + KBC + + + + 482 + KREDBEBB + KBC + + + + 483 + KREDBEBB + KBC + + + + 484 + KREDBEBB + KBC + + + + 485 + KREDBEBB + KBC + + + + 486 + KREDBEBB + KBC + + + + 487 + KREDBEBB + KBC + + + + 488 + KREDBEBB + KBC + + + + 489 + KREDBEBB + KBC + + + + 490 + KREDBEBB + KBC + + + + 491 + KREDBEBB + KBC + + + + 492 + KREDBEBB + KBC + + + + 493 + KREDBEBB + KBC + + + + 494 + KREDBEBB + KBC + + + + 495 + KREDBEBB + KBC + + + + 496 + KREDBEBB + KBC + + + + 497 + KREDBEBB + KBC + + + + 498 + KREDBEBB + KBC + + + + 499 + KREDBEBB + KBC + + + + 500 + SBOSBEB1 + State Street Bank Europe Ltd + + + + 501 + DHBNBEBB + Demir-Halk Bank (Nederland) (DHB) + + + + 502 + ROBEBEBB + Robeco Direct + + + + 503 + DRESBEBX + Dresdner Bank - Brussels Branch + + + + 504 + VOWABEB1 + Volkswagen Bank + + + + 505 + KECOBE21 + Kempen Capital Management + + + + 507 + DIERBE21 + Dierickx Leys & Cie Effectenbank + + + + 509 + ABNABEBR + ABN AMRO Bank N.V. + + + + 510 + VAPEBE21 + van de Put & Co Effectenbank + + + + 512 + DNIBBE21 + NIB Capital Bank + + + + 513 + SGABBEB2 + SG Banque De Maertelaere + + + + 514 + PUILBEBB + Puilaetco Private Bankers + + + + 517 + FORDBE21 + FCE Bank + + + + 519 + IRVTBEBB + The Bank of New York + + + + 520 + AACABE41 + Aachener Bank e.G. + + + + 521 + FVLBBE22 + Van Lanschot Bankiers Belgie + + + + 522 + UTWBBEBB + United Taiwan Bank + + + + 523 + TRIOBE91 + Banque Triodos + + + + 524 + WAFABEBB + Attijariwafa bank Europe + + + + 530 + SHIZBEB1 + Shizuoka Bank (Europe) + + + + 535 + FBHLBE22 + CREDIT EUROPE BANK NV + + + + 546 + WAFABEBB + Attijariwafa bank Europe + + + + 547 + CCFRBEBB + HSBC France + + + + 549 + CHASBEBX + JP Morgan Chase Bank + + + + 550 + GKCCBEBB + Dexia + + + + 551 + GKCCBEBB + Dexia + + + + 552 + GKCCBEBB + Dexia + + + + 553 + GKCCBEBB + Dexia + + + + 554 + GKCCBEBB + Dexia + + + + 555 + GKCCBEBB + Dexia + + + + 556 + GKCCBEBB + Dexia + + + + 557 + GKCCBEBB + Dexia + + + + 558 + GKCCBEBB + Dexia + + + + 559 + GKCCBEBB + Dexia + + + + 560 + GKCCBEBB + Dexia + + + + 561 + BCRTBEB1 + Cortal Consors + + + + 562 + GKCCBEBB + Dexia + + + + 563 + GKCCBEBB + Dexia + + + + 564 + GKCCBEBB + Dexia + + + + 565 + GKCCBEBB + Dexia + + + + 566 + GKCCBEBB + Dexia + + + + 567 + GKCCBEBB + Dexia + + + + 568 + GKCCBEBB + Dexia + + + + 569 + GKCCBEBB + Dexia + + + + 570 + CITIBEBX + Citibank + + + + 571 + CITIBEBX + Citibank + + + + 572 + CITIBEBX + Citibank + + + + 573 + CITIBEBX + Citibank + + + + 574 + CITIBEBX + Citibank + + + + 575 + CITIBEBX + Citibank + + + + 576 + CITIBEBX + Citibank + + + + 577 + CITIBEBX + Citibank + + + + 578 + CITIBEBX + Citibank + + + + 579 + CITIBEBX + Citibank + + + + 581 + MHCBBEBB + Mizuho Corporate Bank Nederland + + + + 583 + DEGRBEBB + Banque Degroof Luxembourg + + + + 584 + ICICGB2L + ICICI Bank UK Limited + + + + 585 + RCBPBEB1 + Rothschild & Cie Banque GCV + + + + 586 + CFFRBEB1 + Credit Foncier de France + + + + 588 + CMCIBEB1 + Banque Transatlantique Belgium + + + + 590 + BSCHBEBB + Santander + + + + 591 + BSCHBEBB + Santander + + + + 592 + BSCHBEBB + Santander + + + + 593 + BSCHBEBB + Santander + + + + 594 + BSCHBEBB + Santander + + + + 595 + CTBKBEBX + Citibank + + + + 596 + CTBKBEBX + Citibank + + + + 597 + CTBKBEBX + Citibank + + + + 598 + CTBKBEBX + Citibank + + + + 599 + CTBKBEBX + Citibank + + + + 600 + CTBKBEBX + Citibank + + + + 601 + CTBKBEBX + Citibank + + + + 603 + BLGOBEBB + Banque Belgolaise + + + + 604 + BLGOBEBB + Banque Belgolaise + + + + 610 + BDCHBE22 + Deutsche Bank + + + + 611 + BDCHBE22 + Deutsche Bank + + + + 612 + BDCHBE22 + Deutsche Bank + + + + 613 + BDCHBE22 + Deutsche Bank + + + + 624 + GKCCBEBB + Dexia + + + + 625 + GKCCBEBB + Dexia + + + + 630 + BBRUBEBB + ING + + + + 631 + BBRUBEBB + ING + + + + 632 + LOYDBEBB + Lloyds TSB + + + + 633 + LOYDBEBB + Lloyds TSB + + + + 634 + BNAGBEBB + Delta Lloyd Bank + + + + 635 + BNAGBEBB + Delta Lloyd Bank + + + + 636 + BNAGBEBB + Delta Lloyd Bank + + + + 638 + GKCCBEBB + Dexia + + + + 640 + ADIABE22 + Antwerpse Diamantbank + + + + 642 + BBVABEBB + Banco Bilbao Vizcaya Argentaria + + + + 643 + BMPBBEBB + Banca Monte Paschi Belgio + + + + 645 + JVBABE22 + Bank J. Van Breda & C + + + + 646 + BNAGBEBB + Delta Lloyd Bank + + + + 647 + BNAGBEBB + Delta Lloyd Bank + + + + 651 + KEYTBEB1 + Keytrade Bank + + + + 652 + BBRUBEBB + Record Bank + + + + 656 + ETHIBEB1 + Ethias Bank + + + + 657 + GKCCBEBB + Dexia + + + + 658 + HABBBEBB + Habib Bank + + + + 664 + BCDMBEB1 + Banque Chaabi du Maroc + + + + 665 + SPAABE22 + CENTEA + + + + 668 + SBINBE2X + State Bank of India + + + + 671 + EURBBE99 + Europabank + + + + 672 + GKCCBEBB + Dexia + + + + 673 + BBRUBEBB + Record Bank + + + + 674 + ABNABEBR + ABN AMRO Bank N.V. + + + + 675 + BYBBBEBB + Byblos Bank Europe + + + + 676 + DEGRBEBB + Bank Degroof + + + + 678 + DELEBE22 + Bank Delen + + + + 679 + PCHQBEBB + Bank van de Post + + + + 680 + GKCCBEBB + Dexia + + + + 682 + GKCCBEBB + Dexia + + + + 683 + GKCCBEBB + Dexia + + + + 685 + BOFABE3X + Bank of America National Association + + + + 686 + BOFABE3X + Bank of America National Association + + + + 687 + MGTCBEBE + Euroclear Bank + + + + 688 + SGABBEB2 + Societe Generale (Paris) + + + + 690 + BNPABEBB + BNP Paribas + + + + 693 + BOTKBEBX + The Bank of Tokyo-Mitsubishi + + + + 694 + BDCHBE22 + Deutsche Bank + + + + 696 + CRLYBEBB + CALYON Succursale de Bruxelles + + + + 700 + AXABBE22 + AXA + + + + 701 + AXABBE22 + AXA + + + + 702 + AXABBE22 + AXA + + + + 703 + AXABBE22 + AXA + + + + 704 + AXABBE22 + AXA + + + + 705 + AXABBE22 + AXA + + + + 706 + AXABBE22 + AXA + + + + 707 + AXABBE22 + AXA + + + + 708 + AXABBE22 + AXA + + + + 709 + AXABBE22 + AXA + + + + 720 + ABNABEBR + ABN AMRO + + + + 721 + ABNABEBR + ABN AMRO + + + + 722 + ABNABEBR + ABN AMRO + + + + 723 + ABNABEBR + ABN AMRO + + + + 724 + ABNABEBR + ABN AMRO + + + + 725 + KREDBEBB + KBC + + + + 726 + KREDBEBB + KBC + + + + 727 + KREDBEBB + KBC + + + + 728 + CREGBEBB + CBC + + + + 729 + CREGBEBB + CBC + + + + 730 + KREDBEBB + KBC + + + + 731 + KREDBEBB + KBC + + + + 732 + CREGBEBB + CBC + + + + 733 + KREDBEBB + KBC + + + + 734 + KREDBEBB + KBC + + + + 735 + KREDBEBB + KBC + + + + 736 + KREDBEBB + KBC + + + + 737 + KREDBEBB + KBC + + + + 738 + KREDBEBB + KBC + + + + 739 + KREDBEBB + KBC + + + + 740 + KREDBEBB + KBC + + + + 741 + KREDBEBB + KBC + + + + 742 + CREGBEBB + CBC + + + + 743 + KREDBEBB + KBC + + + + 744 + KREDBEBB + KBC + + + + 745 + KREDBEBB + KBC + + + + 746 + KREDBEBB + KBC + + + + 747 + KREDBEBB + KBC + + + + 748 + KREDBEBB + KBC + + + + 749 + KREDBEBB + KBC + + + + 750 + AXABBE22 + AXA + + + + 751 + AXABBE22 + AXA + + + + 752 + AXABBE22 + AXA + + + + 753 + AXABBE22 + AXA + + + + 754 + AXABBE22 + AXA + + + + 755 + AXABBE22 + AXA + + + + 756 + AXABBE22 + AXA + + + + 757 + AXABBE22 + AXA + + + + 758 + AXABBE22 + AXA + + + + 759 + AXABBE22 + AXA + + + + 760 + AXABBE22 + AXA + + + + 761 + AXABBE22 + AXA + + + + 762 + AXABBE22 + AXA + + + + 763 + AXABBE22 + AXA + + + + 764 + AXABBE22 + AXA + + + + 765 + AXABBE22 + AXA + + + + 766 + AXABBE22 + AXA + + + + 767 + AXABBE22 + AXA + + + + 768 + AXABBE22 + AXA + + + + 769 + AXABBE22 + AXA + + + + 770 + AXABBE22 + AXA + + + + 771 + AXABBE22 + AXA + + + + 772 + AXABBE22 + AXA + + + + 773 + AXABBE22 + AXA + + + + 774 + AXABBE22 + AXA + + + + 775 + GKCCBEBB + Dexia + + + + 776 + GKCCBEBB + Dexia + + + + 777 + GKCCBEBB + Dexia + + + + 778 + GKCCBEBB + Dexia + + + + 779 + GKCCBEBB + Dexia + + + + 780 + GKCCBEBB + Dexia + + + + 781 + GKCCBEBB + Dexia + + + + 782 + GKCCBEBB + Dexia + + + + 783 + GKCCBEBB + Dexia + + + + 784 + GKCCBEBB + Dexia + + + + 785 + GKCCBEBB + Dexia + + + + 786 + GKCCBEBB + Dexia + + + + 787 + GKCCBEBB + Dexia + + + + 788 + GKCCBEBB + Dexia + + + + 789 + GKCCBEBB + Dexia + + + + 790 + GKCCBEBB + Dexia + + + + 791 + GKCCBEBB + Dexia + + + + 792 + GKCCBEBB + Dexia + + + + 793 + GKCCBEBB + Dexia + + + + 794 + GKCCBEBB + Dexia + + + + 795 + GKCCBEBB + Dexia + + + + 796 + GKCCBEBB + Dexia + + + + 797 + GKCCBEBB + Dexia + + + + 798 + GKCCBEBB + Dexia + + + + 799 + GKCCBEBB + Dexia + + + + 800 + AXABBE22 + AXA + + + + 801 + AXABBE22 + AXA + + + + 802 + AXABBE22 + AXA + + + + 803 + AXABBE22 + AXA + + + + 804 + AXABBE22 + AXA + + + + 805 + AXABBE22 + AXA + + + + 806 + AXABBE22 + AXA + + + + 807 + AXABBE22 + AXA + + + + 808 + AXABBE22 + AXA + + + + 809 + AXABBE22 + AXA + + + + 810 + AXABBE22 + AXA + + + + 811 + AXABBE22 + AXA + + + + 812 + AXABBE22 + AXA + + + + 813 + AXABBE22 + AXA + + + + 814 + AXABBE22 + AXA + + + + 815 + AXABBE22 + AXA + + + + 816 + AXABBE22 + AXA + + + + 825 + DEUTBEBE + Deutsche Bank AG + + + + 826 + DEUTBEBE + Deutsche Bank AG + + + + 827 + ETHIBEB1 + Ethias Bank + + + + 828 + BBRUBEBB + Record Bank + + + + 830 + GKCCBEBB + Dexia + + + + 831 + GKCCBEBB + Dexia + + + + 832 + GKCCBEBB + Dexia + + + + 833 + GKCCBEBB + Dexia + + + + 834 + GKCCBEBB + Dexia + + + + 835 + GKCCBEBB + Dexia + + + + 836 + GKCCBEBB + Dexia + + + + 837 + GKCCBEBB + Dexia + + + + 838 + GKCCBEBB + Dexia + + + + 839 + GKCCBEBB + Dexia + + + + 840 + PRIBBEBB + Banque Privee Edmond de Rothschild Europe + + + + 841 + COVEBE71 + Covefi + + + + 842 + UBSWBEBB + UBS Belgium + + + + 843 + BCRTBEB1 + Cortal Consors + + + + 844 + RABOBE22 + Rabobank.be + + + + 845 + DEGRBEBB + Bank Degroof + + + + 846 + IRVTBEB1 + The Bank of New York (Luxembourg) + + + + 849 + BPPBBEB1 + BNP Paribas Private Bank + + + + 850 + SPAABE22 + CENTEA + + + + 851 + SPAABE22 + CENTEA + + + + 852 + SPAABE22 + CENTEA + + + + 853 + SPAABE22 + CENTEA + + + + 859 + SPAABE22 + CENTEA + + + + 860 + SPAABE22 + CENTEA + + + + 861 + SPAABE22 + CENTEA + + + + 862 + SPAABE22 + CENTEA + + + + 863 + SPAABE22 + CENTEA + + + + 865 + SPAABE22 + CENTEA + + + + 866 + SPAABE22 + CENTEA + + + + 868 + SPAABE22 + CENTEA + + + + 870 + BNAGBEBB + Delta Lloyd Bank + + + + 871 + BNAGBEBB + Delta Lloyd Bank + + + + 872 + BNAGBEBB + Delta Lloyd Bank + + + + 873 + PCHQBEBB + Bank van de Post + + + + 874 + BNAGBEBB + Delta Lloyd Bank + + + + 877 + BNAGBEBB + Delta Lloyd Bank + + + + 878 + BNAGBEBB + Delta Lloyd Bank + + + + 879 + BNAGBEBB + Delta Lloyd Bank + + + + 880 + BBRUBEBB + Record Bank + + + + 881 + BBRUBEBB + Record Bank + + + + 882 + BBRUBEBB + Record Bank + + + + 883 + BBRUBEBB + Record Bank + + + + 884 + BBRUBEBB + Record Bank + + + + 885 + BBRUBEBB + Record Bank + + + + 886 + BBRUBEBB + Record Bank + + + + 887 + BBRUBEBB + Record Bank + + + + 888 + BBRUBEBB + Record Bank + + + + 889 + BBRUBEBB + Record Bank + + + + 890 + VDSPBE91 + VDK Spaarbank + + + + 891 + VDSPBE91 + VDK Spaarbank + + + + 892 + VDSPBE91 + VDK Spaarbank + + + + 893 + VDSPBE91 + VDK Spaarbank + + + + 894 + VDSPBE91 + VDK Spaarbank + + + + 895 + VDSPBE91 + VDK Spaarbank + + + + 896 + VDSPBE91 + VDK Spaarbank + + + + 897 + VDSPBE91 + VDK Spaarbank + + + + 898 + VDSPBE91 + VDK Spaarbank + + + + 899 + VDSPBE91 + VDK Spaarbank + + + + 903 + COBABEBB + Commerzbank International + + + + 904 + BCEELULL + Banque et Caisse d Epargne de l Etat du Luxembourg + + + + 905 + BHBEBEB1 + BHW Bausparkasse + + + + 906 + GOFFBE22 + Goffin Bank + + + + 907 + SPAABE22 + CENTEA + + + + 908 + CEKVBE81 + Centrale Kredietverlening (C.K.V.) + + + + 910 + EUUNBEB1 + Record Bank + + + + 920 + BBRUBEBB + Record Bank + + + + 921 + BBRUBEBB + Record Bank + + + + 922 + BBRUBEBB + Record Bank + + + + 923 + BBRUBEBB + Record Bank + + + + 925 + BBRUBEBB + Record Bank + + + + 929 + BBRUBEBB + Record Bank + + + + 930 + EUUNBEB1 + Record Bank + + + + 931 + EUUNBEB1 + Record Bank + + + + 932 + EUUNBEB1 + Record Bank + + + + 933 + EUUNBEB1 + Record Bank + + + + 934 + EUUNBEB1 + Record Bank + + + + 935 + EUUNBEB1 + Record Bank + + + + 936 + EUUNBEB1 + Record Bank + + + + 937 + EUUNBEB1 + Record Bank + + + + 938 + EUUNBEB1 + Record Bank + + + + 939 + EUUNBEB1 + Record Bank + + + + 940 + CLIQBEB1 + Banque Centrale de Compensation (Clearnet) + + + + 942 + PUILBEBB + Puilaetco Private Bankers + + + + 945 + JPMGBEBB + J.P. Morgan International Bank Limited + + + + 947 + AARBBEB1 + Aareal Bank - Brussels Branch + + + + 949 + HSBCBEBB + HSBC Bank + + + + 950 + CTBKBEBX + Citibank + + + + 951 + CTBKBEBX + Citibank + + + + 952 + CTBKBEBX + Citibank + + + + 953 + CTBKBEBX + Citibank + + + + 954 + CTBKBEBX + Citibank + + + + 955 + CTBKBEBX + Citibank + + + + 956 + CTBKBEBX + Citibank + + + + 957 + CTBKBEBX + Citibank + + + + 958 + CTBKBEBX + Citibank + + + + 959 + CTBKBEBX + Citibank + + + + 961 + BBRUBEBB + Record Bank + + + + 962 + ETHIBEB1 + Ethias Bank + + + + 963 + AXABBE22 + AXA Bank + + + + 965 + ETHIBEB1 + Ethias Bank + + + + 968 + ENIBBEBB + Banque Eni + + + + 969 + DEWABEBB + Puilaetco Dewaay Private Bankers + + + + 970 + BBRUBEBB + Record Bank + + + + 971 + BBRUBEBB + Record Bank + + + + 973 + ARSPBE22 + Argenta Spaarbank (ASPA) + + + + 975 + AXABBE22 + AXA Bank + + + + 976 + BBRUBEBB + Record Bank + + + + 978 + ARSPBE22 + Argenta Spaarbank (ASPA) + + + + 979 + ARSPBE22 + Argenta Spaarbank (ASPA) + + + + 980 + ARSPBE22 + Argenta Spaarbank (ASPA) + + + + 981 + PCHQBEBB + Bank van de Post + + + + 982 + PCHQBEBB + Bank van de Post + + + + 983 + PCHQBEBB + Bank van de Post + + + + 984 + PCHQBEBB + Bank van de Post + + + + 985 + BPOTBEB1 + Bank van de Post + + + + 986 + BPOTBEB1 + Bank van de Post + + + + 987 + BPOTBEB1 + Bank van de Post + + + + 988 + BPOTBEB1 + Bank van de Post + + + + + diff --git a/l10n_be_partner_bank/models/__init__.py b/l10n_be_partner_bank/models/__init__.py new file mode 100644 index 00000000..6c600d3f --- /dev/null +++ b/l10n_be_partner_bank/models/__init__.py @@ -0,0 +1 @@ +from . import res_bank diff --git a/l10n_be_partner_bank/models/res_bank.py b/l10n_be_partner_bank/models/res_bank.py new file mode 100644 index 00000000..cf9db261 --- /dev/null +++ b/l10n_be_partner_bank/models/res_bank.py @@ -0,0 +1,45 @@ +# Copyright 2009-2019 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class ResBank(models.Model): + _inherit = 'res.bank' + + code = fields.Char( + string='Code', + help="Country specific Bank Code") + + @api.model + def bban2iban(self, country_code, bban): + # TODO: extend to other countries + if country_code not in ['be']: + raise UserError( + _("'%s': bban conversion not supported for country '%s' !") + % (bban, country_code)) + success = True + nr = bban.replace('-', '').replace(' ', '') + try: + int(nr) + except Exception: + success = False + if len(nr) != 12: + success = False + if not success: + raise Warning(_("'%s': Incorrect BBAN Number !") % bban) + kk = calc_iban_checksum('BE', nr) + return 'BE' + kk + nr + + +def calc_iban_checksum(country, bban): + bban += country + '00' + base = '' + for c in bban: + if c.isdigit(): + base += c + else: + base += str(ord(c) - ord('A') + 10) + kk = 98 - int(base) % 97 + return str(kk).rjust(2, '0') diff --git a/l10n_be_partner_bank/static/description/icon.png b/l10n_be_partner_bank/static/description/icon.png new file mode 100644 index 00000000..2ee49b8c Binary files /dev/null and b/l10n_be_partner_bank/static/description/icon.png differ diff --git a/l10n_be_partner_bank/views/res_bank.xml b/l10n_be_partner_bank/views/res_bank.xml new file mode 100644 index 00000000..dd780c29 --- /dev/null +++ b/l10n_be_partner_bank/views/res_bank.xml @@ -0,0 +1,39 @@ + + + + + res.bank.search + res.bank + + + + + + + + + + + res.bank.form.add.code + res.bank + + + + + + + + + + res.bank.tree.add.code + res.bank + + + + + + + + + +