[IMP] add 'Mark files as Downloaded' menu entry to the EBICS configuration section

This commit is contained in:
Luc De Meyer
2026-04-14 21:50:38 +02:00
parent 4bf699a7c5
commit ed27aa25e4
4 changed files with 87 additions and 23 deletions

View File

@@ -120,7 +120,8 @@ class EbicsConfig(models.Model):
comodel_name="res.company", comodel_name="res.company",
relation="ebics_config_res_company_rel", relation="ebics_config_res_company_rel",
string="Companies", string="Companies",
readonly=True, compute="_compute_company_ids",
store=True,
help="Companies sharing this EBICS contract.", help="Companies sharing this EBICS contract.",
) )
@@ -154,6 +155,11 @@ class EbicsConfig(models.Model):
) )
) )
@api.depends("journal_ids.company_id")
def _compute_company_ids(self):
for rec in self:
rec.company_ids = rec.journal_ids.mapped("company_id")
@api.ondelete(at_uninstall=False) @api.ondelete(at_uninstall=False)
def _unlink_except_confirm(self): def _unlink_except_confirm(self):
if any(rec.state == "confirm" for rec in self): if any(rec.state == "confirm" for rec in self):
@@ -161,27 +167,6 @@ class EbicsConfig(models.Model):
self.env._("You cannot remove active EBICS configurations.") self.env._("You cannot remove active EBICS configurations.")
) )
def write(self, vals):
"""
Due to the multi-company nature of the EBICS config we
need to adapt the company_ids in the write method.
"""
if "journal_ids" not in vals:
return super().write(vals)
for rec in self:
old_company_ids = rec.journal_ids.mapped("company_id").ids
super(EbicsConfig, rec).write(vals)
new_company_ids = rec.journal_ids.mapped("company_id").ids
updates = []
for cid in new_company_ids:
if cid in old_company_ids:
old_company_ids.remove(cid)
else:
updates += [(4, cid)]
updates += [(3, x) for x in old_company_ids]
super(EbicsConfig, rec).write({"company_ids": updates})
return True
def set_to_draft(self): def set_to_draft(self):
return self.write({"state": "draft"}) return self.write({"state": "draft"})

View File

@@ -80,4 +80,13 @@
groups="account_ebics.group_ebics_manager" groups="account_ebics.group_ebics_manager"
sequence="30" sequence="30"
/> />
<menuitem
id="ebics_xfer_menu_mark_as_downloaded"
name="Mark files as Downloaded"
parent="ebics_menu"
action="account_ebics.ebics_xfer_action_mark_as_downloaded"
groups="account_ebics.group_ebics_manager"
sequence="40"
/>
</odoo> </odoo>

View File

@@ -262,6 +262,7 @@ class EbicsXfer(models.TransientModel):
} }
} }
data = client.download(df.order_type, params=params) data = client.download(df.order_type, params=params)
if not self.env.context.get("ebics_mark_as_downloaded"):
ebics_files += self._handle_download_data(data, df) ebics_files += self._handle_download_data(data, df)
success = True success = True
except EbicsFunctionalError: except EbicsFunctionalError:

View File

@@ -164,4 +164,73 @@
<field name="context">{'ebics_upload': 1}</field> <field name="context">{'ebics_upload': 1}</field>
<field name="view_id" ref="ebics_xfer_view_form_upload" /> <field name="view_id" ref="ebics_xfer_view_form_upload" />
</record> </record>
<record id="ebics_xfer_view_form_mark_as_downloaded" model="ir.ui.view">
<field name="name">Mark EBICS files as Downloaded</field>
<field name="model">ebics.xfer</field>
<field name="priority" eval="100" />
<field name="arch" type="xml">
<form string="EBICS Mark as Downloaded">
<div class="alert alert-warning" role="alert">
The EBICS Files (Bank Statements) selected via this screen will not become available in Odoo as EBICS files but will be marked by your bank as downloaded.
<br />
As a consequence, these Bank Statements will not be retrieved by the next 'EBICS Batch Import' scheduled action.
</div>
<group>
<separator string="Select your bank :" colspan="2" />
<field
name="ebics_config_id"
required="1"
options="{'no_create': True, 'no_open': True}"
/>
<field
name="ebics_userid_id"
domain="[('ebics_config_id', '=', ebics_config_id), ('user_ids.id', '=', uid), ('transaction_rights', 'in', ['both', 'down'])]"
required="1"
options="{'no_create': True, 'no_open': True}"
/>
<field
name="ebics_passphrase"
password="True"
invisible="ebics_passphrase_store"
required="not ebics_passphrase_store"
/>
<field name="date_from" required="1" />
<field name="date_to" required="1" />
<field
name="format_id"
required="1"
domain="[('type', '=', 'down'), ('id', 'in', allowed_format_ids)]"
/>
</group>
<footer>
<button
name="ebics_download"
string="Mark as Downloaded"
type="object"
class="btn-primary"
data-hotkey="q"
/>
<button
string="Cancel"
class="btn-secondary"
special="cancel"
data-hotkey="z"
/>
</footer>
</form>
</field>
</record>
<record id="ebics_xfer_action_mark_as_downloaded" model="ir.actions.act_window">
<field name="name">Mark files as Downloaded</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">ebics.xfer</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field
name="context"
>{'ebics_download': 1, 'ebics_mark_as_downloaded': 1}</field>
<field name="view_id" ref="ebics_xfer_view_form_mark_as_downloaded" />
</record>
</odoo> </odoo>