创建事业部总经理经理工资统计表.sql
9.65 KB
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
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
163
164
165
166
167
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
-- ============================================
-- 创建事业部总经理/经理工资统计表
-- 功能:存储事业部总经理/经理每月的工资计算数据,包括底薪、业绩提成、扣款、补贴、奖金、支付等信息
-- 创建时间:2025年
-- ============================================
-- 删除表(如果存在)
DROP TABLE IF EXISTS lq_business_unit_manager_salary_statistics;
-- ============================================
-- 创建事业部总经理/经理工资统计表
-- ============================================
CREATE TABLE lq_business_unit_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_ManagerType INT NOT NULL COMMENT '经理类型(0=经理,1=总经理)',
F_IsTerminated INT NOT NULL DEFAULT 0 COMMENT '是否离职(0=在职,1=离职)',
-- 二、管理的门店信息(JSON格式)
F_StorePerformanceDetail TEXT NULL COMMENT '门店业绩明细(JSON格式,记录每个门店的业绩和提成详情)',
-- 三、底薪相关字段
F_BaseSalary DECIMAL(18,2) NOT NULL DEFAULT 4000.00 COMMENT '底薪金额(固定4000元)',
-- 四、提成相关字段
F_TotalCommission DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '提成合计(所有门店提成金额汇总)',
-- 五、考勤相关字段
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_manager_type` (F_ManagerType),
KEY `idx_is_terminated` (F_IsTerminated),
KEY `idx_create_time` (F_CreateTime)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='事业部总经理/经理工资统计表';
-- ============================================
-- 表结构说明
-- ============================================
/*
表名:lq_business_unit_manager_salary_statistics(事业部总经理/经理工资统计表)
功能说明:
1. 存储事业部总经理/经理每月的工资计算数据
2. 包括底薪、业绩提成、扣款、补贴、奖金、支付等信息
3. 支持按员工、月份查询
4. 记录管理的门店汇总信息
主要字段说明:
- F_BaseSalary:底薪(固定4000元)
- F_StorePerformanceDetail:门店业绩明细(JSON格式,记录每个门店的业绩和提成详情)
- F_TotalCommission:提成合计(所有门店提成金额汇总)
数据来源:
- 总经理/经理归属:lq_md_general_manager_lifeline 表(通过F_GeneralManagerId和F_Month获取)
- 门店生命线:lq_md_target 表的 F_StoreLifeline 字段
- 提成阶梯:lq_md_general_manager_lifeline 表的 F_Lifeline1/2/3 和 F_CommissionRate1/2/3
- 开单业绩:lq_kd_kdjlb 表的 sfyj 字段(按门店统计)
- 退卡业绩:lq_hytk_hytk 表的 F_ActualRefundAmount 或 tkje 字段(按门店统计)
计算公式:
- 门店总业绩 = 开单业绩 - 退卡业绩
- 提成计算逻辑:
1. 判断是否达到提成门槛:门店业绩 ≥ 门店生命线?
- 如果否 → 该门店提成 = 0
- 如果是 → 继续计算提成
2. 如果达到门槛,使用提成阶梯计算提成(分段累进):
- 业绩 ≤ 提成阶梯1:提成 = 业绩 × 提成比例1
- 提成阶梯1 < 业绩 ≤ 提成阶梯2:提成 = 提成阶梯1 × 提成比例1 + (业绩 - 提成阶梯1) × 提成比例2
- 提成阶梯2 < 业绩 ≤ 提成阶梯3:提成 = 提成阶梯1 × 提成比例1 + (提成阶梯2 - 提成阶梯1) × 提成比例2 + (业绩 - 提成阶梯2) × 提成比例3
- 业绩 > 提成阶梯3:提成 = 提成阶梯1 × 提成比例1 + (提成阶梯2 - 提成阶梯1) × 提成比例2 + (提成阶梯3 - 提成阶梯2) × 提成比例3 + (业绩 - 提成阶梯3) × 提成比例3
- 总提成 = SUM(各门店提成金额)
- 核算应发工资 = 底薪(4000) + 总提成
- 最终应发工资 = 核算应发工资
- 实发工资 = 最终应发工资 - 扣款合计 + 补贴合计 + 奖金
门店业绩明细JSON格式示例:
[
{
"storeId": "门店ID",
"storeName": "门店名称",
"storeLifeline": 300000.00,
"billingPerformance": 400000.00,
"refundPerformance": 50000.00,
"storePerformance": 350000.00,
"reachedLifeline": true,
"lifeline1": 350000.00,
"commissionRate1": 1.00,
"lifeline2": 400000.00,
"commissionRate2": 1.50,
"lifeline3": 450000.00,
"commissionRate3": 2.00,
"commissionAmount": 3500.00,
"calculationDetail": "业绩350000元,达到门店生命线300000元,使用提成阶梯1计算:350000 × 1.0% = 3500元"
},
{
"storeId": "门店ID2",
"storeName": "门店名称2",
"storeLifeline": 250000.00,
"billingPerformance": 220000.00,
"refundPerformance": 20000.00,
"storePerformance": 200000.00,
"reachedLifeline": false,
"commissionAmount": 0.00,
"calculationDetail": "业绩200000元,未达到门店生命线250000元,无提成"
}
]
JSON字段说明:
- storeId:门店ID
- storeName:门店名称
- storeLifeline:门店生命线(从lq_md_target表获取)
- billingPerformance:门店开单业绩
- refundPerformance:门店退卡业绩
- storePerformance:门店总业绩(开单业绩 - 退卡业绩)
- reachedLifeline:是否达到门店生命线(true/false)
- lifeline1/2/3:提成阶梯1/2/3(从lq_md_general_manager_lifeline表获取)
- commissionRate1/2/3:提成比例1/2/3(%)
- commissionAmount:该门店的提成金额
- calculationDetail:计算说明(文字描述)
索引说明:
- 主键索引:F_Id
- 唯一索引:F_EmployeeId + F_StatisticsMonth(确保同一员工同一月份只有一条记录)
- 普通索引:
- F_StatisticsMonth:按月份查询
- F_EmployeeId:按员工查询
- F_ManagerType:按经理类型查询(总经理/经理)
- F_CreateTime:按创建时间查询
数据校验要求:
1. 底薪固定为4000元
2. 门店生命线必须设置,未设置应报错
3. 提成阶梯1和提成比例1必须设置,未设置应报错
4. 提成必须按照阶梯式计算(分段累进)
5. 如果门店业绩 < 门店生命线,则该门店提成为0
6. 总经理和经理的计算规则相同
*/