Files
njts-accounting-core/check_entry360_pattern.py
2026-02-20 15:47:27 +09:00

74 lines
3.4 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.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
sys.path.insert(0, 'backend')
os.environ['DB_HOST'] = '192.168.0.61'
os.environ['DB_NAME'] = 'njts_acct'
os.environ['DB_USER'] = 'njts_app'
os.environ['DB_PASSWORD'] = 'njts_app2025'
os.environ['DB_PORT'] = '55432'
from app.core.database import get_connection
with get_connection() as conn:
with conn.cursor() as cur:
# 获取account_id
cur.execute("SELECT account_id FROM accounts WHERE account_code = '701'")
aid = cur.fetchone()['account_id']
print('\n【 Entry#363 和 Entry#367 形成的模式(成功的修正链) 】\n')
cur.execute("""
SELECT
j.journal_entry_id,
j.parent_entry_id,
j.entry_date,
j.description,
(SELECT SUM(l.credit) FROM journal_lines l WHERE l.journal_entry_id = j.journal_entry_id AND l.account_id = %s) as credit,
(SELECT SUM(l.debit) FROM journal_lines l WHERE l.journal_entry_id = j.journal_entry_id AND l.account_id = %s) as debit
FROM journal_entries j
WHERE j.journal_entry_id IN (363, 367, 368)
ORDER BY j.journal_entry_id
""", (aid, aid))
print("Entry# | Parent | Credit | Debit | Description (first 50 chars)")
for row in cur.fetchall():
parent_str = f"#{row['parent_entry_id']}" if row['parent_entry_id'] else "None"
print(f"#{row['journal_entry_id']:<5} | {parent_str:<6} | {str(row['credit'] or 0):>10} | {str(row['debit'] or 0):>10} | {row['description'][:50]}")
print('\n这是一个3步修正链:')
print(' 363 (原始贷:640,000) → 367 (逆仕訳借:640,000) → 368 (修正后贷:640,000)')
print('')
print('\n【 Entry#357 和 Entry#360 的模式(不完整的取消链) 】\n')
cur.execute("""
SELECT
j.journal_entry_id,
j.parent_entry_id,
j.entry_date,
j.description,
(SELECT SUM(l.credit) FROM journal_lines l WHERE l.journal_entry_id = j.journal_entry_id AND l.account_id = %s) as credit,
(SELECT SUM(l.debit) FROM journal_lines l WHERE l.journal_entry_id = j.journal_entry_id AND l.account_id = %s) as debit
FROM journal_entries j
WHERE j.journal_entry_id IN (357, 360)
ORDER BY j.journal_entry_id
""", (aid, aid))
print("Entry# | Parent | Credit | Debit | Description (first 50 chars)")
for row in cur.fetchall():
parent_str = f"#{row['parent_entry_id']}" if row['parent_entry_id'] else "None"
print(f"#{row['journal_entry_id']:<5} | {parent_str:<6} | {str(row['credit'] or 0):>10} | {str(row['debit'] or 0):>10} | {row['description'][:50]}")
print('\n这是一个2步取消链:')
print(' 357 (原始贷:1,400,000) → 360 (取消借:1,400,000)')
print('')
print('⚠️ 问题Entry#360没有后续的修正交易')
print('')
print('应该有第三步来平衡:')
print(' 360 (取消借:1,400,000) → ??? (修正后贷:1,400,000) ← 缺失!')
print('')
print('解决方案:')
print(' 需要检查是否应该创建一个后续的修正交易')
print(' 或者改变过滤逻辑使Entry#360也被排除')