c63026bc
“wangming”
feat: 优化工资计算逻辑
|
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
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
|
# 科技部总经理工资计算规则梳理
## 📋 目录
- [概述](#概述)
- [计算规则](#计算规则)
- [数据来源](#数据来源)
- [归属规则](#归属规则)
- [计算流程](#计算流程)
- [注意事项](#注意事项)
---
## 📋 概述
科技部总经理工资由以下几个部分组成:
1. **底薪**:固定4000元
2. **溯源金额提成**:根据管理的所有门店的溯源金额总和分段提成
3. **Cell金额提成**:根据管理的所有门店的Cell金额总和分段提成
**重要说明**:
- 底薪固定为4000元,不设档位,不设条件
- 科技部总经理从 `BASE_USER` 表获取,岗位字段(`F_GW`)为"科技一部"、"科技二部"等(未来可能还有更多)
- 每个科技部总经理管理的门店归属在 `lq_md_general_manager_lifeline` 表中
- 需要统计该科技部总经理管理的**所有门店**的溯源金额和Cell金额总和
- 溯源金额和Cell金额分别计算提成,互不影响
- 提成采用分段累进方式计算
---
## 💰 计算规则
### 1. 底薪规则
**固定底薪**:4000元
- 无论业绩多少,底薪固定为4000元
- 不设档位,不设条件
- 不设考核扣款
---
### 2. 溯源金额提成规则
**提成计算方式**:根据管理的所有门店的溯源金额总和分段累进计算
| 溯源金额范围 | 提成比例 |
|------------|---------|
| < 200,000元 | 1% |
| 200,000元 - 300,000元 | 1.5% |
| 300,000元 - 500,000元 | 2% |
| ≥ 500,000元 | 2.5% |
**计算说明**:
- 提成金额 = 溯源金额 × 对应提成比例
- 采用分段累进方式计算,不同区间按不同比例计算
- 例如:溯源金额为350,000元
- 0-200,000元部分:200,000 × 1% = 2,000元
- 200,000-300,000元部分:100,000 × 1.5% = 1,500元
- 300,000-350,000元部分:50,000 × 2% = 1,000元
- 总提成 = 2,000 + 1,500 + 1,000 = 4,500元
---
### 3. Cell金额提成规则
**提成计算方式**:根据管理的所有门店的Cell金额总和分段累进计算
| Cell金额范围 | 提成比例 |
|------------|---------|
| < 50,000元 | 0% (无提成) |
| 50,000元 - 400,000元 | 1% |
| ≥ 400,000元 | 1.5% |
**计算说明**:
- 如果Cell金额 < 50,000元,无提成
- 如果Cell金额 ≥ 50,000元,按分段累进方式计算
- 例如:Cell金额为450,000元
- 0-50,000元部分:无提成
- 50,000-400,000元部分:350,000 × 1% = 3,500元
- 400,000-450,000元部分:50,000 × 1.5% = 750元
- 总提成 = 3,500 + 750 = 4,250元
---
## 📊 数据来源
### 科技部总经理识别
**数据来源**:`BASE_USER` 表
**识别条件**:
- `F_GW`(岗位字段)包含"科技一部"、"科技二部"等(如:`F_GW LIKE '%科技一部%'` 或 `F_GW LIKE '%科技二部%'`)
- `F_DeleteMark == null`(未删除)
- `F_EnabledMark == 1`(已启用)
**说明**:
- 目前有"科技一部"和"科技二部",未来可能还有更多科技部
- 岗位字段值可能是"科技一部"、"科技二部"等完整名称
---
### 管理的门店归属
**数据来源**:`lq_md_general_manager_lifeline` 表
**关联关系**:
- 通过 `F_GeneralManagerId` 字段关联到 `BASE_USER.F_Id`
- 通过 `F_StoreId` 字段关联到 `lq_mdxx.F_Id`
- 通过 `F_Month` 字段(YYYYMM格式)关联到统计月份
**获取逻辑**:
1. 从 `lq_md_general_manager_lifeline` 表查询指定月份(`F_Month = @统计月份`)的记录
2. 筛选出 `F_GeneralManagerId = @科技部总经理ID` 的记录
3. 获取这些记录的 `F_StoreId` 列表,即为该科技部总经理管理的门店
**重要说明**:
- 每个科技部总经理可能管理多个门店
- 需要统计这些门店的溯源金额和Cell金额总和
---
### 溯源金额统计
|
c63026bc
“wangming”
feat: 优化工资计算逻辑
|
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
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
|
3. **计算净Cell金额**:
- 净Cell金额 = 开单Cell金额 - 退卡Cell金额
---
### 步骤5:工资计算
#### 5.1 计算底薪
- 底薪 = 4000元(固定)
#### 5.2 计算溯源金额提成
根据净溯源金额范围确定提成比例,采用分段累进方式:
- **如果净溯源金额 < 200,000元**:
- 提成金额 = 净溯源金额 × 1%
- **如果 200,000元 ≤ 净溯源金额 < 300,000元**:
- 0-200,000元部分:200,000 × 1% = 2,000元
- 200,000元以上部分:(净溯源金额 - 200,000) × 1.5%
- 总提成 = 2,000 + (净溯源金额 - 200,000) × 1.5%
- **如果 300,000元 ≤ 净溯源金额 < 500,000元**:
- 0-200,000元部分:200,000 × 1% = 2,000元
- 200,000-300,000元部分:100,000 × 1.5% = 1,500元
- 300,000元以上部分:(净溯源金额 - 300,000) × 2%
- 总提成 = 2,000 + 1,500 + (净溯源金额 - 300,000) × 2%
- **如果净溯源金额 ≥ 500,000元**:
- 0-200,000元部分:200,000 × 1% = 2,000元
- 200,000-300,000元部分:100,000 × 1.5% = 1,500元
- 300,000-500,000元部分:200,000 × 2% = 4,000元
- 500,000元以上部分:(净溯源金额 - 500,000) × 2.5%
- 总提成 = 2,000 + 1,500 + 4,000 + (净溯源金额 - 500,000) × 2.5%
#### 5.3 计算Cell金额提成
根据净Cell金额范围确定提成比例,采用分段累进方式:
- **如果净Cell金额 < 50,000元**:
- 提成金额 = 0(无提成)
- **如果 50,000元 ≤ 净Cell金额 < 400,000元**:
- 0-50,000元部分:无提成
- 50,000元以上部分:(净Cell金额 - 50,000) × 1%
- 总提成 = (净Cell金额 - 50,000) × 1%
- **如果净Cell金额 ≥ 400,000元**:
- 0-50,000元部分:无提成
- 50,000-400,000元部分:350,000 × 1% = 3,500元
- 400,000元以上部分:(净Cell金额 - 400,000) × 1.5%
- 总提成 = 3,500 + (净Cell金额 - 400,000) × 1.5%
#### 5.4 计算最终工资
- **应发工资** = 底薪 + 溯源金额提成 + Cell金额提成
---
## 📝 注意事项
1. **数据一致性**:
- 溯源金额和Cell金额的统计逻辑必须与其他统计接口保持一致
- 必须扣除退卡金额,确保数据准确性
- 必须按管理的门店筛选,只统计该科技部总经理管理的门店
2. **数据校验**:
- `F_BeautyType` 字段值可能不统一("溯源系统"、"溯源"、"cell"、"Cell"),需要兼容处理
- 优先使用明细表的 `F_BeautyType`,如果为空则使用品项表的 `F_BeautyType`
- 如果科技部总经理在指定月份没有管理的门店,溯源金额和Cell金额为0,提成为0
3. **归属关系**:
- 必须从 `lq_md_general_manager_lifeline` 表获取管理的门店
- 如果某个门店不在该科技部总经理的管理范围内,该门店的业绩不计入统计
- 需要确保 `lq_md_general_manager_lifeline` 表的数据准确性
4. **边界情况**:
- 如果溯源金额或Cell金额为0或负数,对应提成为0
- 如果溯源金额或Cell金额计算后为负数(退卡金额大于开单金额),对应提成为0
- 如果科技部总经理在指定月份没有管理的门店,所有金额为0,提成为0
5. **计算精度**:
- 涉及金额计算时,建议保留2位小数
- 提成金额四舍五入到分
6. **性能优化**:
- 建议使用数据库聚合查询,避免在应用层进行大量数据计算
- 可以先获取管理的门店列表,然后在SQL中使用 `IN` 子句筛选
- 可以考虑创建统计视图或物化视图,提高查询性能
7. **岗位识别**:
- 目前有"科技一部"和"科技二部",未来可能还有更多
- 建议使用模糊匹配(`LIKE '%科技一部%'`)或维护一个岗位列表
- 需要确保岗位识别逻辑能够适应未来的扩展
---
## 📊 计算示例
### 示例1:基础计算
**假设数据**:
- 科技部总经理:科技一部(ID: 123456)
- 管理的门店:门店A(ID: A001)、门店B(ID: B001)
- 底薪:4000元
- 门店A溯源金额:150,000元,Cell金额:80,000元
- 门店B溯源金额:100,000元,Cell金额:120,000元
- 总溯源金额:250,000元
- 总Cell金额:200,000元
**计算过程**:
1. **溯源金额提成**:
- 0-200,000元部分:200,000 × 1% = 2,000元
- 200,000-250,000元部分:50,000 × 1.5% = 750元
- 溯源金额提成 = 2,000 + 750 = 2,750元
2. **Cell金额提成**:
- 0-50,000元部分:无提成
- 50,000-200,000元部分:150,000 × 1% = 1,500元
- Cell金额提成 = 1,500元
3. **应发工资**:
- 应发工资 = 4,000 + 2,750 + 1,500 = 8,250元
---
### 示例2:高业绩计算
**假设数据**:
- 科技部总经理:科技二部(ID: 789012)
- 管理的门店:门店C(ID: C001)、门店D(ID: D001)、门店E(ID: E001)
- 底薪:4000元
- 门店C溯源金额:200,000元,Cell金额:150,000元
- 门店D溯源金额:250,000元,Cell金额:200,000元
- 门店E溯源金额:150,000元,Cell金额:100,000元
- 总溯源金额:600,000元
- 总Cell金额:450,000元
**计算过程**:
1. **溯源金额提成**:
- 0-200,000元部分:200,000 × 1% = 2,000元
- 200,000-300,000元部分:100,000 × 1.5% = 1,500元
- 300,000-500,000元部分:200,000 × 2% = 4,000元
- 500,000-600,000元部分:100,000 × 2.5% = 2,500元
- 溯源金额提成 = 2,000 + 1,500 + 4,000 + 2,500 = 10,000元
2. **Cell金额提成**:
- 0-50,000元部分:无提成
- 50,000-400,000元部分:350,000 × 1% = 3,500元
- 400,000-450,000元部分:50,000 × 1.5% = 750元
- Cell金额提成 = 3,500 + 750 = 4,250元
3. **应发工资**:
- 应发工资 = 4,000 + 10,000 + 4,250 = 18,250元
---
## 🔍 数据表结构参考
### 科技部总经理工资统计表
参考其他岗位的工资表结构(如:`lq_business_unit_manager_salary_statistics`、`lq_tech_teacher_salary_statistics`),建议创建如下表结构:
```sql
-- ============================================
-- 创建科技部总经理工资统计表
-- 功能:存储科技部总经理每月的工资计算数据,包括底薪、溯源金额提成、Cell金额提成、扣款、补贴、奖金、支付等信息
-- 创建时间:2025年
-- ============================================
DROP TABLE IF EXISTS lq_tech_general_manager_salary_statistics;
CREATE TABLE lq_tech_general_manager_salary_statistics (
-- 主键
F_Id VARCHAR(50) NOT NULL COMMENT '主键ID',
-- 一、基础信息字段
F_StatisticsMonth VARCHAR(6) NOT NULL COMMENT '统计月份(YYYYMM格式)',
F_Position VARCHAR(50) NOT NULL COMMENT '核算岗位(科技一部/科技二部等)',
F_EmployeeName VARCHAR(100) NOT NULL COMMENT '员工姓名',
F_EmployeeId VARCHAR(50) NOT NULL COMMENT '员工ID',
F_EmployeeAccount VARCHAR(100) NULL COMMENT '员工账号',
F_IsTerminated INT NOT NULL DEFAULT 0 COMMENT '是否离职(0=在职,1=离职)',
-- 二、管理的门店信息(JSON格式)
F_StoreDetail TEXT NULL COMMENT '管理的门店明细(JSON格式,记录每个门店的溯源金额和Cell金额详情)',
-- 三、业绩相关字段
F_TraceabilityAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '溯源金额(管理的所有门店的溯源金额总和,开单-退卡)',
F_CellAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT 'Cell金额(管理的所有门店的Cell金额总和,开单-退卡)',
-- 四、底薪相关字段
F_BaseSalary DECIMAL(18,2) NOT NULL DEFAULT 4000.00 COMMENT '底薪金额(固定4000元)',
-- 五、提成相关字段
F_TraceabilityCommissionRate DECIMAL(18,4) DEFAULT NULL COMMENT '溯源金额提成比例(分段计算,存储平均比例)',
F_TraceabilityCommissionAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '溯源金额提成金额',
F_CellCommissionRate DECIMAL(18,4) DEFAULT NULL COMMENT 'Cell金额提成比例(分段计算,存储平均比例)',
F_CellCommissionAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT 'Cell金额提成金额',
F_TotalCommission DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '提成合计(溯源提成+Cell提成)',
-- 六、考勤相关字段
F_WorkingDays DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '在店天数',
F_LeaveDays DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '请假天数',
-- 七、工资计算字段
F_CalculatedGrossSalary DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '核算应发工资(底薪 + 提成合计)',
F_FinalGrossSalary DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '最终应发工资(等于核算应发工资)',
-- 八、补贴相关字段
F_MonthlyTrainingSubsidy DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '当月培训补贴',
F_MonthlyTransportSubsidy DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '当月交通补贴',
F_LastMonthTrainingSubsidy DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '上月培训补贴',
F_LastMonthTransportSubsidy DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '上月交通补贴',
F_TotalSubsidy DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '补贴合计',
-- 九、扣款相关字段
F_MissingCard DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '缺卡扣款',
F_LateArrival DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '迟到扣款',
F_LeaveDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '请假扣款',
F_SocialInsuranceDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣社保',
F_RewardDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣除奖励',
F_AccommodationDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣住宿费',
F_StudyPeriodDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣学习期费用',
F_WorkClothesDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣工作服费用',
F_TotalDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '扣款合计',
-- 十、奖金相关字段
F_Bonus DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '发奖金',
F_ReturnPhoneDeposit DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '退手机押金',
F_ReturnAccommodationDeposit DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '退住宿押金',
-- 十一、支付相关字段
F_ActualSalary DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '实发工资(最终应发工资 - 扣款合计 + 补贴合计 + 奖金)',
F_MonthlyPaymentStatus VARCHAR(20) NOT NULL DEFAULT '未发放' COMMENT '当月是否发放(已发放/未发放/部分发放)',
F_PaidAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '支付金额',
F_PendingAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '待支付金额',
F_LastMonthSupplement DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '补发上月',
F_MonthlyTotalPayment DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '当月支付总额',
-- 十二、系统字段
F_IsLocked INT NOT NULL DEFAULT 0 COMMENT '是否锁定(0=未锁定,1=已锁定)',
F_CreateTime DATETIME NOT NULL COMMENT '创建时间',
F_UpdateTime DATETIME NOT NULL COMMENT '更新时间',
F_CreateUser VARCHAR(50) NULL COMMENT '创建人',
F_UpdateUser VARCHAR(50) NULL COMMENT '更新人',
-- 主键约束
PRIMARY KEY (F_Id),
-- 唯一索引:确保同一员工同一月份只有一条记录
UNIQUE KEY `uk_employee_month` (F_EmployeeId, F_StatisticsMonth),
-- 普通索引
KEY `idx_statistics_month` (F_StatisticsMonth),
KEY `idx_employee_id` (F_EmployeeId),
KEY `idx_employee_account` (F_EmployeeAccount),
KEY `idx_position` (F_Position),
KEY `idx_is_terminated` (F_IsTerminated),
KEY `idx_create_time` (F_CreateTime)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='科技部总经理工资统计表';
```
**门店明细JSON格式示例**:
```json
[
{
"storeId": "A001",
"storeName": "门店A",
"traceabilityBillingAmount": 160000.00,
"traceabilityRefundAmount": 10000.00,
"traceabilityAmount": 150000.00,
"cellBillingAmount": 85000.00,
"cellRefundAmount": 5000.00,
"cellAmount": 80000.00
},
{
"storeId": "B001",
"storeName": "门店B",
"traceabilityBillingAmount": 105000.00,
"traceabilityRefundAmount": 5000.00,
"traceabilityAmount": 100000.00,
"cellBillingAmount": 125000.00,
"cellRefundAmount": 5000.00,
"cellAmount": 120000.00
}
]
```
---
## ✅ 总结
科技部总经理工资计算规则相对简单明确:
1. **底薪固定**:4000元,无任何条件
2. **溯源提成**:根据管理的所有门店的溯源金额总和分段累进,最高2.5%
3. **Cell提成**:根据管理的所有门店的Cell金额总和分段累进,最高1.5%,低于5万无提成
关键点:
- 必须从 `BASE_USER` 表识别科技部总经理(岗位为"科技一部"、"科技二部"等)
- 必须从 `lq_md_general_manager_lifeline` 表获取管理的门店
- 必须正确区分溯源和Cell类型(通过 `F_BeautyType` 字段)
- 必须扣除退卡金额,确保数据准确性
- 必须按管理的门店筛选,只统计该科技部总经理管理的门店
- 采用分段累进方式计算提成,确保计算准确
|