-- ============================================
-- 创建事业部总经理/经理工资统计表
-- 功能：存储事业部总经理/经理每月的工资计算数据，包括底薪、业绩提成、扣款、补贴、奖金、支付等信息
-- 创建时间：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. 总经理和经理的计算规则相同
*/

