修正
This commit is contained in:
98
apply_option_a.py
Normal file
98
apply_option_a.py
Normal file
@@ -0,0 +1,98 @@
|
||||
#!/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:
|
||||
print('\n【 執行選項A:完全對冲 】\n')
|
||||
|
||||
print('操作1: 刪除Entry#371(已完成)')
|
||||
print('操作2: 刪除Entry#373(進行中)...\n')
|
||||
|
||||
# 標記Entry#373為已刪除
|
||||
print('執行: UPDATE journal_entries SET is_deleted=true WHERE journal_entry_id=373')
|
||||
cur.execute('UPDATE journal_entries SET is_deleted=true WHERE journal_entry_id = 373')
|
||||
conn.commit()
|
||||
print('✓ Entry#373 已標記為已刪除\n')
|
||||
|
||||
# 驗證修正鏈條都被正確過濾
|
||||
print('【 驗證修正鏈條 】\n')
|
||||
cur.execute("""
|
||||
SELECT
|
||||
j.journal_entry_id,
|
||||
j.description,
|
||||
l.debit,
|
||||
l.credit,
|
||||
j.parent_entry_id,
|
||||
j.is_deleted,
|
||||
(SELECT COUNT(*) FROM journal_entries child WHERE child.parent_entry_id = j.journal_entry_id) as has_child
|
||||
FROM journal_entries j
|
||||
LEFT JOIN journal_lines l ON l.journal_entry_id = j.journal_entry_id AND l.account_id = (
|
||||
SELECT account_id FROM accounts WHERE account_code = '701'
|
||||
)
|
||||
WHERE j.journal_entry_id IN (357, 360, 372, 373)
|
||||
ORDER BY j.journal_entry_id
|
||||
""")
|
||||
|
||||
print("Entry# | Delete | Parent | 借方 | 貳方 | 狀態")
|
||||
print("-" * 70)
|
||||
for row in cur.fetchall():
|
||||
delete_str = "是" if row['is_deleted'] else "否"
|
||||
parent_str = f"#{row['parent_entry_id']}" if row['parent_entry_id'] else "None"
|
||||
debit = row['debit'] or 0
|
||||
credit = row['credit'] or 0
|
||||
|
||||
# 確定是否被過濾
|
||||
if row['is_deleted']:
|
||||
status = "❌ 已刪除"
|
||||
elif row['has_child'] > 0:
|
||||
status = "❌ 有子(被過濾)"
|
||||
else:
|
||||
status = "✓ 被計入"
|
||||
|
||||
print(f"#{row['journal_entry_id']:<6} | {delete_str:<6} | {parent_str:<6} | {debit:>10} | {credit:>10} | {status}")
|
||||
|
||||
print('\n【 最終驗證:試算表結果 】\n')
|
||||
cur.execute("SELECT account_id FROM accounts WHERE account_code = '701'")
|
||||
aid = cur.fetchone()['account_id']
|
||||
|
||||
cur.execute("""
|
||||
SELECT
|
||||
COALESCE(SUM(l.debit), 0) AS debit,
|
||||
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,))
|
||||
row = cur.fetchone()
|
||||
|
||||
print(f'2025年6月 - 科目701(売上高)最終結果:')
|
||||
print(f' 借方 (debit): {row["debit"]:>10}')
|
||||
print(f' 貳方 (credit): {row["credit"]:>10}')
|
||||
print(f' 淨值 (credit - debit): {row["credit"] - row["debit"]:>10}')
|
||||
|
||||
if row['debit'] == 0 and row['credit'] == 4082728:
|
||||
print('\n✓✓✓ 完美!對冲成功!')
|
||||
print(' - 1,400,000的借貳對冲已完全移除試算表')
|
||||
print(' - 貳方金額為淨值: 4,082,728')
|
||||
elif row['credit'] == 4082728:
|
||||
print(f'\n✓ 貳方正確,但借方仍有:{row["debit"]}')
|
||||
else:
|
||||
print(f'\n⚠️ 可能還有其他問題,當前值: 借{row["debit"]}, 貳{row["credit"]}')
|
||||
Reference in New Issue
Block a user