diff --git a/account_ebics/__manifest__.py b/account_ebics/__manifest__.py
index 1ad0301..6547882 100644
--- a/account_ebics/__manifest__.py
+++ b/account_ebics/__manifest__.py
@@ -5,7 +5,7 @@
"name": "EBICS Banking Protocol",
"summary": "Download bank statements and upload payment "
"files directly from Odoo, using the European EBICS standard",
- "version": "19.0.1.3.1",
+ "version": "20.0.1.0.0",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -13,7 +13,7 @@
"depends": ["account"],
"data": [
"security/ebics_security.xml",
- "security/ir.model.access.csv",
+ "security/ir.access.csv",
"data/ebics_file_format.xml",
"views/ebics_config_views.xml",
"views/ebics_file_views.xml",
diff --git a/account_ebics/models/ebics_config.py b/account_ebics/models/ebics_config.py
index 463653a..0665f15 100644
--- a/account_ebics/models/ebics_config.py
+++ b/account_ebics/models/ebics_config.py
@@ -8,7 +8,7 @@ import re
from odoo import api, fields, models
from odoo.exceptions import UserError
-_logger = logging.getLogger(__name__)
+_logger = logging.getLogger(__name__) # lint-ignore=unused-logger
class EbicsConfig(models.Model):
diff --git a/account_ebics/models/ebics_file.py b/account_ebics/models/ebics_file.py
index b63df42..7e6c956 100644
--- a/account_ebics/models/ebics_file.py
+++ b/account_ebics/models/ebics_file.py
@@ -1,7 +1,6 @@
# Copyright 2009-2025 Noviat.
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
-import base64
import logging
from copy import deepcopy
from sys import exc_info
@@ -12,9 +11,9 @@ from lxml import etree
from odoo import api, fields, models
from odoo.exceptions import UserError
-from odoo.addons.base.models.res_bank import sanitize_account_number
+from odoo.addons.base.models.res_partner_bank import sanitize_account_number
-_logger = logging.getLogger(__name__)
+_logger = logging.getLogger(__name__) # lint-ignore=unused-logger
DUP_CHECK_FORMATS = ["cfonb120", "camt053"]
@@ -202,7 +201,7 @@ class EbicsFile(models.Model):
[
("type", "=", "bank"),
(
- "bank_account_id.sanitized_acc_number",
+ "bank_account_id.sanitized_account_number",
"ilike",
acc_number,
),
@@ -381,7 +380,7 @@ class EbicsFile(models.Model):
Statements without transactions are removed.
"""
datas = []
- file_data = base64.b64decode(self.data).replace(b"\n", b"").replace(b"\r", b"")
+ file_data = bytes(self.data).replace(b"\n", b"").replace(b"\r", b"")
if len(file_data) % 120:
message = self.env._(
"Incorrect CFONB120 file:\nthe file is not divisible in 120 char lines"
@@ -413,7 +412,7 @@ class EbicsFile(models.Model):
"acc_number": acc_number,
"journal_id": journal.id,
"company_id": journal.company_id.id,
- "data": base64.b64encode(st_lines),
+ "data": st_lines,
}
)
st_lines = b""
@@ -500,7 +499,7 @@ class EbicsFile(models.Model):
.with_context(active_model="ebics.file")
.create({"statement_filename": self.name})
)
- wiz.import_single_file(base64.b64decode(st_data["data"]), res)
+ wiz.import_single_file(st_data["data"], res)
def _process_bank_statement_oe(self, res, st_datas):
"""
@@ -530,8 +529,7 @@ class EbicsFile(models.Model):
.create(
{
"name": self.name,
- "datas": st_data["data"],
- "store_fname": self.name,
+ "raw": st_data["data"],
}
)
)
@@ -565,7 +563,7 @@ class EbicsFile(models.Model):
Statements without transactions are removed.
"""
datas = []
- file_data = base64.b64decode(self.data)
+ file_data = bytes(self.data)
root = etree.fromstring(file_data, parser=etree.XMLParser(recover=True))
if root is None:
message = self.env._("Invalid XML file.")
@@ -623,7 +621,7 @@ class EbicsFile(models.Model):
"acc_number": acc_number,
"journal_id": journal.id,
"company_id": journal.company_id.id,
- "data": base64.b64encode(etree.tostring(root_new)),
+ "data": etree.tostring(root_new),
}
)
diff --git a/account_ebics/security/ebics_security.xml b/account_ebics/security/ebics_security.xml
index 7206b0b..c2ae520 100644
--- a/account_ebics/security/ebics_security.xml
+++ b/account_ebics/security/ebics_security.xml
@@ -8,33 +8,4 @@
EBICS Manager
-
-
-
- EBICS Configuration model company rule
-
-
- ['|', ('company_ids', '=', False), ('company_ids', 'in', user.company_ids.ids)]
-
-
-
- EBICS UserID model company rule
-
-
- ['|', ('company_ids', '=', False), ('company_ids', 'in', user.company_ids.ids)]
-
-
-
- EBICS File model company rule
-
-
- ['|', ('company_ids', '=', False), ('company_ids', 'in', user.company_ids.ids)]
-
-
diff --git a/account_ebics/security/ir.access.csv b/account_ebics/security/ir.access.csv
new file mode 100644
index 0000000..297d576
--- /dev/null
+++ b/account_ebics/security/ir.access.csv
@@ -0,0 +1,15 @@
+id,name,model_id,group_id/id,operation,domain
+access_ebics_config_manager,ebics_config manager,ebics.config,account_ebics.group_ebics_manager,crud,
+access_ebics_config_user,ebics_config user,ebics.config,account.group_account_invoice,r,
+access_ebics_userid_manager,ebics_userid manager,ebics.userid,account_ebics.group_ebics_manager,crud,
+access_ebics_userid_user,ebics_userid user,ebics.userid,account.group_account_invoice,r,
+access_ebics_file_format_manager,ebics_file_format manager,ebics.file.format,account_ebics.group_ebics_manager,crud,
+access_ebics_file_format_user,ebics_file_format user,ebics.file.format,account.group_account_invoice,r,
+access_ebics_file_manager,ebics_file manager,ebics.file,account_ebics.group_ebics_manager,crud,
+access_ebics_file_user,ebics_file user,ebics.file,account.group_account_invoice,cru,
+access_ebics_change_passphrase,access_ebics_change_passphrase,ebics.change.passphrase,account_ebics.group_ebics_manager,cru,
+access_ebics_xfer,access_ebics_xfer,ebics.xfer,account.group_account_invoice,cru,
+access_ebics_admin_order,access_ebics_admin_order,ebics.admin.order,account_ebics.group_ebics_manager,cru,
+ebics_config_comp_rule,EBICS Configuration model company rule,ebics.config,,crud,"['|', ('company_ids', '=', False), ('company_ids', 'in', company_ids)]"
+ebics_userid_comp_rule,EBICS UserID model company rule,ebics.userid,,crud,"['|', ('company_ids', '=', False), ('company_ids', 'in', company_ids)]"
+ebics_file_comp_rule,EBICS File model company rule,ebics.file,,crud,"['|', ('company_ids', '=', False), ('company_ids', 'in', company_ids)]"
diff --git a/account_ebics/security/ir.model.access.csv b/account_ebics/security/ir.model.access.csv
deleted file mode 100644
index 97d1f3f..0000000
--- a/account_ebics/security/ir.model.access.csv
+++ /dev/null
@@ -1,13 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_ebics_config_manager,ebics_config manager,model_ebics_config,group_ebics_manager,1,1,1,1
-access_ebics_config_user,ebics_config user,model_ebics_config,account.group_account_invoice,1,0,0,0
-access_ebics_userid_manager,ebics_userid manager,model_ebics_userid,group_ebics_manager,1,1,1,1
-access_ebics_userid_user,ebics_userid user,model_ebics_userid,account.group_account_invoice,1,0,0,0
-access_ebics_file_format_manager,ebics_file_format manager,model_ebics_file_format,group_ebics_manager,1,1,1,1
-access_ebics_file_format_user,ebics_file_format user,model_ebics_file_format,account.group_account_invoice,1,0,0,0
-access_ebics_file_manager,ebics_file manager,model_ebics_file,group_ebics_manager,1,1,1,1
-access_ebics_file_user,ebics_file user,model_ebics_file,account.group_account_invoice,1,1,1,0
-
-access_ebics_change_passphrase,access_ebics_change_passphrase,model_ebics_change_passphrase,group_ebics_manager,1,1,1,0
-access_ebics_xfer,access_ebics_xfer,model_ebics_xfer,account.group_account_invoice,1,1,1,0
-access_ebics_admin_order,access_ebics_admin_order,model_ebics_admin_order,group_ebics_manager,1,1,1,0
diff --git a/account_ebics/views/menu.xml b/account_ebics/views/menu.xml
index b77f1f8..2f84714 100644
--- a/account_ebics/views/menu.xml
+++ b/account_ebics/views/menu.xml
@@ -7,27 +7,11 @@
sequence="4"
/>
-
-
-
-
+
+
+
+