fix: 月报/季报总览合同金额显示为0

- 后端新增sign_monthly[12]按月份拆分签单数据
- 月报/季报API均导出sign_monthly,季度转换包含sign_monthly
- 前端projVals首项改用sign_monthly替代硬编码0
- 版本号 v1.2.0.32
This commit is contained in:
mac
2026-07-11 15:39:35 +08:00
parent 63ddffb12a
commit 14368e83d0
4 changed files with 16 additions and 9 deletions

View File

@@ -1093,6 +1093,7 @@ def _aggregate_monthly_from_json(conn, table, tenants):
_year = date.today().year
months = [f"{_year}-{m:02d}" for m in range(1, 13)]
rev, gross, payment, cost, paid = [0]*12, [0]*12, [0]*12, [0]*12, [0]*12
sign_monthly = [0]*12
sign_total = 0
sign_cnt = 0
@@ -1103,6 +1104,10 @@ def _aggregate_monthly_from_json(conn, table, tenants):
if sm.startswith(str(_year)):
sign_total += float(pf.get("sign_amount") or 0)
sign_cnt += 1
# 签单按月拆分
sm7 = sm[:7]
if sm7 in months:
sign_monthly[months.index(sm7)] += float(pf.get("sign_amount") or 0)
try:
bd = json.loads(pf.get("budget_data") or "[]")
except:
@@ -1130,6 +1135,7 @@ def _aggregate_monthly_from_json(conn, table, tenants):
"rev": rev, "gross": gross, "payment": payment, "cost": cost, "paid": paid,
"cashflow": [payment[i] - paid[i] for i in range(12)],
"sign_total": sign_total, "sign_cnt": sign_cnt,
"sign_monthly": sign_monthly,
}
@@ -1181,6 +1187,7 @@ def _build_overview_result(agg, exp_amount, exp_incurred):
# 项目经营详情
project = {
"sign": agg["sign_total"],
"sign_monthly": agg["sign_monthly"],
"revenue": rev,
"gross": gross,
"cost": cost,
@@ -1218,7 +1225,7 @@ def overview_plan_quarterly():
conn.close()
# Convert monthly to quarterly
result = _build_overview_result(agg, exp_amount, exp_incurred)
for key in ["revenue","gross","payment","cost","paid","cashflow"]:
for key in ["sign_monthly","revenue","gross","payment","cost","paid","cashflow"]:
result["project"][key] = _quarterly_from_monthly(result["project"][key])
result["dept"]["project_gross"] = _quarterly_from_monthly(result["dept"]["project_gross"])
result["dept"]["dept_expense"] = _quarterly_from_monthly(result["dept"]["dept_expense"])
@@ -1247,7 +1254,7 @@ def overview_finance_quarterly():
exp_amount, exp_incurred = _aggregate_expenses(conn, "expense_records", OVERVIEW_TENANTS)
conn.close()
result = _build_overview_result(agg, exp_amount, exp_incurred)
for key in ["revenue","gross","payment","cost","paid","cashflow"]:
for key in ["sign_monthly","revenue","gross","payment","cost","paid","cashflow"]:
result["project"][key] = _quarterly_from_monthly(result["project"][key])
result["dept"]["project_gross"] = _quarterly_from_monthly(result["dept"]["project_gross"])
result["dept"]["dept_expense"] = _quarterly_from_monthly(result["dept"]["dept_expense"])