# 科技部老师工资计算规则 ## 📋 目录 - [计算规则](#计算规则) - [数据来源](#数据来源) - [特殊规则](#特殊规则) - [计算流程](#计算流程) --- ## 💰 计算规则 ### 1. 底薪规则(分三档) 底薪根据**项目数**和**总业绩**两个条件同时满足来确定档位: | 档位 | 项目数要求 | 总业绩要求 | 底薪金额 | |------|-----------|-----------|---------| | **第一档** | ≥ 80个 | ≥ 40,000元 | 2,500元 | | **第二档** | ≥ 95个 | ≥ 80,000元 | 3,000元 | | **第三档** | ≥ 110个 | ≥ 100,000元 | 3,500元 | | **最低档** | 不满足第一档条件 | - | 2,500元(默认第一档) | **计算逻辑**: - 从高到低判断,同时满足项目数和总业绩两个条件才能获得对应档位底薪 - 如果都不满足,默认使用第一档(2,500元) --- ### 2. 业绩提成规则 业绩提成基于**总业绩**计算,采用**分段累进式**方式: **提成前提**:业绩必须大于1万才能进行提成 | 业绩区间 | 提成比例 | 说明 | |---------|---------|------| | ≤ 10,000元 | 0% | 无提成资格 | | > 10,000元 | 分段计算 | 有提成资格后,0-7万部分按2%,7万-15万部分按2.5%,15万以上部分按3% | **计算说明**: - 采用**分段累进式**计算,不同区间按不同比例分别计算后累加 - **必须大于1万才有提成资格** - 如果有提成资格后: - 0-7万部分:2%(整个0-7万部分都按2%计算) - 7万-15万部分:2.5% - 15万以上部分:3% **计算公式(分段累进)**: ``` 如果 业绩 ≤ 1万:提成 = 0(无提成资格) 如果 1万 < 业绩 ≤ 7万:提成 = 业绩 × 2% 如果 7万 < 业绩 ≤ 15万:提成 = 7万 × 2% + (业绩 - 7万) × 2.5% 如果 业绩 > 15万:提成 = 7万 × 2% + (15万 - 7万) × 2.5% + (业绩 - 15万) × 3% ``` **示例**: - 总业绩 = 5,000元 → 提成 = 0(无提成资格,未达到1万门槛) - 总业绩 = 50,000元 → 提成 = 50,000 × 2% = 1,000元 - 总业绩 = 100,000元 → 提成 = 70,000 × 2% + (100,000 - 70,000) × 2.5% = 1,400 + 750 = 2,150元 - 总业绩 = 200,000元 → 提成 = 70,000 × 2% + (150,000 - 70,000) × 2.5% + (200,000 - 150,000) × 3% = 1,400 + 2,000 + 1,500 = 4,900元 --- ### 3. 消耗提成规则 消耗提成基于**消耗业绩**计算,包含扣除机制: | 消耗业绩范围 | 提成规则 | |------------|---------| | < 80,000元 | **扣除300元**(负提成) | | 80,000元 - 100,000元 | 0.5% 提成 | | 100,000元 - 200,000元 | 0.5% 提成 | | > 200,000元 | 1% 提成 | **重要说明**: - 当消耗业绩 < 80,000元时,不是无提成,而是**直接扣除300元工资** - 消耗提成金额可能为负数(扣除情况) --- ## 📊 数据来源 ### 总业绩(TotalPerformance) **定义**:开单业绩 - 退卡业绩(退卡是扣除) **数据来源表及字段**: | 业绩类型 | 数据表 | 字段 | 说明 | |---------|--------|------|------| | **开单业绩** | `lq_kd_kjbsyj` | `kjblsyj` | 科技部老师开单业绩 | | **退卡业绩** | `lq_hytk_kjbsyj` | `kjblsyj` | 科技部老师退卡业绩(扣除项) | **计算方式**: ```sql 总业绩 = SUM(开单业绩) - SUM(退卡业绩) ``` **注意**: - 消耗业绩不包含在总业绩中 - 退卡业绩是扣除项,所以用减法 **过滤条件**: - 所有表记录必须满足:`F_IsEffective = 1`(有效记录) - 按统计月份(YYYYMM格式)过滤时间范围 - 按科技老师ID(`kjblszh` 或 `kjbls`)关联 --- ### 消耗(ConsumeAchievement) **定义**:科技部老师在耗卡记录中的业绩总和 **数据来源**: - **表名**:`lq_xh_kjbsyj`(耗卡科技部老师业绩表) - **字段**:`kjblsyj`(科技部老师业绩) - **关联表**:`lq_xh_hyhk`(耗卡主表,用于时间过滤) **计算方式**: ```sql 消耗 = 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`(耗卡主表,用于时间过滤) **计算方式**: ```sql 项目数 = 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 计算业绩提成 - 前提条件:业绩必须大于1万才有提成资格 - 如果有提成资格后,分段计算: - 0-7万部分:2%(整个0-7万部分都按2%计算) - 7万-15万部分:2.5% - 15万以上部分:3% - 业绩提成金额按分段累进式计算 #### 4.3 计算消耗提成 - 根据消耗业绩范围确定提成规则: - < 80,000元 → 扣除300元(负数) - 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`) ```sql -- 消耗业绩和项目数查询 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 ``` --- ## ✅ 验证要点 1. **数据准确性**: - 确保所有业绩数据来自有效记录(`F_IsEffective = 1`) - 确保时间范围正确(按月份YYYYMM格式) 2. **计算逻辑**: - 底薪档位判断必须同时满足项目数和总业绩两个条件 - 消耗提成 < 80,000元时是扣除300元,不是0 - 离职员工规则优先级最高 3. **数据一致性**: - 总业绩 = 开单业绩 - 退卡业绩(退卡是扣除) - 消耗业绩不包含在总业绩中,仅用于消耗提成计算 - 消耗和项目数必须来自同一数据源(`lq_xh_kjbsyj`) --- ## 📌 注意事项 1. **离职员工处理**: - 必须先判断 `F_IsOnJob`,离职员工走特殊逻辑 - 离职员工不计算底薪和消耗提成 2. **消耗提成扣除**: - 消耗 < 80,000元时,`F_ConsumeCommissionAmount` 字段值为 `-300`(负数) 3. **数据汇总**: - 同一科技部老师可能在不同门店有数据,需要按门店分别计算 - 或者按科技部老师汇总所有门店数据(根据业务需求) 4. **月份格式**: - 统计月份统一使用 `YYYYMM` 格式(如:202501) --- ## 🔗 相关文件 - **实体类**:`LqTechTeacherSalaryStatisticsEntity.cs` - **薪酬规则文档**:`项目信息-薪酬规则与名词解释.md` - **参考服务**:`LqSalaryService.cs`(健康师工资计算)、`LqAssistantSalaryService.cs`(店助工资计算) - **统计数据服务**:`LqStatisticsService.GetTechTeacherStatistics`(科技部老师业绩统计)