[REM] l10n_be_coda: moved module to enterprise repository

This commit is contained in:
qdp-odoo
2015-08-18 16:24:32 +02:00
parent 8a61170224
commit e8628969fd
57 changed files with 0 additions and 164610 deletions
-4
View File
@@ -1,4 +0,0 @@
Installation tips
=================
TBC.
-7
View File
@@ -1,7 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
import l10n_be_coda
import wizard
-68
View File
@@ -1,68 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
{
'name': 'Belgium - Import Bank CODA Statements',
'version': '2.1',
'author': 'Noviat',
'category': 'Accounting & Finance',
'description': '''
Module to import CODA bank statements.
======================================
Supported are CODA flat files in V2 format from Belgian bank accounts.
----------------------------------------------------------------------
* CODA v1 support.
* CODA v2.2 support.
* Foreign Currency support.
* Support for all data record types (0, 1, 2, 3, 4, 8, 9).
* Parsing & logging of all Transaction Codes and Structured Format
Communications.
* Automatic Financial Journal assignment via CODA configuration parameters.
* Support for multiple Journals per Bank Account Number.
* Support for multiple statements from different bank accounts in a single
CODA file.
* Support for 'parsing only' CODA Bank Accounts (defined as type='info' in
the CODA Bank Account configuration records).
* Multi-language CODA parsing, parsing configuration data provided for EN,
NL, FR.
The machine readable CODA Files are parsed and stored in human readable format in
CODA Bank Statements. Also Bank Statements are generated containing a subset of
the CODA information (only those transaction lines that are required for the
creation of the Financial Accounting records). The CODA Bank Statement is a
'read-only' object, hence remaining a reliable representation of the original
CODA file whereas the Bank Statement will get modified as required by accounting
business processes.
CODA Bank Accounts configured as type 'Info' will only generate CODA Bank Statements.
A removal of one object in the CODA processing results in the removal of the
associated objects. The removal of a CODA File containing multiple Bank
Statements will also remove those associated statements.
Instead of a manual adjustment of the generated Bank Statements, you can also
re-import the CODA after updating the OpenERP database with the information that
was missing to allow automatic reconciliation.
Remark on CODA V1 support:
~~~~~~~~~~~~~~~~~~~~~~~~~~
In some cases a transaction code, transaction category or structured
communication code has been given a new or clearer description in CODA V2.The
description provided by the CODA configuration tables is based upon the CODA
V2.2 specifications.
If required, you can manually adjust the descriptions via the CODA configuration menu.
''',
'depends': ['account_accountant', 'l10n_be'],
'demo': [
'l10n_be_coda_demo.xml',
],
'data': [
'l10n_be_coda_view.xml',
],
'auto_install': True,
'website': 'https://www.odoo.com/page/accounting',
'installable': True,
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-296
View File
@@ -1,296 +0,0 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-08-30 17:18+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-05 05:45+0000\n"
"X-Generator: Launchpad (build 13830)\n"
#. module: account_coda
#: help:account.coda,journal_id:0
#: field:account.coda.import,journal_id:0
msgid "Bank Journal"
msgstr "Diario bancario"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda.import,note:0
msgid "Log"
msgstr "Registro"
#. module: account_coda
#: model:ir.model,name:account_coda.model_account_coda_import
msgid "Account Coda Import"
msgstr "Contabilidad Importación Coda"
#. module: account_coda
#: field:account.coda,name:0
msgid "Coda file"
msgstr "Fichero Coda"
#. module: account_coda
#: view:account.coda:0
msgid "Group By..."
msgstr "Agrupar por..."
#. module: account_coda
#: field:account.coda.import,awaiting_account:0
msgid "Default Account for Unrecognized Movement"
msgstr "Cuenta por defecto para movimientos no reconocidos"
#. module: account_coda
#: help:account.coda,date:0
msgid "Import Date"
msgstr "Fecha de importación"
#. module: account_coda
#: field:account.coda,note:0
msgid "Import log"
msgstr "Registro de importación"
#. module: account_coda
#: view:account.coda.import:0
msgid "Import"
msgstr "Importar"
#. module: account_coda
#: view:account.coda:0
msgid "Coda import"
msgstr "Importar Coda"
#. module: account_coda
#: code:addons/account_coda/account_coda.py:51
#, python-format
msgid "Coda file not found for bank statement !!"
msgstr "¡No se ha encontrado el archivo Coda para el extracto bancario!"
#. module: account_coda
#: help:account.coda.import,awaiting_account:0
msgid ""
"Set here the default account that will be used, if the partner is found but "
"does not have the bank account, or if he is domiciled"
msgstr ""
"Indique aquí la cuenta por defecto que se utilizará, si se encuentra la "
"empresa pero no tiene la cuenta bancaria, o si está domiciliado."
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,company_id:0
msgid "Company"
msgstr "Compañía"
#. module: account_coda
#: help:account.coda.import,def_payable:0
msgid ""
"Set here the payable account that will be used, by default, if the partner "
"is not found"
msgstr ""
"Indique aquí la cuenta a pagar que se utilizará por defecto, si no se "
"encuentra la empresa."
#. module: account_coda
#: view:account.coda:0
msgid "Search Coda"
msgstr "Buscar Coda"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,user_id:0
msgid "User"
msgstr "Usuario"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,date:0
msgid "Date"
msgstr "Fecha"
#. module: account_coda
#: model:ir.ui.menu,name:account_coda.menu_account_coda_statement
msgid "Coda Import Logs"
msgstr "Historial importación Code"
#. module: account_coda
#: model:ir.model,name:account_coda.model_account_coda
msgid "coda for an Account"
msgstr "Coda para una cuenta"
#. module: account_coda
#: field:account.coda.import,def_payable:0
msgid "Default Payable Account"
msgstr "Cuenta a pagar por defecto"
#. module: account_coda
#: help:account.coda,name:0
msgid "Store the detail of bank statements"
msgstr "Guarda el detalle de extractos bancarios."
#. module: account_coda
#: view:account.coda.import:0
msgid "Cancel"
msgstr "Cancelar"
#. module: account_coda
#: view:account.coda.import:0
msgid "Open Statements"
msgstr "Abrir extractos"
#. module: account_coda
#: code:addons/account_coda/wizard/account_coda_import.py:167
#, python-format
msgid "The bank account %s is not defined for the partner %s.\n"
msgstr "La cuenta bancaria %s no está definida para la empresa %s.\n"
#. module: account_coda
#: model:ir.ui.menu,name:account_coda.menu_account_coda_import
msgid "Import Coda Statements"
msgstr "Importar extractos Coda"
#. module: account_coda
#: view:account.coda.import:0
#: model:ir.actions.act_window,name:account_coda.action_account_coda_import
msgid "Import Coda Statement"
msgstr "Importar extracto Coda"
#. module: account_coda
#: model:ir.module.module,description:account_coda.module_meta_information
msgid ""
"\n"
" Module provides functionality to import\n"
" bank statements from coda files.\n"
" "
msgstr ""
"\n"
" Módulo que proporciona la funcionalidad para importar\n"
" extractos bancarios desde ficheros coda.\n"
" "
#. module: account_coda
#: view:account.coda:0
msgid "Statements"
msgstr "Extractos"
#. module: account_coda
#: field:account.bank.statement,coda_id:0
msgid "Coda"
msgstr "Coda"
#. module: account_coda
#: view:account.coda.import:0
msgid "Results :"
msgstr "Resultados :"
#. module: account_coda
#: view:account.coda.import:0
msgid "Result of Imported Coda Statements"
msgstr "Resultado de los extractos Coda importados"
#. module: account_coda
#: help:account.coda.import,def_receivable:0
msgid ""
"Set here the receivable account that will be used, by default, if the "
"partner is not found"
msgstr ""
"Indique aquí la cuenta a cobrar que se utilizará por defecto, si no se "
"encuentra la empresa."
#. module: account_coda
#: field:account.coda.import,coda:0
#: model:ir.actions.act_window,name:account_coda.act_account_payment_account_bank_statement
msgid "Coda File"
msgstr "Fichero Coda"
#. module: account_coda
#: model:ir.model,name:account_coda.model_account_bank_statement
msgid "Bank Statement"
msgstr "Extracto bancario"
#. module: account_coda
#: model:ir.actions.act_window,name:account_coda.action_account_coda
msgid "Coda Logs"
msgstr "Historial Coda"
#. module: account_coda
#: code:addons/account_coda/wizard/account_coda_import.py:311
#, python-format
msgid "Result"
msgstr "Resultado"
#. module: account_coda
#: view:account.coda.import:0
msgid "Click on 'New' to select your file :"
msgstr "Haga clic en 'Nuevo' para seleccionar su fichero :"
#. module: account_coda
#: field:account.coda.import,def_receivable:0
msgid "Default Receivable Account"
msgstr "Cuenta a cobrar por defecto"
#. module: account_coda
#: view:account.coda.import:0
msgid "Close"
msgstr "Cerrar"
#. module: account_coda
#: field:account.coda,statement_ids:0
msgid "Generated Bank Statements"
msgstr "Extractos bancarios generados"
#. module: account_coda
#: model:ir.module.module,shortdesc:account_coda.module_meta_information
msgid "Account CODA - import bank statements from coda file"
msgstr "Contabilidad CODA - importa extractos bancarios desde fichero Coda"
#. module: account_coda
#: view:account.coda.import:0
msgid "Configure Your Journal and Account :"
msgstr "Configure su diario y cuenta :"
#. module: account_coda
#: view:account.coda:0
msgid "Coda Import"
msgstr "Importación Coda"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,journal_id:0
msgid "Journal"
msgstr "Diario"
#~ msgid ""
#~ "The Object name must start with x_ and not contain any special character !"
#~ msgstr ""
#~ "¡El objeto debe empezar con x_ y no puede contener ningún carácter especial!"
#~ msgid "Invalid model name in the action definition."
#~ msgstr "Nombre de modelo inválido en la definición de acción."
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "¡XML inválido para la estructura de la vista!"
#~ msgid "Default receivable Account"
#~ msgstr "Cuenta a recibir por defecto"
#~ msgid "_Close"
#~ msgstr "_Cerrar"
#~ msgid "Generated Bank Statement"
#~ msgstr "Extracto bancario generado"
#~ msgid "_Ok"
#~ msgstr "_Aceptar"
#~ msgid "Select your bank journal :"
#~ msgstr "Seleccione su diario bancario :"
File diff suppressed because it is too large Load Diff
-296
View File
@@ -1,296 +0,0 @@
# Spanish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-08-30 17:18+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-05 05:45+0000\n"
"X-Generator: Launchpad (build 13830)\n"
#. module: account_coda
#: help:account.coda,journal_id:0
#: field:account.coda.import,journal_id:0
msgid "Bank Journal"
msgstr "Diario bancario"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda.import,note:0
msgid "Log"
msgstr "Registro"
#. module: account_coda
#: model:ir.model,name:account_coda.model_account_coda_import
msgid "Account Coda Import"
msgstr "Contabilidad Importación Coda"
#. module: account_coda
#: field:account.coda,name:0
msgid "Coda file"
msgstr "Fichero Coda"
#. module: account_coda
#: view:account.coda:0
msgid "Group By..."
msgstr "Agrupar por..."
#. module: account_coda
#: field:account.coda.import,awaiting_account:0
msgid "Default Account for Unrecognized Movement"
msgstr "Cuenta por defecto para movimientos no reconocidos"
#. module: account_coda
#: help:account.coda,date:0
msgid "Import Date"
msgstr "Fecha de importación"
#. module: account_coda
#: field:account.coda,note:0
msgid "Import log"
msgstr "Registro de importación"
#. module: account_coda
#: view:account.coda.import:0
msgid "Import"
msgstr "Importar"
#. module: account_coda
#: view:account.coda:0
msgid "Coda import"
msgstr "Importar Coda"
#. module: account_coda
#: code:addons/account_coda/account_coda.py:51
#, python-format
msgid "Coda file not found for bank statement !!"
msgstr "¡No se ha encontrado el archivo Coda para el extracto bancario!"
#. module: account_coda
#: help:account.coda.import,awaiting_account:0
msgid ""
"Set here the default account that will be used, if the partner is found but "
"does not have the bank account, or if he is domiciled"
msgstr ""
"Indique aquí la cuenta por defecto que se utilizará, si se encuentra la "
"empresa pero no tiene la cuenta bancaria, o si está domiciliado."
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,company_id:0
msgid "Company"
msgstr "Compañía"
#. module: account_coda
#: help:account.coda.import,def_payable:0
msgid ""
"Set here the payable account that will be used, by default, if the partner "
"is not found"
msgstr ""
"Indique aquí la cuenta a pagar que se utilizará por defecto, si no se "
"encuentra la empresa."
#. module: account_coda
#: view:account.coda:0
msgid "Search Coda"
msgstr "Buscar Coda"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,user_id:0
msgid "User"
msgstr "Usuario"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,date:0
msgid "Date"
msgstr "Fecha"
#. module: account_coda
#: model:ir.ui.menu,name:account_coda.menu_account_coda_statement
msgid "Coda Import Logs"
msgstr "Historial importación Code"
#. module: account_coda
#: model:ir.model,name:account_coda.model_account_coda
msgid "coda for an Account"
msgstr "Coda para una cuenta"
#. module: account_coda
#: field:account.coda.import,def_payable:0
msgid "Default Payable Account"
msgstr "Cuenta a pagar por defecto"
#. module: account_coda
#: help:account.coda,name:0
msgid "Store the detail of bank statements"
msgstr "Guarda el detalle de extractos bancarios."
#. module: account_coda
#: view:account.coda.import:0
msgid "Cancel"
msgstr "Cancelar"
#. module: account_coda
#: view:account.coda.import:0
msgid "Open Statements"
msgstr "Abrir extractos"
#. module: account_coda
#: code:addons/account_coda/wizard/account_coda_import.py:167
#, python-format
msgid "The bank account %s is not defined for the partner %s.\n"
msgstr "La cuenta bancaria %s no está definida para la empresa %s.\n"
#. module: account_coda
#: model:ir.ui.menu,name:account_coda.menu_account_coda_import
msgid "Import Coda Statements"
msgstr "Importar extractos Coda"
#. module: account_coda
#: view:account.coda.import:0
#: model:ir.actions.act_window,name:account_coda.action_account_coda_import
msgid "Import Coda Statement"
msgstr "Importar extracto Coda"
#. module: account_coda
#: model:ir.module.module,description:account_coda.module_meta_information
msgid ""
"\n"
" Module provides functionality to import\n"
" bank statements from coda files.\n"
" "
msgstr ""
"\n"
" Módulo que proporciona la funcionalidad para importar\n"
" extractos bancarios desde ficheros coda.\n"
" "
#. module: account_coda
#: view:account.coda:0
msgid "Statements"
msgstr "Extractos"
#. module: account_coda
#: field:account.bank.statement,coda_id:0
msgid "Coda"
msgstr "Coda"
#. module: account_coda
#: view:account.coda.import:0
msgid "Results :"
msgstr "Resultados :"
#. module: account_coda
#: view:account.coda.import:0
msgid "Result of Imported Coda Statements"
msgstr "Resultado de los extractos Coda importados"
#. module: account_coda
#: help:account.coda.import,def_receivable:0
msgid ""
"Set here the receivable account that will be used, by default, if the "
"partner is not found"
msgstr ""
"Indique aquí la cuenta a cobrar que se utilizará por defecto, si no se "
"encuentra la empresa."
#. module: account_coda
#: field:account.coda.import,coda:0
#: model:ir.actions.act_window,name:account_coda.act_account_payment_account_bank_statement
msgid "Coda File"
msgstr "Fichero Coda"
#. module: account_coda
#: model:ir.model,name:account_coda.model_account_bank_statement
msgid "Bank Statement"
msgstr "Extracto bancario"
#. module: account_coda
#: model:ir.actions.act_window,name:account_coda.action_account_coda
msgid "Coda Logs"
msgstr "Historial Coda"
#. module: account_coda
#: code:addons/account_coda/wizard/account_coda_import.py:311
#, python-format
msgid "Result"
msgstr "Resultado"
#. module: account_coda
#: view:account.coda.import:0
msgid "Click on 'New' to select your file :"
msgstr "Haga clic en 'Nuevo' para seleccionar su fichero :"
#. module: account_coda
#: field:account.coda.import,def_receivable:0
msgid "Default Receivable Account"
msgstr "Cuenta a cobrar por defecto"
#. module: account_coda
#: view:account.coda.import:0
msgid "Close"
msgstr "Cerrar"
#. module: account_coda
#: field:account.coda,statement_ids:0
msgid "Generated Bank Statements"
msgstr "Extractos bancarios generados"
#. module: account_coda
#: model:ir.module.module,shortdesc:account_coda.module_meta_information
msgid "Account CODA - import bank statements from coda file"
msgstr "Contabilidad CODA - importa extractos bancarios desde fichero Coda"
#. module: account_coda
#: view:account.coda.import:0
msgid "Configure Your Journal and Account :"
msgstr "Configure su diario y cuenta :"
#. module: account_coda
#: view:account.coda:0
msgid "Coda Import"
msgstr "Importación Coda"
#. module: account_coda
#: view:account.coda:0
#: field:account.coda,journal_id:0
msgid "Journal"
msgstr "Diario"
#~ msgid ""
#~ "The Object name must start with x_ and not contain any special character !"
#~ msgstr ""
#~ "¡El objeto debe empezar con x_ y no puede contener ningún carácter especial!"
#~ msgid "Invalid model name in the action definition."
#~ msgstr "Nombre de modelo inválido en la definición de acción."
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "¡XML inválido para la estructura de la vista!"
#~ msgid "Default receivable Account"
#~ msgstr "Cuenta a recibir por defecto"
#~ msgid "_Close"
#~ msgstr "_Cerrar"
#~ msgid "Generated Bank Statement"
#~ msgstr "Extracto bancario generado"
#~ msgid "_Ok"
#~ msgstr "_Aceptar"
#~ msgid "Select your bank journal :"
#~ msgstr "Seleccione su diario bancario :"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-12
View File
@@ -1,12 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
from openerp.osv import osv, fields
class account_bank_statement(osv.osv):
_inherit = 'account.bank.statement'
_columns = {
'coda_note': fields.text('CODA Notes'),
}
-28
View File
@@ -1,28 +0,0 @@
<?xml version="1.0" ?>
<openerp>
<data>
<!-- invoice with BBA -->
<!-- TODO: Put in YML for onchange to work?-->
<!--<record id="coda_demo_invoice_1" model="account.invoice">
<field name="currency_id" ref="base.EUR"/>
<field name="company_id" ref="base.main_company"/>
<field name="date" eval="'2011-01-01'"/>
<field name="state">draft</field>
<field name="type">out_invoice</field>
<field name="partner_id" ref="base.res_partner_9"/>
<field name="reference_type">bba</field>
<field name="reference">+++240/2838/42818+++</field>
<field name="date_invoice">2011-01-20</field>
</record>
<record id="invoice_1_line_1" model="account.invoice.line">
<field name="name">Dell Inspiron Laptop without OS</field>
<field name="product_id" ref="product.product_product_49"/>
<field name="invoice_id" ref="coda_demo_invoice_1"/>
<field name="price_unit">608.89</field>
<field name="quantity">10</field>
</record>
<workflow action="invoice_open" model="account.invoice" ref="coda_demo_invoice_1"/>-->
</data>
</openerp>
-89
View File
@@ -1,89 +0,0 @@
<?xml version="1.0" ?>
<openerp>
<data>
<record id="view_bank_statement_coda_form" model="ir.ui.view">
<field name="name">account.bank.statement.coda.form</field>
<field name="model">account.bank.statement</field>
<field name="inherit_id" ref="account.view_bank_statement_form"/>
<field name="arch" type="xml">
<page name="statement_line_ids" position="after">
<page string="CODA Notes" name="coda_note" groups="base.group_no_one">
<field name="coda_note"/>
</page>
</page>
</field>
</record>
<record id="view_bank_statement_line_coda_form" model="ir.ui.view">
<field name="name">bank.statement.line.coda.form</field>
<field name="model">account.bank.statement.line</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<form string="CODA Statement Line" create="false">
<group col="4">
<field name="statement_id"/>
<field name="date"/>
<field name="name"/>
<field name="ref" readonly="0"/>
<field name="partner_id"/>
<field name="amount"/>
<field name="sequence" readonly="0"/>
</group>
<separator string="Notes"/>
<field name="note"/>
</form>
</field>
</record>
<record id="view_account_bank_statement_line_coda_tree" model="ir.ui.view">
<field name="name">account.bank.statement.line.coda.tree</field>
<field name="model">account.bank.statement.line</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree editable="bottom" string="Statement lines" create="0" decoration-info="not journal_entry_ids">
<field name="sequence" readonly="1" invisible="1"/>
<field name="journal_entry_ids" invisible="1"/>
<field name="statement_id" readonly="1" />
<field name="date"/>
<field name="name"/>
<field name="ref"/>
<field name="partner_id"/>
<field name="amount"/>
<field name="note"/>
</tree>
</field>
</record>
<record id="view_bank_statement_line_coda_filter" model="ir.ui.view">
<field name="name">bank.statement.line.coda.filter</field>
<field name="model">account.bank.statement.line</field>
<field name="arch" type="xml">
<search string="Search Bank Transactions">
<field name="name" filter_domain="['|', ('name','ilike',self), ('ref','ilike',self)]" string="Bank Transaction"/>
<filter name="debit" string="Debit" domain="[('amount','&gt;',0)]" help="Debit Transactions."/>
<filter name="credit" string="Credit" domain="[('amount','&lt;',0)]" help="Credit Transactions."/>
<field name="statement_id"/>
<group expand="0" string="Extended Filters...">
<field name="partner_id"/>
<field name="amount"/>
<field name="note"/>
</group>
<newline/>
<group string="Group By" expand="0">
<filter string="Partner" context="{'group_by':'partner_id'}"/>
<filter string="Statement" context="{'group_by':'statement_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_account_bank_statement_line_coda" model="ir.actions.act_window">
<field name="name">Bank Statement Lines</field>
<field name="res_model">account.bank.statement.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'block_statement_line_delete' : 1}</field>
<field name="search_view_id" ref="view_bank_statement_line_coda_filter"/>
<field name="view_id" ref="view_account_bank_statement_line_coda_tree"/>
</record>
</data>
</openerp>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

@@ -1,24 +0,0 @@
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
2100020000OL4414AC8BOVSOVSOVERS0000000003044450110111001500001101240283842818 11011113501 0
2200020000 BBRUBEBB 1 0
2300020000BE61310126985517 PARTNER 2 0 1
3100020001OL4414AC8BOVSOVSOVERS001500001001PARTNER 2 1 0
3200020001MOLENSTRAAT 60 9340 LEDE 0 0
2100030000AFECA0BIS IKLINNINBIS1000000000479040110111313410000 KBC-INVESTERINGSKREDIET 737-6543210-21 11011113510 0
2100030001AFECA0BIS IKLINNINBIS1000000000419920110111813410660 11011113500 0
2100030002AFECA0BIS IKLINNINBIS1000000000059120110111813410020 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 EUR0000000013646050110111 0
9 000022000000001393080000000003108190 2
@@ -1,46 +0,0 @@
from openerp.tests.common import TransactionCase
from openerp.modules.module import get_module_resource
from openerp.tools import float_compare
class TestCodaFile(TransactionCase):
"""Tests for import bank statement coda file format (account.bank.statement.import)
"""
def setUp(self):
super(TestCodaFile, self).setUp()
cr, uid = self.cr, self.uid
self.statement_import_model = self.registry('account.bank.statement.import')
self.bank_statement_model = self.registry('account.bank.statement')
coda_file_path = get_module_resource('l10n_be_coda', 'test_coda_file', 'Ontvangen_CODA.2013-01-11-18.59.15.txt')
self.coda_file = open(coda_file_path, 'rb').read().encode('base64')
self.context = {
'journal_id': self.registry('ir.model.data').get_object_reference(cr, uid, 'account', 'bank_journal')[1]
}
self.bank_statement_id = self.statement_import_model.create(cr, uid, dict(
data_file=self.coda_file,
))
def test_coda_file_import(self):
cr, uid = self.cr, self.uid
self.statement_import_model.import_file(cr, uid, [self.bank_statement_id], context=self.context)
statement_id = self.bank_statement_model.search(cr, uid, [('name', '=', '135')])[0]
bank_st_record = self.bank_statement_model.browse(cr, uid, statement_id)
self.assertEqual(float_compare(bank_st_record.balance_start, 11812.70, precision_digits=2), 0)
self.assertEqual(float_compare(bank_st_record.balance_end_real, 13646.05, precision_digits=2), 0)
def test_coda_file_import_twice(self):
cr, uid = self.cr, self.uid
self.statement_import_model.import_file(cr, uid, [self.bank_statement_id], context=self.context)
with self.assertRaises(Exception):
self.statement_import_model.import_file(cr, uid, [self.bank_statement_id], context=self.context)
def test_coda_file_wrong_journal(self):
""" The demo account used by the CODA file is linked to the demo bank_journal """
cr, uid = self.cr, self.uid
bank_statement_id = self.statement_import_model.create(cr, uid, dict(
data_file=self.coda_file,
))
self.context['journal_id'] = self.registry('ir.model.data').get_object_reference(cr, uid, 'l10n_be', 'miscellaneous_journal')[1]
with self.assertRaises(Exception):
self.statement_import_model.import_file(cr, uid, [bank_statement_id], context=self.context)
-6
View File
@@ -1,6 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved.
import account_coda_import
@@ -1,232 +0,0 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Copyright (c) 2012 Noviat nv/sa (www.noviat.be). All rights reserved.
import time
import re
from openerp import models, tools, _
from openerp.exceptions import UserError
class AccountBankStatementImport(models.TransientModel):
_inherit = 'account.bank.statement.import'
def _check_coda(self, data_file):
# Matches the first 24 characters of a CODA file, as defined by the febelfin specifications
return re.match('0{5}\d{9}05[ D] +', data_file) != None
def _parse_file(self, data_file):
if not self._check_coda(data_file):
return super(AccountBankStatementImport, self)._parse_file(data_file)
def rmspaces(s):
return " ".join(s.split())
recordlist = unicode(data_file, 'windows-1252', 'strict').split('\n')
statements = []
globalisation_comm = {}
for line in recordlist:
if not line:
pass
elif line[0] == '0':
#Begin of a new Bank statement
statement = {}
statements.append(statement)
statement['version'] = line[127]
if statement['version'] not in ['1', '2']:
raise UserError(_('Error') + ' R001: ' + _('CODA V%s statements are not supported, please contact your bank') % statement['version'])
statement['globalisation_stack'] = []
statement['lines'] = []
statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y'))
statement['separateApplication'] = rmspaces(line[83:88])
elif line[0] == '1':
#Statement details
if statement['version'] == '1':
statement['acc_number'] = rmspaces(line[5:17])
statement['currency'] = rmspaces(line[18:21])
elif statement['version'] == '2':
if line[1] == '0': # Belgian bank account BBAN structure
statement['acc_number'] = rmspaces(line[5:17])
statement['currency'] = rmspaces(line[18:21])
elif line[1] == '1': # foreign bank account BBAN structure
raise UserError(_('Error') + ' R1001: ' + _('Foreign bank accounts with BBAN structure are not supported '))
elif line[1] == '2': # Belgian bank account IBAN structure
statement['acc_number'] = rmspaces(line[5:21])
statement['currency'] = rmspaces(line[39:42])
elif line[1] == '3': # foreign bank account IBAN structure
raise UserError(_('Error') + ' R1002: ' + _('Foreign bank accounts with IBAN structure are not supported '))
else: # Something else, not supported
raise UserError(_('Error') + ' R1003: ' + _('Unsupported bank account structure '))
statement['description'] = rmspaces(line[90:125])
statement['balance_start'] = float(rmspaces(line[43:58])) / 1000
if line[42] == '1': # 1 = Debit, the starting balance is negative
statement['balance_start'] = - statement['balance_start']
statement['balance_start_date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[58:64]), '%d%m%y'))
statement['accountHolder'] = rmspaces(line[64:90])
statement['paperSeqNumber'] = rmspaces(line[2:5])
statement['codaSeqNumber'] = rmspaces(line[125:128])
elif line[0] == '2':
if line[1] == '1':
#New statement line
statementLine = {}
statementLine['ref'] = rmspaces(line[2:10])
statementLine['ref_move'] = rmspaces(line[2:6])
statementLine['ref_move_detail'] = rmspaces(line[6:10])
statementLine['sequence'] = len(statement['lines']) + 1
statementLine['transactionRef'] = rmspaces(line[10:31])
statementLine['debit'] = line[31] # 0 = Credit, 1 = Debit
statementLine['amount'] = float(rmspaces(line[32:47])) / 1000
if statementLine['debit'] == '1':
statementLine['amount'] = - statementLine['amount']
statementLine['transactionDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[47:53]), '%d%m%y'))
statementLine['transaction_family'] = rmspaces(line[54:56])
statementLine['transaction_code'] = rmspaces(line[56:58])
statementLine['transaction_category'] = rmspaces(line[58:61])
if line[61] == '1':
#Structured communication
statementLine['communication_struct'] = True
statementLine['communication_type'] = line[62:65]
statementLine['communication'] = '+++' + line[65:68] + '/' + line[68:72] + '/' + line[72:77] + '+++'
else:
#Non-structured communication
statementLine['communication_struct'] = False
statementLine['communication'] = rmspaces(line[62:115])
statementLine['entryDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[115:121]), '%d%m%y'))
statementLine['type'] = 'normal'
statementLine['globalisation'] = int(line[124])
if statementLine['globalisation'] > 0:
if statementLine['globalisation'] in statement['globalisation_stack']:
statement['globalisation_stack'].remove(statementLine['globalisation'])
else:
statementLine['type'] = 'globalisation'
statement['globalisation_stack'].append(statementLine['globalisation'])
globalisation_comm[statementLine['ref_move']] = statementLine['communication']
if not statementLine.get('communication'):
statementLine['communication'] = globalisation_comm.get(statementLine['ref_move'], '')
statement['lines'].append(statementLine)
elif line[1] == '2':
if statement['lines'][-1]['ref'][0:4] != line[2:6]:
raise UserError(_('Error') + 'R2004: ' + _('CODA parsing error on movement data record 2.2, seq nr %s! Please report this issue via your Odoo support channel.') % line[2:10])
statement['lines'][-1]['communication'] += rmspaces(line[10:63])
statement['lines'][-1]['payment_reference'] = rmspaces(line[63:98])
statement['lines'][-1]['counterparty_bic'] = rmspaces(line[98:109])
elif line[1] == '3':
if statement['lines'][-1]['ref'][0:4] != line[2:6]:
raise UserError(_('Error') + 'R2005: ' + _('CODA parsing error on movement data record 2.3, seq nr %s! Please report this issue via your Odoo support channel.') % line[2:10])
if statement['version'] == '1':
statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22])
statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:73])
statement['lines'][-1]['counterpartyAddress'] = rmspaces(line[73:125])
statement['lines'][-1]['counterpartyCurrency'] = ''
else:
if line[22] == ' ':
statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:22])
statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[23:26])
else:
statement['lines'][-1]['counterpartyNumber'] = rmspaces(line[10:44])
statement['lines'][-1]['counterpartyCurrency'] = rmspaces(line[44:47])
statement['lines'][-1]['counterpartyName'] = rmspaces(line[47:82])
statement['lines'][-1]['communication'] += rmspaces(line[82:125])
else:
# movement data record 2.x (x != 1,2,3)
raise UserError(_('Error') + 'R2006: ' + _('\nMovement data records of type 2.%s are not supported ') % line[1])
elif line[0] == '3':
if line[1] == '1':
infoLine = {}
infoLine['entryDate'] = statement['lines'][-1]['entryDate']
infoLine['type'] = 'information'
infoLine['sequence'] = len(statement['lines']) + 1
infoLine['ref'] = rmspaces(line[2:10])
infoLine['transactionRef'] = rmspaces(line[10:31])
infoLine['transaction_family'] = rmspaces(line[32:34])
infoLine['transaction_code'] = rmspaces(line[34:36])
infoLine['transaction_category'] = rmspaces(line[36:39])
infoLine['communication'] = rmspaces(line[40:113])
statement['lines'].append(infoLine)
elif line[1] == '2':
if infoLine['ref'] != rmspaces(line[2:10]):
raise UserError(_('Error') + 'R3004: ' + _('CODA parsing error on information data record 3.2, seq nr %s! Please report this issue via your Odoo support channel.') % line[2:10])
statement['lines'][-1]['communication'] += rmspaces(line[10:100])
elif line[1] == '3':
if infoLine['ref'] != rmspaces(line[2:10]):
raise UserError(_('Error') + 'R3005: ' + _('CODA parsing error on information data record 3.3, seq nr %s! Please report this issue via your Odoo support channel.') % line[2:10])
statement['lines'][-1]['communication'] += rmspaces(line[10:100])
elif line[0] == '4':
comm_line = {}
comm_line['type'] = 'communication'
comm_line['sequence'] = len(statement['lines']) + 1
comm_line['ref'] = rmspaces(line[2:10])
comm_line['communication'] = rmspaces(line[32:112])
statement['lines'].append(comm_line)
elif line[0] == '8':
# new balance record
statement['debit'] = line[41]
statement['paperSeqNumber'] = rmspaces(line[1:4])
statement['balance_end_real'] = float(rmspaces(line[42:57])) / 1000
statement['balance_end_realDate'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[57:63]), '%d%m%y'))
if statement['debit'] == '1': # 1=Debit
statement['balance_end_real'] = - statement['balance_end_real']
elif line[0] == '9':
statement['balanceMin'] = float(rmspaces(line[22:37])) / 1000
statement['balancePlus'] = float(rmspaces(line[37:52])) / 1000
if not statement.get('balance_end_real'):
statement['balance_end_real'] = statement['balance_start'] + statement['balancePlus'] - statement['balanceMin']
ret_statements = []
for i, statement in enumerate(statements):
statement['coda_note'] = ''
statement_line = []
statement_data = {
'name': statement['paperSeqNumber'],
'date': statement['date'],
'balance_start': statement['balance_start'],
'balance_end_real': statement['balance_end_real'],
}
for line in statement['lines']:
if line['type'] == 'information':
statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' with Ref. ' + str(line['ref']), 'Date: ' + str(line['entryDate']), 'Communication: ' + line['communication'], ''])
elif line['type'] == 'communication':
statement['coda_note'] = "\n".join([statement['coda_note'], line['type'].title() + ' with Ref. ' + str(line['ref']), 'Ref: ', 'Communication: ' + line['communication'], ''])
elif line['type'] == 'normal':
note = []
if line.get('counterpartyName'):
note.append(_('Counter Party') + ': ' + line['counterpartyName'])
else:
line['counterpartyName'] = False
if line.get('counterpartyNumber'):
try:
if int(line['counterpartyNumber']) == 0:
line['counterpartyNumber'] = False
except:
pass
if line['counterpartyNumber']:
note.append(_('Counter Party Account') + ': ' + line['counterpartyNumber'])
else:
line['counterpartyNumber'] = False
if line.get('counterpartyAddress'):
note.append(_('Counter Party Address') + ': ' + line['counterpartyAddress'])
structured_com = False
if line['communication_struct'] and 'communication_type' in line and line['communication_type'] == '101':
structured_com = line['communication']
if line.get('communication', ''):
note.append(_('Communication') + ': ' + line['communication'])
line_data = {
'name': structured_com or (line.get('communication', '') != '' and line['communication'] or '/'),
'note': "\n".join(note),
'date': line['entryDate'],
'amount': line['amount'],
'account_number': line.get('counterpartyNumber', None),
'partner_name': line['counterpartyName'],
'ref': line['ref'],
'sequence': line['sequence'],
'unique_import_id': str(statement['codaSeqNumber']) + '-' + str(statement['date']) + '-' + str(line['ref']),
}
statement_line.append(line_data)
if statement['coda_note'] != '':
statement_data.update({'coda_note': statement['coda_note']})
statement_data.update({'transactions': statement_line})
ret_statements.append(statement_data)
currency_code = statement['currency']
acc_number = statements[0] and statements[0]['acc_number'] or False
return currency_code, acc_number, ret_statements