[IMP]EBICS File Format on Payment Mode

This commit is contained in:
Luc De Meyer 2024-05-12 17:04:49 +02:00
parent 35d1c3691f
commit 3180bb5d0d
9 changed files with 67 additions and 21 deletions

View File

@ -3,7 +3,7 @@
{ {
"name": "EBICS banking protocol", "name": "EBICS banking protocol",
"version": "14.0.1.2.0", "version": "14.0.1.2.1",
"license": "LGPL-3", "license": "LGPL-3",
"author": "Noviat", "author": "Noviat",
"website": "https://www.noviat.com/", "website": "https://www.noviat.com/",

View File

@ -115,7 +115,8 @@ class EbicsXfer(models.TransientModel):
@api.onchange("ebics_config_id") @api.onchange("ebics_config_id")
def _onchange_ebics_config_id(self): def _onchange_ebics_config_id(self):
ebics_userids = self.ebics_config_id.ebics_userid_ids ebics_userids = self.ebics_config_id.ebics_userid_ids
if self._context.get("ebics_download"): ctx = self.env.context
if ctx.get("ebics_download"):
download_formats = self.ebics_config_id.ebics_file_format_ids.filtered( download_formats = self.ebics_config_id.ebics_file_format_ids.filtered(
lambda r: r.type == "down" lambda r: r.type == "down"
) )
@ -130,16 +131,19 @@ class EbicsXfer(models.TransientModel):
if len(transport_users) == 1: if len(transport_users) == 1:
self.ebics_userid_id = transport_users self.ebics_userid_id = transport_users
else: else:
if len(ebics_userids) == 1:
self.ebics_userid_id = ebics_userids
if not ctx.get("active_model") == "account.payment.order":
upload_formats = self.ebics_config_id.ebics_file_format_ids.filtered( upload_formats = self.ebics_config_id.ebics_file_format_ids.filtered(
lambda r: r.type == "up" lambda r: r.type == "up"
) )
if len(upload_formats) == 1: if len(upload_formats) == 1:
self.format_id = upload_formats self.format_id = upload_formats
if len(ebics_userids) == 1:
self.ebics_userid_id = ebics_userids
@api.onchange("upload_data") @api.onchange("upload_data")
def _onchange_upload_data(self): def _onchange_upload_data(self):
if self.env.context.get("active_model") == "account.payment.order":
return
self.upload_fname_dummy = self.upload_fname self.upload_fname_dummy = self.upload_fname
self.format_id = False self.format_id = False
self._detect_upload_format() self._detect_upload_format()
@ -157,10 +161,6 @@ class EbicsXfer(models.TransientModel):
if len(upload_formats) == 1: if len(upload_formats) == 1:
self.format_id = upload_formats 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): def ebics_upload(self):
self.ensure_one() self.ensure_one()
ctx = self._context.copy() ctx = self._context.copy()

View File

@ -69,8 +69,9 @@
<field name="upload_format_ids" invisible="1" /> <field name="upload_format_ids" invisible="1" />
<field <field
name="format_id" name="format_id"
domain="[('id', 'in', upload_format_ids)]"
required="1" required="1"
domain="[('type', '=', 'up'), ('id', 'in', allowed_format_ids)]"
readonly="context.get('active_model') == 'account.payment.order'"
/> />
<field name="order_type" /> <field name="order_type" />
<field <field

View File

@ -16,13 +16,13 @@ This module depends upon the following modules (cf. apps.odoo.com):
- account_ebics - account_ebics
- account_payment_order - account_payment_order
Configuration
=============
Set the EBICS File Format on your Payment Modes.
Usage Usage
===== =====
Create your Payment Order and generate the bank file. Create your Payment Order and generate the bank file.
Upload the generated file via the 'EBICS Upload' button on the payment order. Upload the generated file via the 'EBICS Upload' button on the payment order.
Known issues / Roadmap
======================
* Add support for multiple EBICS connections.

View File

@ -1,9 +1,9 @@
# Copyright 2009-2021 Noviat. # Copyright 2009-2024 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl). # License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).
{ {
"name": "Upload Payment Order via EBICS", "name": "Upload Payment Order via EBICS",
"version": "14.0.1.0.0", "version": "14.0.1.1.1",
"license": "LGPL-3", "license": "LGPL-3",
"author": "Noviat", "author": "Noviat",
"website": "https://www.noviat.com/", "website": "https://www.noviat.com/",
@ -11,6 +11,7 @@
"depends": ["account_ebics", "account_payment_order"], "depends": ["account_ebics", "account_payment_order"],
"data": [ "data": [
"views/account_payment_order.xml", "views/account_payment_order.xml",
"views/account_payment_mode.xml",
], ],
"installable": True, "installable": True,
"images": ["static/description/cover.png"], "images": ["static/description/cover.png"],

View File

@ -1 +1,2 @@
from . import account_payment_mode
from . import account_payment_order from . import account_payment_order

View File

@ -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.",
)

View File

@ -1,4 +1,4 @@
# Copyright 2009-2021 Noviat. # Copyright 2009-2024 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl). # License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).
from odoo import _, models from odoo import _, models
@ -11,6 +11,17 @@ class AccountPaymentOrder(models.Model):
def ebics_upload(self): def ebics_upload(self):
self.ensure_one() self.ensure_one()
ctx = self._context.copy() ctx = self._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( attach = self.env["ir.attachment"].search(
[("res_model", "=", self._name), ("res_id", "=", self.id)] [("res_model", "=", self._name), ("res_id", "=", self.id)]
) )
@ -58,7 +69,6 @@ class AccountPaymentOrder(models.Model):
ebics_xfer = self.env["ebics.xfer"].with_context(ctx).create({}) ebics_xfer = self.env["ebics.xfer"].with_context(ctx).create({})
ebics_xfer._onchange_ebics_config_id() ebics_xfer._onchange_ebics_config_id()
ebics_xfer._onchange_upload_data() ebics_xfer._onchange_upload_data()
ebics_xfer._onchange_format_id()
view = self.env.ref("account_ebics.ebics_xfer_view_form_upload") view = self.env.ref("account_ebics.ebics_xfer_view_form_upload")
act = { act = {
"name": _("EBICS Upload"), "name": _("EBICS Upload"),

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="account_payment_mode_form" model="ir.ui.view">
<field name="name">account.payment.mode.form</field>
<field name="model">account.payment.mode</field>
<field name="inherit_id" ref="account_payment_mode.account_payment_mode_form" />
<field name="arch" type="xml">
<field name="payment_type" position="after">
<field
name="ebics_format_id"
attrs="{'invisible': [('payment_order_ok', '=', False)]}"
/>
</field>
</field>
</record>
</odoo>