修正
This commit is contained in:
177
analyze_701_detailed.py
Normal file
177
analyze_701_detailed.py
Normal file
@@ -0,0 +1,177 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
# 添加backend目录到路径
|
||||
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_detailed():
|
||||
"""详细检查701账户2025年6月的所有交易"""
|
||||
|
||||
with get_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
print("=" * 100)
|
||||
print("921年6月 账户701(売上高) 详细数据分析")
|
||||
print("=" * 100)
|
||||
|
||||
# 查询所有相关交易
|
||||
sql = """
|
||||
SELECT
|
||||
e.journal_entry_id,
|
||||
e.entry_date,
|
||||
e.description,
|
||||
l.account_id,
|
||||
a.account_name,
|
||||
COALESCE(l.debit, 0) as debit,
|
||||
COALESCE(l.credit, 0) as credit,
|
||||
e.is_deleted,
|
||||
e.parent_entry_id,
|
||||
e.version
|
||||
FROM journal_lines l
|
||||
JOIN journal_entries e ON e.journal_entry_id = l.journal_entry_id
|
||||
JOIN accounts a ON a.account_id = l.account_id
|
||||
WHERE a.account_id = 701
|
||||
AND e.entry_date >= '2025-06-01'
|
||||
AND e.entry_date <= '2025-06-30'
|
||||
ORDER BY e.entry_date, e.journal_entry_id
|
||||
"""
|
||||
|
||||
cur.execute(sql)
|
||||
all_rows = cur.fetchall()
|
||||
|
||||
# 分析数据
|
||||
total_all_debit = Decimal(0)
|
||||
total_all_credit = Decimal(0)
|
||||
total_valid_debit = Decimal(0)
|
||||
total_valid_credit = Decimal(0)
|
||||
|
||||
print("\n【 全部交易 】")
|
||||
for row in all_rows:
|
||||
total_all_debit += row['debit']
|
||||
total_all_credit += row['credit']
|
||||
|
||||
status_flags = []
|
||||
if row['is_deleted']:
|
||||
status_flags.append("已删除")
|
||||
if '[逆仕訳]' in row['description']:
|
||||
status_flags.append("逆仕訳")
|
||||
if row['parent_entry_id'] is not None:
|
||||
status_flags.append(f"修正版(原ID:{row['parent_entry_id']})")
|
||||
|
||||
status = " | ".join(status_flags) if status_flags else "✓ 有效"
|
||||
print(f"ID:{row['journal_entry_id']:5d} | {row['entry_date']} | {row['description']:40s} | " +
|
||||
f"借:{row['debit']:12} | 贷:{row['credit']:12} | {status}")
|
||||
|
||||
print(f"\n全部交易总计 - 借方: {total_all_debit:,} | 贷方: {total_all_credit:,}")
|
||||
|
||||
# 查询实际被排除的交易
|
||||
print("\n【 需要排除的交易 】")
|
||||
|
||||
# 1. 查询被修正的交易
|
||||
sql_corrected = """
|
||||
SELECT DISTINCT parent_entry_id
|
||||
FROM journal_entries
|
||||
WHERE parent_entry_id IS NOT NULL
|
||||
AND parent_entry_id IN (
|
||||
SELECT journal_entry_id
|
||||
FROM journal_entries
|
||||
WHERE entry_date >= '2025-06-01'
|
||||
AND entry_date <= '2025-06-30'
|
||||
)
|
||||
"""
|
||||
|
||||
cur.execute(sql_corrected)
|
||||
corrected_ids = [row['parent_entry_id'] for row in cur.fetchall()]
|
||||
|
||||
if corrected_ids:
|
||||
print(f"已被修正的交易ID: {corrected_ids}")
|
||||
sql_corrected_data = """
|
||||
SELECT
|
||||
journal_entry_id,
|
||||
entry_date,
|
||||
description,
|
||||
COALESCE(SUM(l.debit), 0) as total_debit,
|
||||
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 e.journal_entry_id IN ({})
|
||||
AND l.account_id = 701
|
||||
GROUP BY e.journal_entry_id, e.entry_date, e.description
|
||||
""".format(','.join(str(id) for id in corrected_ids))
|
||||
|
||||
cur.execute(sql_corrected_data)
|
||||
corrected_rows = cur.fetchall()
|
||||
for row in corrected_rows:
|
||||
print(f" ID:{row['journal_entry_id']} | {row['entry_date']} | {row['description']} | " +
|
||||
f"借:{row['total_debit']:,} | 贷:{row['total_credit']:,}")
|
||||
total_valid_credit -= row['total_credit'] # 这些应该被排除
|
||||
|
||||
# 2. 查询逆仕訳标记的交易
|
||||
sql_reversed = """
|
||||
SELECT
|
||||
journal_entry_id,
|
||||
entry_date,
|
||||
description,
|
||||
COALESCE(SUM(l.debit), 0) as total_debit,
|
||||
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 e.description LIKE '%[逆仕訳]%'
|
||||
AND e.entry_date >= '2025-06-01'
|
||||
AND e.entry_date <= '2025-06-30'
|
||||
AND l.account_id = 701
|
||||
GROUP BY e.journal_entry_id, e.entry_date, e.description
|
||||
"""
|
||||
|
||||
cur.execute(sql_reversed)
|
||||
reversed_rows = cur.fetchall()
|
||||
|
||||
if reversed_rows:
|
||||
print("\n标记为逆仕訳的交易:")
|
||||
for row in reversed_rows:
|
||||
print(f" ID:{row['journal_entry_id']} | {row['entry_date']} | {row['description']} | " +
|
||||
f"借:{row['total_debit']:,} | 贷:{row['total_credit']:,}")
|
||||
total_valid_credit -= row['total_credit']
|
||||
|
||||
# 计算有效总计
|
||||
for row in all_rows:
|
||||
# 排除已删除
|
||||
if row['is_deleted']:
|
||||
continue
|
||||
# 排除逆仕訳
|
||||
if '[逆仕訳]' in row['description']:
|
||||
continue
|
||||
# 排除被修正的交易
|
||||
if row['parent_entry_id'] is not None:
|
||||
continue
|
||||
# 排除作为修正元的交易
|
||||
if row['journal_entry_id'] in corrected_ids:
|
||||
continue
|
||||
|
||||
total_valid_debit += row['debit']
|
||||
total_valid_credit += row['credit']
|
||||
|
||||
print(f"\n【 有效交易总计 】")
|
||||
print(f"借方: {total_valid_debit:,}")
|
||||
print(f"贷方: {total_valid_credit:,}")
|
||||
print(f"\n差异检查:")
|
||||
print(f"全部贷方: {total_all_credit:,}")
|
||||
print(f"有效贷方: {total_valid_credit:,}")
|
||||
print(f"需排除金额: {total_all_credit - total_valid_credit:,}")
|
||||
|
||||
if total_all_credit - total_valid_credit == 1400000:
|
||||
print("✓ 找到问题!差异正好是1,400,000")
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_account_701_detailed()
|
||||
Reference in New Issue
Block a user