V3.0.0 叠加客户亏损筛选,生成最终发放记录
新增功能: - 读取1月/2月亏损表,按客户名称匹配考核数据 - 车辆考核追踪新增列:客户名称、客户是否亏损、考核应发、最终发放、未发放原因 - 月汇总新增亏损筛选section:亏损拦截/未匹配/最终发放/汇总 - 3月无亏损表,全部正常发放 - 亏损拦截不补发 规则:客户亏损→该客户下所有车不发;未匹配→标注待人工确认 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
30
main.py
30
main.py
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
"""按月生成独立Excel文件 - 里程考核绩效"""
|
||||
"""按月生成独立Excel文件 - 里程考核绩效(含亏损筛选)"""
|
||||
import os, openpyxl
|
||||
from calc_engine import *
|
||||
from excel_writer import *
|
||||
@@ -23,6 +23,22 @@ mar_data = calc_mar(G[1], G[2], G[3], feb_data)
|
||||
vehicle_payments, vehicle_info = collect_vehicle_payments(G, feb_data, mar_data)
|
||||
master_vehicles = read_master_vehicles()
|
||||
|
||||
# 亏损表
|
||||
print("\n读取亏损表...")
|
||||
loss_data = {}
|
||||
for m in [1,2,3]:
|
||||
ld = read_loss_data(m)
|
||||
if ld:
|
||||
loss_clients = sum(1 for v in ld.values() if v == '是')
|
||||
print(f" {m}月: {len(ld)}个客户, 其中亏损{loss_clients}个")
|
||||
loss_data[m] = ld
|
||||
else:
|
||||
print(f" {m}月: 无亏损表")
|
||||
loss_data[m] = None
|
||||
|
||||
# 车牌→客户名称映射
|
||||
plate_client = get_vehicle_client_map(D)
|
||||
|
||||
# 所有业务员
|
||||
all_persons = {}
|
||||
for m in G:
|
||||
@@ -33,8 +49,8 @@ for m in G:
|
||||
jan_total = sum(r['奖金'] for r in D[1] if r['是否达标']=='达标')
|
||||
feb_total = sum(sum(d['额'] for d in v) for v in feb_data.values())
|
||||
mar_total = sum(sum(d['额'] for d in v) for v in mar_data.values())
|
||||
print(f"\n1月: {jan_total:.2f}, 2月: {feb_total:.2f}, 3月: {mar_total:.2f}")
|
||||
print(f"Q1总计: {jan_total + feb_total + mar_total:.2f}")
|
||||
print(f"\n考核应发: 1月{jan_total:.2f}, 2月{feb_total:.2f}, 3月{mar_total:.2f}")
|
||||
print(f"Q1考核应发合计: {jan_total + feb_total + mar_total:.2f}")
|
||||
|
||||
# ============================================================
|
||||
# 按月生成
|
||||
@@ -68,14 +84,14 @@ for settle_month in [1, 2, 3]:
|
||||
|
||||
# Sheet 4: 汇总
|
||||
if settle_month == 1:
|
||||
write_summary_jan(wb, D[1])
|
||||
write_summary_jan(wb, D[1], loss_data[1], plate_client)
|
||||
elif settle_month == 2:
|
||||
write_summary_month(wb, 2, feb_data, ['结转','补发1月','当月','累计补发2月'])
|
||||
write_summary_month(wb, 2, feb_data, ['结转','补发1月','当月','累计补发2月'], loss_data[2], plate_client)
|
||||
else:
|
||||
write_summary_month(wb, 3, mar_data, ['结转','补发1月','补发2月','当月','累计补发3月'])
|
||||
write_summary_month(wb, 3, mar_data, ['结转','补发1月','补发2月','当月','累计补发3月'], loss_data[3], plate_client)
|
||||
|
||||
# Sheet 5: 车辆考核追踪
|
||||
write_vehicle_tracking_sheet(wb, settle_month, G, master_vehicles, vehicle_payments, vehicle_info)
|
||||
write_vehicle_tracking_sheet(wb, settle_month, G, master_vehicles, vehicle_payments, vehicle_info, loss_data[settle_month], plate_client)
|
||||
|
||||
# Sheet 6-17: 业务员
|
||||
for person in sorted(all_persons.keys()):
|
||||
|
||||
Reference in New Issue
Block a user