修正
This commit is contained in:
139
debug_701_accounts.py
Normal file
139
debug_701_accounts.py
Normal file
@@ -0,0 +1,139 @@
|
||||
import psycopg
|
||||
from datetime import datetime
|
||||
|
||||
# 連接到数据库
|
||||
conn = psycopg.connect(
|
||||
host="127.0.0.1",
|
||||
port=5432,
|
||||
dbname="njts_accounting",
|
||||
user="postgres",
|
||||
password="postgres"
|
||||
)
|
||||
|
||||
try:
|
||||
with conn:
|
||||
with conn.cursor(row_factory=psycopg.rows.dict_row) as cur:
|
||||
print("=" * 80)
|
||||
print("【デバッグ: ID=431と432のis_latest値の確認】")
|
||||
print("=" * 80)
|
||||
|
||||
# Check if is_latest column exists
|
||||
cur.execute("""
|
||||
SELECT COUNT(*) as cnt
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = 'journal_entries' AND column_name = 'is_latest'
|
||||
""")
|
||||
col_exists = cur.fetchone()['cnt'] > 0
|
||||
print(f"is_latest列が存在: {col_exists}")
|
||||
print()
|
||||
|
||||
# Check the test entries
|
||||
cur.execute("""
|
||||
SELECT
|
||||
journal_entry_id,
|
||||
description,
|
||||
is_latest,
|
||||
is_deleted,
|
||||
parent_entry_id,
|
||||
original_entry_id
|
||||
FROM journal_entries
|
||||
WHERE journal_entry_id IN (431, 432)
|
||||
ORDER BY journal_entry_id
|
||||
""")
|
||||
entries = cur.fetchall()
|
||||
for e in entries:
|
||||
print(f"ID={e['journal_entry_id']}: {e['description']}")
|
||||
print(f" is_latest={e['is_latest']}, is_deleted={e['is_deleted']}")
|
||||
print(f" parent_entry_id={e['parent_entry_id']}, original_entry_id={e['original_entry_id']}")
|
||||
print()
|
||||
|
||||
print("=" * 80)
|
||||
print("【デバッグ: 修正後のサービスロジックで701科目をクエリ】")
|
||||
print("=" * 80)
|
||||
|
||||
# Get account id for 701
|
||||
cur.execute("SELECT account_id FROM accounts WHERE account_code = '701'")
|
||||
acc_result = cur.fetchone()
|
||||
if acc_result:
|
||||
account_id = acc_result['account_id']
|
||||
|
||||
# Execute the same query as the service with is_latest = true
|
||||
cur.execute("""
|
||||
SELECT
|
||||
COALESCE(SUM(l.debit), 0) AS debit,
|
||||
COALESCE(SUM(l.credit), 0) AS credit
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries j
|
||||
ON j.journal_entry_id = l.journal_entry_id
|
||||
WHERE l.account_id = %s
|
||||
AND j.entry_date BETWEEN '2025-01-01' AND '2025-12-31'
|
||||
AND j.is_deleted = false
|
||||
AND j.is_latest = true
|
||||
""", (account_id,))
|
||||
|
||||
result = cur.fetchone()
|
||||
print(f"701科目の試算表(is_latest=true):")
|
||||
print(f" 借方: {result['debit']}")
|
||||
print(f" 貸方: {result['credit']}")
|
||||
print()
|
||||
|
||||
print("=" * 80)
|
||||
print("【デバッグ: 701科目のすべての仕訳行を確認】")
|
||||
print("=" * 80)
|
||||
|
||||
cur.execute("""
|
||||
SELECT
|
||||
j.journal_entry_id,
|
||||
j.description,
|
||||
j.is_latest,
|
||||
j.is_deleted,
|
||||
l.debit,
|
||||
l.credit
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries j ON j.journal_entry_id = l.journal_entry_id
|
||||
JOIN accounts a ON a.account_id = l.account_id
|
||||
WHERE a.account_code = '701'
|
||||
AND j.is_deleted = false
|
||||
ORDER BY j.journal_entry_id
|
||||
""")
|
||||
|
||||
lines = cur.fetchall()
|
||||
print(f"合計: {len(lines)}行")
|
||||
print()
|
||||
|
||||
total_debit = 0
|
||||
total_credit = 0
|
||||
for line in lines:
|
||||
status = "✓" if line['is_latest'] else "✗"
|
||||
print(f"{status} ID={line['journal_entry_id']:4d}: {line['description']:30s} | 借={line['debit']:10.0f} 貸={line['credit']:10.0f} | is_latest={line['is_latest']}")
|
||||
total_debit += line['debit']
|
||||
total_credit += line['credit']
|
||||
|
||||
print()
|
||||
print(f"【全行合計】借={total_debit:.0f}, 貸={total_credit:.0f}")
|
||||
print()
|
||||
|
||||
# Count by is_latest
|
||||
cur.execute("""
|
||||
SELECT
|
||||
j.is_latest,
|
||||
COUNT(*) as count,
|
||||
COALESCE(SUM(l.debit), 0) as total_debit,
|
||||
COALESCE(SUM(l.credit), 0) as total_credit
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries j ON j.journal_entry_id = l.journal_entry_id
|
||||
JOIN accounts a ON a.account_id = l.account_id
|
||||
WHERE a.account_code = '701'
|
||||
AND j.is_deleted = false
|
||||
GROUP BY j.is_latest
|
||||
ORDER BY j.is_latest DESC
|
||||
""")
|
||||
|
||||
stats = cur.fetchall()
|
||||
print("【is_latestごとの集計】")
|
||||
for stat in stats:
|
||||
status = "最新" if stat['is_latest'] else "旧版"
|
||||
print(f"{status}: {stat['count']}行 | 借={stat['total_debit']:.0f} 貸={stat['total_credit']:.0f}")
|
||||
|
||||
finally:
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user