feat(fusion_accounting_bank_rec): auto-reconcile wizard
TransientModel that filters unreconciled bank lines by journal + date range + strategy and runs engine.reconcile_batch. Shows reconciled_count / skipped_count / error_summary in result view. Made-with: Cursor
This commit is contained in:
@@ -16,3 +16,4 @@ from . import test_legacy_tools_refactor
|
||||
from . import test_mv_unreconciled
|
||||
from . import test_cron_methods
|
||||
from . import test_controller
|
||||
from . import test_auto_reconcile_wizard
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
"""Tests for fusion.auto.reconcile.wizard."""
|
||||
|
||||
from odoo.tests.common import TransactionCase, tagged
|
||||
from . import _factories as f
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestAutoReconcileWizard(TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.partner = self.env['res.partner'].create({'name': 'Auto Wizard Partner'})
|
||||
self.journal = f.make_bank_journal(self.env, name='Auto Bank', code='AUBK')
|
||||
|
||||
def test_wizard_runs_and_reconciles_matchable_lines(self):
|
||||
statement = f.make_bank_statement(self.env, journal=self.journal)
|
||||
for amount in [100.00, 200.00]:
|
||||
f.make_invoice(self.env, partner=self.partner, amount=amount)
|
||||
f.make_bank_line(
|
||||
self.env, statement=statement, amount=amount, partner=self.partner)
|
||||
|
||||
wizard = self.env['fusion.auto.reconcile.wizard'].create({
|
||||
'journal_id': self.journal.id,
|
||||
'strategy': 'auto',
|
||||
'only_with_partner': True,
|
||||
})
|
||||
wizard.action_run()
|
||||
self.assertEqual(wizard.state, 'done')
|
||||
self.assertGreaterEqual(wizard.reconciled_count, 2)
|
||||
|
||||
def test_wizard_filters_by_date_range(self):
|
||||
wizard = self.env['fusion.auto.reconcile.wizard'].create({
|
||||
'journal_id': self.journal.id,
|
||||
'date_from': '2099-01-01',
|
||||
'date_to': '2099-12-31',
|
||||
'strategy': 'auto',
|
||||
})
|
||||
wizard.action_run()
|
||||
self.assertEqual(wizard.reconciled_count, 0)
|
||||
|
||||
def test_wizard_skips_when_only_with_partner_excludes_orphans(self):
|
||||
statement = f.make_bank_statement(self.env, journal=self.journal)
|
||||
f.make_bank_line(self.env, statement=statement, amount=999, partner=None)
|
||||
wizard = self.env['fusion.auto.reconcile.wizard'].create({
|
||||
'journal_id': self.journal.id,
|
||||
'strategy': 'auto',
|
||||
'only_with_partner': True,
|
||||
})
|
||||
wizard.action_run()
|
||||
self.assertEqual(wizard.reconciled_count, 0)
|
||||
Reference in New Issue
Block a user