99 lines
4.0 KiB
Python
99 lines
4.0 KiB
Python
#!/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)
|