科技部老师工资计算规则.md
9.56 KB
科技部老师工资计算规则
📋 目录
💰 计算规则
1. 底薪规则(分三档)
底薪根据项目数和总业绩两个条件同时满足来确定档位:
| 档位 | 项目数要求 | 总业绩要求 | 底薪金额 |
|---|---|---|---|
| 第一档 | ≥ 80个 | ≥ 40,000元 | 2,500元 |
| 第二档 | ≥ 95个 | ≥ 80,000元 | 3,000元 |
| 第三档 | ≥ 110个 | ≥ 100,000元 | 3,500元 |
| 最低档 | 不满足第一档条件 | - | 2,500元(默认第一档) |
计算逻辑:
- 从高到低判断,同时满足项目数和总业绩两个条件才能获得对应档位底薪
- 如果都不满足,默认使用第一档(2,500元)
2. 业绩提成规则
业绩提成基于总业绩计算,采用分段累进方式:
| 总业绩范围 | 提成比例 |
|---|---|
| 0% (无提成) | |
| 10,000元 - 70,000元 | 2% |
| 70,000元 - 150,000元 | 2.5% |
| > 150,000元 | 3% |
计算说明:
- 提成金额 = 总业绩 × 对应提成比例
- 采用分段计算,不同区间按不同比例计算
3. 消耗提成规则
消耗提成基于消耗业绩计算,包含扣除机制:
| 消耗业绩范围 | 提成规则 |
|---|---|
| 扣除300元(负提成) | |
| 80,000元 - 100,000元 | 0.5% 提成 |
| 100,000元 - 200,000元 | 0.5% 提成 |
| > 200,000元 | 1% 提成 |
重要说明:
- 当消耗业绩 直接扣除300元工资
- 消耗提成金额可能为负数(扣除情况)
📊 数据来源
总业绩(TotalPerformance)
定义:开单业绩 + 消耗业绩 + 退卡业绩
数据来源表及字段:
| 业绩类型 | 数据表 | 字段 | 说明 |
|---|---|---|---|
| 开单业绩 | lq_kd_kjbsyj |
kjblsyj |
科技部老师开单业绩 |
| 消耗业绩 | lq_xh_kjbsyj |
kjblsyj |
科技部老师消耗业绩 |
| 退卡业绩 | lq_hytk_kjbsyj |
kjblsyj |
科技部老师退卡业绩 |
计算方式:
总业绩 = SUM(开单业绩) + SUM(消耗业绩) + SUM(退卡业绩)
过滤条件:
- 所有表记录必须满足:
F_IsEffective = 1(有效记录) - 按统计月份(YYYYMM格式)过滤时间范围
- 按科技老师ID(
kjblszh或kjbls)关联
消耗(ConsumeAchievement)
定义:科技部老师在耗卡记录中的业绩总和
数据来源:
- 表名:
lq_xh_kjbsyj(耗卡科技部老师业绩表) - 字段:
kjblsyj(科技部老师业绩) - 关联表:
lq_xh_hyhk(耗卡主表,用于时间过滤)
计算方式:
消耗 = SUM(lq_xh_kjbsyj.kjblsyj)
WHERE lq_xh_kjbsyj.F_IsEffective = 1
AND lq_xh_hyhk.F_IsEffective = 1
AND DATE_FORMAT(lq_xh_hyhk.hksj, '%Y%m') = @统计月份
AND lq_xh_kjbsyj.kjblszh = @科技老师账号
对应实体字段:
LqTechTeacherSalaryStatisticsEntity.F_ConsumeAchievement
项目数(ProjectCount)
定义:科技部老师在耗卡记录中的项目次数总和
数据来源:
- 表名:
lq_xh_kjbsyj(耗卡科技部老师业绩表) - 字段:
F_hdpxNumber(耗卡品项次数) - 关联表:
lq_xh_hyhk(耗卡主表,用于时间过滤)
计算方式:
项目数 = SUM(lq_xh_kjbsyj.F_hdpxNumber)
WHERE lq_xh_kjbsyj.F_IsEffective = 1
AND lq_xh_hyhk.F_IsEffective = 1
AND DATE_FORMAT(lq_xh_hyhk.hksj, '%Y%m') = @统计月份
AND lq_xh_kjbsyj.kjblszh = @科技老师账号
对应实体字段:
LqTechTeacherSalaryStatisticsEntity.F_ProjectCount
⚠️ 特殊规则
离职员工规则
适用条件:
- 员工状态:
BASE_USER.F_IsOnJob = 0(离职)
计算规则:
- 如果离职员工当月总业绩 > 30,000元:
- 提成:总业绩 × 2%
- 无底薪:不计算底薪
- 无奖励:不计算任何奖励
- 无消耗提成:不计算消耗提成
- 如果离职员工当月总业绩 ≤ 30,000元:
- 无任何工资
记录标识:
- 在
LqTechTeacherSalaryStatisticsEntity.F_IsTerminated字段中记录:0= 在职1= 离职
重要说明:
- 离职员工规则优先级最高,一旦判定为离职且业绩>3万,只按2%提成计算,其他规则不适用
🔄 计算流程
步骤1:识别科技部老师
- 从
BASE_USER表中筛选:Gw == "科技老师"且DeleteMark == null且EnabledMark == 1
步骤2:判断是否离职
- 检查
BASE_USER.F_IsOnJob:F_IsOnJob == 0→ 离职员工F_IsOnJob == 1→ 在职员工
步骤3:数据汇总(在职员工)
- 查询开单业绩:从
lq_kd_kjbsyj表汇总kjblsyj - 查询消耗业绩:从
lq_xh_kjbsyj表汇总kjblsyj - 查询退卡业绩:从
lq_hytk_kjbsyj表汇总kjblsyj - 查询项目数:从
lq_xh_kjbsyj表汇总F_hdpxNumber - 计算总业绩:开单业绩 + 消耗业绩 + 退卡业绩
步骤4:工资计算(在职员工)
4.1 计算底薪
- 根据项目数和总业绩,从高到低判断档位:
- 同时满足第三档条件 → 底薪 3,500元
- 同时满足第二档条件 → 底薪 3,000元
- 同时满足第一档条件 → 底薪 2,500元
- 都不满足 → 默认第一档 2,500元
4.2 计算业绩提成
- 根据总业绩范围确定提成比例:
- 10,000-70,000元 → 2%
- 70,000-150,000元 → 2.5%
- > 150,000元 → 3%
- 业绩提成金额 = 总业绩 × 提成比例
4.3 计算消耗提成
- 根据消耗业绩范围确定提成规则:
- 80,000-100,000元 → 0.5%
- 100,000-200,000元 → 0.5%
- > 200,000元 → 1%
- 消耗提成金额 = 消耗业绩 × 提成比例(或直接扣除300元)
步骤5:工资计算(离职员工)
- 如果总业绩 > 30,000元:
- 底薪 = 0
- 业绩提成 = 总业绩 × 2%
- 消耗提成 = 0
- 奖励 = 0
- 如果总业绩 ≤ 30,000元:
- 所有工资项 = 0
步骤6:保存结果
- 将计算结果保存到
lq_tech_teacher_salary_statistics表 - 记录
F_IsTerminated字段标识是否离职
📝 数据表结构
主表:lq_tech_teacher_salary_statistics
关键字段说明:
| 字段名 | 说明 | 数据来源 |
|---|---|---|
F_StatisticsMonth |
统计月份(YYYYMM) | 计算参数 |
F_EmployeeId |
员工ID | BASE_USER.F_Id |
F_EmployeeAccount |
员工账号 | BASE_USER.F_Account |
F_EmployeeName |
员工姓名 | BASE_USER.F_RealName |
F_StoreId |
门店ID | lq_mdxx.F_Id |
F_StoreName |
门店名称 | lq_mdxx.dm |
F_TotalPerformance |
总业绩 | 计算得出 |
F_ConsumeAchievement |
消耗业绩 | lq_xh_kjbsyj.kjblsyj |
F_ProjectCount |
项目数 | lq_xh_kjbsyj.F_hdpxNumber |
F_BaseSalary |
底薪 | 根据规则计算 |
F_PerformanceCommissionAmount |
业绩提成金额 | 根据规则计算 |
F_ConsumeCommissionAmount |
消耗提成金额 | 根据规则计算(可能为负数) |
F_IsTerminated |
是否离职(0=在职,1=离职) | BASE_USER.F_IsOnJob |
🔍 查询示例
查询科技部老师消耗数据(参考 LqStatisticsService.GetTechTeacherStatistics)
-- 消耗业绩和项目数查询
SELECT
kjbsyj.kjblszh as F_UserId,
kjbsyj.kjblsxm as F_UserName,
hyhk.md as F_StoreId,
md.dm as F_StoreName,
@statisticsMonth as F_StatisticsMonth,
COALESCE(SUM(kjbsyj.kjblsyj), 0) as F_ConsumePerformance, -- 消耗业绩
COALESCE(SUM(kjbsyj.F_hdpxNumber), 0) as F_ConsumeQuantity, -- 项目数
COALESCE(SUM(kjbsyj.F_LaborCost), 0) as F_ManualFee
FROM lq_xh_kjbsyj kjbsyj
INNER JOIN lq_xh_hyhk hyhk ON kjbsyj.glkdbh = hyhk.F_Id AND hyhk.F_IsEffective = 1
LEFT JOIN lq_mdxx md ON hyhk.md = md.F_Id
WHERE kjbsyj.F_IsEffective = 1
AND DATE_FORMAT(hyhk.hksj, '%Y%m') = @statisticsMonth
GROUP BY kjbsyj.kjblszh, kjbsyj.kjblsxm, hyhk.md, md.mdbm, md.dm
✅ 验证要点
数据准确性:
- 确保所有业绩数据来自有效记录(
F_IsEffective = 1) - 确保时间范围正确(按月份YYYYMM格式)
- 确保所有业绩数据来自有效记录(
计算逻辑:
- 底薪档位判断必须同时满足项目数和总业绩两个条件
- 消耗提成
- 离职员工规则优先级最高
数据一致性:
- 总业绩 = 开单业绩 + 消耗业绩 + 退卡业绩
- 消耗和项目数必须来自同一数据源(
lq_xh_kjbsyj)
📌 注意事项
离职员工处理:
- 必须先判断
F_IsOnJob,离职员工走特殊逻辑 - 离职员工不计算底薪和消耗提成
- 必须先判断
消耗提成扣除:
- 消耗 F_ConsumeCommissionAmount 字段值为
-300(负数)
- 消耗 F_ConsumeCommissionAmount 字段值为
数据汇总:
- 同一科技部老师可能在不同门店有数据,需要按门店分别计算
- 或者按科技部老师汇总所有门店数据(根据业务需求)
月份格式:
- 统计月份统一使用
YYYYMM格式(如:202501)
- 统计月份统一使用
🔗 相关文件
- 实体类:
LqTechTeacherSalaryStatisticsEntity.cs - 薪酬规则文档:
项目信息-薪酬规则与名词解释.md - 参考服务:
LqSalaryService.cs(健康师工资计算)、LqAssistantSalaryService.cs(店助工资计算) - 统计数据服务:
LqStatisticsService.GetTechTeacherStatistics(科技部老师业绩统计)