mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
[13.0][IMP] account_move_reconcile_helper: black, isort
This commit is contained in:
@@ -2,16 +2,12 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
'name': 'Account Move Reconcile Helper',
|
||||
'summary': "Provides tools to facilitate reconciliation",
|
||||
'version': '12.0.1.0.0',
|
||||
'license': 'AGPL-3',
|
||||
'author': 'ACSONE SA/NV, Odoo Community Association (OCA)',
|
||||
'website': 'https://github.com/OCA/account-reconcile',
|
||||
'depends': [
|
||||
'account_balance_line',
|
||||
],
|
||||
'data': [
|
||||
'views/account_move_line.xml',
|
||||
],
|
||||
"name": "Account Move Reconcile Helper",
|
||||
"summary": "Provides tools to facilitate reconciliation",
|
||||
"version": "13.0.1.0.0",
|
||||
"license": "AGPL-3",
|
||||
"author": "ACSONE SA/NV, Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/account-reconcile",
|
||||
"depends": ["account_balance_line"],
|
||||
"data": ["views/account_move_line.xml"],
|
||||
}
|
||||
|
||||
@@ -6,21 +6,24 @@ from odoo import api, fields, models
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
|
||||
_inherit = 'account.move.line'
|
||||
_inherit = "account.move.line"
|
||||
|
||||
partial_reconciliation_in_progress = fields.Boolean(
|
||||
compute='_compute_partial_reconciliation_in_progress')
|
||||
compute="_compute_partial_reconciliation_in_progress"
|
||||
)
|
||||
reconcile_line_ids = fields.One2many(
|
||||
compute='_compute_reconciled_lines',
|
||||
comodel_name='account.move.line',
|
||||
string="Reconciled lines")
|
||||
compute="_compute_reconciled_lines",
|
||||
comodel_name="account.move.line",
|
||||
string="Reconciled lines",
|
||||
)
|
||||
|
||||
@api.multi
|
||||
@api.depends('matched_debit_ids', 'matched_credit_ids')
|
||||
@api.depends("matched_debit_ids", "matched_credit_ids")
|
||||
def _compute_partial_reconciliation_in_progress(self):
|
||||
for rec in self:
|
||||
rec.partial_reconciliation_in_progress = (
|
||||
bool(rec.matched_debit_ids) or bool(rec.matched_credit_ids))
|
||||
rec.partial_reconciliation_in_progress = bool(
|
||||
rec.matched_debit_ids
|
||||
) or bool(rec.matched_credit_ids)
|
||||
|
||||
@api.multi
|
||||
def _compute_reconciled_lines(self):
|
||||
@@ -45,10 +48,9 @@ class AccountMoveLine(models.Model):
|
||||
if line.full_reconcile_id:
|
||||
matched_lines = line.full_reconcile_id.reconciled_line_ids
|
||||
elif line.credit > 0:
|
||||
matched_lines = line.matched_debit_ids.mapped('debit_move_id')
|
||||
matched_lines = line.matched_debit_ids.mapped("debit_move_id")
|
||||
else:
|
||||
matched_lines = line.matched_credit_ids.mapped(
|
||||
'credit_move_id')
|
||||
matched_lines = line.matched_credit_ids.mapped("credit_move_id")
|
||||
|
||||
if not matched_lines:
|
||||
continue
|
||||
@@ -58,14 +60,12 @@ class AccountMoveLine(models.Model):
|
||||
for matched_line in matched_lines:
|
||||
if matched_line not in move_lines:
|
||||
move_lines |= matched_line
|
||||
move_lines |= matched_line._get_reconciled_lines(
|
||||
move_lines)
|
||||
move_lines |= matched_line._get_reconciled_lines(move_lines)
|
||||
|
||||
return move_lines
|
||||
|
||||
@api.multi
|
||||
def open_full_reconcile_view(self):
|
||||
action = self.env.ref('account.action_account_moves_all_a').read()[0]
|
||||
action['domain'] = [
|
||||
('id', 'in', self.mapped('reconcile_line_ids').ids)]
|
||||
action = self.env.ref("account.action_account_moves_all_a").read()[0]
|
||||
action["domain"] = [("id", "in", self.mapped("reconcile_line_ids").ids)]
|
||||
return action
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
* Benjamin Willig <benjamin.willig@acsone.eu>
|
||||
* Kitti U. <kittiu@ecosoft.co.th>
|
||||
|
||||
@@ -5,71 +5,83 @@ from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestAccountMoveReconcileHelper(TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestAccountMoveReconcileHelper, self).setUp()
|
||||
self.AccountObj = self.env['account.account']
|
||||
self.AccountJournalObj = self.env['account.journal']
|
||||
self.AccountMoveObj = self.env['account.move']
|
||||
self.AccountMoveLineObj = self.env['account.move.line']
|
||||
self.AccountObj = self.env["account.account"]
|
||||
self.AccountJournalObj = self.env["account.journal"]
|
||||
self.AccountMoveObj = self.env["account.move"]
|
||||
self.AccountMoveLineObj = self.env["account.move.line"]
|
||||
|
||||
self.account_type_recv = self.env.ref(
|
||||
'account.data_account_type_receivable')
|
||||
self.account_type_rev = self.env.ref(
|
||||
'account.data_account_type_revenue')
|
||||
self.account_type_recv = self.env.ref("account.data_account_type_receivable")
|
||||
self.account_type_rev = self.env.ref("account.data_account_type_revenue")
|
||||
|
||||
self.account_recv = self.AccountObj.create({
|
||||
'code': 'MRH-RECVT',
|
||||
'name': "Receivable (test)",
|
||||
'reconcile': True,
|
||||
'user_type_id': self.account_type_recv.id,
|
||||
})
|
||||
self.account_sale = self.AccountObj.create({
|
||||
'code': 'MRH-SALET',
|
||||
'name': "Receivable (sale)",
|
||||
'reconcile': True,
|
||||
'user_type_id': self.account_type_rev.id,
|
||||
})
|
||||
self.account_recv = self.AccountObj.create(
|
||||
{
|
||||
"code": "MRH-RECVT",
|
||||
"name": "Receivable (test)",
|
||||
"reconcile": True,
|
||||
"user_type_id": self.account_type_recv.id,
|
||||
}
|
||||
)
|
||||
self.account_sale = self.AccountObj.create(
|
||||
{
|
||||
"code": "MRH-SALET",
|
||||
"name": "Receivable (sale)",
|
||||
"reconcile": True,
|
||||
"user_type_id": self.account_type_rev.id,
|
||||
}
|
||||
)
|
||||
|
||||
self.sales_journal = self.AccountJournalObj.create({
|
||||
'name': "Sales journal",
|
||||
'code': 'MRH-SAJT',
|
||||
'type': 'sale',
|
||||
'default_credit_account_id': self.account_sale.id,
|
||||
'default_debit_account_id': self.account_sale.id,
|
||||
})
|
||||
self.sales_journal = self.AccountJournalObj.create(
|
||||
{
|
||||
"name": "Sales journal",
|
||||
"code": "MRH-SAJT",
|
||||
"type": "sale",
|
||||
"default_credit_account_id": self.account_sale.id,
|
||||
"default_debit_account_id": self.account_sale.id,
|
||||
}
|
||||
)
|
||||
|
||||
def create_account_move(self, amount, debit_account, credit_account):
|
||||
return self.AccountMoveObj.create({
|
||||
'journal_id': self.sales_journal.id,
|
||||
'line_ids': [
|
||||
(0, 0, {
|
||||
'name': "Receivable line",
|
||||
'account_id': debit_account.id,
|
||||
'debit': amount,
|
||||
}),
|
||||
(0, 0, {
|
||||
'name': "Sales line",
|
||||
'account_id': credit_account.id,
|
||||
'credit': amount,
|
||||
}),
|
||||
]
|
||||
})
|
||||
return self.AccountMoveObj.create(
|
||||
{
|
||||
"journal_id": self.sales_journal.id,
|
||||
"line_ids": [
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Receivable line",
|
||||
"account_id": debit_account.id,
|
||||
"debit": amount,
|
||||
},
|
||||
),
|
||||
(
|
||||
0,
|
||||
0,
|
||||
{
|
||||
"name": "Sales line",
|
||||
"account_id": credit_account.id,
|
||||
"credit": amount,
|
||||
},
|
||||
),
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
def test_01_partial_reconcile(self):
|
||||
base_move = self.create_account_move(
|
||||
5000, self.account_recv, self.account_sale)
|
||||
base_move = self.create_account_move(5000, self.account_recv, self.account_sale)
|
||||
|
||||
move1 = self.create_account_move(
|
||||
1000, self.account_sale, self.account_recv)
|
||||
move1 = self.create_account_move(1000, self.account_sale, self.account_recv)
|
||||
|
||||
move2 = self.create_account_move(
|
||||
1000, self.account_sale, self.account_recv)
|
||||
move2 = self.create_account_move(1000, self.account_sale, self.account_recv)
|
||||
|
||||
lines = self.AccountMoveLineObj.search([
|
||||
('move_id', 'in', [base_move.id, move1.id, move2.id]),
|
||||
('account_id', '=', self.account_recv.id)
|
||||
])
|
||||
lines = self.AccountMoveLineObj.search(
|
||||
[
|
||||
("move_id", "in", [base_move.id, move1.id, move2.id]),
|
||||
("account_id", "=", self.account_recv.id),
|
||||
]
|
||||
)
|
||||
|
||||
lines.reconcile()
|
||||
|
||||
@@ -77,23 +89,22 @@ class TestAccountMoveReconcileHelper(TransactionCase):
|
||||
self.assertEquals(line.reconcile_line_ids, lines)
|
||||
|
||||
def test_02_full_reconcile(self):
|
||||
base_move = self.create_account_move(
|
||||
5000, self.account_recv, self.account_sale)
|
||||
base_move = self.create_account_move(5000, self.account_recv, self.account_sale)
|
||||
|
||||
move2 = self.create_account_move(
|
||||
2500, self.account_sale, self.account_recv)
|
||||
move3 = self.create_account_move(
|
||||
2500, self.account_sale, self.account_recv)
|
||||
move2 = self.create_account_move(2500, self.account_sale, self.account_recv)
|
||||
move3 = self.create_account_move(2500, self.account_sale, self.account_recv)
|
||||
|
||||
lines = self.AccountMoveLineObj.search([
|
||||
('move_id', 'in', [base_move.id, move2.id, move3.id]),
|
||||
('account_id', '=', self.account_recv.id)
|
||||
])
|
||||
lines = self.AccountMoveLineObj.search(
|
||||
[
|
||||
("move_id", "in", [base_move.id, move2.id, move3.id]),
|
||||
("account_id", "=", self.account_recv.id),
|
||||
]
|
||||
)
|
||||
|
||||
lines.reconcile()
|
||||
|
||||
for line in lines:
|
||||
self.assertEquals(line.reconcile_line_ids, lines)
|
||||
self.assertEquals(
|
||||
line.full_reconcile_id.reconciled_line_ids,
|
||||
line.reconcile_line_ids)
|
||||
line.full_reconcile_id.reconciled_line_ids, line.reconcile_line_ids
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user