54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
import sys
|
||
sys.path.insert(0, '/app')
|
||
|
||
from app.core.database import get_connection
|
||
|
||
print("=" * 80)
|
||
print("【Chain 140 の各バージョンの科目内訳】")
|
||
print("=" * 80)
|
||
|
||
chain_id = 140
|
||
entry_ids = [140, 438, 461]
|
||
|
||
with get_connection() as conn:
|
||
with conn.cursor() as cur:
|
||
for entry_id in entry_ids:
|
||
cur.execute("""
|
||
SELECT je.journal_entry_id, je.revision_count, je.is_latest, je.entry_date
|
||
FROM journal_entries je
|
||
WHERE je.journal_entry_id = %s
|
||
""", [entry_id])
|
||
|
||
entry = cur.fetchone()
|
||
print(f"\n【ID {entry_id} (v{entry['revision_count']}, latest={entry['is_latest']})】")
|
||
print(f"日付: {entry['entry_date']}")
|
||
|
||
cur.execute("""
|
||
SELECT
|
||
a.account_id,
|
||
a.account_code,
|
||
a.account_name,
|
||
COALESCE(jl.debit, 0) as debit,
|
||
COALESCE(jl.credit, 0) as credit
|
||
FROM journal_lines jl
|
||
JOIN accounts a ON jl.account_id = a.account_id
|
||
WHERE jl.journal_entry_id = %s
|
||
ORDER BY a.account_id
|
||
""", [entry_id])
|
||
|
||
lines = cur.fetchall()
|
||
print(f" 行数: {len(lines)}")
|
||
for line in lines:
|
||
debit_display = f"借方 {line['debit']}" if line['debit'] > 0 else ""
|
||
credit_display = f"貸方 {line['credit']}" if line['credit'] > 0 else ""
|
||
side = (debit_display + " " + credit_display).strip()
|
||
marker = " ← 古いバージョンにない科目" if line['account_id'] == 19 and entry_id == 461 else ""
|
||
print(f" • {line['account_id']} ({line['account_code']}) {line['account_name']}: {side}{marker}")
|
||
|
||
print("\n" + "=" * 80)
|
||
print("【結論】")
|
||
print("修正前バージョンと修正後バージョンで科目構成が異なります。")
|
||
print("古いバージョンには account_id 19(買掛金)がないため、")
|
||
print("account_id 19 でフィルターした場合、最新バージョンのみが返されます。")
|
||
print("=" * 80)
|