73 lines
4.0 KiB
Python
73 lines
4.0 KiB
Python
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
from odoo.tests import tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestMergePartner(AccountTestInvoicingCommon):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
|
|
cls.Partner = cls.env['res.partner']
|
|
cls.Bank = cls.env['res.partner.bank']
|
|
cls.Payment = cls.env['account.payment']
|
|
|
|
# Create partners
|
|
cls.partner1 = cls.Partner.create({'name': 'Partner 1', 'email': 'partner1@example.com'})
|
|
cls.partner2 = cls.Partner.create({'name': 'Partner 2', 'email': 'partner2@example.com'})
|
|
cls.partner3 = cls.Partner.create({'name': 'Partner 3', 'email': 'partner3@example.com'})
|
|
|
|
# Create bank accounts
|
|
cls.bank1 = cls.Bank.create({'acc_number': '12345', 'partner_id': cls.partner1.id})
|
|
cls.bank2 = cls.Bank.create({'acc_number': '67890', 'partner_id': cls.partner2.id})
|
|
cls.bank3 = cls.Bank.create({'acc_number': '12345', 'partner_id': cls.partner3.id})
|
|
|
|
# Create payments linked to bank accounts
|
|
cls.payment1 = cls.Payment.create({
|
|
'partner_id': cls.partner1.id,
|
|
'partner_bank_id': cls.bank1.id,
|
|
'amount': 100,
|
|
'payment_type': 'outbound',
|
|
'payment_method_id': cls.env.ref('account.account_payment_method_manual_out').id,
|
|
'journal_id': cls.company_data['default_journal_bank'].id,
|
|
})
|
|
cls.payment2 = cls.Payment.create({
|
|
'partner_id': cls.partner2.id,
|
|
'partner_bank_id': cls.bank2.id,
|
|
'amount': 200,
|
|
'payment_type': 'outbound',
|
|
'payment_method_id': cls.env.ref('account.account_payment_method_manual_out').id,
|
|
'journal_id': cls.company_data['default_journal_bank'].id,
|
|
})
|
|
cls.payment3 = cls.Payment.create({
|
|
'partner_id': cls.partner3.id,
|
|
'partner_bank_id': cls.bank3.id,
|
|
'amount': 200,
|
|
'payment_type': 'outbound',
|
|
'payment_method_id': cls.env.ref('account.account_payment_method_manual_out').id,
|
|
'journal_id': cls.company_data['default_journal_bank'].id,
|
|
})
|
|
|
|
def test_merge_partners_with_bank_accounts_linked_to_payments(self):
|
|
wizard = self.env['base.partner.merge.automatic.wizard'].create({})
|
|
wizard._merge([self.partner1.id, self.partner2.id], self.partner1)
|
|
|
|
self.assertFalse(self.partner2.exists(), "Source partner should be deleted after merge")
|
|
self.assertTrue(self.partner1.exists(), "Destination partner should exist after merge")
|
|
self.assertEqual(self.payment1.partner_id, self.partner1, "Payment should be linked to the destination partner")
|
|
self.assertEqual(self.payment2.partner_id, self.partner1, "Payment should be linked to the destination partner")
|
|
self.assertEqual(self.payment1.partner_bank_id.partner_id, self.partner1, "Payment's bank account should belong to the destination partner")
|
|
self.assertEqual(self.payment2.partner_bank_id.partner_id, self.partner1, "Payment's bank account should belong to the destination partner")
|
|
|
|
def test_merge_partners_with_duplicate_bank_accounts_linked_to_payments(self):
|
|
wizard = self.env['base.partner.merge.automatic.wizard'].create({})
|
|
wizard._merge([self.partner1.id, self.partner3.id], self.partner1)
|
|
|
|
self.assertFalse(self.partner3.exists(), "Source partner should be deleted after merge")
|
|
self.assertTrue(self.partner1.exists(), "Destination partner should exist after merge")
|
|
self.assertEqual(self.payment1.partner_id, self.partner1, "Payment should be linked to the destination partner")
|
|
self.assertEqual(self.payment3.partner_id, self.partner1, "Payment should be linked to the destination partner")
|
|
self.assertEqual(self.payment1.partner_bank_id.partner_id, self.partner1, "Payment's bank account should belong to the destination partner")
|
|
self.assertEqual(self.payment3.partner_bank_id.partner_id, self.partner1, "Payment's bank account should belong to the destination partner")
|