Files
enterprise-addons/account_accountant/tests/test_account_payment.py
T

40 lines
1.8 KiB
Python

from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.tests import tagged
@tagged('post_install', '-at_install')
class TestAccountBillPayment(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.bank_journal_1 = cls.company_data['default_journal_bank']
def test_bill_state_change_on_payment_state(self):
"""Test that bill payment state changes correctly when payment state transitions occur.
• Draft payment case: Bill state reverts to 'not_paid' when payment is drafted
• Payment unlink case: Bill state reverts to 'not_paid' when payment is deleted
"""
bill = self.init_invoice('in_invoice', post=True, partner=self.partner_a, products=self.product_a)
# We have to test it without any Outstanding Payment account set in Journal
self.bank_journal_1.outbound_payment_method_line_ids.payment_account_id = False
payment = self.env['account.payment.register']\
.with_context(active_model='account.move', active_ids=bill.ids)\
.create({})\
._create_payments()
self.assertEqual(bill.payment_state, self.env['account.move']._get_invoice_in_payment_state())
payment.action_draft()
self.assertEqual(payment.state, 'draft')
# With accountant module is installed, payment has no move_id, so bill goes to 'not_paid'.
# Without it, payment has move_id (journal entry), so bill stays 'paid'.
accountant_module = self.env['ir.module.module'].search([
('name', '=', 'accountant'), ('state', '=', 'installed')])
expected_state = 'not_paid' if accountant_module else 'paid'
self.assertEqual(payment.invoice_ids.payment_state, expected_state)
payment.unlink()
self.assertEqual(bill.payment_state, 'not_paid')