81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
import os
|
|
import sys
|
|
|
|
# PostgreSQL接続情報を設定
|
|
os.environ['DB_HOST'] = 'localhost'
|
|
os.environ['DB_NAME'] = 'accounting_db'
|
|
os.environ['DB_USER'] = 'postgres'
|
|
os.environ['DB_PASSWORD'] = 'root'
|
|
os.environ['DB_PORT'] = '5432'
|
|
|
|
# backendパスを追加
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
|
|
|
from app.core.database import get_connection
|
|
|
|
print("データベース接続テスト...")
|
|
|
|
with get_connection() as conn:
|
|
with conn.cursor() as cur:
|
|
# 最初のテスト: 701の全ての6月データ
|
|
print("\n=== テスト1: 701の全ての6月クレジットデータ ===")
|
|
sql = """
|
|
SELECT
|
|
COALESCE(SUM(l.credit), 0) as total_credit
|
|
FROM journal_lines l
|
|
JOIN journal_entries e ON e.journal_entry_id = l.journal_entry_id
|
|
WHERE l.account_id = 701
|
|
AND EXTRACT(YEAR FROM e.entry_date) = 2025
|
|
AND EXTRACT(MONTH FROM e.entry_date) = 6
|
|
"""
|
|
|
|
cur.execute(sql)
|
|
result = cur.fetchone()
|
|
print(f"素のSUMクエリ結果: {result['total_credit']}")
|
|
|
|
# テスト2: ユーザーが期待する値
|
|
print("\n=== テスト2: ユーザー期待値との比較 ===")
|
|
print(f"実際の値: {result['total_credit']}")
|
|
print(f"期待値: 4082728")
|
|
print(f"差異: {result['total_credit'] - 4082728}")
|
|
|
|
# テスト3: 詳細なデータ確認
|
|
print("\n=== テスト3: 6月の全トランザクション詳細 ===")
|
|
sql_detail = """
|
|
SELECT
|
|
e.journal_entry_id,
|
|
e.entry_date,
|
|
e.description,
|
|
l.credit,
|
|
e.is_deleted,
|
|
e.parent_entry_id
|
|
FROM journal_lines l
|
|
JOIN journal_entries e ON e.journal_entry_id = l.journal_entry_id
|
|
WHERE l.account_id = 701
|
|
AND EXTRACT(YEAR FROM e.entry_date) = 2025
|
|
AND EXTRACT(MONTH FROM e.entry_date) = 6
|
|
ORDER BY e.entry_date, e.journal_entry_id
|
|
"""
|
|
|
|
cur.execute(sql_detail)
|
|
rows = cur.fetchall()
|
|
|
|
total = 0
|
|
for row in rows:
|
|
status = []
|
|
if row['is_deleted']:
|
|
status.append("DELETED")
|
|
if row['parent_entry_id']:
|
|
status.append(f"correction(parent={row['parent_entry_id']})")
|
|
status_str = " | ".join(status) if status else "OK"
|
|
|
|
print(f"ID:{row['journal_entry_id']:5d} | {row['entry_date']} | {row['description']:35s} | " +
|
|
f"credit:{row['credit']:>12,.0f} | {status_str}")
|
|
total += row['credit']
|
|
|
|
print(f"\n合計: {total:,.0f}")
|
|
|
|
print("\n処理完了")
|