mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[IMP] account_netting: black, isort
This commit is contained in:
committed by
Alexis de Lattre
parent
331ad070d1
commit
3845e23d36
@@ -9,209 +9,288 @@ class TestAccountNetting(common.SavepointCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestAccountNetting, cls).setUpClass()
|
||||
cls.partner = cls.env['res.partner'].create({
|
||||
'supplier': True,
|
||||
'customer': True,
|
||||
'name': "Supplier/Customer",
|
||||
})
|
||||
cls.partner1 = cls.env['res.partner'].create({
|
||||
'supplier': True,
|
||||
'customer': True,
|
||||
'name': "Supplier/Customer 1",
|
||||
})
|
||||
res_users_account_manager = cls.env.ref(
|
||||
'account.group_account_manager')
|
||||
partner_manager = cls.env.ref('base.group_partner_manager')
|
||||
cls.env.user.write({
|
||||
'groups_id': [
|
||||
(6, 0, [res_users_account_manager.id, partner_manager.id])
|
||||
],
|
||||
})
|
||||
cls.partner = cls.env["res.partner"].create(
|
||||
{"supplier": True, "customer": True, "name": "Supplier/Customer",}
|
||||
)
|
||||
cls.partner1 = cls.env["res.partner"].create(
|
||||
{"supplier": True, "customer": True, "name": "Supplier/Customer 1",}
|
||||
)
|
||||
res_users_account_manager = cls.env.ref("account.group_account_manager")
|
||||
partner_manager = cls.env.ref("base.group_partner_manager")
|
||||
cls.env.user.write(
|
||||
{"groups_id": [(6, 0, [res_users_account_manager.id, partner_manager.id])],}
|
||||
)
|
||||
# only adviser can create an account
|
||||
cls.account_receivable = cls.env['account.account'].create({
|
||||
'code': 'cust_acc',
|
||||
'name': 'customer account',
|
||||
'user_type_id': cls.env.ref(
|
||||
'account.data_account_type_receivable').id,
|
||||
'reconcile': True,
|
||||
})
|
||||
cls.account_payable = cls.env['account.account'].create({
|
||||
'code': 'supp_acc',
|
||||
'name': 'supplier account',
|
||||
'user_type_id': cls.env.ref(
|
||||
'account.data_account_type_payable').id,
|
||||
'reconcile': True,
|
||||
})
|
||||
cls.account_revenue = cls.env['account.account'].search([
|
||||
('user_type_id', '=', cls.env.ref(
|
||||
'account.data_account_type_revenue').id)
|
||||
], limit=1)
|
||||
cls.account_expense = cls.env['account.account'].search([
|
||||
('user_type_id', '=', cls.env.ref(
|
||||
'account.data_account_type_expenses').id)
|
||||
], limit=1)
|
||||
cls.journal = cls.env['account.journal'].create({
|
||||
'name': 'Test sale journal',
|
||||
'type': 'sale',
|
||||
'code': 'TEST',
|
||||
})
|
||||
cls.expenses_journal = cls.env['account.journal'].create({
|
||||
'name': 'Test expense journal',
|
||||
'type': 'purchase',
|
||||
'code': 'EXP',
|
||||
})
|
||||
cls.miscellaneous_journal = cls.env['account.journal'].create({
|
||||
'name': 'Miscellaneus journal',
|
||||
'type': 'general',
|
||||
'code': 'OTHER',
|
||||
})
|
||||
cls.customer_invoice = cls.env['account.invoice'].create({
|
||||
'journal_id': cls.journal.id,
|
||||
'type': 'out_invoice',
|
||||
'partner_id': cls.partner.id,
|
||||
'account_id': cls.account_receivable.id,
|
||||
'invoice_line_ids': [(0, 0, {
|
||||
'name': 'Test',
|
||||
'price_unit': 100.0,
|
||||
'account_id': cls.account_revenue.id,
|
||||
})],
|
||||
})
|
||||
cls.account_receivable = cls.env["account.account"].create(
|
||||
{
|
||||
"code": "cust_acc",
|
||||
"name": "customer account",
|
||||
"user_type_id": cls.env.ref("account.data_account_type_receivable").id,
|
||||
"reconcile": True,
|
||||
}
|
||||
)
|
||||
cls.account_payable = cls.env["account.account"].create(
|
||||
{
|
||||
"code": "supp_acc",
|
||||
"name": "supplier account",
|
||||
"user_type_id": cls.env.ref("account.data_account_type_payable").id,
|
||||
"reconcile": True,
|
||||
}
|
||||
)
|
||||
cls.account_revenue = cls.env["account.account"].search(
|
||||
[
|
||||
(
|
||||
"user_type_id",
|
||||
"=",
|
||||
cls.env.ref("account.data_account_type_revenue").id,
|
||||
)
|
||||
],
|
||||
limit=1,
|
||||
)
|
||||
cls.account_expense = cls.env["account.account"].search(
|
||||
[
|
||||
(
|
||||
"user_type_id",
|
||||
"=",
|
||||
cls.env.ref("account.data_account_type_expenses").id,
|
||||
)
|
||||
],
|
||||
limit=1,
|
||||
)
|
||||
cls.journal = cls.env["account.journal"].create(
|
||||
{"name": "Test sale journal", "type": "sale", "code": "TEST",}
|
||||
)
|
||||
cls.expenses_journal = cls.env["account.journal"].create(
|
||||
{"name": "Test expense journal", "type": "purchase", "code": "EXP",}
|
||||
)
|
||||
cls.miscellaneous_journal = cls.env["account.journal"].create(
|
||||
{"name": "Miscellaneus journal", "type": "general", "code": "OTHER",}
|
||||
)
|
||||
cls.customer_invoice = cls.env["account.invoice"].create(
|
||||
{
|
||||
"journal_id": cls.journal.id,
|
||||
"type": "out_invoice",
|
||||
"partner_id": cls.partner.id,
|
||||
"account_id": cls.account_receivable.id,
|
||||
"invoice_line_ids": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Test",
|
||||
"price_unit": 100.0,
|
||||
"account_id": cls.account_revenue.id,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.customer_invoice.action_invoice_open()
|
||||
customer_move = cls.customer_invoice.move_id
|
||||
cls.move_line_1 = customer_move.line_ids.filtered(
|
||||
lambda x: x.account_id == cls.account_receivable)
|
||||
cls.supplier_invoice = cls.env['account.invoice'].create({
|
||||
'journal_id': cls.expenses_journal.id,
|
||||
'type': 'in_invoice',
|
||||
'partner_id': cls.partner.id,
|
||||
'account_id': cls.account_payable.id,
|
||||
'invoice_line_ids': [(0, 0, {
|
||||
'name': 'Test',
|
||||
'price_unit': 1200.0,
|
||||
'account_id': cls.account_expense.id,
|
||||
})],
|
||||
})
|
||||
lambda x: x.account_id == cls.account_receivable
|
||||
)
|
||||
cls.supplier_invoice = cls.env["account.invoice"].create(
|
||||
{
|
||||
"journal_id": cls.expenses_journal.id,
|
||||
"type": "in_invoice",
|
||||
"partner_id": cls.partner.id,
|
||||
"account_id": cls.account_payable.id,
|
||||
"invoice_line_ids": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Test",
|
||||
"price_unit": 1200.0,
|
||||
"account_id": cls.account_expense.id,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.supplier_invoice.action_invoice_open()
|
||||
supplier_move = cls.supplier_invoice.move_id
|
||||
cls.move_line_2 = supplier_move.line_ids.filtered(
|
||||
lambda x: x.account_id == cls.account_payable)
|
||||
lambda x: x.account_id == cls.account_payable
|
||||
)
|
||||
cls.move_line_3 = supplier_move.line_ids.filtered(
|
||||
lambda x: x.account_id == cls.account_expense)
|
||||
cls.supplier_invoice = cls.env['account.invoice'].create({
|
||||
'journal_id': cls.expenses_journal.id,
|
||||
'type': 'in_invoice',
|
||||
'partner_id': cls.partner1.id,
|
||||
'account_id': cls.account_payable.id,
|
||||
'invoice_line_ids': [(0, 0, {
|
||||
'name': 'Test',
|
||||
'price_unit': 200.0,
|
||||
'account_id': cls.account_expense.id,
|
||||
})],
|
||||
})
|
||||
lambda x: x.account_id == cls.account_expense
|
||||
)
|
||||
cls.supplier_invoice = cls.env["account.invoice"].create(
|
||||
{
|
||||
"journal_id": cls.expenses_journal.id,
|
||||
"type": "in_invoice",
|
||||
"partner_id": cls.partner1.id,
|
||||
"account_id": cls.account_payable.id,
|
||||
"invoice_line_ids": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Test",
|
||||
"price_unit": 200.0,
|
||||
"account_id": cls.account_expense.id,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.supplier_invoice.action_invoice_open()
|
||||
supplier_move = cls.supplier_invoice.move_id
|
||||
cls.move_line_4 = supplier_move.line_ids.filtered(
|
||||
lambda x: x.account_id == cls.account_payable)
|
||||
cls.supplier_invoice = cls.env['account.invoice'].create({
|
||||
'journal_id': cls.expenses_journal.id,
|
||||
'type': 'in_refund',
|
||||
'partner_id': cls.partner1.id,
|
||||
'account_id': cls.account_payable.id,
|
||||
'invoice_line_ids': [(0, 0, {
|
||||
'name': 'Test',
|
||||
'price_unit': 200.0,
|
||||
'account_id': cls.account_expense.id,
|
||||
})],
|
||||
})
|
||||
lambda x: x.account_id == cls.account_payable
|
||||
)
|
||||
cls.supplier_invoice = cls.env["account.invoice"].create(
|
||||
{
|
||||
"journal_id": cls.expenses_journal.id,
|
||||
"type": "in_refund",
|
||||
"partner_id": cls.partner1.id,
|
||||
"account_id": cls.account_payable.id,
|
||||
"invoice_line_ids": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Test",
|
||||
"price_unit": 200.0,
|
||||
"account_id": cls.account_expense.id,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.supplier_invoice.action_invoice_open()
|
||||
supplier_move = cls.supplier_invoice.move_id
|
||||
cls.move_line_5 = supplier_move.line_ids.filtered(
|
||||
lambda x: x.account_id == cls.account_payable)
|
||||
cls.supplier_invoice = cls.env['account.invoice'].create({
|
||||
'journal_id': cls.expenses_journal.id,
|
||||
'type': 'in_refund',
|
||||
'partner_id': cls.partner1.id,
|
||||
'account_id': cls.account_payable.id,
|
||||
'invoice_line_ids': [(0, 0, {
|
||||
'name': 'Test',
|
||||
'price_unit': 200.0,
|
||||
'account_id': cls.account_expense.id,
|
||||
})],
|
||||
})
|
||||
lambda x: x.account_id == cls.account_payable
|
||||
)
|
||||
cls.supplier_invoice = cls.env["account.invoice"].create(
|
||||
{
|
||||
"journal_id": cls.expenses_journal.id,
|
||||
"type": "in_refund",
|
||||
"partner_id": cls.partner1.id,
|
||||
"account_id": cls.account_payable.id,
|
||||
"invoice_line_ids": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Test",
|
||||
"price_unit": 200.0,
|
||||
"account_id": cls.account_expense.id,
|
||||
},
|
||||
)
|
||||
],
|
||||
}
|
||||
)
|
||||
cls.supplier_invoice.action_invoice_open()
|
||||
supplier_move = cls.supplier_invoice.move_id
|
||||
cls.move_line_6 = supplier_move.line_ids.filtered(
|
||||
lambda x: x.account_id == cls.account_payable)
|
||||
lambda x: x.account_id == cls.account_payable
|
||||
)
|
||||
|
||||
def test_compensation(self):
|
||||
# Test exception line 33 from account_move_make_netting
|
||||
obj = self.env['account.move.make.netting'].with_context(
|
||||
active_ids=[self.move_line_1.id])
|
||||
obj = self.env["account.move.make.netting"].with_context(
|
||||
active_ids=[self.move_line_1.id]
|
||||
)
|
||||
with self.assertRaises(Exception):
|
||||
wizard = obj.create(
|
||||
{'move_line_ids': [(6, 0, [self.move_line_1.id])],
|
||||
'journal_id': self.miscellaneous_journal.id})
|
||||
{
|
||||
"move_line_ids": [(6, 0, [self.move_line_1.id])],
|
||||
"journal_id": self.miscellaneous_journal.id,
|
||||
}
|
||||
)
|
||||
# Test exception line 39 from account_move_make_netting
|
||||
obj = self.env['account.move.make.netting'].with_context(
|
||||
active_ids=[self.move_line_1.id, self.move_line_3.id])
|
||||
obj = self.env["account.move.make.netting"].with_context(
|
||||
active_ids=[self.move_line_1.id, self.move_line_3.id]
|
||||
)
|
||||
with self.assertRaises(Exception):
|
||||
wizard = obj.create(
|
||||
{'move_line_ids': [(6, 0, [self.move_line_1.id,
|
||||
self.move_line_3.id])],
|
||||
'journal_id': self.miscellaneous_journal.id})
|
||||
{
|
||||
"move_line_ids": [
|
||||
(6, 0, [self.move_line_1.id, self.move_line_3.id])
|
||||
],
|
||||
"journal_id": self.miscellaneous_journal.id,
|
||||
}
|
||||
)
|
||||
# Test exception line 45 from account_move_make_netting
|
||||
obj = self.env['account.move.make.netting'].with_context(
|
||||
active_ids=[self.move_line_4.id, self.move_line_5.id])
|
||||
obj = self.env["account.move.make.netting"].with_context(
|
||||
active_ids=[self.move_line_4.id, self.move_line_5.id]
|
||||
)
|
||||
with self.assertRaises(Exception):
|
||||
wizard = obj.create(
|
||||
{'move_line_ids': [(6, 0, [self.move_line_4.id,
|
||||
self.move_line_5.id])],
|
||||
'journal_id': self.miscellaneous_journal.id})
|
||||
{
|
||||
"move_line_ids": [
|
||||
(6, 0, [self.move_line_4.id, self.move_line_5.id])
|
||||
],
|
||||
"journal_id": self.miscellaneous_journal.id,
|
||||
}
|
||||
)
|
||||
# Test exception line 42 from account_move_make_netting
|
||||
moves = self.env['account.move.line'].browse([self.move_line_4.id,
|
||||
self.move_line_5.id])
|
||||
moves = self.env["account.move.line"].browse(
|
||||
[self.move_line_4.id, self.move_line_5.id]
|
||||
)
|
||||
moves.reconcile()
|
||||
obj = self.env['account.move.make.netting'].with_context(
|
||||
active_ids=[self.move_line_4.id, self.move_line_5.id])
|
||||
obj = self.env["account.move.make.netting"].with_context(
|
||||
active_ids=[self.move_line_4.id, self.move_line_5.id]
|
||||
)
|
||||
with self.assertRaises(Exception):
|
||||
wizard = obj.create(
|
||||
{'move_line_ids': [(6, 0, [self.move_line_4.id,
|
||||
self.move_line_5.id])],
|
||||
'journal_id': self.miscellaneous_journal.id})
|
||||
{
|
||||
"move_line_ids": [
|
||||
(6, 0, [self.move_line_4.id, self.move_line_5.id])
|
||||
],
|
||||
"journal_id": self.miscellaneous_journal.id,
|
||||
}
|
||||
)
|
||||
# Test exception line 52 from account_move_make_netting
|
||||
obj = self.env['account.move.make.netting'].with_context(
|
||||
active_ids=[self.move_line_1.id, self.move_line_6.id])
|
||||
obj = self.env["account.move.make.netting"].with_context(
|
||||
active_ids=[self.move_line_1.id, self.move_line_6.id]
|
||||
)
|
||||
with self.assertRaises(Exception):
|
||||
wizard = obj.create(
|
||||
{'move_line_ids': [(6, 0, [self.move_line_1.id,
|
||||
self.move_line_6.id])],
|
||||
'journal_id': self.miscellaneous_journal.id})
|
||||
obj = self.env['account.move.make.netting'].with_context(
|
||||
active_ids=[self.move_line_1.id, self.move_line_2.id])
|
||||
{
|
||||
"move_line_ids": [
|
||||
(6, 0, [self.move_line_1.id, self.move_line_6.id])
|
||||
],
|
||||
"journal_id": self.miscellaneous_journal.id,
|
||||
}
|
||||
)
|
||||
obj = self.env["account.move.make.netting"].with_context(
|
||||
active_ids=[self.move_line_1.id, self.move_line_2.id]
|
||||
)
|
||||
wizard = obj.create(
|
||||
{'move_line_ids': [(6, 0, [self.move_line_1.id,
|
||||
self.move_line_2.id])],
|
||||
'journal_id': self.miscellaneous_journal.id})
|
||||
{
|
||||
"move_line_ids": [(6, 0, [self.move_line_1.id, self.move_line_2.id])],
|
||||
"journal_id": self.miscellaneous_journal.id,
|
||||
}
|
||||
)
|
||||
res = wizard.button_compensate()
|
||||
move = self.env['account.move'].browse(res['res_id'])
|
||||
move = self.env["account.move"].browse(res["res_id"])
|
||||
self.assertEqual(
|
||||
len(move.line_ids), 2,
|
||||
'AR/AP netting move has an incorrect line number')
|
||||
len(move.line_ids), 2, "AR/AP netting move has an incorrect line number"
|
||||
)
|
||||
move_line_receivable = move.line_ids.filtered(
|
||||
lambda x: x.account_id == self.account_receivable)
|
||||
lambda x: x.account_id == self.account_receivable
|
||||
)
|
||||
self.assertEqual(
|
||||
move_line_receivable.credit, 100,
|
||||
'Incorrect credit amount for receivable move line')
|
||||
move_line_receivable.credit,
|
||||
100,
|
||||
"Incorrect credit amount for receivable move line",
|
||||
)
|
||||
self.assertTrue(
|
||||
move_line_receivable.reconciled and
|
||||
move_line_receivable.full_reconcile_id,
|
||||
'Receivable move line should be totally reconciled')
|
||||
move_line_receivable.reconciled and move_line_receivable.full_reconcile_id,
|
||||
"Receivable move line should be totally reconciled",
|
||||
)
|
||||
move_line_payable = move.line_ids.filtered(
|
||||
lambda x: x.account_id == self.account_payable)
|
||||
lambda x: x.account_id == self.account_payable
|
||||
)
|
||||
self.assertEqual(
|
||||
move_line_payable.debit, 100,
|
||||
'Incorrect debit amount for payable move line')
|
||||
move_line_payable.debit, 100, "Incorrect debit amount for payable move line"
|
||||
)
|
||||
self.assertTrue(
|
||||
move_line_payable.reconciled and not
|
||||
move_line_payable.full_reconcile_id,
|
||||
'Receivable move line should be partially reconciled')
|
||||
move_line_payable.reconciled and not move_line_payable.full_reconcile_id,
|
||||
"Receivable move line should be partially reconciled",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user