The reconciliation between an expense and a bank statement does not
update the expense and its sheet.
To reproduce the error:
(Need account_accountant)
1. Go to Expenses
2. Create one (e.g. an expense of $20)
3. Save, Create Report, Approve, Post Journal Entries
4. Go to Accounting > Bank
5. Create a bank statement (e.g. $-20)
6. Save, Post, Reconcile
7. Select the expense, Validate
8. Go to Expense > The created expense
=> The expense's state is still 'Approved'. It should be 'Paid'.
Moreover, if you click on the associated report ("View Report"), the
same error appears: the sheet's state is 'Posted' instead of 'Paid'.
The problem was that the method 'action_invoice_paid' (deleted in this
commit) was never reached. Moreover, there was no way to get the
expense's residual amount.
OPW-2389414
closes odoo/odoo#63486
Signed-off-by: adwid <adwid@users.noreply.github.com>
27 lines
1.2 KiB
Python
27 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class AccountMoveLine(models.Model):
|
|
_inherit = "account.move.line"
|
|
|
|
expense_id = fields.Many2one('hr.expense', string='Expense', copy=False, help="Expense where the move line come from")
|
|
|
|
def reconcile(self):
|
|
# OVERRIDE
|
|
not_paid_expenses = self.expense_id.filtered(lambda expense: expense.state != 'done')
|
|
not_paid_expense_sheets = not_paid_expenses.sheet_id
|
|
res = super().reconcile()
|
|
paid_expenses = not_paid_expenses.filtered(lambda expense: expense.currency_id.is_zero(expense.amount_residual))
|
|
paid_expenses.write({'state': 'done'})
|
|
not_paid_expense_sheets.filtered(lambda sheet: all(expense.state == 'done' for expense in sheet.expense_line_ids)).set_to_paid()
|
|
return res
|
|
|
|
def _get_attachment_domains(self):
|
|
attachment_domains = super(AccountMoveLine, self)._get_attachment_domains()
|
|
if self.expense_id:
|
|
attachment_domains.append([('res_model', '=', 'hr.expense'), ('res_id', '=', self.expense_id.id)])
|
|
return attachment_domains
|