diff --git a/account_ebics/__manifest__.py b/account_ebics/__manifest__.py
index c0822b0..b9bd17d 100644
--- a/account_ebics/__manifest__.py
+++ b/account_ebics/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "EBICS banking protocol",
- "version": "17.0.1.0.2",
+ "version": "17.0.1.1.0",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com",
diff --git a/account_ebics/wizards/ebics_xfer.py b/account_ebics/wizards/ebics_xfer.py
index d64aae0..1b9925d 100644
--- a/account_ebics/wizards/ebics_xfer.py
+++ b/account_ebics/wizards/ebics_xfer.py
@@ -1,4 +1,4 @@
-# Copyright 2009-2023 Noviat.
+# Copyright 2009-2024 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
import base64
@@ -79,6 +79,9 @@ class EbicsXfer(models.TransientModel):
help="Select EBICS File Format to upload/download."
"\nLeave blank to download all available files.",
)
+ upload_format_ids = fields.Many2many(
+ comodel_name="ebics.file.format", compute="_compute_upload_format_ids"
+ )
allowed_format_ids = fields.Many2many(
related="ebics_config_id.ebics_file_format_ids",
string="Allowed EBICS File Formats",
@@ -117,6 +120,17 @@ class EbicsXfer(models.TransientModel):
else:
rec.ebics_sig_passphrase_invisible = False
+ @api.depends("ebics_config_id")
+ def _compute_upload_format_ids(self):
+ for rec in self:
+ rec.upload_format_ids = False
+ if not self.env.context.get("ebics_download"):
+ rec.upload_format_ids = (
+ rec.ebics_config_id.ebics_file_format_ids.filtered(
+ lambda r: r.type == "up"
+ )
+ )
+
@api.onchange("ebics_config_id")
def _onchange_ebics_config_id(self):
avail_userids = self.ebics_config_id.ebics_userid_ids.filtered(
@@ -127,21 +141,26 @@ class EbicsXfer(models.TransientModel):
avail_formats = self.ebics_config_id.ebics_file_format_ids.filtered(
lambda r: r.type == "down"
)
+ if avail_formats and len(avail_formats) == 1:
+ self.format_id = avail_formats
+ else:
+ self.format_id = False
avail_userids = avail_userids.filtered(
lambda r: r.transaction_rights in ["both", "down"]
)
else: # Upload Form
- avail_formats = self.ebics_config_id.ebics_file_format_ids.filtered(
- lambda r: r.type == "up"
- )
+ if not self.env.context.get("active_model") == "account.payment.order":
+ avail_formats = self.ebics_config_id.ebics_file_format_ids.filtered(
+ lambda r: r.type == "up"
+ )
+ if avail_formats and len(avail_formats) == 1:
+ self.format_id = avail_formats
+ else:
+ self.format_id = False
avail_userids = avail_userids.filtered(
lambda r: r.transaction_rights in ["both", "up"]
)
- if avail_formats and len(avail_formats) == 1:
- self.format_id = avail_formats
- else:
- self.format_id = False
if avail_userids:
if len(avail_userids) == 1:
self.ebics_userid_id = avail_userids
@@ -156,6 +175,8 @@ class EbicsXfer(models.TransientModel):
@api.onchange("upload_data")
def _onchange_upload_data(self):
+ if self.env.context.get("active_model") == "account.payment.order":
+ return
self.upload_fname_dummy = self.upload_fname
self.format_id = False
self._detect_upload_format()
@@ -173,10 +194,6 @@ class EbicsXfer(models.TransientModel):
if len(upload_formats) == 1:
self.format_id = upload_formats
- @api.onchange("format_id")
- def _onchange_format_id(self):
- self.order_type = self.format_id.order_type
-
def ebics_upload(self):
self.ensure_one()
ctx = self._context.copy()
diff --git a/account_ebics/wizards/ebics_xfer.xml b/account_ebics/wizards/ebics_xfer.xml
index adb5f7d..ceb9905 100644
--- a/account_ebics/wizards/ebics_xfer.xml
+++ b/account_ebics/wizards/ebics_xfer.xml
@@ -91,10 +91,12 @@
+
diff --git a/account_ebics_batch_payment/__manifest__.py b/account_ebics_batch_payment/__manifest__.py
index e439212..e101e62 100644
--- a/account_ebics_batch_payment/__manifest__.py
+++ b/account_ebics_batch_payment/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Upload Batch Payment via EBICS",
- "version": "17.0.1.0.0",
+ "version": "17.0.1.0.1",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com",
diff --git a/account_ebics_batch_payment/models/account_batch_payment.py b/account_ebics_batch_payment/models/account_batch_payment.py
index fa5b133..e5fc81a 100644
--- a/account_ebics_batch_payment/models/account_batch_payment.py
+++ b/account_ebics_batch_payment/models/account_batch_payment.py
@@ -37,7 +37,6 @@ class AccountBatchPayment(models.Model):
ebics_xfer = self.env["ebics.xfer"].with_context(**ctx).create({})
ebics_xfer._onchange_ebics_config_id()
ebics_xfer._onchange_upload_data()
- ebics_xfer._onchange_format_id()
view = self.env.ref("account_ebics.ebics_xfer_view_form_upload")
act = {
"name": _("EBICS Upload"),
diff --git a/account_ebics_payment_order/README.rst b/account_ebics_payment_order/README.rst
index 2bb94ee..571a0fc 100644
--- a/account_ebics_payment_order/README.rst
+++ b/account_ebics_payment_order/README.rst
@@ -16,9 +16,13 @@ This module depends upon the following modules (cf. apps.odoo.com):
- account_ebics
- account_payment_order
+Configuration
+=============
+
+Set the EBICS File Format on your Payment Modes.
+
Usage
=====
Create your Payment Order and generate the bank file.
Upload the generated file via the 'EBICS Upload' button on the payment order.
-
diff --git a/account_ebics_payment_order/__manifest__.py b/account_ebics_payment_order/__manifest__.py
index f4da019..9e498ba 100644
--- a/account_ebics_payment_order/__manifest__.py
+++ b/account_ebics_payment_order/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Upload Payment Order via EBICS",
- "version": "17.0.1.0.0",
+ "version": "17.0.1.1.0",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com",
@@ -11,6 +11,7 @@
"depends": ["account_ebics", "account_payment_order"],
"data": [
"views/account_payment_order_views.xml",
+ "views/account_payment_mode_views.xml",
],
"images": ["static/description/cover.png"],
"installable": True,
diff --git a/account_ebics_payment_order/models/__init__.py b/account_ebics_payment_order/models/__init__.py
index 429f032..72b2653 100644
--- a/account_ebics_payment_order/models/__init__.py
+++ b/account_ebics_payment_order/models/__init__.py
@@ -1 +1,2 @@
+from . import account_payment_mode
from . import account_payment_order
diff --git a/account_ebics_payment_order/models/account_payment_mode.py b/account_ebics_payment_order/models/account_payment_mode.py
new file mode 100644
index 0000000..92a9fc4
--- /dev/null
+++ b/account_ebics_payment_order/models/account_payment_mode.py
@@ -0,0 +1,15 @@
+# Copyright 2009-2024 Noviat.
+# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).
+
+from odoo import fields, models
+
+
+class AccountPaymentMode(models.Model):
+ _inherit = "account.payment.mode"
+
+ ebics_format_id = fields.Many2one(
+ comodel_name="ebics.file.format",
+ string="EBICS File Format",
+ domain="[('type', '=', 'up')]",
+ help="Select EBICS File Format to upload.",
+ )
diff --git a/account_ebics_payment_order/models/account_payment_order.py b/account_ebics_payment_order/models/account_payment_order.py
index 03a49b6..14bfa7d 100644
--- a/account_ebics_payment_order/models/account_payment_order.py
+++ b/account_ebics_payment_order/models/account_payment_order.py
@@ -1,4 +1,4 @@
-# Copyright 2009-2023 Noviat.
+# Copyright 2009-2024 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
from odoo import _, models
@@ -10,6 +10,18 @@ class AccountPaymentOrder(models.Model):
def ebics_upload(self):
self.ensure_one()
+ ctx = self.env.context.copy()
+ ebics_format_id = self.payment_mode_id.ebics_format_id
+ if not ebics_format_id:
+ raise UserError(
+ _("Missing EBICS File Format setting on your Payment Mode.")
+ )
+ ctx.update(
+ {
+ "active_model": self._name,
+ "default_format_id": ebics_format_id.id,
+ }
+ )
attach = self.env["ir.attachment"].search(
[("res_model", "=", self._name), ("res_id", "=", self.id)]
)
@@ -44,7 +56,6 @@ class AccountPaymentOrder(models.Model):
"for the selected bank."
)
)
- ctx = self.env.context.copy()
if len(ebics_config) == 1:
ctx["default_ebics_config_id"] = ebics_config.id
ctx.update(
@@ -52,13 +63,16 @@ class AccountPaymentOrder(models.Model):
"default_upload_data": attach.datas,
"default_upload_fname": attach.name,
"origin": origin,
- "force_comany": self.company_id.id,
}
)
- ebics_xfer = self.env["ebics.xfer"].with_context(**ctx).create({})
+ ebics_xfer = (
+ self.env["ebics.xfer"]
+ .with_company(self.company_id)
+ .with_context(**ctx)
+ .create({})
+ )
ebics_xfer._onchange_ebics_config_id()
ebics_xfer._onchange_upload_data()
- ebics_xfer._onchange_format_id()
view = self.env.ref("account_ebics.ebics_xfer_view_form_upload")
act = {
"name": _("EBICS Upload"),
diff --git a/account_ebics_payment_order/views/account_payment_mode_views.xml b/account_ebics_payment_order/views/account_payment_mode_views.xml
new file mode 100644
index 0000000..9aeafa5
--- /dev/null
+++ b/account_ebics_payment_order/views/account_payment_mode_views.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ account.payment.mode.form
+ account.payment.mode
+
+
+
+
+
+
+
+
+