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

61 lines
2.4 KiB
Python

#!/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:
# 修复 Entry#360 的 parent_entry_id
print('修复前:')
cur.execute('SELECT journal_entry_id, parent_entry_id, description FROM journal_entries WHERE journal_entry_id IN (357, 360)')
for row in cur.fetchall():
print(f' Entry#{row["journal_entry_id"]}: parent_entry_id={row["parent_entry_id"]} | {row["description"][:50]}')
# 执行修复
print('\n执行修复...')
cur.execute('UPDATE journal_entries SET parent_entry_id = 357 WHERE journal_entry_id = 360')
conn.commit()
print('✓ 已修复: Entry#360 现在 parent_entry_id = 357')
# 验证修复
print('\n修复后:')
cur.execute('SELECT journal_entry_id, parent_entry_id, description FROM journal_entries WHERE journal_entry_id IN (357, 360)')
for row in cur.fetchall():
print(f' Entry#{row["journal_entry_id"]}: parent_entry_id={row["parent_entry_id"]} | {row["description"][:50]}')
# 验证试算表中的数据是否被正确过滤
print('\n验证试算表credit金额:')
cur.execute("SELECT account_id FROM accounts WHERE account_code = '701'")
aid = cur.fetchone()['account_id']
cur.execute("""
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 = %s
AND j.entry_date BETWEEN '2025-06-01' AND '2025-06-30'
AND j.is_deleted = false
AND child.journal_entry_id IS NULL
""", (aid,))
result = cur.fetchone()
print(f' 修复后的credit = {result["credit"]}')
print(f' 期望值 = 4,082,728')
if result["credit"] == 4082728:
print(' ✓✓✓ 完美!问题已解决!')
else:
print(f' 差异 = {result["credit"] - 4082728}')