mirror of
https://github.com/brain-tec/account_ebics.git
synced 2026-11-06 10:00:39 +00:00
[MIG] : Migration to 20.0
This commit is contained in:
1 parent
2e73b85130
commit
5353192edd
8 files changed
+47
-77
No files matched your search
@@ -5,7 +5,7 @@
|
|||||||
"name": "EBICS Banking Protocol",
|
"name": "EBICS Banking Protocol",
|
||||||
"summary": "Download bank statements and upload payment "
|
"summary": "Download bank statements and upload payment "
|
||||||
"files directly from Odoo, using the European EBICS standard",
|
"files directly from Odoo, using the European EBICS standard",
|
||||||
"version": "19.0.1.3.1",
|
"version": "20.0.1.0.0",
|
||||||
"license": "LGPL-3",
|
"license": "LGPL-3",
|
||||||
"author": "Noviat",
|
"author": "Noviat",
|
||||||
"website": "https://www.noviat.com/",
|
"website": "https://www.noviat.com/",
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"depends": ["account"],
|
"depends": ["account"],
|
||||||
"data": [
|
"data": [
|
||||||
"security/ebics_security.xml",
|
"security/ebics_security.xml",
|
||||||
"security/ir.model.access.csv",
|
"security/ir.access.csv",
|
||||||
"data/ebics_file_format.xml",
|
"data/ebics_file_format.xml",
|
||||||
"views/ebics_config_views.xml",
|
"views/ebics_config_views.xml",
|
||||||
"views/ebics_file_views.xml",
|
"views/ebics_file_views.xml",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import re
|
|||||||
from odoo import api, fields, models
|
from odoo import api, fields, models
|
||||||
from odoo.exceptions import UserError
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__) # lint-ignore=unused-logger
|
||||||
|
|
||||||
|
|
||||||
class EbicsConfig(models.Model):
|
class EbicsConfig(models.Model):
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# Copyright 2009-2025 Noviat.
|
# Copyright 2009-2025 Noviat.
|
||||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||||
|
|
||||||
import base64
|
|
||||||
import logging
|
import logging
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from sys import exc_info
|
from sys import exc_info
|
||||||
@@ -12,9 +11,9 @@ from lxml import etree
|
|||||||
from odoo import api, fields, models
|
from odoo import api, fields, models
|
||||||
from odoo.exceptions import UserError
|
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"]
|
DUP_CHECK_FORMATS = ["cfonb120", "camt053"]
|
||||||
|
|
||||||
@@ -202,7 +201,7 @@ class EbicsFile(models.Model):
|
|||||||
[
|
[
|
||||||
("type", "=", "bank"),
|
("type", "=", "bank"),
|
||||||
(
|
(
|
||||||
"bank_account_id.sanitized_acc_number",
|
"bank_account_id.sanitized_account_number",
|
||||||
"ilike",
|
"ilike",
|
||||||
acc_number,
|
acc_number,
|
||||||
),
|
),
|
||||||
@@ -381,7 +380,7 @@ class EbicsFile(models.Model):
|
|||||||
Statements without transactions are removed.
|
Statements without transactions are removed.
|
||||||
"""
|
"""
|
||||||
datas = []
|
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:
|
if len(file_data) % 120:
|
||||||
message = self.env._(
|
message = self.env._(
|
||||||
"Incorrect CFONB120 file:\nthe file is not divisible in 120 char lines"
|
"Incorrect CFONB120 file:\nthe file is not divisible in 120 char lines"
|
||||||
@@ -413,7 +412,7 @@ class EbicsFile(models.Model):
|
|||||||
"acc_number": acc_number,
|
"acc_number": acc_number,
|
||||||
"journal_id": journal.id,
|
"journal_id": journal.id,
|
||||||
"company_id": journal.company_id.id,
|
"company_id": journal.company_id.id,
|
||||||
"data": base64.b64encode(st_lines),
|
"data": st_lines,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
st_lines = b""
|
st_lines = b""
|
||||||
@@ -500,7 +499,7 @@ class EbicsFile(models.Model):
|
|||||||
.with_context(active_model="ebics.file")
|
.with_context(active_model="ebics.file")
|
||||||
.create({"statement_filename": self.name})
|
.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):
|
def _process_bank_statement_oe(self, res, st_datas):
|
||||||
"""
|
"""
|
||||||
@@ -530,8 +529,7 @@ class EbicsFile(models.Model):
|
|||||||
.create(
|
.create(
|
||||||
{
|
{
|
||||||
"name": self.name,
|
"name": self.name,
|
||||||
"datas": st_data["data"],
|
"raw": st_data["data"],
|
||||||
"store_fname": self.name,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -565,7 +563,7 @@ class EbicsFile(models.Model):
|
|||||||
Statements without transactions are removed.
|
Statements without transactions are removed.
|
||||||
"""
|
"""
|
||||||
datas = []
|
datas = []
|
||||||
file_data = base64.b64decode(self.data)
|
file_data = bytes(self.data)
|
||||||
root = etree.fromstring(file_data, parser=etree.XMLParser(recover=True))
|
root = etree.fromstring(file_data, parser=etree.XMLParser(recover=True))
|
||||||
if root is None:
|
if root is None:
|
||||||
message = self.env._("Invalid XML file.")
|
message = self.env._("Invalid XML file.")
|
||||||
@@ -623,7 +621,7 @@ class EbicsFile(models.Model):
|
|||||||
"acc_number": acc_number,
|
"acc_number": acc_number,
|
||||||
"journal_id": journal.id,
|
"journal_id": journal.id,
|
||||||
"company_id": journal.company_id.id,
|
"company_id": journal.company_id.id,
|
||||||
"data": base64.b64encode(etree.tostring(root_new)),
|
"data": etree.tostring(root_new),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -8,33 +8,4 @@
|
|||||||
<field name="name">EBICS Manager</field>
|
<field name="name">EBICS Manager</field>
|
||||||
<field name="privilege_id" ref="res_groups_privilege_ebics_manager" />
|
<field name="privilege_id" ref="res_groups_privilege_ebics_manager" />
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<data noupdate="1">
|
|
||||||
<record id="ebics_config_comp_rule" model="ir.rule">
|
|
||||||
<field name="name">EBICS Configuration model company rule</field>
|
|
||||||
<field name="model_id" ref="model_ebics_config" />
|
|
||||||
<field eval="True" name="global" />
|
|
||||||
<field
|
|
||||||
name="domain_force"
|
|
||||||
>['|', ('company_ids', '=', False), ('company_ids', 'in', user.company_ids.ids)]</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="ebics_userid_comp_rule" model="ir.rule">
|
|
||||||
<field name="name">EBICS UserID model company rule</field>
|
|
||||||
<field name="model_id" ref="model_ebics_userid" />
|
|
||||||
<field eval="True" name="global" />
|
|
||||||
<field
|
|
||||||
name="domain_force"
|
|
||||||
>['|', ('company_ids', '=', False), ('company_ids', 'in', user.company_ids.ids)]</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="ebics_file_comp_rule" model="ir.rule">
|
|
||||||
<field name="name">EBICS File model company rule</field>
|
|
||||||
<field name="model_id" ref="model_ebics_file" />
|
|
||||||
<field eval="True" name="global" />
|
|
||||||
<field
|
|
||||||
name="domain_force"
|
|
||||||
>['|', ('company_ids', '=', False), ('company_ids', 'in', user.company_ids.ids)]</field>
|
|
||||||
</record>
|
|
||||||
</data>
|
|
||||||
</odoo>
|
</odoo>
|
||||||
@@ -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)]"
|
||||||
|
@@ -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
|
|
||||||
|
@@ -7,27 +7,11 @@
|
|||||||
sequence="4"
|
sequence="4"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<menuitem
|
|
||||||
id="ebics_xfer_menu_download"
|
|
||||||
name="EBICS Download"
|
|
||||||
parent="ebics_processing_menu"
|
|
||||||
action="ebics_xfer_action_download"
|
|
||||||
sequence="10"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<menuitem
|
|
||||||
id="ebics_xfer_menu_upload"
|
|
||||||
name="EBICS Upload"
|
|
||||||
parent="ebics_processing_menu"
|
|
||||||
action="ebics_xfer_action_upload"
|
|
||||||
sequence="20"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="ebics_file_menu"
|
id="ebics_file_menu"
|
||||||
name="EBICS Files"
|
name="EBICS Files"
|
||||||
parent="ebics_processing_menu"
|
parent="ebics_processing_menu"
|
||||||
sequence="30"
|
sequence="10"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
@@ -46,6 +30,22 @@
|
|||||||
sequence="20"
|
sequence="20"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="ebics_xfer_menu_download"
|
||||||
|
name="EBICS Download"
|
||||||
|
parent="ebics_processing_menu"
|
||||||
|
action="ebics_xfer_action_download"
|
||||||
|
sequence="20"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="ebics_xfer_menu_upload"
|
||||||
|
name="EBICS Upload"
|
||||||
|
parent="ebics_processing_menu"
|
||||||
|
action="ebics_xfer_action_upload"
|
||||||
|
sequence="30"
|
||||||
|
/>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="ebics_menu"
|
id="ebics_menu"
|
||||||
name="EBICS"
|
name="EBICS"
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Copyright 2009-2025 Noviat.
|
# Copyright 2009-2025 Noviat.
|
||||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||||
|
|
||||||
import base64
|
|
||||||
import logging
|
import logging
|
||||||
from sys import exc_info
|
from sys import exc_info
|
||||||
from traceback import format_exception
|
from traceback import format_exception
|
||||||
|
|
||||||
from odoo import SUPERUSER_ID, api, fields, models
|
from odoo import SUPERUSER_ID, api, fields, models
|
||||||
from odoo.exceptions import UserError
|
from odoo.exceptions import UserError
|
||||||
|
from odoo.tools.binary import BinaryBytes
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -370,7 +370,7 @@ class EbicsXfer(models.TransientModel):
|
|||||||
self.note = ""
|
self.note = ""
|
||||||
client = self._setup_client()
|
client = self._setup_client()
|
||||||
if client:
|
if client:
|
||||||
upload_data = base64.decodebytes(self.upload_data)
|
upload_data = bytes(self.upload_data)
|
||||||
ef_format = self.format_id
|
ef_format = self.format_id
|
||||||
OrderID = False
|
OrderID = False
|
||||||
try:
|
try:
|
||||||
@@ -619,10 +619,9 @@ class EbicsXfer(models.TransientModel):
|
|||||||
fn,
|
fn,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
data = base64.encodebytes(data)
|
|
||||||
ef_vals = {
|
ef_vals = {
|
||||||
"name": fn,
|
"name": fn,
|
||||||
"data": data,
|
"data": BinaryBytes(data),
|
||||||
"date": fields.Datetime.now(),
|
"date": fields.Datetime.now(),
|
||||||
"date_from": self.date_from,
|
"date_from": self.date_from,
|
||||||
"date_to": self.date_to,
|
"date_to": self.date_to,
|
||||||
|
|||||||
Reference in new issue
Block a user