#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 检查对账单含税金额是否正确更新 """ import sqlite3 import sys import os def check_total_amount(): """检查含税金额更新情况""" # 连接数据库 conn = sqlite3.connect('server/data.db') c = conn.cursor() print("=== 检查对账单含税金额更新情况 ===\n") # 查询所有对账单记录 c.execute('SELECT id, contract_no, material_name, quantity, unit_price, total_amount FROM reconciliations ORDER BY id DESC LIMIT 20') records = c.fetchall() print("最近20条对账单记录:") print("-" * 80) print(f"{'ID':<5} {'合同号':<15} {'物料名称':<30} {'数量':<8} {'单价':<8} {'含税金额':<10} {'应计算金额':<10}") print("-" * 80) incorrect_count = 0 for record in records: recon_id, contract_no, material_name, quantity, unit_price, total_amount = record # 计算应有的含税金额 calculated_amount = quantity * unit_price # 检查是否一致(考虑浮点数精度) if abs(total_amount - calculated_amount) > 0.01: incorrect_count += 1 status = "❌" else: status = "✓" print(f"{recon_id:<5} {contract_no:<15} {material_name[:28]:<30} {quantity:<8} {unit_price:<8} {total_amount:<10} {calculated_amount:<10} {status}") print("-" * 80) print(f"\n发现 {incorrect_count} 条记录的含税金额不正确") # 修复不正确的记录 if incorrect_count > 0: print("\n正在修复不正确的记录...") c.execute('SELECT id, quantity, unit_price FROM reconciliations') all_records = c.fetchall() fixed_count = 0 for record in all_records: recon_id, quantity, unit_price = record correct_amount = quantity * unit_price # 更新含税金额 c.execute('UPDATE reconciliations SET total_amount=? WHERE id=?', (correct_amount, recon_id)) fixed_count += 1 conn.commit() print(f"已修复 {fixed_count} 条记录的含税金额") # 测试刷新单价功能 print("\n\n=== 测试刷新单价功能 ===") # 找一个有客户订单的合同号进行测试 c.execute("SELECT DISTINCT contract_no FROM reconciliations LIMIT 1") test_contract = c.fetchone() if test_contract: test_contract_no = test_contract[0] print(f"测试合同号: {test_contract_no}") # 查看该合同号的对账单记录 c.execute('SELECT id, material_name, unit_price, total_amount, quantity FROM reconciliations WHERE contract_no=?', (test_contract_no,)) test_records = c.fetchall() print("\n刷新前的记录:") for record in test_records: recon_id, material_name, unit_price, total_amount, quantity = record print(f" ID={recon_id}, 物料={material_name[:30]}..., 单价={unit_price}, 金额={total_amount}, 数量={quantity}") # 模拟刷新单价(这里只是检查逻辑) print("\n注意:实际的刷新单价功能需要通过API调用") conn.close() print("\n=== 建议检查事项 ===") print("1. 确认后端刷新单价的SQL语句是否正确") print("2. 检查前端是否正确调用了calculateTotal函数") print("3. 验证数据库中的total_amount字段是否被正确更新") print("4. 查看浏览器控制台是否有JavaScript错误") if __name__ == '__main__': check_total_amount()