Blame view

项目文档相关/docs/店助主任工资计算规则梳理.md 14.1 KB
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  # 店助主任工资计算规则梳理
  
  ## 📋 概述
  
  店助主任工资由以下几个部分组成:
  1. **底薪**:从工资配置表(`lq_gz`)获取,字段为 `dzzrdx`
  2. **提成**:根据门店业绩与门店生命线的比例计算(阶梯提成模式)
  3. **阶段奖励**:根据进店消耗人数是否达到阶段目标(同店助)
  4. **固定奖励**:手机管理费
  
  ---
  
  # 第一部分:计算规则
  
  ## 💰 工资组成规则
  
  ### 1. 底薪规则
  
  **计算规则**:从工资配置表(`lq_gz`)获取,字段为 `dzzrdx`
  
  **重要说明**
  - 底薪从配置表获取,如果未设置,应使用默认值或报错提示
  - 底薪是固定值,不随门店分类变化
  
  ---
  
  ### 2. 提成规则
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
29
  **计算公式**:分段式提成模式,根据门店业绩与门店生命线的比例分段计算提成
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
30
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
31
  #### 提成前提条件
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
32
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
33
  - **必须达到70%**:门店业绩必须达到门店生命线的70%,否则无提成
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
34
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
35
  #### 提成比例规则(分段式)
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
36
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
37
38
39
40
41
  | 业绩区间 | 提成比例 | 计算说明 |
  |---------|---------|---------|
  | 门店业绩 < 门店生命线 × 70% | 0% | 无提成 |
  | 门店生命线 × 70% ≤ 门店业绩 < 门店生命线 × 100% | 0.4% | 整个业绩按0.4%计算 |
  | 门店业绩 ≥ 门店生命线 × 100% | 0.4% + 1.6% | **分段式**<br>- 0-100%部分(整个生命线):0.4%<br>- 100%以上部分:1.6% |
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
42
43
  
  **重要说明**
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  - 店助主任和店助使用**相同的分段式提成规则**,但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%
  ```
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
  
  ---
  
  ### 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%
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
163
164
165
166
167
     - **重要**:店助主任和店助使用**相同的分段式提成规则**,但100%以上部分比例不同
     - **重要**:当业绩超过100%时,使用**分段式**提成模式:
       - 0-100%部分(整个生命线)按0.4%计算
       - 100%以上部分:店助按0.6%计算,店助主任按1.6%计算
     - **分段式说明**:不同区间按不同比例分别计算后累加
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
  
  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%时的提成计算 |
  |-----|---------------------|
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
450
451
  | 店助 | 分段式:<br>- 0-100%部分(整个生命线):0.4%<br>- 100%以上部分:0.6% |
  | 店助主任 | **分段式**<br>- 0-100%部分(整个生命线):0.4%<br>- 100%以上部分:1.6% |
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
452
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
453
  **重要说明**:店助主任和店助使用**相同的分段式提成规则**,但100%以上部分比例不同
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
454
  
1fffa876   “wangming”   优化储扣列表接口:增加门店、时间、...
455
456
457
458
459
460
461
462
463
464
465
466
467
  **示例对比**
  - 门店生命线 = 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元
2beedbc2   “wangming”   修复健康师工资额外计算服务接口错误
468
469
470
471
472
473
474
475
476
477
  
  ### 3. 阶段奖励规则
  
  **相同**:两个岗位的阶段奖励规则完全一致
  
  ---
  
  ## 📅 更新记录
  
  - 2025-01-XX:初始版本,根据项目文档梳理店助主任工资计算规则