# 店助主任工资计算规则梳理
## 📋 概述
店助主任工资由以下几个部分组成:
1. **底薪**:从工资配置表(`lq_gz`)获取,字段为 `dzzrdx`
2. **提成**:根据门店业绩与门店生命线的比例计算(阶梯提成模式)
3. **阶段奖励**:根据进店消耗人数是否达到阶段目标(同店助)
4. **固定奖励**:手机管理费
---
# 第一部分:计算规则
## 💰 工资组成规则
### 1. 底薪规则
**计算规则**:从工资配置表(`lq_gz`)获取,字段为 `dzzrdx`
**重要说明**:
- 底薪从配置表获取,如果未设置,应使用默认值或报错提示
- 底薪是固定值,不随门店分类变化
---
### 2. 提成规则
**计算公式**:分段式提成模式,根据门店业绩与门店生命线的比例分段计算提成
#### 提成前提条件
- **必须达到70%**:门店业绩必须达到门店生命线的70%,否则无提成
#### 提成比例规则(分段式)
| 业绩区间 | 提成比例 | 计算说明 |
|---------|---------|---------|
| 门店业绩 < 门店生命线 × 70% | 0% | 无提成 |
| 门店生命线 × 70% ≤ 门店业绩 < 门店生命线 × 100% | 0.4% | 整个业绩按0.4%计算 |
| 门店业绩 ≥ 门店生命线 × 100% | 0.4% + 1.6% | **分段式**:
- 0-100%部分(整个生命线):0.4%
- 100%以上部分:1.6% |
**重要说明**:
- 店助主任和店助使用**相同的分段式提成规则**,但100%以上部分比例不同
- 店助:100%以上部分按0.6%
- 店助主任:100%以上部分按1.6%
- 提成采用**分段式**计算方式,不同区间按不同比例分别计算后累加
- 前提条件:必须达到70%才有提成资格
- **分段式**:业绩超过100%时,0-100%部分和100%以上部分分别按不同比例计算
#### 提成计算示例
**示例1:业绩在70%-100%之间**
假设:
- 门店生命线 = 200,000元
- 门店业绩 = 147,685.20元
计算过程:
1. 判断比例:147,685.20 / 200,000 = 73.84%(≥ 70%,满足前提条件)
2. 判断区间:70% ≤ 73.84% < 100%
3. 计算:整个业绩按0.4%计算
- 提成金额:147,685.20元 × 0.4% = 590.74元
4. 总提成金额:590.74元
**示例2:业绩超过100%(分段式)**
假设:
- 门店生命线 = 320,000元
- 门店业绩 = 408,593.42元
计算过程:
1. 判断比例:408,593.42 / 320,000 = 127.69%(≥ 70%,满足前提条件)
2. 判断区间:≥ 100%
3. **分段式计算**:
- 0-100%部分(整个生命线):320,000元 × 0.4% = 1,280元
- 100%以上部分:(408,593.42 - 320,000)元 × 1.6% = 88,593.42元 × 1.6% = 1,417.49元
4. 总提成金额:1,280元 + 1,417.49元 = 2,697.49元
**计算公式**:
```
如果 业绩 < 70%:提成 = 0
如果 70% ≤ 业绩 < 100%:提成 = 业绩 × 0.4%
如果 业绩 ≥ 100%:提成 = 生命线 × 0.4% + (业绩 - 生命线) × 1.6%
```
---
### 3. 阶段奖励规则
**考核指标**:进店消耗人数(有消费金额的,按门店按月去重客户数)
#### 奖励规则
| 阶段 | 目标人数 | 奖励金额 | 说明 |
|-----|---------|---------|------|
| 第一阶段 | 达到目标(如:100人) | 200元/月 | 只要达到第一阶段目标即可获得 |
| 第二阶段 | 达到目标(如:140人) | 再奖励200元/月 | 在达到第一阶段的基础上,再达到第二阶段目标 |
| 两个阶段都达到 | - | 总计400元/月 | 第一阶段200元 + 第二阶段200元 |
**奖励说明**:
- 两个阶段的奖励是累加的,不是互斥的
- 如果只达到第二阶段但未达到第一阶段,只获得第二阶段奖励(200元)
- 如果两个阶段都达到,获得总计400元奖励
**统计规则**:
- 按门店统计(`md` 字段)
- 只统计有消费金额的记录(消耗金额 > 0)
- 同一个会员按月去重(`COUNT(DISTINCT hy)`),其中 `hy` 为会员ID
- 只统计当月有效消耗记录(`F_IsEffective = 1`)
**重要说明**:
- 阶段目标必须在 `lq_md_target` 表中进行设置,如果未设置,奖励金额为0(不报错)
- 不同门店的阶段目标可能不同(如:川师第一阶段100人,第二阶段140人)
---
### 4. 固定奖励规则
**手机管理费**:150元/月
**说明**:
- 固定金额,无需计算
- 每月固定发放
---
## 📊 完整计算公式
```
店助主任月工资 = 底薪 + 提成 + 阶段奖励 + 固定奖励
其中:
- 底薪 = 从lq_gz.dzzrdx获取
- 提成 = 根据业绩与生命线比例确定(阶梯提成模式)
- 阶段奖励 = 根据进店消耗人数是否达到阶段目标(0/200/400元)
- 固定奖励 = 150元(手机管理费)
```
---
## ⚠️ 注意事项
1. **门店业绩计算**:
- 门店业绩 = 开单业绩 - 退卡业绩
- 只统计当月有效记录(`F_IsEffective = 1`)
2. **进店消耗人数统计**:
- 必须使用 `COUNT(DISTINCT hy)` 去重(同一个会员按月去重)
- 只统计有消费金额的记录(消耗金额 > 0)
- 按门店统计(`md` 字段)
- 只统计当月有效消耗记录(`F_IsEffective = 1`)
- 通过关联 `lq_xh_jksyj` 表判断是否有消费金额
3. **阶段目标配置**:
- 不同门店的阶段目标可能不同(如:川师第一阶段100人,第二阶段140人)
- 必须从 `lq_md_target` 表获取对应门店的目标值
- **重要**:如果 `lq_md_target` 表中未设置阶段目标,奖励金额为0(不报错)
4. **提成比例判断**:
- 严格按照门店业绩与门店生命线的比例判断
- 注意边界值:70% 和 100%
- **重要**:店助主任和店助使用**相同的分段式提成规则**,但100%以上部分比例不同
- **重要**:当业绩超过100%时,使用**分段式**提成模式:
- 0-100%部分(整个生命线)按0.4%计算
- 100%以上部分:店助按0.6%计算,店助主任按1.6%计算
- **分段式说明**:不同区间按不同比例分别计算后累加
5. **数据一致性**:
- 门店业绩的计算逻辑必须与门店总业绩统计保持一致
- 进店消耗人数的统计逻辑必须与其他统计接口保持一致
6. **数据校验要求**:
- 门店分类(`F_StoreCategory`)必须设置,不允许为NULL,未设置应报错
- 门店生命线(`F_StoreLifeline`)如果未设置,提成金额为0(不报错)
- 阶段目标(`F_AssistantHeadcountTargetStage1`、`F_AssistantHeadcountTargetStage2`)如果未设置,奖励金额为0(不报错)
7. **在店天数比例计算**:
- 如果店助主任中间离职或请假,提成和奖励需要按在店天数比例计算
- 计算公式:
- 店助主任提成 = 门店总提成 ÷ 当月天数 × 在店天数
- 店助主任奖励 = 门店总奖励 ÷ 当月天数 × 在店天数
---
# 第二部分:数据来源说明
## 📊 数据表说明
### 1. `lq_gz` - 工资配置表
**用途**:获取店助主任底薪
**关键字段**:
- `dzzrdx`:店助主任底薪
**查询逻辑**:
- 从配置表获取底薪值
- 如果未设置,应使用默认值或报错提示
---
### 2. `lq_mdxx` - 门店信息表
**用途**:获取门店分类、门店名称等信息
**关键字段**:
- `F_Id`:门店ID(主键)
- `dm`:门店名称
- `F_StoreCategory`:门店分类(1=A类,2=B类,3=C类)
- `F_StoreType`:门店类型(200平/旗舰店)
**查询逻辑**:
- 通过门店ID关联获取门店信息
- 门店分类必须设置,不允许为NULL
---
### 3. `lq_md_target` - 门店目标表
**用途**:获取门店生命线和阶段目标
**关键字段**:
- `F_StoreId`:门店ID
- `F_Month`:月份(YYYYMM格式)
- `F_StoreLifeline`:门店生命线
- `F_AssistantHeadcountTargetStage1`:店助人头目标数阶段一
- `F_AssistantHeadcountTargetStage2`:店助人头目标数阶段二
**查询逻辑**:
- 通过门店ID和月份关联获取目标数据
- 门店生命线如果未设置,提成金额为0
- 阶段目标如果未设置,奖励金额为0
---
### 4. `lq_kd_kdjlb` - 开单记录表
**用途**:计算门店开单业绩
**关键字段**:
- `Djmd`:登记门店(门店ID)
- `Kdrq`:开单日期
- `Sfyj`:实付业绩
- `F_IsEffective`:是否有效(只统计有效记录)
**查询逻辑**:
- 按门店、月份统计开单业绩总和
- 只统计有效记录(`F_IsEffective = 1`)
---
### 5. `lq_hytk_hytk` - 退卡信息表
**用途**:计算门店退卡业绩
**关键字段**:
- `md`:门店编号(门店ID)
- `tksj`:退卡时间
- `F_ActualRefundAmount`:实退金额(优先使用)
- `tkje`:退卡金额(如果实退金额为空则使用)
- `F_IsEffective`:是否有效(只统计有效记录)
**查询逻辑**:
- 按门店、月份统计退卡金额总和
- 优先使用 `F_ActualRefundAmount`,如果为空则使用 `tkje`
- 只统计有效记录(`F_IsEffective = 1`)
---
### 6. `lq_xh_hyhk` - 会员耗卡表
**用途**:统计进店消耗人数
**关键字段**:
- `F_Id`:耗卡编号(主键)
- `md`:门店ID
- `hy`:会员ID(用于去重统计)
- `hksj`:耗卡时间
- `F_IsEffective`:是否有效(只统计有效记录)
**查询逻辑**:
- 按门店、月份统计去重会员数
- 只统计有效记录(`F_IsEffective = 1`)
- 必须关联 `lq_xh_jksyj` 表判断是否有消费金额
---
### 7. `lq_xh_jksyj` - 耗卡健康师业绩表
**用途**:判断是否有消费金额
**关键字段**:
- `glkdbh`:关联耗卡记录ID(关联 `lq_xh_hyhk.F_Id`)
- `jksyj`:健康师业绩(消耗金额)
- `F_IsEffective`:是否有效(只统计有效记录)
**查询逻辑**:
- 用于判断耗卡记录是否有消费金额(`jksyj > 0`)
- 只统计有效记录(`F_IsEffective = 1`)
---
### 8. `lq_attendance_summary` - 考勤汇总表
**用途**:获取在店天数
**关键字段**:
- `F_UserId`:用户ID(员工ID)
- `F_Year`:年份
- `F_Month`:月份
- `F_WorkDays`:出勤天数(在店天数)
- `F_LeaveDays`:请假天数
- `F_IsEffective`:是否有效(只统计有效记录)
**查询逻辑**:
- 通过员工ID、年份、月份获取考勤数据
- 用于计算按在店天数比例计算的提成和奖励
---
## 📝 数据查询逻辑
### 1. 门店业绩计算
**计算公式**:门店业绩 = 开单业绩 - 退卡业绩
**查询逻辑**:
```sql
-- 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(COALESCE(F_ActualRefundAmount, tkje, 0)), 0) as RefundPerformance
FROM lq_hytk_hytk
WHERE md = @StoreId
AND DATE_FORMAT(tksj, '%Y%m') = @Month
AND F_IsEffective = 1
-- 3. 计算门店实际业绩
门店业绩 = 开单业绩 - 退卡业绩
```
---
### 2. 进店消耗人数统计
**统计规则**:有消费金额的,按门店按月去重客户数
**查询逻辑**:
```sql
-- 统计门店当月进店消耗人数(有消费金额的,按门店按月去重客户数)
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. 门店分类获取
**查询逻辑**:
```sql
SELECT
F_Id as StoreId,
dm as StoreName,
F_StoreCategory as StoreCategory,
F_StoreType as StoreType
FROM lq_mdxx
WHERE F_Id = @StoreId
```
**说明**:
- `F_StoreCategory`:门店分类(1=A类,2=B类,3=C类)
- 门店分类必须设置,不允许为NULL
---
### 4. 门店生命线和阶段目标获取
**查询逻辑**:
```sql
SELECT
F_StoreLifeline as StoreLifeline,
F_AssistantHeadcountTargetStage1 as Stage1Target,
F_AssistantHeadcountTargetStage2 as Stage2Target
FROM lq_md_target
WHERE F_StoreId = @StoreId
AND F_Month = @Month
```
**说明**:
- `F_StoreLifeline`:门店生命线,用于计算提成
- `F_AssistantHeadcountTargetStage1`:第一阶段目标人数
- `F_AssistantHeadcountTargetStage2`:第二阶段目标人数
- 如果门店生命线未设置,提成金额为0
- 如果阶段目标未设置,奖励金额为0
---
### 5. 店助主任底薪获取
**查询逻辑**:
```sql
SELECT dzzrdx as BaseSalary
FROM lq_gz
LIMIT 1
```
**说明**:
- `dzzrdx`:店助主任底薪
- 从配置表获取,如果未设置,应使用默认值或报错提示
---
## 🔄 店助主任与店助的主要区别
### 1. 底薪规则
| 岗位 | 底薪来源 |
|-----|---------|
| 店助 | 根据门店分类确定(A类3000,B类3100,C类3200) |
| 店助主任 | 从配置表 `lq_gz.dzzrdx` 获取 |
### 2. 提成规则
| 岗位 | 业绩 ≥ 100%时的提成计算 |
|-----|---------------------|
| 店助 | 分段式:
- 0-100%部分(整个生命线):0.4%
- 100%以上部分:0.6% |
| 店助主任 | **分段式**:
- 0-100%部分(整个生命线):0.4%
- 100%以上部分:1.6% |
**重要说明**:店助主任和店助使用**相同的分段式提成规则**,但100%以上部分比例不同
**示例对比**:
- 门店生命线 = 320,000元
- 门店业绩 = 408,593.42元
**店助提成(分段式)**:
- 0-100%部分:320,000 × 0.4% = 1,280元
- 100%以上部分:(408,593.42 - 320,000) × 0.6% = 531.56元
- 总提成 = 1,280 + 531.56 = 1,811.56元
**店助主任提成(分段式)**:
- 0-100%部分:320,000 × 0.4% = 1,280元
- 100%以上部分:(408,593.42 - 320,000) × 1.6% = 1,417.49元
- 总提成 = 1,280 + 1,417.49 = 2,697.49元
### 3. 阶段奖励规则
**相同**:两个岗位的阶段奖励规则完全一致
---
## 📅 更新记录
- 2025-01-XX:初始版本,根据项目文档梳理店助主任工资计算规则