procbay-schema 1.0.83 → 1.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "procbay-schema",
3
- "version": "1.0.83",
3
+ "version": "1.0.86",
4
4
  "description": "A set of utilities for managing Prisma database schemas, seeding, and maintenance operations for the Procure-to-Pay system",
5
5
  "main": "src/prisma/index.js",
6
6
  "type": "module",
@@ -0,0 +1,99 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "RfiSubmissionStatus" AS ENUM ('PENDING', 'SUBMITTED', 'APPROVED', 'REJECTED');
3
+
4
+ -- CreateTable
5
+ CREATE TABLE "rfi_submissions" (
6
+ "id" SERIAL NOT NULL,
7
+ "uuid" TEXT,
8
+ "event_id" INTEGER,
9
+ "event_vendor_id" INTEGER,
10
+ "rfi_form" JSONB,
11
+ "rfi_form_response" JSONB,
12
+ "status" "RfiSubmissionStatus" NOT NULL DEFAULT 'PENDING',
13
+ "submission_date" TIMESTAMPTZ(6),
14
+ "reviewed_at" TIMESTAMPTZ(6),
15
+ "reviewed_by" INTEGER,
16
+ "review_comments" TEXT,
17
+ "rejection_reason" TEXT,
18
+ "revision_notes" TEXT,
19
+ "rating" INTEGER,
20
+ "revision_count" INTEGER NOT NULL DEFAULT 0,
21
+ "version" INTEGER NOT NULL DEFAULT 1,
22
+ "attachments" JSONB,
23
+ "is_deleted" BOOLEAN NOT NULL DEFAULT false,
24
+ "created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
25
+ "created_by" INTEGER,
26
+ "updated_at" TIMESTAMPTZ(6) NOT NULL,
27
+ "updated_by" INTEGER,
28
+ "deleted_at" TIMESTAMPTZ(6),
29
+ "deleted_by" INTEGER,
30
+
31
+ CONSTRAINT "rfi_submissions_pkey" PRIMARY KEY ("id")
32
+ );
33
+
34
+ -- CreateTable
35
+ CREATE TABLE "rfi_submission_logs" (
36
+ "id" SERIAL NOT NULL,
37
+ "uuid" TEXT,
38
+ "rfi_submission_id" INTEGER,
39
+ "event_id" INTEGER,
40
+ "event_vendor_id" INTEGER,
41
+ "previous_status" "RfiSubmissionStatus",
42
+ "new_status" "RfiSubmissionStatus" NOT NULL,
43
+ "action" TEXT,
44
+ "action_by" INTEGER,
45
+ "comments" TEXT,
46
+ "rating" INTEGER,
47
+ "version" INTEGER NOT NULL DEFAULT 1,
48
+ "created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
49
+
50
+ CONSTRAINT "rfi_submission_logs_pkey" PRIMARY KEY ("id")
51
+ );
52
+
53
+ -- CreateIndex
54
+ CREATE UNIQUE INDEX "rfi_submissions_uuid_key" ON "rfi_submissions"("uuid");
55
+
56
+ -- CreateIndex
57
+ CREATE INDEX "rfi_submissions_event_id_idx" ON "rfi_submissions"("event_id");
58
+
59
+ -- CreateIndex
60
+ CREATE INDEX "rfi_submissions_event_vendor_id_idx" ON "rfi_submissions"("event_vendor_id");
61
+
62
+ -- CreateIndex
63
+ CREATE INDEX "rfi_submissions_status_idx" ON "rfi_submissions"("status");
64
+
65
+ -- CreateIndex
66
+ CREATE INDEX "rfi_submissions_submission_date_idx" ON "rfi_submissions"("submission_date");
67
+
68
+ -- CreateIndex
69
+ CREATE UNIQUE INDEX "rfi_submissions_event_id_event_vendor_id_key" ON "rfi_submissions"("event_id", "event_vendor_id");
70
+
71
+ -- CreateIndex
72
+ CREATE UNIQUE INDEX "rfi_submission_logs_uuid_key" ON "rfi_submission_logs"("uuid");
73
+
74
+ -- CreateIndex
75
+ CREATE INDEX "rfi_submission_logs_rfi_submission_id_idx" ON "rfi_submission_logs"("rfi_submission_id");
76
+
77
+ -- CreateIndex
78
+ CREATE INDEX "rfi_submission_logs_event_id_idx" ON "rfi_submission_logs"("event_id");
79
+
80
+ -- CreateIndex
81
+ CREATE INDEX "rfi_submission_logs_event_vendor_id_idx" ON "rfi_submission_logs"("event_vendor_id");
82
+
83
+ -- CreateIndex
84
+ CREATE INDEX "rfi_submission_logs_created_at_idx" ON "rfi_submission_logs"("created_at");
85
+
86
+ -- AddForeignKey
87
+ ALTER TABLE "rfi_submissions" ADD CONSTRAINT "rfi_submissions_event_id_fkey" FOREIGN KEY ("event_id") REFERENCES "events"("id") ON DELETE CASCADE ON UPDATE CASCADE;
88
+
89
+ -- AddForeignKey
90
+ ALTER TABLE "rfi_submissions" ADD CONSTRAINT "rfi_submissions_event_vendor_id_fkey" FOREIGN KEY ("event_vendor_id") REFERENCES "event_vendors"("id") ON DELETE CASCADE ON UPDATE CASCADE;
91
+
92
+ -- AddForeignKey
93
+ ALTER TABLE "rfi_submissions" ADD CONSTRAINT "rfi_submissions_reviewed_by_fkey" FOREIGN KEY ("reviewed_by") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
94
+
95
+ -- AddForeignKey
96
+ ALTER TABLE "rfi_submission_logs" ADD CONSTRAINT "rfi_submission_logs_rfi_submission_id_fkey" FOREIGN KEY ("rfi_submission_id") REFERENCES "rfi_submissions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
97
+
98
+ -- AddForeignKey
99
+ ALTER TABLE "rfi_submission_logs" ADD CONSTRAINT "rfi_submission_logs_action_by_fkey" FOREIGN KEY ("action_by") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -12,7 +12,7 @@ generator client {
12
12
 
13
13
  datasource db {
14
14
  provider = "postgresql"
15
- url = env("DEFAULT_DATABASE_URL")
15
+ url = env("DEFAULT_DATABASE_URL")
16
16
  }
17
17
 
18
18
  //---------------------------------- SERIAL NUMBER CONFIGURATION MODEL START ------------------------------------------------
@@ -74,7 +74,7 @@ model User {
74
74
  deleted_at DateTime? @db.Timestamptz(6)
75
75
  deleted_by Int?
76
76
  user_environment EnvironmentEnum @default(PRODUCTION)
77
- contract_role String?
77
+ contract_role String?
78
78
  user_roles UserRole[]
79
79
  user_department UserDepartment[]
80
80
  approval_hierarchy ApprovalHierarchy[]
@@ -108,6 +108,8 @@ model User {
108
108
  send_back_approvers SendBack[] @relation("send_back_approver")
109
109
  send_back_requestors SendBack[] @relation("send_back_requestor")
110
110
  user_login_activities UserLoginActivity[]
111
+ rfi_reviewer RfiSubmission[] @relation("rfi_reviewer")
112
+ rfi_action_by RfiSubmissionLog[] @relation("rfi_action_by")
111
113
 
112
114
  @@map("users")
113
115
  }
@@ -1156,6 +1158,7 @@ model Event {
1156
1158
  bid_logs BidLog[]
1157
1159
  quotations Quotation[]
1158
1160
  quotation_logs QuotationLog[]
1161
+ rfi_submissions RfiSubmission[]
1159
1162
  purchase_order PurchaseOrder[]
1160
1163
 
1161
1164
  @@map("events")
@@ -1244,6 +1247,7 @@ model EventVendors {
1244
1247
  bid_logs BidLog[]
1245
1248
  quotations Quotation[]
1246
1249
  quotation_logs QuotationLog[]
1250
+ rfi_submissions RfiSubmission[]
1247
1251
  purchase_order PurchaseOrder[]
1248
1252
 
1249
1253
  @@index([event_id, vendor_id])
@@ -1756,24 +1760,24 @@ model FormMaster {
1756
1760
 
1757
1761
  //------------------------------------ Dynamic Form Models Start ------------------------------------
1758
1762
  model DynamicForm {
1759
- id Int @id @default(autoincrement())
1760
- uuid String? @unique @default(uuid())
1761
- module_id Int?
1762
- module FormMaster? @relation(fields: [module_id], references: [id], onDelete: Cascade)
1763
- form_name String?
1764
- form_slug String?
1763
+ id Int @id @default(autoincrement())
1764
+ uuid String? @unique @default(uuid())
1765
+ module_id Int?
1766
+ module FormMaster? @relation(fields: [module_id], references: [id], onDelete: Cascade)
1767
+ form_name String?
1768
+ form_slug String?
1765
1769
  description String?
1766
- fields Json?
1767
- form_order Int?
1768
- is_active Boolean? @default(true)
1769
- is_deleted Boolean? @default(false)
1770
- created_at DateTime? @default(now()) @db.Timestamptz(6)
1771
- created_by Int?
1772
- user User? @relation(fields: [created_by], references: [id], onDelete: Cascade)
1773
- updated_at DateTime? @updatedAt @db.Timestamptz(6)
1774
- updated_by Int?
1775
- deleted_at DateTime? @db.Timestamptz(6)
1776
- deleted_by Int?
1770
+ fields Json?
1771
+ form_order Int?
1772
+ is_active Boolean? @default(true)
1773
+ is_deleted Boolean? @default(false)
1774
+ created_at DateTime? @default(now()) @db.Timestamptz(6)
1775
+ created_by Int?
1776
+ user User? @relation(fields: [created_by], references: [id], onDelete: Cascade)
1777
+ updated_at DateTime? @updatedAt @db.Timestamptz(6)
1778
+ updated_by Int?
1779
+ deleted_at DateTime? @db.Timestamptz(6)
1780
+ deleted_by Int?
1777
1781
 
1778
1782
  @@unique([module_id, form_slug])
1779
1783
  @@map("dynamic_forms")
@@ -2732,3 +2736,81 @@ model CatalogueCart {
2732
2736
  }
2733
2737
 
2734
2738
  //---------------------------------- CATALOGUE CART MODEL END ---------------------------------------
2739
+
2740
+ //---------------------------------- RFI SUBMISSION MODEL START ---------------------------------------
2741
+ enum RfiSubmissionStatus {
2742
+ PENDING
2743
+ SUBMITTED
2744
+ APPROVED
2745
+ REJECTED
2746
+ }
2747
+
2748
+ // Stores vendor RFI form submissions for RFI type events
2749
+ model RfiSubmission {
2750
+ id Int @id @default(autoincrement())
2751
+ uuid String? @unique @default(uuid())
2752
+ event_id Int?
2753
+ event Event? @relation(fields: [event_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
2754
+ event_vendor_id Int?
2755
+ event_vendor EventVendors? @relation(fields: [event_vendor_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
2756
+ rfi_form Json? @db.JsonB
2757
+ rfi_form_response Json? @db.JsonB
2758
+ status RfiSubmissionStatus @default(PENDING)
2759
+ submission_date DateTime? @db.Timestamptz(6)
2760
+ reviewed_at DateTime? @db.Timestamptz(6)
2761
+ reviewed_by Int?
2762
+ reviewer User? @relation("rfi_reviewer", fields: [reviewed_by], references: [id], onDelete: SetNull)
2763
+ review_comments String?
2764
+ rejection_reason String?
2765
+ revision_notes String?
2766
+ rating Int?
2767
+ revision_count Int @default(0)
2768
+ version Int @default(1)
2769
+ attachments Json? @db.JsonB
2770
+ is_deleted Boolean @default(false)
2771
+ created_at DateTime @default(now()) @db.Timestamptz(6)
2772
+ created_by Int?
2773
+ updated_at DateTime @updatedAt @db.Timestamptz(6)
2774
+ updated_by Int?
2775
+ deleted_at DateTime? @db.Timestamptz(6)
2776
+ deleted_by Int?
2777
+
2778
+ rfi_submission_logs RfiSubmissionLog[]
2779
+
2780
+ @@unique([event_id, event_vendor_id], name: "unique_event_vendor_rfi")
2781
+ @@index([event_id])
2782
+ @@index([event_vendor_id])
2783
+ @@index([status])
2784
+ @@index([submission_date])
2785
+ @@map("rfi_submissions")
2786
+ }
2787
+
2788
+ //---------------------------------- RFI SUBMISSION MODEL END ---------------------------------------
2789
+
2790
+ //---------------------------------- RFI SUBMISSION LOG MODEL START ---------------------------------------
2791
+ // Audit log for RFI submissions - tracks complete history of all status changes and actions
2792
+ model RfiSubmissionLog {
2793
+ id Int @id @default(autoincrement())
2794
+ uuid String? @unique @default(uuid())
2795
+ rfi_submission_id Int?
2796
+ rfi_submission RfiSubmission? @relation(fields: [rfi_submission_id], references: [id], onDelete: Cascade)
2797
+ event_id Int?
2798
+ event_vendor_id Int?
2799
+ previous_status RfiSubmissionStatus?
2800
+ new_status RfiSubmissionStatus
2801
+ action String?
2802
+ action_by Int?
2803
+ action_by_user User? @relation("rfi_action_by", fields: [action_by], references: [id], onDelete: SetNull)
2804
+ comments String?
2805
+ rating Int?
2806
+ version Int @default(1)
2807
+ created_at DateTime @default(now()) @db.Timestamptz(6)
2808
+
2809
+ @@index([rfi_submission_id])
2810
+ @@index([event_id])
2811
+ @@index([event_vendor_id])
2812
+ @@index([created_at])
2813
+ @@map("rfi_submission_logs")
2814
+ }
2815
+
2816
+ //---------------------------------- RFI SUBMISSION LOG MODEL END ---------------------------------------