R56 A1-A6:费用标准管控
这个提交包含在:
@@ -0,0 +1,34 @@
|
||||
CREATE TABLE "expense_standards" (
|
||||
"id" UUID NOT NULL,
|
||||
"expense_type_id" UUID NOT NULL,
|
||||
"name" VARCHAR(100) NOT NULL,
|
||||
"max_amount" DECIMAL(14,2) NOT NULL,
|
||||
"per_unit" VARCHAR(20) NOT NULL DEFAULT 'item',
|
||||
"control_mode" VARCHAR(16) NOT NULL DEFAULT 'warn',
|
||||
"scope_type" VARCHAR(32) NOT NULL DEFAULT 'global',
|
||||
"scope_key" UUID,
|
||||
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
||||
"note" TEXT,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"created_by" UUID,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_by" UUID,
|
||||
|
||||
CONSTRAINT "expense_standards_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
ALTER TABLE "expense_standards"
|
||||
ADD CONSTRAINT "expense_standards_expense_type_id_fkey"
|
||||
FOREIGN KEY ("expense_type_id") REFERENCES "expense_types"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
CREATE INDEX "idx_expense_standards_enabled_type"
|
||||
ON "expense_standards"("enabled", "expense_type_id");
|
||||
|
||||
CREATE UNIQUE INDEX "expense_standards_type_scope_global_ux"
|
||||
ON "expense_standards"("expense_type_id", "scope_type")
|
||||
WHERE "scope_key" IS NULL;
|
||||
|
||||
CREATE UNIQUE INDEX "expense_standards_type_scope_scoped_ux"
|
||||
ON "expense_standards"("expense_type_id", "scope_type", "scope_key")
|
||||
WHERE "scope_key" IS NOT NULL;
|
||||
@@ -812,12 +812,36 @@ model ExpenseType {
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
updated_by String? @db.Uuid
|
||||
|
||||
standards ExpenseStandard[]
|
||||
reimbursement_items ReimbursementItem[]
|
||||
|
||||
@@index([enabled, sort_order])
|
||||
@@map("expense_types")
|
||||
}
|
||||
|
||||
model ExpenseStandard {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
expense_type_id String @db.Uuid
|
||||
name String @db.VarChar(100)
|
||||
max_amount Decimal @db.Decimal(14, 2)
|
||||
per_unit String @default("item") @db.VarChar(20)
|
||||
control_mode String @default("warn") @db.VarChar(16)
|
||||
scope_type String @default("global") @db.VarChar(32)
|
||||
scope_key String? @db.Uuid
|
||||
enabled Boolean @default(true)
|
||||
note String?
|
||||
|
||||
created_at DateTime @default(now())
|
||||
created_by String? @db.Uuid
|
||||
updated_at DateTime @default(now()) @updatedAt
|
||||
updated_by String? @db.Uuid
|
||||
|
||||
expense_type ExpenseType @relation(fields: [expense_type_id], references: [id], onDelete: Restrict)
|
||||
|
||||
@@index([enabled, expense_type_id], map: "idx_expense_standards_enabled_type")
|
||||
@@map("expense_standards")
|
||||
}
|
||||
|
||||
model DocumentSequence {
|
||||
document_type String @id
|
||||
prefix String
|
||||
|
||||
在新工单中引用
屏蔽一个用户