-- Running upgrade 23b4c5d6e7f8 -> 24c5d6e7f8a9 ALTER TABLE personnel ADD COLUMN probation_start_date DATE COMMENT '试用期开始日(含当日)'; ALTER TABLE personnel ADD COLUMN regularization_date DATE COMMENT '转正生效日(当日不再属于试用期)'; ALTER TABLE personnel ADD COLUMN resignation_date DATE COMMENT '离职生效日(当日起不计基本工资)'; ALTER TABLE personnel ADD COLUMN salary_history_json JSON COMMENT '工资标准、岗位及任职资料生效版本'; ALTER TABLE products ADD COLUMN source_trade_json JSON COMMENT '最近有效发货数量、含税成交价及源单据快照'; ALTER TABLE products ADD COLUMN quantity_price_manual SMALLINT NOT NULL COMMENT '数量单价人工保护:1人工维护 0随源更新' DEFAULT '0'; ALTER TABLE settlement_items ADD COLUMN normal_payable_sum NUMERIC(14, 2) NOT NULL COMMENT '当月正常实付绩效' DEFAULT '0'; ALTER TABLE settlement_items ADD COLUMN deferred_sum NUMERIC(14, 2) NOT NULL COMMENT '当月试用期缓发变化' DEFAULT '0'; ALTER TABLE settlement_items ADD COLUMN probation_payment_sum NUMERIC(14, 2) NOT NULL COMMENT '本月年度补发或扣回' DEFAULT '0'; CREATE TABLE probation_deferrals ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, ledger_id BIGINT UNSIGNED NOT NULL COMMENT '原核算台账版本ID', personnel_id BIGINT UNSIGNED NOT NULL COMMENT '归属人员ID', year VARCHAR(4) NOT NULL COMMENT '原计提年度', month VARCHAR(7) NOT NULL COMMENT '本次计提或应付变化月份', accrued NUMERIC(14, 2) NOT NULL COMMENT '本次试用期计提额,可负', eligible NUMERIC(14, 2) NOT NULL COMMENT '满足起付及权重的本次应付差额,可负', create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_probation_deferrals PRIMARY KEY (id), CONSTRAINT uk_probation_deferrals_ledger_id UNIQUE (ledger_id), CONSTRAINT fk_probation_deferrals_ledger_id FOREIGN KEY(ledger_id) REFERENCES performance_ledgers (id) ON DELETE RESTRICT )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='试用期缓发台账(每个正式台账版本一条)' COLLATE utf8mb4_general_ci; CREATE INDEX idx_probation_deferrals_personnel_id_year ON probation_deferrals (personnel_id, year); CREATE TABLE probation_payments ( id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT, settlement_id BIGINT UNSIGNED COMMENT '月结ID(当月调整单结清时为空)', adjustment_order_id BIGINT UNSIGNED COMMENT '已生成工资后的结清调整单ID', personnel_id BIGINT UNSIGNED NOT NULL COMMENT '归属人员ID', year VARCHAR(4) NOT NULL COMMENT '原累计年度', month VARCHAR(7) NOT NULL COMMENT '本次实际支付月份', amount NUMERIC(14, 2) NOT NULL COMMENT '本次补发或扣回金额', snapshot_json JSON NOT NULL COMMENT '计提、起付权重、门槛及历史补发依据', create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_probation_payments PRIMARY KEY (id), CONSTRAINT uk_probation_payments_settlement_person_year UNIQUE (settlement_id, personnel_id, year), CONSTRAINT uk_probation_payments_adjustment_order_id UNIQUE (adjustment_order_id), CONSTRAINT fk_probation_payments_settlement_id FOREIGN KEY(settlement_id) REFERENCES monthly_settlements (id) ON DELETE CASCADE, CONSTRAINT fk_probation_payments_adjustment_order_id FOREIGN KEY(adjustment_order_id) REFERENCES adjustment_orders (id) ON DELETE RESTRICT )ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='试用期年终及后续结清记录(工资生成事务内固化)' COLLATE utf8mb4_general_ci; CREATE INDEX idx_probation_payments_personnel_id_year ON probation_payments (personnel_id, year); INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.first', '个人户首日比例', '产品系数表', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 52, 1); INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.start', '个人户线性阶段起始比例', '产品系数表', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 53, 1); INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.slope', '个人户线性阶段日斜率', '产品系数表', 'DECIMAL', '‰/天', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 54, 1); INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.floor', '个人户超期比例', '产品系数表', 'DECIMAL', '‰', 'PRODUCT_CATEGORY', '0', NULL, '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 55, 1); INSERT INTO param_definitions (param_code, param_name, param_group, value_type, unit, dimension_type, value_min, value_max, description, sort_order, status) VALUES ('coefficient.personal.boundary', '个人户线性阶段截止天数', '产品系数表', 'INT', '天', 'PRODUCT_CATEGORY', '1', '3660', '按产品类别维护;未配置时沿用同日期的通用业务员参数。', 56, 1);