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