Files
njts-accounting-core/backend/verify_correction.py
2026-02-20 15:47:27 +09:00

99 lines
4.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Verify the correction logic is working correctly
Check test entries (ID=431, 432)
"""
import sys
sys.path.insert(0, '/app')
from app.core.database import get_connection
def verify():
with get_connection() as conn:
with conn.cursor() as cur:
print("=" * 80)
print("【修正ロジックの検証: test 元ID=431、432")
print("=" * 80)
print()
print("【step 1: 修正チェーンの構造確認】")
cur.execute("""
SELECT
journal_entry_id,
description,
is_latest,
is_deleted,
parent_entry_id,
original_entry_id,
entry_date,
created_at,
revision_count
FROM journal_entries
WHERE journal_entry_id IN (431, 432)
ORDER BY journal_entry_id
""")
entries = cur.fetchall()
for e in entries:
print(f"\nID={e['journal_entry_id']}:")
print(f" 説明: {e['description']}")
print(f" is_latest: {e['is_latest']} {'✓最新版' if e['is_latest'] else '✗旧版'}")
print(f" is_deleted: {e['is_deleted']}")
print(f" parent_entry_id: {e['parent_entry_id']}")
print(f" original_entry_id: {e['original_entry_id']}")
print(f" entry_date: {e['entry_date']}")
print(f" created_at: {e['created_at']}")
print(f" revision_count: {e['revision_count']}")
print()
print("【Step 2: 各エントリの仕訳行詳細】")
for eid in [431, 432]:
print(f"\nID={eid}:")
cur.execute("""
SELECT
a.account_code,
a.account_name,
l.debit,
l.credit
FROM journal_lines l
JOIN accounts a ON a.account_id = l.account_id
WHERE l.journal_entry_id = %s
ORDER BY a.account_code
""", (eid,))
lines = cur.fetchall()
for line in lines:
print(f" {line['account_code']} {line['account_name']:<15s} | 借={line['debit']:>10.0f} 貸={line['credit']:>10.0f}")
print()
print("【Step 3: is_latest=true フィルターでのみ統計】")
cur.execute("""
SELECT
SUM(CASE WHEN l.account_id = (SELECT account_id FROM accounts WHERE account_code = '5') THEN l.debit ELSE 0 END) as debit_5,
SUM(CASE WHEN l.account_id = (SELECT account_id FROM accounts WHERE account_code = '5') THEN l.credit ELSE 0 END) as credit_5,
SUM(CASE WHEN l.account_id = (SELECT account_id FROM accounts WHERE account_code = '41') THEN l.debit ELSE 0 END) as debit_41,
SUM(CASE WHEN l.account_id = (SELECT account_id FROM accounts WHERE account_code = '41') THEN l.credit ELSE 0 END) as credit_41
FROM journal_lines l
JOIN journal_entries j ON j.journal_entry_id = l.journal_entry_id
WHERE (l.journal_entry_id = 431 OR l.journal_entry_id = 432)
AND j.is_latest = true
""")
result = cur.fetchone()
print(f"売掛金5: 借={result['debit_5']:>10.0f} 貸={result['credit_5']:>10.0f}")
print(f"売上高41: 借={result['debit_41']:>10.0f} 貸={result['credit_41']:>10.0f}")
print()
print("✓ 検証完了")
if __name__ == "__main__":
try:
verify()
except Exception as e:
print(f"エラー: {e}")
import traceback
traceback.print_exc()
sys.exit(1)