addition expense claims

This commit is contained in:
Aya
2026-04-22 11:36:47 +03:00
parent e262d8c09c
commit 0a9e1bbd4d
16 changed files with 1553 additions and 31 deletions

View File

@@ -0,0 +1,26 @@
CREATE TABLE "expense_claims" (
"id" TEXT NOT NULL,
"employeeId" TEXT NOT NULL,
"claimNumber" TEXT NOT NULL,
"expenseDate" DATE,
"amount" DECIMAL(12,2),
"description" TEXT,
"projectOrTender" TEXT,
"status" TEXT NOT NULL DEFAULT 'PENDING',
"approvedBy" TEXT,
"approvedAt" TIMESTAMP(3),
"rejectedReason" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "expense_claims_pkey" PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "expense_claims_claimNumber_key" ON "expense_claims"("claimNumber");
CREATE INDEX "expense_claims_employeeId_idx" ON "expense_claims"("employeeId");
CREATE INDEX "expense_claims_status_idx" ON "expense_claims"("status");
ALTER TABLE "expense_claims"
ADD CONSTRAINT "expense_claims_employeeId_fkey"
FOREIGN KEY ("employeeId") REFERENCES "employees"("id")
ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -0,0 +1,9 @@
ALTER TABLE "expense_claims"
ADD COLUMN "items" JSONB;
ALTER TABLE "expense_claims"
ADD COLUMN "totalAmount" DECIMAL(12,2);
UPDATE "expense_claims"
SET "totalAmount" = "amount"
WHERE "totalAmount" IS NULL AND "amount" IS NOT NULL;

View File

@@ -200,6 +200,7 @@ model Employee {
commissions Commission[]
loans Loan[]
purchaseRequests PurchaseRequest[]
expenseClaims ExpenseClaim[]
leaveEntitlements LeaveEntitlement[]
employeeContracts EmployeeContract[]
tenderDirectivesAssigned TenderDirective[]
@@ -503,6 +504,34 @@ model PurchaseRequest {
@@map("purchase_requests")
}
model ExpenseClaim {
id String @id @default(uuid())
employeeId String
employee Employee @relation(fields: [employeeId], references: [id])
claimNumber String @unique
items Json?
totalAmount Decimal? @db.Decimal(12, 2)
expenseDate DateTime? @db.Date
amount Decimal? @db.Decimal(12, 2)
description String?
projectOrTender String?
status String @default("PENDING")
approvedBy String?
approvedAt DateTime?
rejectedReason String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([employeeId])
@@index([status])
@@map("expense_claims")
}
model LeaveEntitlement {
id String @id @default(uuid())
employeeId String