-- ============================================
-- 为消耗功能添加加班相关字段
-- ============================================
-- 说明：此脚本为消耗功能添加加班标识、加班系数以及原始值、加班值、最终值的字段
-- 执行顺序：按照表的主从关系依次执行

-- ============================================
-- 1. lq_xh_hyhk（耗卡主表） - 添加加班相关字段
-- ============================================
-- 说明：F_OvertimeCoefficient 为 NULL 或 0 表示非加班单，大于 0 表示加班单
ALTER TABLE lq_xh_hyhk 
ADD COLUMN F_OvertimeCoefficient DECIMAL(18,2) NULL DEFAULT NULL COMMENT '加班系数（NULL或0表示非加班单，大于0表示加班单，如 0.5、1、1.5）' AFTER F_CancelRemark,
ADD COLUMN F_OriginalSgfy DECIMAL(18,2) NULL COMMENT '原始手工费（用户输入的原始值）' AFTER F_OvertimeCoefficient,
ADD COLUMN F_OvertimeSgfy DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班手工费（加班计算后的增量值）' AFTER F_OriginalSgfy;

-- 为现有数据设置默认值
UPDATE lq_xh_hyhk 
SET F_OvertimeCoefficient = NULL,
    F_OriginalSgfy = COALESCE(sgfy, 0),
    F_OvertimeSgfy = 0
WHERE F_OvertimeCoefficient IS NULL;

-- ============================================
-- 2. lq_xh_pxmx（耗卡品项明细表） - 添加加班相关字段
-- ============================================
ALTER TABLE lq_xh_pxmx 
ADD COLUMN F_OriginalProjectNumber DECIMAL(18,2)  NULL COMMENT '原始项目次数（用户输入的原始值）' AFTER F_ProjectNumber,
ADD COLUMN F_OvertimeProjectNumber DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班项目次数（加班计算后的增量值）' AFTER F_OriginalProjectNumber;

-- 为现有数据设置默认值
UPDATE lq_xh_pxmx 
SET F_OriginalProjectNumber = COALESCE(F_ProjectNumber, 0),
    F_OvertimeProjectNumber = 0
WHERE F_OriginalProjectNumber IS NULL;

-- ============================================
-- 3. lq_xh_jksyj（耗卡健康师业绩表） - 添加加班相关字段
-- ============================================
ALTER TABLE lq_xh_jksyj 
ADD COLUMN F_OriginalKdpxNumber DECIMAL(18,2) NULL COMMENT '原始耗卡品项次数（原始值）' AFTER F_kdpxNumber,
ADD COLUMN F_OvertimeKdpxNumber DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班耗卡品项次数（加班计算后的增量值）' AFTER F_OriginalKdpxNumber,
ADD COLUMN F_OriginalLaborCost DECIMAL(18,2) NULL COMMENT '原始手工费（原始值）' AFTER F_LaborCost,
ADD COLUMN F_OvertimeLaborCost DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班手工费（加班计算后的增量值）' AFTER F_OriginalLaborCost;

-- 为现有数据设置默认值
UPDATE lq_xh_jksyj 
SET F_OriginalKdpxNumber = COALESCE(F_kdpxNumber, 0),
    F_OvertimeKdpxNumber = 0,
    F_OriginalLaborCost = COALESCE(F_LaborCost, 0),
    F_OvertimeLaborCost = 0
WHERE F_OriginalKdpxNumber IS NULL;

-- ============================================
-- 4. lq_xh_kjbsyj（耗卡科技部老师业绩表） - 添加加班相关字段
-- ============================================
ALTER TABLE lq_xh_kjbsyj 
ADD COLUMN F_OriginalHdpxNumber DECIMAL(18,2) NULL COMMENT '原始耗卡品相次数（原始值）' AFTER F_hdpxNumber,
ADD COLUMN F_OvertimeHdpxNumber DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班耗卡品相次数（加班计算后的增量值）' AFTER F_OriginalHdpxNumber,
ADD COLUMN F_OriginalLaborCost DECIMAL(18,2) NULL COMMENT '原始手工费（原始值）' AFTER F_LaborCost,
ADD COLUMN F_OvertimeLaborCost DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班手工费（加班计算后的增量值）' AFTER F_OriginalLaborCost;

-- 为现有数据设置默认值
UPDATE lq_xh_kjbsyj 
SET F_OriginalHdpxNumber = COALESCE(F_hdpxNumber, 0),
    F_OvertimeHdpxNumber = 0,
    F_OriginalLaborCost = COALESCE(F_LaborCost, 0),
    F_OvertimeLaborCost = 0
WHERE F_OriginalHdpxNumber IS NULL;

-- ============================================
-- 5. 创建索引（可选，用于优化查询）
-- ============================================
-- 为加班系数创建索引，方便查询加班单（系数大于0的记录）
CREATE INDEX idx_xh_hyhk_overtime_coefficient ON lq_xh_hyhk(F_OvertimeCoefficient);

-- ============================================
-- 6. 验证字段创建
-- ============================================
-- 验证 lq_xh_hyhk 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_hyhk' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

-- 验证 lq_xh_pxmx 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_pxmx' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

-- 验证 lq_xh_jksyj 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_jksyj' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

-- 验证 lq_xh_kjbsyj 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_kjbsyj' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

