修正
This commit is contained in:
132
final_diagnosis.py
Normal file
132
final_diagnosis.py
Normal file
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
診断スクリプト:2025年6月の701の1,400,000円を特定
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from decimal import Decimal
|
||||
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
||||
|
||||
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'
|
||||
|
||||
from app.core.database import get_connection
|
||||
|
||||
with get_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
print("=" * 120)
|
||||
print("診断:2025年6月の701(売上高)の確認")
|
||||
print("=" * 120)
|
||||
|
||||
# トータルを確認
|
||||
sql_total = """
|
||||
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 e.entry_date >= '2025-06-01'
|
||||
AND e.entry_date <= '2025-06-30'
|
||||
"""
|
||||
|
||||
cur.execute(sql_total)
|
||||
result = cur.fetchone()
|
||||
print(f"\n全トランザクション合計クレジット: {result['total_credit']:,.0f}")
|
||||
print(f"期待値: 4,082,728")
|
||||
print(f"差異: {result['total_credit'] - 4082728:,.0f}")
|
||||
|
||||
# 詳細を表示
|
||||
print("\n【 全トランザクション詳細 】")
|
||||
sql_detail = """
|
||||
SELECT
|
||||
e.journal_entry_id,
|
||||
e.entry_date,
|
||||
SUBSTRING(e.description, 1, 35) as desc,
|
||||
l.credit,
|
||||
CASE WHEN e.description LIKE '[%' THEN 'YES(逆?)' ELSE 'NO' END as has_bracket,
|
||||
CASE WHEN e.parent_entry_id IS NOT NULL THEN e.parent_entry_id ELSE '-' END as parent_id,
|
||||
CASE WHEN e.is_deleted THEN 'YES' ELSE 'NO' END as deleted
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries e ON e.journal_entry_id = l.journal_entry_id
|
||||
WHERE l.account_id = 701
|
||||
AND e.entry_date >= '2025-06-01'
|
||||
AND e.entry_date <= '2025-06-30'
|
||||
AND l.credit > 0
|
||||
ORDER BY l.credit DESC, e.entry_date, e.journal_entry_id
|
||||
"""
|
||||
|
||||
cur.execute(sql_detail)
|
||||
rows = cur.fetchall()
|
||||
|
||||
total = Decimal(0)
|
||||
for row in rows:
|
||||
print(f"ID:{row['journal_entry_id']:5d} | {row['entry_date']} | {row['desc']:35s} | " +
|
||||
f"credit:{row['credit']:>12,.0f} | bracket:{row['has_bracket']:6s} | parent:{row['parent_id']:5s} | del:{row['deleted']}")
|
||||
total += row['credit']
|
||||
|
||||
print(f"\n合計: {total:,.0f}")
|
||||
|
||||
# 1,400,000の特定
|
||||
print("\n【 1,400,000円の交易を探す 】")
|
||||
sql_1400 = """
|
||||
SELECT
|
||||
e.journal_entry_id,
|
||||
e.entry_date,
|
||||
e.description,
|
||||
COALESCE(SUM(l.credit), 0) as credit,
|
||||
e.parent_entry_id,
|
||||
e.is_deleted
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries e ON e.journal_entry_id = l.journal_entry_id
|
||||
WHERE l.account_id = 701
|
||||
AND e.entry_date >= '2025-06-01'
|
||||
AND e.entry_date <= '2025-06-30'
|
||||
GROUP BY e.journal_entry_id, e.entry_date, e.description, e.parent_entry_id, e.is_deleted
|
||||
ORDER BY COALESCE(SUM(l.credit), 0) DESC
|
||||
"""
|
||||
|
||||
cur.execute(sql_1400)
|
||||
rows = cur.fetchall()
|
||||
|
||||
for row in rows:
|
||||
if abs(row['credit'] - 1400000) < 1:
|
||||
print(f"★★★ found! ★★★")
|
||||
print(f" ID: {row['journal_entry_id']}")
|
||||
print(f" 日付: {row['entry_date']}")
|
||||
print(f" 説明: {row['description']}")
|
||||
print(f" クレジット: {row['credit']:,.0f}")
|
||||
print(f" 親ID: {row['parent_entry_id']}")
|
||||
print(f" 削除: {row['is_deleted']}")
|
||||
break
|
||||
else:
|
||||
print("1,400,000の交易見つからず。次点:")
|
||||
for row in rows[:5]:
|
||||
print(f" ID:{row['journal_entry_id']} | {row['credit']:>12,.0f} | desc:{row['description'][:30]}")
|
||||
|
||||
# 現在のフィルター条件をテスト
|
||||
print("\n【 フィルター条件のテスト 】")
|
||||
sql_filtered = """
|
||||
SELECT COALESCE(SUM(l.credit), 0) as credit
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries j ON j.journal_entry_id = l.journal_entry_id
|
||||
LEFT JOIN journal_entries child ON child.parent_entry_id = j.journal_entry_id
|
||||
WHERE l.account_id = 701
|
||||
AND j.entry_date >= '2025-06-01'
|
||||
AND j.entry_date <= '2025-06-30'
|
||||
AND j.is_deleted = false
|
||||
AND NOT (j.description LIKE '[%')
|
||||
AND child.journal_entry_id IS NULL
|
||||
"""
|
||||
|
||||
cur.execute(sql_filtered)
|
||||
result = cur.fetchone()
|
||||
print(f"フィルター後のクレジット: {result['credit']:,.0f}")
|
||||
print(f"期待値: 4,082,728")
|
||||
print(f"差異: {result['credit'] - 4082728:,.0f}")
|
||||
|
||||
print("\n処理完了")
|
||||
Reference in New Issue
Block a user