From 04d5b4c5ab6077216d66a8e8be6d5a9205b77b3e Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Tue, 25 Apr 2023 19:11:58 +0200 Subject: [PATCH] sale_down_payment: auto-reconcile when validating invoice --- sale_down_payment/models/account_invoice.py | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sale_down_payment/models/account_invoice.py diff --git a/sale_down_payment/models/account_invoice.py b/sale_down_payment/models/account_invoice.py new file mode 100644 index 0000000..90a1a4f --- /dev/null +++ b/sale_down_payment/models/account_invoice.py @@ -0,0 +1,27 @@ +# Copyright 2023 Akretion France (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + @api.multi + def action_invoice_open(self): + res = super().action_invoice_open() + amlo = self.env['account.move.line'] + for inv in self: + if inv.state == 'open' and inv.type == 'out_invoice': + sales = inv.invoice_line_ids.mapped('sale_line_ids').\ + mapped('order_id') + if sales: + mlines = amlo.search([('sale_id', 'in', sales.ids)]) + if mlines: + receivable_lines = inv.move_id.mapped('line_ids').filtered( + lambda l: l.account_id == inv.account_id) + mlines |= receivable_lines + mlines.remove_move_reconcile() + mlines.reconcile() + return res