Files
njts-accounting-core/backend/check_data.py
2026-01-16 09:50:21 +09:00

110 lines
3.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
os.environ['DB_HOST'] = '192.168.0.61'
os.environ['DB_PORT'] = '55432'
os.environ['DB_NAME'] = 'njts_acct'
os.environ['DB_USER'] = 'njts_app'
os.environ['DB_PASSWORD'] = 'njts_app2025'
import sys
sys.path.insert(0, os.path.dirname(__file__))
from app.core.database import get_connection
conn = get_connection()
cur = conn.cursor()
# 逸速ビル関連の仕訳を確認
cur.execute("""
SELECT journal_entry_id, entry_date, description, parent_entry_id, is_deleted
FROM journal_entries
WHERE description LIKE '%遠達ビル%'
ORDER BY journal_entry_id
""")
rows = cur.fetchall()
print("\n遠達ビル関連の仕訳:")
for r in rows:
print(f"ID: {r['journal_entry_id']}, Date: {r['entry_date']}, Desc: {r['description']}, Parent: {r['parent_entry_id']}, is_deleted: {r['is_deleted']}")
# parent_entry_idが設定されている仕訳IDの一覧を取得
cur.execute("""
SELECT DISTINCT parent_entry_id
FROM journal_entries
WHERE parent_entry_id IS NOT NULL
ORDER BY parent_entry_id
""")
parent_ids = [r['parent_entry_id'] for r in cur.fetchall()]
print(f"\nparent_entry_idとして参照されているID: {parent_ids}")
cur.close()
conn.close()
# 実際の検索クエリと同じロジックでテスト
print("\n--- 検索クエリのテストinclude_history=False ---")
conn2 = get_connection()
cur2 = conn2.cursor()
# まず、条件なしでID 80が取得できるか確認
cur2.execute("""
SELECT journal_entry_id, description
FROM journal_entries
WHERE journal_entry_id = 80
""")
print(f"ID 80の存在確認: {cur2.fetchall()}")
# 各条件を個別にチェック
cur2.execute("SELECT journal_entry_id FROM journal_entries WHERE journal_entry_id = 80 AND is_deleted = false")
print(f"is_deleted=false: {len(cur2.fetchall())}")
cur2.execute("SELECT journal_entry_id FROM journal_entries WHERE journal_entry_id = 80 AND description NOT LIKE '%[逆仕訳]%'")
print(f"NOT LIKE '%%[逆仕訳]%%': {len(cur2.fetchall())}")
cur2.execute("""
SELECT journal_entry_id FROM journal_entries
WHERE journal_entry_id = 80
AND journal_entry_id NOT IN (SELECT parent_entry_id FROM journal_entries WHERE parent_entry_id IS NOT NULL)
""")
print(f"NOT IN parent_entry_id: {len(cur2.fetchall())}")
cur2.execute("SELECT journal_entry_id FROM journal_entries WHERE journal_entry_id = 80 AND description LIKE '%逸速ビル%'")
print(f"LIKE '%%逸速ビル%%': {len(cur2.fetchall())}")
cur2.execute("SELECT journal_entry_id FROM journal_entries WHERE journal_entry_id = 80 AND description LIKE '%遠達ビル%'")
print(f"LIKE '%%遠達ビル%%': {len(cur2.fetchall())}")
sql = """
SELECT
je.journal_entry_id,
je.entry_date,
je.description,
je.fiscal_year,
je.version,
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, ', ' ORDER BY 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.description NOT LIKE %s
AND je.journal_entry_id NOT IN (
SELECT parent_entry_id
FROM journal_entries
WHERE parent_entry_id IS NOT NULL
)
AND je.entry_date >= %s AND je.entry_date <= %s
AND je.description LIKE %s
GROUP BY je.journal_entry_id, je.entry_date, je.description, je.fiscal_year, je.version
ORDER BY je.entry_date DESC, je.journal_entry_id DESC, je.version DESC
"""
cur2.execute(sql, ['%[逆仕訳]%', '2025-06-01', '2025-06-30', '%逸速ビル%'])
results = cur2.fetchall()
print(f"\n検索結果({len(results)}件):")
for r in results:
print(f"ID: {r['journal_entry_id']}, Date: {r['entry_date']}, Desc: {r['description']}, Tax: {r['tax_rates']}")
cur2.close()
conn2.close()