R111/A7-A10 统一报销双端发票附件体验
这个提交包含在:
@@ -0,0 +1,33 @@
|
||||
-- R111: 报销附件材料。用于支付截图、合同、订单、说明等非发票材料,不参与发票 OCR/查重。
|
||||
CREATE TABLE "reimbursement_attachments" (
|
||||
"id" UUID NOT NULL,
|
||||
"reimbursement_id" UUID NOT NULL,
|
||||
"storage_path" TEXT NOT NULL,
|
||||
"original_name" TEXT NOT NULL,
|
||||
"mime_type" TEXT NOT NULL,
|
||||
"file_size" INTEGER NOT NULL,
|
||||
"file_sha256" TEXT NOT NULL,
|
||||
"uploaded_by" UUID NOT NULL,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "reimbursement_attachments_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE INDEX "idx_reimbursement_attachments_form_created"
|
||||
ON "reimbursement_attachments"("reimbursement_id", "created_at");
|
||||
|
||||
CREATE INDEX "idx_reimbursement_attachments_uploader"
|
||||
ON "reimbursement_attachments"("uploaded_by");
|
||||
|
||||
CREATE INDEX "idx_reimbursement_attachments_file_sha256"
|
||||
ON "reimbursement_attachments"("file_sha256");
|
||||
|
||||
ALTER TABLE "reimbursement_attachments"
|
||||
ADD CONSTRAINT "reimbursement_attachments_reimbursement_id_fkey"
|
||||
FOREIGN KEY ("reimbursement_id") REFERENCES "reimbursement_forms"("id")
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "reimbursement_attachments"
|
||||
ADD CONSTRAINT "reimbursement_attachments_uploaded_by_fkey"
|
||||
FOREIGN KEY ("uploaded_by") REFERENCES "employees"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@@ -600,6 +600,7 @@ model Employee {
|
||||
submitted_reimbursements ReimbursementForm[] @relation("ReimbursementSubmitter")
|
||||
owned_reimbursements ReimbursementForm[] @relation("ReimbursementOwner")
|
||||
paid_reimbursements ReimbursementForm[] @relation("ReimbursementPaidBy")
|
||||
reimbursement_attachments_uploaded ReimbursementAttachment[] @relation("ReimbursementAttachmentUploader")
|
||||
leave_requests LeaveRequest[]
|
||||
leave_ledgers LeaveLedger[]
|
||||
owned_cost_centers CostCenter[] @relation("CostCenterOwner")
|
||||
@@ -1303,6 +1304,7 @@ model ReimbursementForm {
|
||||
travel_request TravelRequest? @relation(fields: [linked_travel_request_id], references: [id], onDelete: SetNull)
|
||||
|
||||
items ReimbursementItem[]
|
||||
attachments ReimbursementAttachment[]
|
||||
invoice_pool_items InvoicePool[]
|
||||
workflow_instances WorkflowInstance[]
|
||||
approval_transfers ApprovalTransfer[]
|
||||
@@ -1345,6 +1347,26 @@ model ReimbursementItem {
|
||||
@@map("reimbursement_items")
|
||||
}
|
||||
|
||||
model ReimbursementAttachment {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
reimbursement_id String @db.Uuid
|
||||
storage_path String
|
||||
original_name String
|
||||
mime_type String
|
||||
file_size Int
|
||||
file_sha256 String
|
||||
uploaded_by String @db.Uuid
|
||||
created_at DateTime @default(now())
|
||||
|
||||
reimbursement_form ReimbursementForm @relation(fields: [reimbursement_id], references: [id], onDelete: Cascade)
|
||||
uploader Employee @relation("ReimbursementAttachmentUploader", fields: [uploaded_by], references: [id], onDelete: Restrict)
|
||||
|
||||
@@index([reimbursement_id, created_at], map: "idx_reimbursement_attachments_form_created")
|
||||
@@index([uploaded_by], map: "idx_reimbursement_attachments_uploader")
|
||||
@@index([file_sha256], map: "idx_reimbursement_attachments_file_sha256")
|
||||
@@map("reimbursement_attachments")
|
||||
}
|
||||
|
||||
model LeaveType {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
code String @unique
|
||||
|
||||
在新工单中引用
屏蔽一个用户