52 lines
3.5 KiB
MySQL
52 lines
3.5 KiB
MySQL
|
|
-- 正式工资输入、FIFO过程及生成锁定;新增表,不改写历史结果。
|
|||
|
|
|
|||
|
|
CREATE TABLE payroll_months (
|
|||
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|||
|
|
month VARCHAR(7) NOT NULL COMMENT '工资月份',
|
|||
|
|
maker_id BIGINT UNSIGNED NOT NULL COMMENT '实际工资制作人账号ID',
|
|||
|
|
maker_name VARCHAR(64) NOT NULL COMMENT '制作人用户名快照',
|
|||
|
|
generated_at DATETIME COMMENT '首次成功生成时间(不可解锁)',
|
|||
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|||
|
|
CONSTRAINT pk_payroll_months PRIMARY KEY (id),
|
|||
|
|
CONSTRAINT uk_payroll_months_month UNIQUE (month)
|
|||
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='工资月份控制表(首次生成即锁定分配,审批不解锁)' COLLATE utf8mb4_general_ci;
|
|||
|
|
|
|||
|
|
CREATE TABLE payroll_inputs (
|
|||
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|||
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '正式业务ID',
|
|||
|
|
version INTEGER NOT NULL COMMENT '输入版本',
|
|||
|
|
source_database VARCHAR(128) NOT NULL COMMENT '源账套或人工来源',
|
|||
|
|
group_key VARCHAR(128) NOT NULL COMMENT '独立业务平账组',
|
|||
|
|
fingerprint VARCHAR(64) NOT NULL COMMENT '来源及事实指纹',
|
|||
|
|
data_json JSON NOT NULL COMMENT '经核实的源数据及人工事实快照',
|
|||
|
|
requested_by BIGINT UNSIGNED NOT NULL COMMENT '录入人账号ID',
|
|||
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|||
|
|
CONSTRAINT pk_payroll_inputs PRIMARY KEY (id),
|
|||
|
|
CONSTRAINT uk_payroll_inputs_business_version UNIQUE (business_id, version)
|
|||
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='正式工资输入版本表' COLLATE utf8mb4_general_ci;
|
|||
|
|
|
|||
|
|
CREATE INDEX idx_payroll_inputs_source_group ON payroll_inputs (source_database, group_key);
|
|||
|
|
|
|||
|
|
CREATE TABLE payroll_allocations (
|
|||
|
|
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
|
|||
|
|
ledger_id BIGINT UNSIGNED NOT NULL COMMENT '所属正式台账ID',
|
|||
|
|
business_id BIGINT UNSIGNED NOT NULL COMMENT '正式业务ID',
|
|||
|
|
line_no INTEGER NOT NULL COMMENT '本台账稳定明细序号',
|
|||
|
|
input_id BIGINT UNSIGNED NOT NULL COMMENT '所用输入版本ID',
|
|||
|
|
amount NUMERIC(14, 2) NOT NULL COMMENT '分配回款金额',
|
|||
|
|
data_json JSON NOT NULL COMMENT '单据、成本、归属、参数和逐段计算依据',
|
|||
|
|
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|||
|
|
CONSTRAINT pk_payroll_allocations PRIMARY KEY (id),
|
|||
|
|
CONSTRAINT uk_payroll_allocations_ledger_line UNIQUE (ledger_id, line_no)
|
|||
|
|
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='正式FIFO分配明细表' COLLATE utf8mb4_general_ci;
|
|||
|
|
|
|||
|
|
CREATE INDEX idx_payroll_allocations_business_id ON payroll_allocations (business_id);
|
|||
|
|
|
|||
|
|
CREATE INDEX idx_performance_ledgers_receipt_id ON performance_ledgers (receipt_id);
|
|||
|
|
ALTER TABLE performance_ledgers ADD COLUMN allocation_key VARCHAR(64) NOT NULL DEFAULT '' COMMENT '正式FIFO事件键;历史单笔核算为空串';
|
|||
|
|
ALTER TABLE performance_ledgers DROP INDEX uk_performance_ledgers_receipt_id_calc_version_personnel;
|
|||
|
|
ALTER TABLE performance_ledgers ADD CONSTRAINT uk_performance_ledgers_receipt_id_calc_version_personnel UNIQUE (receipt_id, calc_version, personnel_id, allocation_key);
|