From 19ac7421f1105703bd79bb01c37c1b571413ca64 Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Mon, 6 May 2024 20:15:49 +0200 Subject: [PATCH 1/4] [IMP]account_ebics: file format filter on ebics_upload Set file format fiter when creating the ebics.xfer wizard from a python method, e.g. 'EBICS UPLOAD' button on payment order. --- account_ebics/__manifest__.py | 2 +- account_ebics/wizards/ebics_xfer.py | 16 +++++++++++++++- account_ebics/wizards/ebics_xfer.xml | 3 ++- .../models/account_payment_order.py | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) 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..18f97a6 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( diff --git a/account_ebics/wizards/ebics_xfer.xml b/account_ebics/wizards/ebics_xfer.xml index adb5f7d..a531c95 100644 --- a/account_ebics/wizards/ebics_xfer.xml +++ b/account_ebics/wizards/ebics_xfer.xml @@ -91,10 +91,11 @@ + diff --git a/account_ebics_payment_order/models/account_payment_order.py b/account_ebics_payment_order/models/account_payment_order.py index 03a49b6..030f313 100644 --- a/account_ebics_payment_order/models/account_payment_order.py +++ b/account_ebics_payment_order/models/account_payment_order.py @@ -52,7 +52,7 @@ class AccountPaymentOrder(models.Model): "default_upload_data": attach.datas, "default_upload_fname": attach.name, "origin": origin, - "force_comany": self.company_id.id, + "force_company": self.company_id.id, } ) ebics_xfer = self.env["ebics.xfer"].with_context(**ctx).create({}) From e31e2a304a1ed05d245bd12b46d9d3fe199c4a7e Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Sun, 12 May 2024 17:04:49 +0200 Subject: [PATCH 2/4] [IMP]EBICS File Format on Payment Mode --- account_ebics/wizards/ebics_xfer.py | 25 +++++++++++-------- account_ebics/wizards/ebics_xfer.xml | 3 ++- account_ebics_payment_order/__manifest__.py | 2 +- .../models/account_payment_order.py | 16 +++++++++--- .../views/account_payment_mode.xml | 18 +++++++++++++ 5 files changed, 48 insertions(+), 16 deletions(-) create mode 100644 account_ebics_payment_order/views/account_payment_mode.xml diff --git a/account_ebics/wizards/ebics_xfer.py b/account_ebics/wizards/ebics_xfer.py index 18f97a6..1b9925d 100644 --- a/account_ebics/wizards/ebics_xfer.py +++ b/account_ebics/wizards/ebics_xfer.py @@ -141,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 @@ -170,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() @@ -187,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 a531c95..ceb9905 100644 --- a/account_ebics/wizards/ebics_xfer.xml +++ b/account_ebics/wizards/ebics_xfer.xml @@ -94,8 +94,9 @@ diff --git a/account_ebics_payment_order/__manifest__.py b/account_ebics_payment_order/__manifest__.py index f4da019..88c8fce 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.0.1", "license": "LGPL-3", "author": "Noviat", "website": "https://www.noviat.com", diff --git a/account_ebics_payment_order/models/account_payment_order.py b/account_ebics_payment_order/models/account_payment_order.py index 030f313..334cc4d 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( @@ -58,7 +69,6 @@ class AccountPaymentOrder(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/views/account_payment_mode.xml b/account_ebics_payment_order/views/account_payment_mode.xml new file mode 100644 index 0000000..76d66e5 --- /dev/null +++ b/account_ebics_payment_order/views/account_payment_mode.xml @@ -0,0 +1,18 @@ + + + + + account.payment.mode.form + account.payment.mode + + + + + + + + + From d8498ee0c29ffb52993062969c8a5d720db0f8bb Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Thu, 16 May 2024 21:45:49 +0200 Subject: [PATCH 3/4] [FIX]account_ebics_batch_payment: fix stacktrace in ebics_upload --- account_ebics_batch_payment/__manifest__.py | 2 +- account_ebics_batch_payment/models/account_batch_payment.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) 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"), From 8892cc71cfc8aae936a7825162410e1fcc2544f5 Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Sun, 12 May 2024 17:04:49 +0200 Subject: [PATCH 4/4] [IMP]EBICS File Format on Payment Mode --- account_ebics_payment_order/README.rst | 6 +++++- account_ebics_payment_order/__manifest__.py | 3 ++- account_ebics_payment_order/models/__init__.py | 1 + .../models/account_payment_mode.py | 15 +++++++++++++++ .../models/account_payment_order.py | 8 ++++++-- ...nt_mode.xml => account_payment_mode_views.xml} | 5 +---- 6 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 account_ebics_payment_order/models/account_payment_mode.py rename account_ebics_payment_order/views/{account_payment_mode.xml => account_payment_mode_views.xml} (74%) 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 88c8fce..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.1", + "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 334cc4d..14bfa7d 100644 --- a/account_ebics_payment_order/models/account_payment_order.py +++ b/account_ebics_payment_order/models/account_payment_order.py @@ -63,10 +63,14 @@ class AccountPaymentOrder(models.Model): "default_upload_data": attach.datas, "default_upload_fname": attach.name, "origin": origin, - "force_company": 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() view = self.env.ref("account_ebics.ebics_xfer_view_form_upload") diff --git a/account_ebics_payment_order/views/account_payment_mode.xml b/account_ebics_payment_order/views/account_payment_mode_views.xml similarity index 74% rename from account_ebics_payment_order/views/account_payment_mode.xml rename to account_ebics_payment_order/views/account_payment_mode_views.xml index 76d66e5..9aeafa5 100644 --- a/account_ebics_payment_order/views/account_payment_mode.xml +++ b/account_ebics_payment_order/views/account_payment_mode_views.xml @@ -7,10 +7,7 @@ - +