店助工资计算规则梳理.md
12.8 KB
店助工资计算规则梳理
📋 概述
店助工资由以下几个部分组成:
- 底薪:根据门店分类(A、B、C类)按规则计算
- 提成:根据门店业绩与门店生命线的比例计算
- 阶段奖励:根据进店消耗人数是否达到阶段目标
- 固定奖励:手机管理费
第一部分:计算规则
💰 工资组成规则
1. 底薪规则
计算规则:根据门店分类(A、B、C类)确定底薪金额
| 门店分类 | 底薪金额 |
|---|---|
| A类门店 | 3000元 |
| B类门店 | 3100元 |
| C类门店 | 3200元 |
重要说明:
- 门店分类必须设置,系统不允许设置为NULL
- 如果门店分类未设置,应在计算工资前进行校验并提示错误
2. 提成规则
计算公式:分段阶梯提成模式,根据门店业绩与门店生命线的比例分段计算提成
提成前提条件
- 必须达到70%:门店业绩必须达到门店生命线的70%,否则无提成
提成比例规则(分段计算)
| 业绩区间 | 提成比例 | 计算说明 |
|---|---|---|
| 门店业绩 | 0% | 无提成 |
| 门店生命线 × 70% ≤ 门店业绩 | 0.4% | 整个业绩按0.4%计算 |
| 门店业绩 ≥ 门店生命线 × 100% | 0.4% + 0.6% | 0-100%部分(整个生命线)按0.4%,100%以上部分按0.6% |
提成计算示例
示例1:业绩在70%-100%之间
假设:
- 门店生命线 = 100,000元
- 门店业绩 = 85,000元
计算过程:
- 判断比例:85,000 / 100,000 = 85%(≥ 70%,满足前提条件)
- 判断区间:70% ≤ 85%
- 计算:整个业绩按0.4%计算
- 提成金额:85,000元 × 0.4% = 340元
- 总提成金额:340元
示例2:业绩超过100%
假设:
- 门店生命线 = 150,000元
- 门店业绩 = 189,034.40元
计算过程:
- 判断比例:189,034.40 / 150,000 = 126.02%(≥ 70%,满足前提条件)
- 判断区间:≥ 100%
- 分段计算:
- 0-100%部分(整个生命线):150,000元 × 0.4% = 600元
- 100%以上部分:(189,034.40 - 150,000)元 × 0.6% = 39,034.40元 × 0.6% = 234.21元
- 总提成金额:600元 + 234.21元 = 834.21元
计算公式:
如果 业绩 < 70%:提成 = 0
如果 70% ≤ 业绩 < 100%:提成 = 业绩 × 0.4%
如果 业绩 ≥ 100%:提成 = 生命线 × 0.4% + (业绩 - 生命线) × 0.6%
重要说明:
- 门店生命线必须在
lq_md_target表中进行设置,如果未设置,系统应报错提示 - 提成采用分段阶梯计算方式,不同区间按不同比例分别计算后累加
- 前提条件:必须达到70%才有提成资格
3. 阶段奖励规则
考核指标:进店消耗人数(有消费金额的,按门店按月去重客户数)
奖励规则
| 阶段 | 目标人数 | 奖励金额 | 说明 |
|---|---|---|---|
| 第一阶段 | 达到目标(如:100人) | 200元/月 | 只要达到第一阶段目标即可获得 |
| 第二阶段 | 达到目标(如:140人) | 再奖励200元/月 | 在达到第一阶段的基础上,再达到第二阶段目标 |
| 两个阶段都达到 | - | 总计400元/月 | 第一阶段200元 + 第二阶段200元 |
奖励说明:
- 两个阶段的奖励是累加的,不是互斥的
- 如果只达到第二阶段但未达到第一阶段,只获得第二阶段奖励(200元)
- 如果两个阶段都达到,获得总计400元奖励
统计规则:
- 按门店统计(
md字段) - 只统计有消费金额的记录(消耗金额 > 0)
- 同一个会员按月去重(
COUNT(DISTINCT hy)),其中hy为会员ID - 只统计当月有效消耗记录(
F_IsEffective = 1)
重要说明:
- 阶段目标必须在
lq_md_target表中进行设置,如果未设置,系统应报错提示 - 不同门店的阶段目标可能不同(如:川师第一阶段100人,第二阶段140人)
4. 固定奖励规则
手机管理费:150元/月
说明:
- 固定金额,无需计算
- 每月固定发放
📊 完整计算公式
店助月工资 = 底薪 + 提成 + 阶段奖励 + 固定奖励
其中:
- 底薪 = 根据门店分类确定(A类3000元,B类3100元,C类3200元)
- 提成 = 门店业绩 × 提成比例(根据业绩与生命线比例确定)
- 阶段奖励 = 根据进店消耗人数是否达到阶段目标(0/200/400元)
- 固定奖励 = 150元(手机管理费)
⚠️ 注意事项
门店业绩计算:
- 门店业绩 = 开单业绩 - 退卡业绩
- 只统计当月有效记录(
F_IsEffective = 1)
进店消耗人数统计:
- 必须使用
COUNT(DISTINCT hy)去重(同一个会员按月去重) - 只统计有消费金额的记录(消耗金额 > 0)
- 按门店统计(
md字段) - 只统计当月有效消耗记录(
F_IsEffective = 1) - 通过关联
lq_xh_jksyj表判断是否有消费金额
- 必须使用
阶段目标配置:
- 不同门店的阶段目标可能不同(如:川师第一阶段100人,第二阶段140人)
- 必须从
lq_md_target表获取对应门店的目标值 - 重要:如果
lq_md_target表中未设置阶段目标,系统应报错提示
提成比例判断:
- 严格按照门店业绩与门店生命线的比例判断
- 注意边界值:70% 和 100%
- 提成按门店业绩的百分比计算
数据一致性:
- 门店业绩的计算逻辑必须与门店总业绩统计保持一致
- 进店消耗人数的统计逻辑必须与其他统计接口保持一致
数据校验要求:
- 门店分类(
F_StoreCategory)必须设置,不允许为NULL,未设置应报错 - 门店生命线(
F_StoreLifeline)必须设置,未设置应报错 - 阶段目标(
F_AssistantHeadcountTargetStage1、F_AssistantHeadcountTargetStage2)必须设置,未设置应报错
- 门店分类(
第二部分:数据来源说明
🔍 核心数据表
1. lq_mdxx - 门店信息表
用途:获取门店分类,用于确定店助底薪
关键字段:
F_Id:门店ID(主键)F_StoreCategory:门店分类1= A类门店2= B类门店3= C类门店
查询条件:门店ID(F_Id)
查询示例:
SELECT F_StoreCategory FROM lq_mdxx WHERE F_Id = @StoreId
代码实现:
- 实体类:
LqMdxxEntity.StoreCategory(对应数据库字段F_StoreCategory) - 枚举类:
StoreCategoryEnum(定义A、B、C类门店) - 在工资计算时,已从门店信息中获取
StoreCategory字段(见LqSalaryService.cs第345行)
2. lq_md_target - 门店目标表
用途:获取门店生命线和阶段目标
关键字段:
F_StoreId:门店IDF_Month:月份(YYYYMM格式)F_StoreLifeline:门店生命线(必须设置,未设置则报错)F_AssistantHeadcountTargetStage1:店助第一阶段目标人数(必须设置,未设置则报错)F_AssistantHeadcountTargetStage2:店助第二阶段目标人数(必须设置,未设置则报错)
查询条件:门店ID(F_StoreId)+ 月份(F_Month,YYYYMM格式)
查询示例:
SELECT
F_StoreLifeline,
F_AssistantHeadcountTargetStage1,
F_AssistantHeadcountTargetStage2
FROM lq_md_target
WHERE F_StoreId = @StoreId AND F_Month = @Month
重要说明:所有目标字段都必须设置,如果未设置,系统应报错提示
3. lq_kd_kdjlb - 开单记录表
用途:计算门店开单业绩
关键字段:
sfyj:实付业绩(用于计算门店开单业绩总和)Kdrq:开单日期(用于按月过滤)F_IsEffective:是否有效(只统计有效记录)
查询逻辑:
- 按门店、月份汇总
sfyj字段 - 只统计有效记录(
F_IsEffective = 1)
4. lq_hytk_hytk - 退卡记录表
用途:计算门店退卡业绩
关键字段:
F_ActualRefundAmount:实际退卡金额(用于计算门店退卡业绩总和)tksj:退卡时间(用于按月过滤)md:门店IDF_IsEffective:是否有效(只统计有效记录)
查询逻辑:
- 按门店、月份汇总
F_ActualRefundAmount字段 - 只统计有效记录(
F_IsEffective = 1)
5. lq_xh_hyhk - 耗卡记录表
用途:统计进店消耗人数
关键字段:
F_Id:耗卡记录ID(主键)hy:会员ID(用于去重统计)md:门店ID(按门店统计)hksj:耗卡时间(用于按月过滤)F_IsEffective:是否有效(只统计有效记录)
查询逻辑:
- 按门店、月份统计去重会员数
- 只统计有效记录(
F_IsEffective = 1) - 只统计有消费金额的记录(通过关联
lq_xh_jksyj表判断)
6. lq_xh_jksyj - 耗卡健康师业绩表
用途:判断是否有消费金额
关键字段:
glkdbh:关联耗卡记录ID(关联lq_xh_hyhk.F_Id)jksyj:健康师业绩(消耗金额)F_IsEffective:是否有效(只统计有效记录)
查询逻辑:
- 用于判断耗卡记录是否有消费金额(
jksyj > 0) - 只统计有效记录(
F_IsEffective = 1)
📝 数据查询逻辑
1. 门店业绩计算
计算公式:门店业绩 = 开单业绩 - 退卡业绩
查询逻辑:
-- 1. 计算门店开单业绩
SELECT COALESCE(SUM(sfyj), 0) as BillingPerformance
FROM lq_kd_kdjlb
WHERE Djmd = @StoreId
AND DATE_FORMAT(Kdrq, '%Y%m') = @Month
AND F_IsEffective = 1
-- 2. 计算门店退卡业绩
SELECT COALESCE(SUM(F_ActualRefundAmount), 0) as RefundPerformance
FROM lq_hytk_hytk
WHERE md = @StoreId
AND DATE_FORMAT(tksj, '%Y%m') = @Month
AND F_IsEffective = 1
-- 3. 计算门店实际业绩
门店业绩 = 开单业绩 - 退卡业绩
2. 进店消耗人数统计
统计规则:有消费金额的,按门店按月去重客户数
查询逻辑:
-- 统计门店当月进店消耗人数(有消费金额的,按门店按月去重客户数)
SELECT COUNT(DISTINCT hy) as HeadCount
FROM lq_xh_hyhk hk
WHERE hk.md = @StoreId
AND DATE_FORMAT(hk.hksj, '%Y%m') = @Month
AND hk.F_IsEffective = 1
AND EXISTS (
-- 确保有消费金额(通过关联消耗业绩表判断)
SELECT 1
FROM lq_xh_jksyj jksyj
WHERE jksyj.glkdbh = hk.F_Id
AND jksyj.F_IsEffective = 1
AND jksyj.jksyj > 0
)
说明:
md:门店ID,按门店统计hy:会员ID,用于去重统计(同一个会员按月去重)hksj:耗卡时间,用于按月过滤F_IsEffective = 1:只统计有效记录- 重要:只统计有消费金额的记录(消耗金额 > 0),通过关联
lq_xh_jksyj表判断是否有消费金额
3. 门店分类获取
查询逻辑:
-- 获取门店分类
SELECT F_StoreCategory FROM lq_mdxx WHERE F_Id = @StoreId
-- 根据门店分类确定底薪
-- F_StoreCategory = 1 → 底薪 = 3000元
-- F_StoreCategory = 2 → 底薪 = 3100元
-- F_StoreCategory = 3 → 底薪 = 3200元
代码实现:
// 从门店信息中获取
var store = await _db.Queryable<LqMdxxEntity>()
.Where(x => x.Id == storeId)
.FirstAsync();
int? storeCategory = store.StoreCategory; // 1=A类, 2=B类, 3=C类
// 根据门店分类确定店助底薪
decimal baseSalary = storeCategory switch
{
1 => 3000m, // A类门店
2 => 3100m, // B类门店
3 => 3200m, // C类门店
_ => throw new Exception($"门店分类未设置或无效:门店ID={storeId}")
};
🔗 相关代码位置
- 门店信息查询:
LqMdxxService.cs - 门店分类枚举:
StoreCategoryEnum.cs(netcore/src/Modularity/Extend/NCC.Extend.Entitys/Enum/) - 门店实体类:
LqMdxxEntity.cs(F_StoreCategory字段) - 工资计算服务:
LqSalaryService.cs(第345行获取StoreCategory) - 门店目标查询:
LqMdTargetService.cs - 门店业绩统计:
LqStatisticsService.cs/LqDailyReportService.cs - 进店消耗人数统计:
LqStatisticsService.cs/LqDailyReportService.cs
📅 更新记录
- 2025-01-XX:初始版本,梳理店助工资计算规则
- 2025-01-XX:更新底薪规则,明确按A、B、C类门店分类确定底薪(A类3000元,B类3100元,C类3200元)
- 2025-01-XX:明确A、B、C类门店来源:
lq_mdxx表的F_StoreCategory字段(枚举值:1=A类,2=B类,3=C类) - 2025-01-XX:明确数据校验要求:门店分类必须设置,
lq_md_target表的目标字段必须设置,未设置应报错 - 2025-01-XX:明确进店消耗人数统计规则:有消费金额的,按门店按月去重,同一个会员按月去重
- 2025-01-XX:明确提成计算:按门店业绩的百分比计算
- 2025-01-XX:重新组织文档结构,分为规则部分和数据来源说明部分