Merge branch '17.0-mig-account_ebics_oca_statement_import' into '17.0'

[MIG] account_ebics_oca_statement_import: Migration to 17.0

See merge request Noviat/Noviat_Generic/accounting-ebics!57
This commit is contained in:
Luc De Meyer 2024-05-19 07:35:49 +00:00
commit 4686b2a5ae
8 changed files with 130 additions and 0 deletions

View File

@ -0,0 +1,17 @@
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: https://www.gnu.org/licenses/lgpl
:alt: License: LGPL-3
==========================================================
Deploy account_ebics module with OCA Bank Statement Import
==========================================================
This module makes it possible to use the OCA account_statement_import wizard
in combination with 'account_ebics'.
This module will be installed automatically when following modules are activated
on your odoo database :
- account_ebics
- account_statement_import_file

View File

@ -0,0 +1 @@
from . import wizards

View File

@ -0,0 +1,19 @@
# Copyright 2020-2024 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
{
"name": "account_ebics with OCA Bank Statement Imoort",
"summary": "Use OCA Bank Statement Import with account_ebics",
"version": "17.0.1.0.0",
"author": "Noviat",
"website": "https://www.noviat.com",
"category": "Hidden",
"license": "LGPL-3",
"depends": [
"account_ebics",
"account_statement_import_file",
],
"installable": True,
"auto_install": True,
"images": ["static/description/cover.png"],
}

View File

@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1 @@
from . import account_statement_import

View File

@ -0,0 +1,89 @@
# Copyright 2009-2024 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
import logging
from datetime import date, datetime
from odoo import _, models
_logger = logging.getLogger(__name__)
class AccountStatementImport(models.TransientModel):
_inherit = "account.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.warning(log_msg)
return
return super()._check_parsed_data(stmts_vals)
def _create_bank_statements(self, stmts_vals, result):
"""
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":
return super()._create_bank_statements(stmts_vals, result)
else:
messages = []
transactions = False
for st_vals in stmts_vals:
statement_ids = result["statement_ids"][:]
self._set_statement_name(st_vals)
if st_vals.get("transactions"):
transactions = True
super()._create_bank_statements([st_vals], result)
if result["statement_ids"] == statement_ids:
# no statement has been created, this is the case
# when all transactions have been imported already
if isinstance(st_vals["date"], date) or isinstance(
st_vals["date"], datetime
):
st_date = st_vals["date"].strftime("%Y-%m-%d")
else:
st_date = st_vals["date"]
messages.append(
_(
"Statement %(st_name)s dated %(date)s "
"has already been imported.",
st_name=st_vals["name"],
date=st_date,
)
)
if not transactions:
messages.append(_("This file doesn't contain any transaction."))
if messages:
result["notifications"].append(
{"type": "warning", "message": "\n".join(messages)}
)
return
def _set_statement_name(self, st_vals):
"""
Inherit this method to set your own statement naming policy.
"""