修正
This commit is contained in:
156
check_701_simple.py
Normal file
156
check_701_simple.py
Normal file
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backend'))
|
||||
|
||||
os.environ.setdefault("DB_HOST", "localhost")
|
||||
os.environ.setdefault("DB_PORT", "5432")
|
||||
os.environ.setdefault("DB_NAME", "accounting_db")
|
||||
os.environ.setdefault("DB_USER", "postgres")
|
||||
os.environ.setdefault("DB_PASSWORD", "root")
|
||||
|
||||
from app.core.database import get_connection
|
||||
from decimal import Decimal
|
||||
|
||||
def check_account_701():
|
||||
"""シンプルに701の6月クレジット合計を確認"""
|
||||
|
||||
with get_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
print("=" * 80)
|
||||
print("702年6月 账户701 シンプルなクエリ")
|
||||
print("=" * 80)
|
||||
|
||||
# 単純に701の信用合計
|
||||
sql = """
|
||||
SELECT
|
||||
COALESCE(SUM(l.credit), 0) as total_credit,
|
||||
COUNT(*) as line_count
|
||||
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)
|
||||
result = cur.fetchone()
|
||||
|
||||
print(f"\n【 シンプルなSELECT 】")
|
||||
print(f"701の6月クレジット合計: {result['total_credit']:,}")
|
||||
print(f"対象行数: {result['line_count']}")
|
||||
|
||||
# 詳細を見る
|
||||
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 e.entry_date >= '2025-06-01'
|
||||
AND e.entry_date <= '2025-06-30'
|
||||
AND l.credit > 0
|
||||
ORDER BY e.entry_date, e.journal_entry_id
|
||||
"""
|
||||
|
||||
cur.execute(sql_detail)
|
||||
details = cur.fetchall()
|
||||
|
||||
print(f"\n【 詳細データ(クレジット > 0) 】")
|
||||
total = Decimal(0)
|
||||
for row in details:
|
||||
print(f"ID:{row['journal_entry_id']:5d} | {row['entry_date']} | {row['description']:40s} | " +
|
||||
f"クレジット:{row['credit']:>12,} | 削除:{row['is_deleted']} | Parent:{row['parent_entry_id']}")
|
||||
total += row['credit']
|
||||
|
||||
print(f"\n集計: {total:,}")
|
||||
|
||||
# 試算表サービスのフィルター条件と比較
|
||||
print(f"\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 j.description NOT LIKE '%[逆仕訳]%'
|
||||
AND child.journal_entry_id IS NULL
|
||||
"""
|
||||
|
||||
cur.execute(sql_filtered)
|
||||
result_filtered = cur.fetchone()
|
||||
|
||||
print(f"フィルター後のクレジット: {result_filtered['credit']:,}")
|
||||
print(f"差異: {result['total_credit'] - result_filtered['credit']:,}")
|
||||
|
||||
# どの条件で除外されているか分析
|
||||
print(f"\n【 除外原因の分析 】")
|
||||
|
||||
# deleted = true の件数
|
||||
cur.execute("""
|
||||
SELECT COUNT(*) as cnt
|
||||
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 e.is_deleted = true
|
||||
""")
|
||||
deleted_count = cur.fetchone()['cnt']
|
||||
print(f"is_deleted = true: {deleted_count}件")
|
||||
|
||||
# 逆仕訳の件数
|
||||
cur.execute("""
|
||||
SELECT COUNT(*) as cnt, COALESCE(SUM(l.credit), 0) as 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'
|
||||
AND e.description LIKE '%[逆仕訳]%'
|
||||
""")
|
||||
result = cur.fetchone()
|
||||
print(f"[逆仕訳]を含む: {result['cnt']}件, クレジット合計: {result['credit']:,}")
|
||||
|
||||
# parent_entry_idがある件数
|
||||
cur.execute("""
|
||||
SELECT COUNT(*) as cnt, COALESCE(SUM(l.credit), 0) as 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'
|
||||
AND e.parent_entry_id IS NOT NULL
|
||||
""")
|
||||
result = cur.fetchone()
|
||||
print(f"parent_entry_id != NULL: {result['cnt']}件, クレジット合計: {result['credit']:,}")
|
||||
|
||||
# 親として参照されている件数
|
||||
cur.execute("""
|
||||
SELECT COUNT(*) as cnt, COALESCE(SUM(l.credit), 0) as 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'
|
||||
AND e.journal_entry_id IN (
|
||||
SELECT parent_entry_id FROM journal_entries WHERE parent_entry_id IS NOT NULL
|
||||
)
|
||||
""")
|
||||
result = cur.fetchone()
|
||||
print(f"親として参照されている: {result['cnt']}件, クレジット合計: {result['credit']:,}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_account_701()
|
||||
Reference in New Issue
Block a user