fix(finance): preserve voided receivables and return current revisions

This commit is contained in:
2026-10-27 15:30:28 +08:00
parent fe89b8a2b8
commit ed6a173b86
8 changed files with 101 additions and 5 deletions
@@ -5044,6 +5044,7 @@ CREATE TABLE fin_settlement (
due_date date NOT NULL COMMENT '结算到期日期',
payment_status varchar(24) NOT NULL DEFAULT 'UNPAID' COMMENT '收付款状态:UNPAID未收付、PARTIALLY_PAID部分收付、PAID已结清',
status varchar(24) NOT NULL DEFAULT 'ISSUED' COMMENT '结算状态:ISSUED已生效、PARTIALLY_PAID部分收付、PAID已结清、VOIDED已作废',
active_receivable_statement_id bigint unsigned GENERATED ALWAYS AS (CASE WHEN direction='RECEIVABLE' AND status<>'VOIDED' THEN reconciliation_statement_id ELSE NULL END) VIRTUAL COMMENT '有效应收占用的对账单;作废单不占用,历史关联仍保留',
version int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁版本号',
created_by bigint unsigned NOT NULL COMMENT '创建操作人ID',
updated_by bigint unsigned NOT NULL COMMENT '最后修改操作人ID',
@@ -5051,7 +5052,7 @@ CREATE TABLE fin_settlement (
updated_at datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '最后更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_fin_settlement_no (tenant_id,settlement_no),
UNIQUE KEY uk_fin_settlement_receivable_statement (tenant_id,reconciliation_statement_id,direction),
UNIQUE KEY uk_fin_settlement_active_receivable (tenant_id,active_receivable_statement_id),
KEY idx_fin_settlement_customer_direction_status (tenant_id,direction,status),
KEY idx_fin_settlement_supplier_status (supplier_id,direction,status),
KEY idx_fin_settlement_receivable_statistics (direction,currency_code,generated_date,status,tenant_id),