diff --git a/account_ebics/__manifest__.py b/account_ebics/__manifest__.py index 4afd992..4d56d8f 100644 --- a/account_ebics/__manifest__.py +++ b/account_ebics/__manifest__.py @@ -3,7 +3,7 @@ { "name": "EBICS banking protocol", - "version": "16.0.1.2.0", + "version": "16.0.1.3.0", "license": "LGPL-3", "author": "Noviat", "website": "https://www.noviat.com", diff --git a/account_ebics/models/ebics_userid.py b/account_ebics/models/ebics_userid.py index 9ed6f93..2e1cfb3 100644 --- a/account_ebics/models/ebics_userid.py +++ b/account_ebics/models/ebics_userid.py @@ -84,6 +84,18 @@ class EbicsUserID(models.Model): "This default can be overriden for specific " "EBICS transactions (cf. File Formats).", ) + transaction_rights = fields.Selection( + selection=[ + ("both", "Download and Upload"), + ("down", "Download Only"), + ("up", "Upload Only"), + ], + string="Allowed Transactions", + default="both", + required=True, + help="Use this parameter to limit the transactions for this User " + "to downloads or uploads.", + ) ebics_keys_fn = fields.Char(compute="_compute_ebics_keys_fn") ebics_keys_found = fields.Boolean(compute="_compute_ebics_keys_found") ebics_passphrase = fields.Char(string="EBICS Passphrase") diff --git a/account_ebics/views/ebics_userid_views.xml b/account_ebics/views/ebics_userid_views.xml index c174db2..afe3088 100644 --- a/account_ebics/views/ebics_userid_views.xml +++ b/account_ebics/views/ebics_userid_views.xml @@ -94,6 +94,7 @@ attrs="{'required': [('ebics_passphrase_store', '=', True)], 'invisible': [('state', '!=', 'draft')]}" /> + diff --git a/account_ebics/wizards/ebics_xfer.py b/account_ebics/wizards/ebics_xfer.py index 2332164..44a5504 100644 --- a/account_ebics/wizards/ebics_xfer.py +++ b/account_ebics/wizards/ebics_xfer.py @@ -113,29 +113,40 @@ class EbicsXfer(models.TransientModel): @api.onchange("ebics_config_id") def _onchange_ebics_config_id(self): - ebics_userids = self.ebics_config_id.ebics_userid_ids - if self.env.context.get("ebics_download"): - download_formats = self.ebics_config_id.ebics_file_format_ids.filtered( + avail_userids = self.ebics_config_id.ebics_userid_ids.filtered( + lambda r: self.env.user.id in r.user_ids.ids + ) + + if self.env.context.get("ebics_download"): # Download Form + avail_formats = self.ebics_config_id.ebics_file_format_ids.filtered( lambda r: r.type == "down" ) - if len(download_formats) == 1: - self.format_id = download_formats - if len(ebics_userids) == 1: - self.ebics_userid_id = ebics_userids - else: - transport_users = ebics_userids.filtered( - lambda r: r.signature_class == "T" - ) - if len(transport_users) == 1: - self.ebics_userid_id = transport_users - else: - upload_formats = self.ebics_config_id.ebics_file_format_ids.filtered( + 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 len(upload_formats) == 1: - self.format_id = upload_formats - if len(ebics_userids) == 1: - self.ebics_userid_id = ebics_userids + 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 + else: + with_passphrs_userids = avail_userids.filtered( + lambda r: r.ebics_passphrase_store + ) + if len(with_passphrs_userids) == 1: + self.ebics_userid_id = with_passphrs_userids + else: + self.ebics_userid_id = False @api.onchange("upload_data") def _onchange_upload_data(self): diff --git a/account_ebics/wizards/ebics_xfer.xml b/account_ebics/wizards/ebics_xfer.xml index 5439285..9cb67fb 100644 --- a/account_ebics/wizards/ebics_xfer.xml +++ b/account_ebics/wizards/ebics_xfer.xml @@ -16,7 +16,7 @@ /> @@ -69,7 +69,7 @@ /> @@ -143,7 +143,7 @@ - EBICS File Transfer + EBICS File Transfer - Download ir.actions.act_window ebics.xfer form @@ -153,7 +153,7 @@ - EBICS File Transfer + EBICS File Transfer - Upload ir.actions.act_window ebics.xfer form