refactor(fusion_accounting_ai): route legacy reconcile tools through engine
When fusion_accounting_bank_rec is installed, match_bank_line_to_payments and auto_reconcile_bank_lines now use fusion.reconcile.engine via the BankRecAdapter, gaining precedent recording, AI suggestion superseding, and shared validation. Legacy paths preserved for Enterprise/Community- only installs (engine model absent -> fall back to set_line_bank_statement_line and _try_auto_reconcile_statement_lines). Also wraps engine.reconcile_batch's per-line loop in a savepoint so a single bad line's DB error (e.g. check-constraint violation) no longer poisons the whole batch transaction; the existing per-line try/except now isolates failures as originally intended. Made-with: Cursor
This commit is contained in:
@@ -67,7 +67,16 @@ def match_bank_line_to_payments(env, params):
|
||||
st_line = env['account.bank.statement.line'].browse(st_line_id)
|
||||
if not st_line.exists():
|
||||
return {'error': 'Statement line not found'}
|
||||
st_line.set_line_bank_statement_line(move_line_ids)
|
||||
# Phase 1 Task 23: route through engine when available
|
||||
if 'fusion.reconcile.engine' in env.registry:
|
||||
cands = env['account.move.line'].browse(move_line_ids).exists()
|
||||
if not cands:
|
||||
return {'error': 'No valid move_line_ids'}
|
||||
env['fusion.reconcile.engine'].reconcile_one(
|
||||
st_line, against_lines=cands)
|
||||
st_line.invalidate_recordset(['is_reconciled'])
|
||||
else:
|
||||
st_line.set_line_bank_statement_line(move_line_ids)
|
||||
return {
|
||||
'status': 'matched',
|
||||
'statement_line_id': st_line_id,
|
||||
@@ -83,7 +92,12 @@ def auto_reconcile_bank_lines(env, params):
|
||||
('company_id', '=', int(company_id)),
|
||||
])
|
||||
before_count = len(lines)
|
||||
lines._try_auto_reconcile_statement_lines(company_id=int(company_id))
|
||||
# Phase 1 Task 23: route through engine when available
|
||||
if 'fusion.reconcile.engine' in env.registry:
|
||||
env['fusion.reconcile.engine'].reconcile_batch(
|
||||
lines, strategy='auto')
|
||||
else:
|
||||
lines._try_auto_reconcile_statement_lines(company_id=int(company_id))
|
||||
still_unreconciled = env['account.bank.statement.line'].search([
|
||||
('is_reconciled', '=', False),
|
||||
('company_id', '=', int(company_id)),
|
||||
|
||||
Reference in New Issue
Block a user