修正
This commit is contained in:
112
check_api_query.py
Normal file
112
check_api_query.py
Normal file
@@ -0,0 +1,112 @@
|
||||
import sys
|
||||
sys.path.insert(0, '/app')
|
||||
|
||||
from app.core.database import get_connection
|
||||
|
||||
print("=" * 80)
|
||||
print("【実際に API が使用している SQL クエリを再現】")
|
||||
print("=" * 80)
|
||||
|
||||
from_date = "2025-06-01"
|
||||
to_date = "2025-06-30"
|
||||
account_id = 501
|
||||
include_history = False
|
||||
|
||||
with get_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
# フィールド存在チェック
|
||||
cur.execute("""
|
||||
SELECT column_name FROM information_schema.columns
|
||||
WHERE table_name = 'journal_entries'
|
||||
AND column_name IN ('is_latest', 'revision_count', 'original_entry_id')
|
||||
""")
|
||||
existing_fields = {row['column_name'] for row in cur.fetchall()}
|
||||
print(f"\n📋 DB フィールド: {existing_fields}")
|
||||
|
||||
if 'revision_count' in existing_fields and 'is_latest' in existing_fields:
|
||||
if include_history:
|
||||
sql = """
|
||||
SELECT
|
||||
je.journal_entry_id,
|
||||
je.entry_date,
|
||||
je.description,
|
||||
je.fiscal_year,
|
||||
je.revision_count,
|
||||
je.is_latest,
|
||||
je.original_entry_id,
|
||||
COALESCE(SUM(jl.debit), 0) as debit_total,
|
||||
COALESCE(SUM(jl.credit), 0) as credit_total,
|
||||
STRING_AGG(DISTINCT CASE WHEN jl.tax_rate IS NOT NULL THEN jl.tax_rate::text END, ', ') as tax_rates
|
||||
FROM journal_entries je
|
||||
LEFT JOIN journal_lines jl ON je.journal_entry_id = jl.journal_entry_id
|
||||
WHERE je.is_deleted = false
|
||||
"""
|
||||
else:
|
||||
sql = """
|
||||
SELECT
|
||||
je.journal_entry_id,
|
||||
je.entry_date,
|
||||
je.description,
|
||||
je.fiscal_year,
|
||||
je.revision_count,
|
||||
je.is_latest,
|
||||
je.original_entry_id,
|
||||
COALESCE(SUM(jl.debit), 0) as debit_total,
|
||||
COALESCE(SUM(jl.credit), 0) as credit_total,
|
||||
STRING_AGG(DISTINCT CASE WHEN jl.tax_rate IS NOT NULL THEN jl.tax_rate::text END, ', ') as tax_rates
|
||||
FROM journal_entries je
|
||||
LEFT JOIN journal_lines jl ON je.journal_entry_id = jl.journal_entry_id
|
||||
WHERE je.is_deleted = false
|
||||
AND je.is_latest = true
|
||||
"""
|
||||
params = []
|
||||
|
||||
# 期間フ
|
||||
sql += " AND je.entry_date >= %s"
|
||||
params.append(from_date)
|
||||
|
||||
sql += " AND je.entry_date <= %s"
|
||||
params.append(to_date)
|
||||
|
||||
# account_id フィルター
|
||||
if account_id:
|
||||
sql += """ AND je.journal_entry_id IN (
|
||||
SELECT DISTINCT journal_entry_id
|
||||
FROM journal_lines
|
||||
WHERE account_id = %s
|
||||
)"""
|
||||
params.append(account_id)
|
||||
|
||||
sql += " GROUP BY je.journal_entry_id, je.entry_date, je.description, je.fiscal_year, je.revision_count, je.is_latest, je.original_entry_id"
|
||||
sql += " ORDER BY je.entry_date DESC, je.journal_entry_id DESC"
|
||||
|
||||
print(f"\n【SQL】")
|
||||
print(sql)
|
||||
print(f"\n【パラメータ】{params}")
|
||||
|
||||
cur.execute(sql, params)
|
||||
rows = cur.fetchall()
|
||||
|
||||
print(f"\n【結果】{len(rows)} 件")
|
||||
for i, row in enumerate(rows, 1):
|
||||
print(f"\n{i}. ID {row['journal_entry_id']}")
|
||||
print(f" 日付: {row['entry_date']}")
|
||||
print(f" 摘要: {row['description']}")
|
||||
print(f" 借方: {row['debit_total']}, 貸方: {row['credit_total']}")
|
||||
|
||||
# account_id 501 のレコードを持つ仕訳を確認
|
||||
print("\n" + "=" * 80)
|
||||
print("【仕訳に含まれる科目の内訳】")
|
||||
if rows:
|
||||
for row in rows[:1]: # 最初のレコードが 501 を含むか
|
||||
print(f"\n仕訳 ID {row['journal_entry_id']} の行科目:")
|
||||
cur.execute("""
|
||||
SELECT account_id, account_name, debit, credit
|
||||
FROM journal_lines jl
|
||||
JOIN accounts a ON jl.account_id = a.account_id
|
||||
WHERE jl.journal_entry_id = %s
|
||||
""", [row['journal_entry_id']])
|
||||
for line in cur.fetchall():
|
||||
print(f" • {line['account_id']} {line['account_name']}: 借方 {line['debit']}, 貸方 {line['credit']}")
|
||||
|
||||
print("\n" + "=" * 80)
|
||||
Reference in New Issue
Block a user