mirror of
https://github.com/brain-tec/account_ebics.git
synced 2024-11-27 14:37:25 +00:00
improved support empty statements and oca camt parser
This commit is contained in:
parent
8e2c4f42ea
commit
b10815b2a6
@ -1,9 +1,9 @@
|
|||||||
# Copyright 2009-2018 Noviat.
|
# Copyright 2009-2019 Noviat.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'EBICS banking protocol',
|
'name': 'EBICS banking protocol',
|
||||||
'version': '11.0.1.5.0',
|
'version': '11.0.1.6.0',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'author': 'Noviat',
|
'author': 'Noviat',
|
||||||
'category': 'Accounting & Finance',
|
'category': 'Accounting & Finance',
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2009-2018 Noviat.
|
# Copyright 2009-2019 Noviat.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -288,7 +288,7 @@ class EbicsConfig(models.Model):
|
|||||||
user = EbicsUser(
|
user = EbicsUser(
|
||||||
keyring=keyring, partnerid=self.ebics_partner,
|
keyring=keyring, partnerid=self.ebics_partner,
|
||||||
userid=self.ebics_user)
|
userid=self.ebics_user)
|
||||||
except:
|
except Exception:
|
||||||
exctype, value = exc_info()[:2]
|
exctype, value = exc_info()[:2]
|
||||||
error = _("EBICS Initialisation Error:")
|
error = _("EBICS Initialisation Error:")
|
||||||
error += '\n' + str(exctype) + '\n' + str(value)
|
error += '\n' + str(exctype) + '\n' + str(value)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2009-2018 Noviat.
|
# Copyright 2009-2019 Noviat.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@ -136,7 +136,7 @@ class EbicsFile(models.Model):
|
|||||||
|
|
||||||
def _check_import_module(self, module):
|
def _check_import_module(self, module):
|
||||||
mod = self.env['ir.module.module'].search(
|
mod = self.env['ir.module.module'].search(
|
||||||
[('name', '=', module),
|
[('name', '=like', module),
|
||||||
('state', '=', 'installed')])
|
('state', '=', 'installed')])
|
||||||
if not mod:
|
if not mod:
|
||||||
raise UserError(_(
|
raise UserError(_(
|
||||||
@ -207,14 +207,15 @@ class EbicsFile(models.Model):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _process_camt053(self):
|
def _process_camt053(self):
|
||||||
import_module = 'account_bank_statement_import_camt'
|
import_module = 'account_bank_statement_import_camt%'
|
||||||
self._check_import_module(import_module)
|
self._check_import_module(import_module)
|
||||||
wiz_model = 'account.bank.statement.import'
|
wiz_model = 'account.bank.statement.import'
|
||||||
wiz_vals = {
|
wiz_vals = {
|
||||||
'data_file': self.data,
|
'data_file': self.data,
|
||||||
'filename': self.name,
|
'filename': self.name,
|
||||||
}
|
}
|
||||||
wiz = self.env[wiz_model].create(wiz_vals)
|
ctx = dict(self.env.context, active_model='ebics.file')
|
||||||
|
wiz = self.env[wiz_model].with_context(ctx).create(wiz_vals)
|
||||||
res = wiz.import_file()
|
res = wiz.import_file()
|
||||||
if res.get('res_model') \
|
if res.get('res_model') \
|
||||||
== 'account.bank.statement.import.journal.creation':
|
== 'account.bank.statement.import.journal.creation':
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2009-2018 Noviat.
|
# Copyright 2009-2019 Noviat.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@ -32,7 +32,7 @@ except RuntimeError as e:
|
|||||||
else:
|
else:
|
||||||
_logger.error(e.message)
|
_logger.error(e.message)
|
||||||
fintech.register()
|
fintech.register()
|
||||||
except:
|
except Exception:
|
||||||
msg = "fintech.register error"
|
msg = "fintech.register error"
|
||||||
tb = ''.join(format_exception(*exc_info()))
|
tb = ''.join(format_exception(*exc_info()))
|
||||||
msg += '\n%s' % tb
|
msg += '\n%s' % tb
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
type="object"
|
type="object"
|
||||||
groups="account.group_account_manager"
|
groups="account.group_account_manager"
|
||||||
help="Process the EBICS File"/>
|
help="Process the EBICS File"/>
|
||||||
|
<button name="set_to_done" states="draft" string="Set to Done" type="object" groups="account.group_account_manager"/>
|
||||||
<field name="state" widget="statusbar"/>
|
<field name="state" widget="statusbar"/>
|
||||||
</header>
|
</header>
|
||||||
<group colspan="4" col="4">
|
<group colspan="4" col="4">
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
|
from . import account_bank_statement_import
|
||||||
from . import ebics_change_passphrase
|
from . import ebics_change_passphrase
|
||||||
from . import ebics_xfer
|
from . import ebics_xfer
|
||||||
|
62
account_ebics/wizard/account_bank_statement_import.py
Normal file
62
account_ebics/wizard/account_bank_statement_import.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Copyright 2009-2019 Noviat.
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from odoo import models, _
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class AccountBankStatementImport(models.TransientModel):
|
||||||
|
_inherit = 'account.bank.statement.import'
|
||||||
|
|
||||||
|
def _check_parsed_data(self, stmts_vals):
|
||||||
|
""" Basic and structural verifications """
|
||||||
|
if self.env.context.get('active_model') == 'ebics.file':
|
||||||
|
message = False
|
||||||
|
if len(stmts_vals) == 0:
|
||||||
|
message = _('This file doesn\'t contain any statement.')
|
||||||
|
if not message:
|
||||||
|
no_st_line = True
|
||||||
|
for vals in stmts_vals:
|
||||||
|
if vals['transactions'] and len(vals['transactions']) > 0:
|
||||||
|
no_st_line = False
|
||||||
|
break
|
||||||
|
if no_st_line:
|
||||||
|
message = _('This file doesn\'t contain any transaction.')
|
||||||
|
if message:
|
||||||
|
log_msg = _(
|
||||||
|
"Error detected while processing and EBICS File"
|
||||||
|
) + ':\n' + message
|
||||||
|
_logger.warn(log_msg)
|
||||||
|
return
|
||||||
|
super()._check_parsed_data(stmts_vals)
|
||||||
|
|
||||||
|
def _create_bank_statements(self, stmts_vals):
|
||||||
|
"""
|
||||||
|
Return error message to ebics.file when handling empty camt.
|
||||||
|
|
||||||
|
Remarks/TODO:
|
||||||
|
We could add more info to the message (e.g. date, balance, ...)
|
||||||
|
and write this to the ebics.file, note field.
|
||||||
|
We could also create empty bank statement (in state done) to clearly
|
||||||
|
show days without transactions via the bank statement list view.
|
||||||
|
"""
|
||||||
|
if self.env.context.get('active_model') == 'ebics.file':
|
||||||
|
transactions = False
|
||||||
|
for st_vals in stmts_vals:
|
||||||
|
if st_vals.get('transactions'):
|
||||||
|
transactions = True
|
||||||
|
break
|
||||||
|
if not transactions:
|
||||||
|
message = _('This file doesn\'t contain any transaction.')
|
||||||
|
statement_ids = []
|
||||||
|
notifications = {
|
||||||
|
'type': 'warning',
|
||||||
|
'message': message,
|
||||||
|
'details': ''
|
||||||
|
}
|
||||||
|
return statement_ids, [notifications]
|
||||||
|
|
||||||
|
return super()._create_bank_statements(stmts_vals)
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2009-2018 Noviat.
|
# Copyright 2009-2019 Noviat.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2009-2018 Noviat.
|
# Copyright 2009-2019 Noviat.
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -199,7 +199,7 @@ class EbicsXfer(models.TransientModel):
|
|||||||
self.note += _("Warning:")
|
self.note += _("Warning:")
|
||||||
self.note += '\n'
|
self.note += '\n'
|
||||||
self.note += e.message
|
self.note += e.message
|
||||||
except:
|
except Exception:
|
||||||
self.note += '\n'
|
self.note += '\n'
|
||||||
self.note += _("Unknown Error")
|
self.note += _("Unknown Error")
|
||||||
tb = ''.join(format_exception(*exc_info()))
|
tb = ''.join(format_exception(*exc_info()))
|
||||||
@ -321,7 +321,7 @@ class EbicsXfer(models.TransientModel):
|
|||||||
self.note += _("EBICS Verification Error:")
|
self.note += _("EBICS Verification Error:")
|
||||||
self.note += '\n'
|
self.note += '\n'
|
||||||
self.note += _("The EBICS response could not be verified.")
|
self.note += _("The EBICS response could not be verified.")
|
||||||
except:
|
except Exception:
|
||||||
self.note += '\n'
|
self.note += '\n'
|
||||||
self.note += _("Unknown Error")
|
self.note += _("Unknown Error")
|
||||||
tb = ''.join(format_exception(*exc_info()))
|
tb = ''.join(format_exception(*exc_info()))
|
||||||
@ -359,7 +359,7 @@ class EbicsXfer(models.TransientModel):
|
|||||||
try:
|
try:
|
||||||
client = EbicsClient(
|
client = EbicsClient(
|
||||||
bank, user, version=self.ebics_config_id.ebics_version)
|
bank, user, version=self.ebics_config_id.ebics_version)
|
||||||
except:
|
except Exception:
|
||||||
self.note += '\n'
|
self.note += '\n'
|
||||||
self.note += _("Unknown Error")
|
self.note += _("Unknown Error")
|
||||||
tb = ''.join(format_exception(*exc_info()))
|
tb = ''.join(format_exception(*exc_info()))
|
||||||
|
Loading…
Reference in New Issue
Block a user