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 + + + + + + + + +