-- ============================================
-- 创建主任工资统计表
-- 功能：存储主任每月的工资计算数据，包括底薪、提成、考核扣款、扣款、补贴、奖金、支付等信息
-- 创建时间：2025年
-- ============================================

-- 删除表（如果存在）
DROP TABLE IF EXISTS lq_director_salary_statistics;

-- ============================================
-- 创建主任工资统计表
-- ============================================
CREATE TABLE lq_director_salary_statistics (
    -- 主键
    F_Id VARCHAR(50) NOT NULL COMMENT '主键ID',
    
    -- 一、基础信息字段
    F_StoreId VARCHAR(50) NOT NULL COMMENT '门店ID',
    F_StoreName VARCHAR(200) NOT NULL COMMENT '门店名称',
    F_Position VARCHAR(50) NOT NULL DEFAULT '主任' COMMENT '核算岗位（固定为"主任"）',
    F_EmployeeName VARCHAR(100) NOT NULL COMMENT '员工姓名',
    F_EmployeeId VARCHAR(50) NOT NULL COMMENT '员工ID',
    F_StatisticsMonth VARCHAR(20) NOT NULL COMMENT '统计月份(YYYYMM格式)',
    F_StoreType INT NULL COMMENT '门店类型（200平/旗舰店）',
    F_StoreCategory INT NOT NULL COMMENT '门店分类（1=A类，2=B类，3=C类）',
    F_IsNewStore VARCHAR(10) NULL COMMENT '是否新店（是/否）',
    F_NewStoreProtectionStage INT NULL DEFAULT 0 COMMENT '新店保护阶段（0/1/2）',
    
    -- 二、业绩相关字段
    F_StoreTotalPerformance DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '门店总业绩（门店开单业绩-门店退卡业绩）',
    F_StoreBillingPerformance DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '门店开单业绩',
    F_StoreRefundPerformance DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '门店退卡业绩',
    F_StoreLifeline DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '门店生命线',
    F_PerformanceCompletionRate DECIMAL(18,4) NOT NULL DEFAULT 0.0000 COMMENT '业绩完成率（门店业绩/门店生命线）',
    
    -- 三、考核相关字段
    F_PerformanceReached VARCHAR(10) NOT NULL DEFAULT '否' COMMENT '业绩是否达标（是/否，业绩≥生命线为是）',
    F_HeadCountReached VARCHAR(10) NOT NULL DEFAULT '否' COMMENT '人头是否达标（是/否，实际人头≥目标人头为是）',
    F_ConsumeReached VARCHAR(10) NOT NULL DEFAULT '否' COMMENT '消耗是否达标（是/否，实际消耗≥目标消耗为是，仅老店考核）',
    F_AssessmentDeduction DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '考核扣款金额（未达标指标数×500）',
    F_UnreachedIndicatorCount INT NOT NULL DEFAULT 0 COMMENT '未达标指标数量（老店最多3个，新店最多2个）',
    
    -- 四、人头相关字段
    F_HeadCount INT NOT NULL DEFAULT 0 COMMENT '进店消耗人数（有消费金额的，按门店按月去重客户数）',
    F_TargetHeadCount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '目标人头数（从lq_md_target获取）',
    
    -- 五、消耗相关字段
    F_StoreConsume DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '门店消耗金额（门店当月总消耗）',
    F_TargetConsume DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '目标消耗金额（从lq_md_target获取）',
    
    -- 六、提成相关字段（阶梯提成）
    F_CommissionRateBelowLifeline DECIMAL(18,4) NOT NULL DEFAULT 0.0000 COMMENT '≤生命线部分提成比例（老店：A类2%，B类2.5%，C类3%；新店：统一2%）',
    F_CommissionRateAboveLifeline DECIMAL(18,4) NOT NULL DEFAULT 0.0000 COMMENT '>生命线部分提成比例（老店：A类2.5%，B类3%，C类3.5%；新店：统一2.5%）',
    F_CommissionAmountBelowLifeline DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '≤生命线部分提成金额',
    F_CommissionAmountAboveLifeline DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '>生命线部分提成金额',
    F_TotalCommissionAmount DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '提成总金额（≤生命线部分+>生命线部分）',
    
    -- 七、底薪相关字段
    F_BaseSalary DECIMAL(18,2) NOT NULL DEFAULT 3500.00 COMMENT '底薪金额（固定3500元）',
    F_ActualBaseSalary DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '实际底薪（底薪-考核扣款）',
    
    -- 八、考勤相关字段
    F_WorkingDays INT NOT NULL DEFAULT 0 COMMENT '在店天数',
    F_LeaveDays INT NOT NULL DEFAULT 0 COMMENT '请假天数',
    
    -- 九、工资计算字段
    F_GrossSalary DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '应发工资（实际底薪+提成总金额）',
    F_ActualSalary 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_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_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_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_store_id` (F_StoreId),
    KEY `idx_statistics_month` (F_StatisticsMonth),
    KEY `idx_employee_id` (F_EmployeeId),
    KEY `idx_store_category` (F_StoreCategory),
    KEY `idx_create_time` (F_CreateTime)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='主任工资统计表';

-- ============================================
-- 表结构说明
-- ============================================
/*
表名：lq_director_salary_statistics（主任工资统计表）

功能说明：
1. 存储主任每月的工资计算数据
2. 包括底薪、提成、考核扣款、扣款、补贴、奖金、支付等信息
3. 支持按门店、员工、月份查询

主要字段说明：
- F_StoreCategory：门店分类（1=A类，2=B类，3=C类），用于确定提成比例
- F_StoreTotalPerformance：门店总业绩，用于计算提成
- F_StoreLifeline：门店生命线，用于判断提成比例和考核
- F_HeadCount：进店消耗人数，用于考核
- F_StoreConsume：门店消耗金额，用于考核（仅老店）
- F_BaseSalary：底薪（固定3500元）
- F_AssessmentDeduction：考核扣款（未达标指标数×500）
- F_ActualBaseSalary：实际底薪（底薪-考核扣款）
- F_CommissionAmountBelowLifeline：≤生命线部分提成金额
- F_CommissionAmountAboveLifeline：>生命线部分提成金额
- F_TotalCommissionAmount：提成总金额（阶梯提成）

索引说明：
- 主键索引：F_Id
- 唯一索引：F_EmployeeId + F_StatisticsMonth（确保同一员工同一月份只有一条记录）
- 普通索引：
  - F_StoreId：按门店查询
  - F_StatisticsMonth：按月份查询
  - F_EmployeeId：按员工查询
  - F_StoreCategory：按门店分类查询
  - F_CreateTime：按创建时间查询

数据校验要求：
1. 门店分类（F_StoreCategory）必须设置，不允许为NULL
2. 门店生命线（F_StoreLifeline）必须设置，未设置应报错
3. 目标人头数（F_TargetHeadCount）必须设置（用于考核）
4. 目标消耗（F_TargetConsume）必须设置（老店考核用）

计算公式：
- 应发工资 = 实际底薪 + 提成总金额
- 实发工资 = 应发工资 - 扣款合计 + 补贴合计 + 奖金
- 业绩完成率 = 门店业绩 / 门店生命线 × 100%
- 实际底薪 = 底薪（3500）- 考核扣款
- 考核扣款 = 未达标指标数 × 500
- 提成总金额 = ≤生命线部分提成金额 + >生命线部分提成金额

提成计算规则（阶梯提成）：
老店：
- A类门店：≤生命线部分2%，>生命线部分2.5%
- B类门店：≤生命线部分2.5%，>生命线部分3%
- C类门店：≤生命线部分3%，>生命线部分3.5%

新店（统一标准）：
- ≤生命线部分2%，>生命线部分2.5%

考核规则：
老店（3个指标）：
- 业绩考核：门店业绩是否达到门店生命线
- 人头考核：进店消耗人数是否达到目标人头数
- 消耗考核：门店消耗是否达到目标消耗
- 每个未达标指标扣500元

新店（2个指标）：
- 业绩考核：门店业绩是否达到门店生命线
- 人头考核：进店消耗人数是否达到目标人头数
- 每个未达标指标扣500元
- 新店不考核消耗
*/

