V1.1.0 计算过程sheet金额列拆分,支持逐项对账
- 2月/3月计算过程sheet:各类金额独立成列(结转/补发1月/当月/累计补发) - 金额列填0而非空值,支持Excel直接SUM对账 - 去掉合并的"最终发放类型/金额"列,改为"发放合计"列 - 车辆奖金池总览:从参考文件导入全量492辆车 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -486,7 +486,7 @@ for k in sorted(G[1].keys(), key=lambda x: (x[1],x[0])):
|
||||
len(g['recs']), g['天数'], R(g['应考核']), R(g['实际']),
|
||||
'是' if g['有达标'] else '否', R(g['奖金']),
|
||||
R(excess), g['目标km'], g['可结转'],
|
||||
R(g['奖金']) if g['有达标'] else '', '当月达标' if g['有达标'] else '未达标'
|
||||
R(g['奖金']) if g['有达标'] else 0, '当月达标' if g['有达标'] else '未达标'
|
||||
]); rn+=1
|
||||
AW(ws_p1)
|
||||
|
||||
@@ -503,9 +503,9 @@ WH(ws_p2, [
|
||||
# 判断链
|
||||
'判断①结转: 1月达标且可结转≥1?','→结转金额(完整月)',
|
||||
'判断②补发1月: 1月未达标且累计达标?','→补发1月金额',
|
||||
'判断③当月: 2月达标且无结转?','→当月金额',
|
||||
'判断③当月: 2月达标且无结转?','→2月当月金额',
|
||||
'判断④累计补发2月: 2月未达标+无结转+累计达标?','→累计补发2月金额',
|
||||
'最终发放类型','最终发放金额'
|
||||
'2月发放合计'
|
||||
])
|
||||
rn=2
|
||||
for k in sorted(G[2].keys(), key=lambda x: (x[1],x[0])):
|
||||
@@ -530,11 +530,7 @@ for k in sorted(G[2].keys(), key=lambda x: (x[1],x[0])):
|
||||
c4_check = f"2月未达标={not g2['有达标']}, 无结转={carry==0}, 累计达标={cq}"
|
||||
c4_result = '是→累计补发' if cbp2>0 else '否'
|
||||
|
||||
final_type = '结转' if carry>0 else ('当月' if bonus2>0 else ('累计补发2月' if cbp2>0 else '无'))
|
||||
final_amt = carry or bonus2 or cbp2 or 0
|
||||
# 补发1月是额外的,不影响2月的发放类型
|
||||
if bp1>0: final_type += '+补发1月'
|
||||
if bp1>0: final_amt += bp1
|
||||
total_feb = carry + bp1 + bonus2 + cbp2
|
||||
|
||||
WR(ws_p2, rn, [
|
||||
k[0], k[1], g2['部门'],
|
||||
@@ -542,11 +538,11 @@ for k in sorted(G[2].keys(), key=lambda x: (x[1],x[0])):
|
||||
len(g2['recs']), g2['天数'], R(g2['应考核']), R(g2['实际']),
|
||||
'是' if g2['有达标'] else '否', R(g2['奖金']),
|
||||
R(ct), R(ca), '达标' if cq else '未达标',
|
||||
f"{c1_check} → {c1_result}", R(carry) if carry>0 else '',
|
||||
f"{c2_check} → {c2_result}", R(bp1) if bp1>0 else '',
|
||||
f"{c3_check} → {c3_result}", R(bonus2) if bonus2>0 else '',
|
||||
f"{c4_check} → {c4_result}", R(cbp2) if cbp2>0 else '',
|
||||
final_type, R(final_amt) if final_amt>0 else ''
|
||||
f"{c1_check} → {c1_result}", R(carry) if carry>0 else 0,
|
||||
f"{c2_check} → {c2_result}", R(bp1) if bp1>0 else 0,
|
||||
f"{c3_check} → {c3_result}", R(bonus2) if bonus2>0 else 0,
|
||||
f"{c4_check} → {c4_result}", R(cbp2) if cbp2>0 else 0,
|
||||
R(total_feb) if total_feb>0 else 0
|
||||
]); rn+=1
|
||||
AW(ws_p2)
|
||||
|
||||
@@ -561,9 +557,9 @@ WH(ws_p3, [
|
||||
'判断①结转','→结转金额',
|
||||
'判断②补发1月','→补发1月金额',
|
||||
'判断③补发2月','→补发2月金额',
|
||||
'判断④当月','→当月金额',
|
||||
'判断④当月','→3月当月金额',
|
||||
'判断⑤累计补发3月','→累计补发3月金额',
|
||||
'最终发放类型','最终发放金额'
|
||||
'3月发放合计'
|
||||
])
|
||||
rn=2
|
||||
for k in sorted(G[3].keys(), key=lambda x: (x[1],x[0])):
|
||||
@@ -590,13 +586,7 @@ for k in sorted(G[3].keys(), key=lambda x: (x[1],x[0])):
|
||||
c4 = f"3月达标={g3['有达标']}, 无结转={carry==0} → {'是' if bonus3>0 else '否'}"
|
||||
c5 = f"3月未达标={not g3['有达标']}, 无结转={carry==0}, 累计达标={cq} → {'是' if cbp3>0 else '否'}"
|
||||
|
||||
parts = []
|
||||
total = 0
|
||||
if carry>0: parts.append('结转'); total+=carry
|
||||
if bj>0: parts.append('补发1月'); total+=bj
|
||||
if bf2>0: parts.append('补发2月'); total+=bf2
|
||||
if bonus3>0: parts.append('当月'); total+=bonus3
|
||||
if cbp3>0: parts.append('累计补发3月'); total+=cbp3
|
||||
total_mar = carry + bj + bf2 + bonus3 + cbp3
|
||||
|
||||
WR(ws_p3, rn, [
|
||||
k[0], k[1], g3['部门'],
|
||||
@@ -605,12 +595,12 @@ for k in sorted(G[3].keys(), key=lambda x: (x[1],x[0])):
|
||||
len(g3['recs']), g3['天数'], R(g3['应考核']), R(g3['实际']),
|
||||
'是' if g3['有达标'] else '否', R(g3['奖金']),
|
||||
R(ct), R(ca), '达标' if cq else '未达标',
|
||||
c1, R(carry) if carry>0 else '',
|
||||
c2, R(bj) if bj>0 else '',
|
||||
c3, R(bf2) if bf2>0 else '',
|
||||
c4, R(bonus3) if bonus3>0 else '',
|
||||
c5, R(cbp3) if cbp3>0 else '',
|
||||
'+'.join(parts) if parts else '无', R(total) if total>0 else ''
|
||||
c1, R(carry) if carry>0 else 0,
|
||||
c2, R(bj) if bj>0 else 0,
|
||||
c3, R(bf2) if bf2>0 else 0,
|
||||
c4, R(bonus3) if bonus3>0 else 0,
|
||||
c5, R(cbp3) if cbp3>0 else 0,
|
||||
R(total_mar) if total_mar>0 else 0
|
||||
]); rn+=1
|
||||
AW(ws_p3)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user