diff --git a/sale_show_transaction/__init__.py b/sale_show_transaction/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/sale_show_transaction/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_show_transaction/__manifest__.py b/sale_show_transaction/__manifest__.py new file mode 100644 index 0000000..418d091 --- /dev/null +++ b/sale_show_transaction/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2022 Akretion (https://www.akretion.com). +# @author Sébastien BEAU +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Sale Show Transaction", + "summary": "Make transaction hyper visible on sale order", + "version": "14.0.1.0.0", + "development_status": "Alpha", + "category": "Uncategorized", + "website": "www.akretion.com", + "author": " Akretion", + "license": "AGPL-3", + "external_dependencies": { + "python": [], + "bin": [], + }, + "depends": [ + "sale", + ], + "data": [ + "views/sale_order_view.xml", + ], + "demo": [ + ], +} diff --git a/sale_show_transaction/models/__init__.py b/sale_show_transaction/models/__init__.py new file mode 100644 index 0000000..6aacb75 --- /dev/null +++ b/sale_show_transaction/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order diff --git a/sale_show_transaction/models/sale_order.py b/sale_show_transaction/models/sale_order.py new file mode 100644 index 0000000..7de4127 --- /dev/null +++ b/sale_show_transaction/models/sale_order.py @@ -0,0 +1,30 @@ +# Copyright 2022 Akretion (https://www.akretion.com). +# @author Sébastien BEAU +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + main_acquirer_id = fields.Many2one( + 'payment.acquirer', + 'Online payment mode', + compute="_compute_main_acquirer", + store=True) + + @api.depends("transaction_ids.state") + def _compute_main_acquirer(self): + for record in self: + if len(record.transaction_ids.acquirer_id) > 1: + for state in ["done", "authorized", "pending", "draft", "cancel", "error"]: + transaction = record.transaction_ids.filtered(lambda s: s.state == state) + if len(transaction.acquirer_id) > 1: + transaction.sorted("amount") + if transaction: + record.main_acquirer_id = transaction[0].acquirer_id + break + else: + record.main_acquirer_id = record.transaction_ids.acquirer_id + diff --git a/sale_show_transaction/views/sale_order_view.xml b/sale_show_transaction/views/sale_order_view.xml new file mode 100644 index 0000000..86bf0c1 --- /dev/null +++ b/sale_show_transaction/views/sale_order_view.xml @@ -0,0 +1,46 @@ + + + + + sale.order + + + + + + + + + + + + + + + + + + + sale.order + + + + + + + + + + sale.order + + + + + + + + +