diff --git a/account_ebics_payment_order/README.rst b/account_ebics_payment_order/README.rst new file mode 100644 index 0000000..2bb94ee --- /dev/null +++ b/account_ebics_payment_order/README.rst @@ -0,0 +1,24 @@ +.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg + :target: https://www.gnu.org/licenses/lgpl + :alt: License: AGPL-3 + +============================== +Upload Payment Order via EBICS +============================== + +This module allows to upload a Payment Order to the bank via the EBICS protocol. + +Installation +============ + +This module depends upon the following modules (cf. apps.odoo.com): + +- account_ebics +- account_payment_order + +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/__init__.py b/account_ebics_payment_order/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/account_ebics_payment_order/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_ebics_payment_order/__manifest__.py b/account_ebics_payment_order/__manifest__.py new file mode 100644 index 0000000..f4da019 --- /dev/null +++ b/account_ebics_payment_order/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2009-2024 Noviat. +# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Upload Payment Order via EBICS", + "version": "17.0.1.0.0", + "license": "LGPL-3", + "author": "Noviat", + "website": "https://www.noviat.com", + "category": "Accounting & Finance", + "depends": ["account_ebics", "account_payment_order"], + "data": [ + "views/account_payment_order_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 new file mode 100644 index 0000000..429f032 --- /dev/null +++ b/account_ebics_payment_order/models/__init__.py @@ -0,0 +1 @@ +from . import account_payment_order diff --git a/account_ebics_payment_order/models/account_payment_order.py b/account_ebics_payment_order/models/account_payment_order.py new file mode 100644 index 0000000..03a49b6 --- /dev/null +++ b/account_ebics_payment_order/models/account_payment_order.py @@ -0,0 +1,74 @@ +# Copyright 2009-2023 Noviat. +# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import _, models +from odoo.exceptions import UserError + + +class AccountPaymentOrder(models.Model): + _inherit = "account.payment.order" + + def ebics_upload(self): + self.ensure_one() + attach = self.env["ir.attachment"].search( + [("res_model", "=", self._name), ("res_id", "=", self.id)] + ) + if not attach: + raise UserError( + _( + "This payment order doesn't contains attachements." + "\nPlease generate first the Payment Order file first." + ) + ) + elif len(attach) > 1: + raise UserError( + _( + "This payment order contains multiple attachments." + "\nPlease remove the obsolete attachments or upload " + "the payment order file via the " + "EBICS Processing > EBICS Upload menu" + ) + ) + else: + origin = _("Payment Order") + ": " + self.name + ebics_config = self.env["ebics.config"].search( + [ + ("journal_ids", "=", self.journal_id.id), + ("state", "=", "confirm"), + ] + ) + if not ebics_config: + raise UserError( + _( + "No active EBICS configuration available " + "for the selected bank." + ) + ) + ctx = self.env.context.copy() + if len(ebics_config) == 1: + ctx["default_ebics_config_id"] = ebics_config.id + ctx.update( + { + "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._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"), + "view_type": "form", + "view_mode": "form", + "res_model": "ebics.xfer", + "view_id": view.id, + "res_id": ebics_xfer.id, + "type": "ir.actions.act_window", + "target": "new", + "context": ctx, + } + return act diff --git a/account_ebics_payment_order/pyproject.toml b/account_ebics_payment_order/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/account_ebics_payment_order/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/account_ebics_payment_order/static/description/cover.png b/account_ebics_payment_order/static/description/cover.png new file mode 100644 index 0000000..1ce051a Binary files /dev/null and b/account_ebics_payment_order/static/description/cover.png differ diff --git a/account_ebics_payment_order/static/description/icon.png b/account_ebics_payment_order/static/description/icon.png new file mode 100644 index 0000000..889d129 Binary files /dev/null and b/account_ebics_payment_order/static/description/icon.png differ diff --git a/account_ebics_payment_order/views/account_payment_order_views.xml b/account_ebics_payment_order/views/account_payment_order_views.xml new file mode 100644 index 0000000..46bad82 --- /dev/null +++ b/account_ebics_payment_order/views/account_payment_order_views.xml @@ -0,0 +1,21 @@ + + + + + account.payment.order.form + account.payment.order + + + + + + +