@valentine-efagene/qshelter-common 2.0.94 → 2.0.95

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.
Files changed (44) hide show
  1. package/dist/generated/client/browser.d.ts +16 -16
  2. package/dist/generated/client/client.d.ts +16 -16
  3. package/dist/generated/client/commonInputTypes.d.ts +72 -72
  4. package/dist/generated/client/enums.d.ts +13 -13
  5. package/dist/generated/client/enums.js +10 -10
  6. package/dist/generated/client/internal/class.d.ts +32 -32
  7. package/dist/generated/client/internal/class.js +2 -2
  8. package/dist/generated/client/internal/prismaNamespace.d.ts +321 -321
  9. package/dist/generated/client/internal/prismaNamespace.js +50 -50
  10. package/dist/generated/client/internal/prismaNamespaceBrowser.d.ts +66 -66
  11. package/dist/generated/client/internal/prismaNamespaceBrowser.js +50 -50
  12. package/dist/generated/client/models/Application.d.ts +5439 -0
  13. package/dist/generated/client/models/Application.js +1 -0
  14. package/dist/generated/client/models/ApplicationDocument.d.ts +1409 -0
  15. package/dist/generated/client/models/ApplicationDocument.js +1 -0
  16. package/dist/generated/client/models/ApplicationEvent.d.ts +1254 -0
  17. package/dist/generated/client/models/ApplicationEvent.js +1 -0
  18. package/dist/generated/client/models/ApplicationPayment.d.ts +2030 -0
  19. package/dist/generated/client/models/ApplicationPayment.js +1 -0
  20. package/dist/generated/client/models/ApplicationPhase.d.ts +2243 -0
  21. package/dist/generated/client/models/ApplicationPhase.js +1 -0
  22. package/dist/generated/client/models/ApplicationRefund.d.ts +2560 -0
  23. package/dist/generated/client/models/ApplicationRefund.js +1 -0
  24. package/dist/generated/client/models/ApplicationTermination.d.ts +3446 -0
  25. package/dist/generated/client/models/ApplicationTermination.js +1 -0
  26. package/dist/generated/client/models/DocumentationPhase.d.ts +13 -13
  27. package/dist/generated/client/models/OfferLetter.d.ts +97 -97
  28. package/dist/generated/client/models/PaymentInstallment.d.ts +1660 -0
  29. package/dist/generated/client/models/PaymentInstallment.js +1 -0
  30. package/dist/generated/client/models/PaymentMethodChangeRequest.d.ts +103 -103
  31. package/dist/generated/client/models/PaymentPhase.d.ts +40 -40
  32. package/dist/generated/client/models/PropertyPaymentMethod.d.ts +77 -77
  33. package/dist/generated/client/models/PropertyTransferRequest.d.ts +213 -213
  34. package/dist/generated/client/models/PropertyUnit.d.ts +53 -53
  35. package/dist/generated/client/models/QuestionnairePhase.d.ts +11 -11
  36. package/dist/generated/client/models/Tenant.d.ts +323 -323
  37. package/dist/generated/client/models/User.d.ts +1329 -1329
  38. package/dist/generated/client/models/index.d.ts +8 -8
  39. package/dist/generated/client/models/index.js +8 -8
  40. package/dist/generated/client/models.d.ts +8 -8
  41. package/package.json +1 -1
  42. package/prisma/migrations/20260112080730_rename_contract_to_application/migration.sql +529 -0
  43. package/prisma/schema.prisma +107 -107
  44. package/prisma/schema.prisma.backup +2601 -0
@@ -1,14 +1,13 @@
1
1
  export * from './Amenity';
2
2
  export * from './ApiKey';
3
+ export * from './Application';
4
+ export * from './ApplicationDocument';
5
+ export * from './ApplicationEvent';
6
+ export * from './ApplicationPayment';
7
+ export * from './ApplicationPhase';
8
+ export * from './ApplicationRefund';
9
+ export * from './ApplicationTermination';
3
10
  export * from './ApprovalRequest';
4
- export * from './Contract';
5
- export * from './ContractDocument';
6
- export * from './ContractEvent';
7
- export * from './ContractInstallment';
8
- export * from './ContractPayment';
9
- export * from './ContractPhase';
10
- export * from './ContractRefund';
11
- export * from './ContractTermination';
12
11
  export * from './DeviceEndpoint';
13
12
  export * from './DocumentRequirementRule';
14
13
  export * from './DocumentTemplate';
@@ -25,6 +24,7 @@ export * from './EventType';
25
24
  export * from './OAuthState';
26
25
  export * from './OfferLetter';
27
26
  export * from './PasswordReset';
27
+ export * from './PaymentInstallment';
28
28
  export * from './PaymentMethodChangeRequest';
29
29
  export * from './PaymentMethodPhaseDocument';
30
30
  export * from './PaymentMethodPhaseField';
@@ -1,14 +1,13 @@
1
1
  export * from './Amenity';
2
2
  export * from './ApiKey';
3
+ export * from './Application';
4
+ export * from './ApplicationDocument';
5
+ export * from './ApplicationEvent';
6
+ export * from './ApplicationPayment';
7
+ export * from './ApplicationPhase';
8
+ export * from './ApplicationRefund';
9
+ export * from './ApplicationTermination';
3
10
  export * from './ApprovalRequest';
4
- export * from './Contract';
5
- export * from './ContractDocument';
6
- export * from './ContractEvent';
7
- export * from './ContractInstallment';
8
- export * from './ContractPayment';
9
- export * from './ContractPhase';
10
- export * from './ContractRefund';
11
- export * from './ContractTermination';
12
11
  export * from './DeviceEndpoint';
13
12
  export * from './DocumentRequirementRule';
14
13
  export * from './DocumentTemplate';
@@ -25,6 +24,7 @@ export * from './EventType';
25
24
  export * from './OAuthState';
26
25
  export * from './OfferLetter';
27
26
  export * from './PasswordReset';
27
+ export * from './PaymentInstallment';
28
28
  export * from './PaymentMethodChangeRequest';
29
29
  export * from './PaymentMethodPhaseDocument';
30
30
  export * from './PaymentMethodPhaseField';
@@ -34,23 +34,23 @@ export type * from './models/PaymentMethodPhaseStep.js';
34
34
  export type * from './models/StepEventAttachment.js';
35
35
  export type * from './models/PaymentMethodPhaseDocument.js';
36
36
  export type * from './models/PaymentMethodPhaseField.js';
37
- export type * from './models/Contract.js';
38
- export type * from './models/ContractRefund.js';
39
- export type * from './models/ContractPhase.js';
37
+ export type * from './models/Application.js';
38
+ export type * from './models/ApplicationRefund.js';
39
+ export type * from './models/ApplicationPhase.js';
40
40
  export type * from './models/QuestionnairePhase.js';
41
41
  export type * from './models/DocumentationPhase.js';
42
42
  export type * from './models/PaymentPhase.js';
43
43
  export type * from './models/QuestionnaireField.js';
44
- export type * from './models/ContractEvent.js';
44
+ export type * from './models/ApplicationEvent.js';
45
45
  export type * from './models/DocumentationStep.js';
46
46
  export type * from './models/DocumentationStepDocument.js';
47
47
  export type * from './models/DocumentationStepApproval.js';
48
- export type * from './models/ContractInstallment.js';
49
- export type * from './models/ContractPayment.js';
50
- export type * from './models/ContractDocument.js';
48
+ export type * from './models/PaymentInstallment.js';
49
+ export type * from './models/ApplicationPayment.js';
50
+ export type * from './models/ApplicationDocument.js';
51
51
  export type * from './models/DocumentTemplate.js';
52
52
  export type * from './models/OfferLetter.js';
53
- export type * from './models/ContractTermination.js';
53
+ export type * from './models/ApplicationTermination.js';
54
54
  export type * from './models/PaymentMethodChangeRequest.js';
55
55
  export type * from './models/DocumentRequirementRule.js';
56
56
  export type * from './models/EventChannel.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valentine-efagene/qshelter-common",
3
- "version": "2.0.94",
3
+ "version": "2.0.95",
4
4
  "description": "Shared database schemas and utilities for QShelter services",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -0,0 +1,529 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The values [CONTRACT_TERMINATION] on the enum `approval_requests_type` will be removed. If these variants are still used in the database, this will fail.
5
+ - The values [CONTRACT_PHASE] on the enum `document_requirement_rules_context` will be removed. If these variants are still used in the database, this will fail.
6
+ - You are about to drop the column `contractId` on the `offer_letters` table. All the data in the column will be lost.
7
+ - You are about to drop the column `contractId` on the `payment_method_change_requests` table. All the data in the column will be lost.
8
+ - You are about to drop the column `sourceContractId` on the `property_transfer_requests` table. All the data in the column will be lost.
9
+ - You are about to drop the column `targetContractId` on the `property_transfer_requests` table. All the data in the column will be lost.
10
+ - You are about to drop the `contract_documents` table. If the table is not empty, all the data it contains will be lost.
11
+ - You are about to drop the `contract_events` table. If the table is not empty, all the data it contains will be lost.
12
+ - You are about to drop the `contract_installments` table. If the table is not empty, all the data it contains will be lost.
13
+ - You are about to drop the `contract_payments` table. If the table is not empty, all the data it contains will be lost.
14
+ - You are about to drop the `contract_phases` table. If the table is not empty, all the data it contains will be lost.
15
+ - You are about to drop the `contract_refunds` table. If the table is not empty, all the data it contains will be lost.
16
+ - You are about to drop the `contract_terminations` table. If the table is not empty, all the data it contains will be lost.
17
+ - You are about to drop the `contracts` table. If the table is not empty, all the data it contains will be lost.
18
+ - Added the required column `applicationId` to the `offer_letters` table without a default value. This is not possible if the table is not empty.
19
+ - Added the required column `applicationId` to the `payment_method_change_requests` table without a default value. This is not possible if the table is not empty.
20
+ - Added the required column `sourceApplicationId` to the `property_transfer_requests` table without a default value. This is not possible if the table is not empty.
21
+
22
+ */
23
+ -- DropForeignKey
24
+ ALTER TABLE `contract_documents` DROP FOREIGN KEY `contract_documents_contractId_fkey`;
25
+
26
+ -- DropForeignKey
27
+ ALTER TABLE `contract_documents` DROP FOREIGN KEY `contract_documents_uploadedById_fkey`;
28
+
29
+ -- DropForeignKey
30
+ ALTER TABLE `contract_events` DROP FOREIGN KEY `contract_events_contractId_fkey`;
31
+
32
+ -- DropForeignKey
33
+ ALTER TABLE `contract_installments` DROP FOREIGN KEY `contract_installments_paymentPhaseId_fkey`;
34
+
35
+ -- DropForeignKey
36
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_contractId_fkey`;
37
+
38
+ -- DropForeignKey
39
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_installmentId_fkey`;
40
+
41
+ -- DropForeignKey
42
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_payerId_fkey`;
43
+
44
+ -- DropForeignKey
45
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_phaseId_fkey`;
46
+
47
+ -- DropForeignKey
48
+ ALTER TABLE `contract_phases` DROP FOREIGN KEY `contract_phases_contractId_fkey`;
49
+
50
+ -- DropForeignKey
51
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_approvedById_fkey`;
52
+
53
+ -- DropForeignKey
54
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_contractId_fkey`;
55
+
56
+ -- DropForeignKey
57
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_processedById_fkey`;
58
+
59
+ -- DropForeignKey
60
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_requestedById_fkey`;
61
+
62
+ -- DropForeignKey
63
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_tenantId_fkey`;
64
+
65
+ -- DropForeignKey
66
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_contractId_fkey`;
67
+
68
+ -- DropForeignKey
69
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_initiatorId_fkey`;
70
+
71
+ -- DropForeignKey
72
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_reviewedBy_fkey`;
73
+
74
+ -- DropForeignKey
75
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_tenantId_fkey`;
76
+
77
+ -- DropForeignKey
78
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_buyerId_fkey`;
79
+
80
+ -- DropForeignKey
81
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_currentPhaseId_fkey`;
82
+
83
+ -- DropForeignKey
84
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_paymentMethodId_fkey`;
85
+
86
+ -- DropForeignKey
87
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_propertyUnitId_fkey`;
88
+
89
+ -- DropForeignKey
90
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_sellerId_fkey`;
91
+
92
+ -- DropForeignKey
93
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_tenantId_fkey`;
94
+
95
+ -- DropForeignKey
96
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_transferredFromId_fkey`;
97
+
98
+ -- DropForeignKey
99
+ ALTER TABLE `documentation_phases` DROP FOREIGN KEY `documentation_phases_phaseId_fkey`;
100
+
101
+ -- DropForeignKey
102
+ ALTER TABLE `offer_letters` DROP FOREIGN KEY `offer_letters_contractId_fkey`;
103
+
104
+ -- DropForeignKey
105
+ ALTER TABLE `payment_method_change_requests` DROP FOREIGN KEY `payment_method_change_requests_contractId_fkey`;
106
+
107
+ -- DropForeignKey
108
+ ALTER TABLE `payment_phases` DROP FOREIGN KEY `payment_phases_phaseId_fkey`;
109
+
110
+ -- DropForeignKey
111
+ ALTER TABLE `property_transfer_requests` DROP FOREIGN KEY `property_transfer_requests_sourceContractId_fkey`;
112
+
113
+ -- DropForeignKey
114
+ ALTER TABLE `property_transfer_requests` DROP FOREIGN KEY `property_transfer_requests_targetContractId_fkey`;
115
+
116
+ -- DropForeignKey
117
+ ALTER TABLE `questionnaire_phases` DROP FOREIGN KEY `questionnaire_phases_phaseId_fkey`;
118
+
119
+ -- DropIndex
120
+ DROP INDEX `offer_letters_contractId_idx` ON `offer_letters`;
121
+
122
+ -- DropIndex
123
+ DROP INDEX `payment_method_change_requests_contractId_idx` ON `payment_method_change_requests`;
124
+
125
+ -- DropIndex
126
+ DROP INDEX `property_transfer_requests_sourceContractId_idx` ON `property_transfer_requests`;
127
+
128
+ -- DropIndex
129
+ DROP INDEX `property_transfer_requests_targetContractId_fkey` ON `property_transfer_requests`;
130
+
131
+ -- AlterTable
132
+ ALTER TABLE `approval_requests` MODIFY `type` ENUM('PROPERTY_TRANSFER', 'PROPERTY_UPDATE', 'USER_WORKFLOW', 'CREDIT_CHECK', 'APPLICATION_TERMINATION', 'REFUND_APPROVAL') NOT NULL;
133
+
134
+ -- AlterTable
135
+ ALTER TABLE `document_requirement_rules` MODIFY `context` ENUM('APPLICATION_PHASE', 'PAYMENT_METHOD_CHANGE') NOT NULL;
136
+
137
+ -- AlterTable
138
+ ALTER TABLE `offer_letters` DROP COLUMN `contractId`,
139
+ ADD COLUMN `applicationId` VARCHAR(191) NOT NULL;
140
+
141
+ -- AlterTable
142
+ ALTER TABLE `payment_method_change_requests` DROP COLUMN `contractId`,
143
+ ADD COLUMN `applicationId` VARCHAR(191) NOT NULL;
144
+
145
+ -- AlterTable
146
+ ALTER TABLE `property_transfer_requests` DROP COLUMN `sourceContractId`,
147
+ DROP COLUMN `targetContractId`,
148
+ ADD COLUMN `sourceApplicationId` VARCHAR(191) NOT NULL,
149
+ ADD COLUMN `targetApplicationId` VARCHAR(191) NULL;
150
+
151
+ -- DropTable
152
+ DROP TABLE `contract_documents`;
153
+
154
+ -- DropTable
155
+ DROP TABLE `contract_events`;
156
+
157
+ -- DropTable
158
+ DROP TABLE `contract_installments`;
159
+
160
+ -- DropTable
161
+ DROP TABLE `contract_payments`;
162
+
163
+ -- DropTable
164
+ DROP TABLE `contract_phases`;
165
+
166
+ -- DropTable
167
+ DROP TABLE `contract_refunds`;
168
+
169
+ -- DropTable
170
+ DROP TABLE `contract_terminations`;
171
+
172
+ -- DropTable
173
+ DROP TABLE `contracts`;
174
+
175
+ -- CreateTable
176
+ CREATE TABLE `applications` (
177
+ `id` VARCHAR(191) NOT NULL,
178
+ `tenantId` VARCHAR(191) NOT NULL,
179
+ `propertyUnitId` VARCHAR(191) NOT NULL,
180
+ `buyerId` VARCHAR(191) NOT NULL,
181
+ `sellerId` VARCHAR(191) NULL,
182
+ `paymentMethodId` VARCHAR(191) NULL,
183
+ `applicationNumber` VARCHAR(191) NOT NULL,
184
+ `title` VARCHAR(191) NOT NULL,
185
+ `description` TEXT NULL,
186
+ `applicationType` VARCHAR(191) NOT NULL,
187
+ `totalAmount` DOUBLE NOT NULL,
188
+ `status` ENUM('DRAFT', 'PENDING', 'ACTIVE', 'COMPLETED', 'CANCELLED', 'TERMINATED', 'TRANSFERRED') NOT NULL DEFAULT 'DRAFT',
189
+ `currentPhaseId` VARCHAR(191) NULL,
190
+ `nextPaymentDueDate` DATETIME(3) NULL,
191
+ `lastReminderSentAt` DATETIME(3) NULL,
192
+ `startDate` DATETIME(3) NULL,
193
+ `endDate` DATETIME(3) NULL,
194
+ `signedAt` DATETIME(3) NULL,
195
+ `terminatedAt` DATETIME(3) NULL,
196
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
197
+ `updatedAt` DATETIME(3) NOT NULL,
198
+ `transferredFromId` VARCHAR(191) NULL,
199
+
200
+ UNIQUE INDEX `applications_applicationNumber_key`(`applicationNumber`),
201
+ UNIQUE INDEX `applications_transferredFromId_key`(`transferredFromId`),
202
+ INDEX `applications_tenantId_idx`(`tenantId`),
203
+ INDEX `applications_propertyUnitId_idx`(`propertyUnitId`),
204
+ INDEX `applications_buyerId_idx`(`buyerId`),
205
+ INDEX `applications_sellerId_idx`(`sellerId`),
206
+ INDEX `applications_paymentMethodId_idx`(`paymentMethodId`),
207
+ INDEX `applications_status_idx`(`status`),
208
+ INDEX `applications_currentPhaseId_idx`(`currentPhaseId`),
209
+ PRIMARY KEY (`id`)
210
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
211
+
212
+ -- CreateTable
213
+ CREATE TABLE `application_refunds` (
214
+ `id` VARCHAR(191) NOT NULL,
215
+ `tenantId` VARCHAR(191) NOT NULL,
216
+ `applicationId` VARCHAR(191) NOT NULL,
217
+ `amount` DOUBLE NOT NULL,
218
+ `reason` TEXT NOT NULL,
219
+ `status` ENUM('PENDING', 'APPROVED', 'REJECTED', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELLED') NOT NULL DEFAULT 'PENDING',
220
+ `requestedById` VARCHAR(191) NOT NULL,
221
+ `approvedById` VARCHAR(191) NULL,
222
+ `processedById` VARCHAR(191) NULL,
223
+ `paymentMethod` VARCHAR(191) NULL,
224
+ `referenceNumber` VARCHAR(191) NULL,
225
+ `recipientName` VARCHAR(191) NULL,
226
+ `recipientAccount` VARCHAR(191) NULL,
227
+ `recipientBank` VARCHAR(191) NULL,
228
+ `requestedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
229
+ `approvedAt` DATETIME(3) NULL,
230
+ `rejectedAt` DATETIME(3) NULL,
231
+ `processedAt` DATETIME(3) NULL,
232
+ `approvalNotes` TEXT NULL,
233
+ `rejectionNotes` TEXT NULL,
234
+ `processingNotes` TEXT NULL,
235
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
236
+ `updatedAt` DATETIME(3) NOT NULL,
237
+
238
+ INDEX `application_refunds_applicationId_idx`(`applicationId`),
239
+ INDEX `application_refunds_status_idx`(`status`),
240
+ INDEX `application_refunds_tenantId_idx`(`tenantId`),
241
+ INDEX `application_refunds_requestedById_idx`(`requestedById`),
242
+ PRIMARY KEY (`id`)
243
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
244
+
245
+ -- CreateTable
246
+ CREATE TABLE `application_phases` (
247
+ `id` VARCHAR(191) NOT NULL,
248
+ `applicationId` VARCHAR(191) NOT NULL,
249
+ `name` VARCHAR(191) NOT NULL,
250
+ `description` TEXT NULL,
251
+ `phaseCategory` ENUM('QUESTIONNAIRE', 'DOCUMENTATION', 'PAYMENT') NOT NULL,
252
+ `phaseType` ENUM('PRE_APPROVAL', 'UNDERWRITING', 'KYC', 'VERIFICATION', 'DOWNPAYMENT', 'MORTGAGE', 'BALLOON', 'CUSTOM') NOT NULL,
253
+ `order` INTEGER NOT NULL,
254
+ `status` ENUM('PENDING', 'IN_PROGRESS', 'AWAITING_APPROVAL', 'ACTIVE', 'COMPLETED', 'SKIPPED', 'FAILED', 'SUPERSEDED') NOT NULL DEFAULT 'PENDING',
255
+ `dueDate` DATETIME(3) NULL,
256
+ `startDate` DATETIME(3) NULL,
257
+ `endDate` DATETIME(3) NULL,
258
+ `activatedAt` DATETIME(3) NULL,
259
+ `completedAt` DATETIME(3) NULL,
260
+ `requiresPreviousPhaseCompletion` BOOLEAN NOT NULL DEFAULT true,
261
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
262
+ `updatedAt` DATETIME(3) NOT NULL,
263
+
264
+ INDEX `application_phases_applicationId_idx`(`applicationId`),
265
+ INDEX `application_phases_phaseCategory_idx`(`phaseCategory`),
266
+ INDEX `application_phases_status_idx`(`status`),
267
+ INDEX `application_phases_order_idx`(`order`),
268
+ PRIMARY KEY (`id`)
269
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
270
+
271
+ -- CreateTable
272
+ CREATE TABLE `application_events` (
273
+ `id` VARCHAR(191) NOT NULL,
274
+ `applicationId` VARCHAR(191) NOT NULL,
275
+ `eventType` ENUM('APPLICATION_CREATED', 'APPLICATION_STATE_CHANGED', 'PHASE_ACTIVATED', 'PHASE_COMPLETED', 'STEP_COMPLETED', 'STEP_REJECTED', 'DOCUMENT_SUBMITTED', 'DOCUMENT_APPROVED', 'DOCUMENT_REJECTED', 'PAYMENT_INITIATED', 'PAYMENT_COMPLETED', 'PAYMENT_FAILED', 'INSTALLMENTS_GENERATED', 'APPLICATION_SIGNED', 'APPLICATION_TERMINATED', 'APPLICATION_TRANSFERRED', 'UNDERWRITING_COMPLETED', 'OFFER_LETTER_GENERATED') NOT NULL,
276
+ `eventGroup` ENUM('STATE_CHANGE', 'PAYMENT', 'DOCUMENT', 'NOTIFICATION', 'WORKFLOW') NULL,
277
+ `fromState` VARCHAR(191) NULL,
278
+ `toState` VARCHAR(191) NULL,
279
+ `trigger` VARCHAR(191) NULL,
280
+ `data` JSON NULL,
281
+ `actorId` VARCHAR(191) NULL,
282
+ `actorType` ENUM('USER', 'SYSTEM', 'WEBHOOK', 'ADMIN') NULL,
283
+ `occurredAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
284
+
285
+ INDEX `application_events_applicationId_idx`(`applicationId`),
286
+ INDEX `application_events_eventType_idx`(`eventType`),
287
+ INDEX `application_events_eventGroup_idx`(`eventGroup`),
288
+ INDEX `application_events_occurredAt_idx`(`occurredAt`),
289
+ PRIMARY KEY (`id`)
290
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
291
+
292
+ -- CreateTable
293
+ CREATE TABLE `payment_installments` (
294
+ `id` VARCHAR(191) NOT NULL,
295
+ `paymentPhaseId` VARCHAR(191) NOT NULL,
296
+ `installmentNumber` INTEGER NOT NULL,
297
+ `amount` DOUBLE NOT NULL,
298
+ `principalAmount` DOUBLE NOT NULL DEFAULT 0,
299
+ `interestAmount` DOUBLE NOT NULL DEFAULT 0,
300
+ `dueDate` DATETIME(3) NOT NULL,
301
+ `status` ENUM('PENDING', 'PAID', 'OVERDUE', 'PARTIALLY_PAID', 'WAIVED') NOT NULL DEFAULT 'PENDING',
302
+ `paidAmount` DOUBLE NOT NULL DEFAULT 0,
303
+ `paidDate` DATETIME(3) NULL,
304
+ `lateFee` DOUBLE NOT NULL DEFAULT 0,
305
+ `lateFeeWaived` BOOLEAN NOT NULL DEFAULT false,
306
+ `gracePeriodDays` INTEGER NOT NULL DEFAULT 0,
307
+ `gracePeriodEndDate` DATETIME(3) NULL,
308
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
309
+ `updatedAt` DATETIME(3) NOT NULL,
310
+
311
+ INDEX `payment_installments_paymentPhaseId_idx`(`paymentPhaseId`),
312
+ INDEX `payment_installments_dueDate_idx`(`dueDate`),
313
+ INDEX `payment_installments_status_idx`(`status`),
314
+ PRIMARY KEY (`id`)
315
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
316
+
317
+ -- CreateTable
318
+ CREATE TABLE `application_payments` (
319
+ `id` VARCHAR(191) NOT NULL,
320
+ `applicationId` VARCHAR(191) NOT NULL,
321
+ `phaseId` VARCHAR(191) NULL,
322
+ `installmentId` VARCHAR(191) NULL,
323
+ `payerId` VARCHAR(191) NULL,
324
+ `amount` DOUBLE NOT NULL,
325
+ `principalAmount` DOUBLE NOT NULL DEFAULT 0,
326
+ `interestAmount` DOUBLE NOT NULL DEFAULT 0,
327
+ `lateFeeAmount` DOUBLE NOT NULL DEFAULT 0,
328
+ `paymentMethod` VARCHAR(191) NOT NULL,
329
+ `status` ENUM('INITIATED', 'PENDING', 'COMPLETED', 'FAILED', 'REFUNDED') NOT NULL DEFAULT 'INITIATED',
330
+ `reference` VARCHAR(191) NULL,
331
+ `gatewayResponse` TEXT NULL,
332
+ `processedAt` DATETIME(3) NULL,
333
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
334
+ `updatedAt` DATETIME(3) NOT NULL,
335
+
336
+ UNIQUE INDEX `application_payments_reference_key`(`reference`),
337
+ INDEX `application_payments_applicationId_idx`(`applicationId`),
338
+ INDEX `application_payments_phaseId_idx`(`phaseId`),
339
+ INDEX `application_payments_installmentId_idx`(`installmentId`),
340
+ INDEX `application_payments_payerId_idx`(`payerId`),
341
+ INDEX `application_payments_status_idx`(`status`),
342
+ INDEX `application_payments_reference_idx`(`reference`),
343
+ PRIMARY KEY (`id`)
344
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
345
+
346
+ -- CreateTable
347
+ CREATE TABLE `application_documents` (
348
+ `id` VARCHAR(191) NOT NULL,
349
+ `applicationId` VARCHAR(191) NOT NULL,
350
+ `phaseId` VARCHAR(191) NULL,
351
+ `stepId` VARCHAR(191) NULL,
352
+ `name` VARCHAR(191) NOT NULL,
353
+ `url` VARCHAR(191) NOT NULL,
354
+ `type` VARCHAR(191) NOT NULL,
355
+ `uploadedById` VARCHAR(191) NULL,
356
+ `status` ENUM('DRAFT', 'PENDING', 'PENDING_SIGNATURE', 'SENT', 'VIEWED', 'SIGNED', 'APPROVED', 'REJECTED', 'EXPIRED', 'CANCELLED') NOT NULL DEFAULT 'PENDING',
357
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
358
+ `updatedAt` DATETIME(3) NOT NULL,
359
+
360
+ INDEX `application_documents_applicationId_idx`(`applicationId`),
361
+ INDEX `application_documents_phaseId_idx`(`phaseId`),
362
+ INDEX `application_documents_stepId_idx`(`stepId`),
363
+ INDEX `application_documents_type_idx`(`type`),
364
+ INDEX `application_documents_status_idx`(`status`),
365
+ PRIMARY KEY (`id`)
366
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
367
+
368
+ -- CreateTable
369
+ CREATE TABLE `application_terminations` (
370
+ `id` VARCHAR(191) NOT NULL,
371
+ `applicationId` VARCHAR(191) NOT NULL,
372
+ `tenantId` VARCHAR(191) NOT NULL,
373
+ `requestNumber` VARCHAR(191) NOT NULL,
374
+ `initiatedBy` ENUM('BUYER', 'SELLER', 'ADMIN', 'SYSTEM') NOT NULL,
375
+ `initiatorId` VARCHAR(191) NULL,
376
+ `type` ENUM('BUYER_WITHDRAWAL', 'SELLER_WITHDRAWAL', 'MUTUAL_AGREEMENT', 'PAYMENT_DEFAULT', 'DOCUMENT_FAILURE', 'FRAUD', 'FORCE_MAJEURE', 'PROPERTY_UNAVAILABLE', 'REGULATORY', 'OTHER') NOT NULL,
377
+ `reason` TEXT NULL,
378
+ `supportingDocs` JSON NULL,
379
+ `status` ENUM('REQUESTED', 'PENDING_REVIEW', 'PENDING_REFUND', 'REFUND_IN_PROGRESS', 'REFUND_COMPLETED', 'COMPLETED', 'REJECTED', 'CANCELLED') NOT NULL DEFAULT 'REQUESTED',
380
+ `requiresApproval` BOOLEAN NOT NULL DEFAULT true,
381
+ `autoApproveEligible` BOOLEAN NOT NULL DEFAULT false,
382
+ `reviewedBy` VARCHAR(191) NULL,
383
+ `reviewedAt` DATETIME(3) NULL,
384
+ `reviewNotes` TEXT NULL,
385
+ `rejectionReason` TEXT NULL,
386
+ `applicationSnapshot` JSON NOT NULL,
387
+ `totalApplicationAmount` DOUBLE NOT NULL,
388
+ `totalPaidToDate` DOUBLE NOT NULL,
389
+ `outstandingBalance` DOUBLE NOT NULL,
390
+ `refundableAmount` DOUBLE NOT NULL DEFAULT 0,
391
+ `penaltyAmount` DOUBLE NOT NULL DEFAULT 0,
392
+ `forfeitedAmount` DOUBLE NOT NULL DEFAULT 0,
393
+ `adminFeeAmount` DOUBLE NOT NULL DEFAULT 0,
394
+ `netRefundAmount` DOUBLE NOT NULL DEFAULT 0,
395
+ `settlementNotes` TEXT NULL,
396
+ `refundStatus` ENUM('PENDING', 'APPROVED', 'REJECTED', 'PROCESSING', 'COMPLETED', 'FAILED', 'CANCELLED') NOT NULL DEFAULT 'PENDING',
397
+ `refundReference` VARCHAR(191) NULL,
398
+ `refundMethod` VARCHAR(191) NULL,
399
+ `refundAccountDetails` JSON NULL,
400
+ `refundInitiatedAt` DATETIME(3) NULL,
401
+ `refundCompletedAt` DATETIME(3) NULL,
402
+ `refundFailureReason` TEXT NULL,
403
+ `unitReleasedAt` DATETIME(3) NULL,
404
+ `unitReservedForId` VARCHAR(191) NULL,
405
+ `requestedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
406
+ `approvedAt` DATETIME(3) NULL,
407
+ `executedAt` DATETIME(3) NULL,
408
+ `completedAt` DATETIME(3) NULL,
409
+ `cancelledAt` DATETIME(3) NULL,
410
+ `idempotencyKey` VARCHAR(191) NULL,
411
+ `metadata` JSON NULL,
412
+ `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
413
+ `updatedAt` DATETIME(3) NOT NULL,
414
+
415
+ UNIQUE INDEX `application_terminations_requestNumber_key`(`requestNumber`),
416
+ UNIQUE INDEX `application_terminations_idempotencyKey_key`(`idempotencyKey`),
417
+ INDEX `application_terminations_applicationId_idx`(`applicationId`),
418
+ INDEX `application_terminations_tenantId_idx`(`tenantId`),
419
+ INDEX `application_terminations_status_idx`(`status`),
420
+ INDEX `application_terminations_type_idx`(`type`),
421
+ INDEX `application_terminations_initiatorId_idx`(`initiatorId`),
422
+ INDEX `application_terminations_requestedAt_idx`(`requestedAt`),
423
+ PRIMARY KEY (`id`)
424
+ ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
425
+
426
+ -- CreateIndex
427
+ CREATE INDEX `offer_letters_applicationId_idx` ON `offer_letters`(`applicationId`);
428
+
429
+ -- CreateIndex
430
+ CREATE INDEX `payment_method_change_requests_applicationId_idx` ON `payment_method_change_requests`(`applicationId`);
431
+
432
+ -- CreateIndex
433
+ CREATE INDEX `property_transfer_requests_sourceApplicationId_idx` ON `property_transfer_requests`(`sourceApplicationId`);
434
+
435
+ -- AddForeignKey
436
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
437
+
438
+ -- AddForeignKey
439
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_propertyUnitId_fkey` FOREIGN KEY (`propertyUnitId`) REFERENCES `property_units`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
440
+
441
+ -- AddForeignKey
442
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_buyerId_fkey` FOREIGN KEY (`buyerId`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
443
+
444
+ -- AddForeignKey
445
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_sellerId_fkey` FOREIGN KEY (`sellerId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
446
+
447
+ -- AddForeignKey
448
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_paymentMethodId_fkey` FOREIGN KEY (`paymentMethodId`) REFERENCES `property_payment_methods`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
449
+
450
+ -- AddForeignKey
451
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_currentPhaseId_fkey` FOREIGN KEY (`currentPhaseId`) REFERENCES `application_phases`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
452
+
453
+ -- AddForeignKey
454
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_transferredFromId_fkey` FOREIGN KEY (`transferredFromId`) REFERENCES `applications`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
455
+
456
+ -- AddForeignKey
457
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
458
+
459
+ -- AddForeignKey
460
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
461
+
462
+ -- AddForeignKey
463
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_requestedById_fkey` FOREIGN KEY (`requestedById`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
464
+
465
+ -- AddForeignKey
466
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_approvedById_fkey` FOREIGN KEY (`approvedById`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
467
+
468
+ -- AddForeignKey
469
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_processedById_fkey` FOREIGN KEY (`processedById`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
470
+
471
+ -- AddForeignKey
472
+ ALTER TABLE `application_phases` ADD CONSTRAINT `application_phases_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
473
+
474
+ -- AddForeignKey
475
+ ALTER TABLE `questionnaire_phases` ADD CONSTRAINT `questionnaire_phases_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
476
+
477
+ -- AddForeignKey
478
+ ALTER TABLE `documentation_phases` ADD CONSTRAINT `documentation_phases_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
479
+
480
+ -- AddForeignKey
481
+ ALTER TABLE `payment_phases` ADD CONSTRAINT `payment_phases_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
482
+
483
+ -- AddForeignKey
484
+ ALTER TABLE `application_events` ADD CONSTRAINT `application_events_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
485
+
486
+ -- AddForeignKey
487
+ ALTER TABLE `payment_installments` ADD CONSTRAINT `payment_installments_paymentPhaseId_fkey` FOREIGN KEY (`paymentPhaseId`) REFERENCES `payment_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
488
+
489
+ -- AddForeignKey
490
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
491
+
492
+ -- AddForeignKey
493
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
494
+
495
+ -- AddForeignKey
496
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_installmentId_fkey` FOREIGN KEY (`installmentId`) REFERENCES `payment_installments`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
497
+
498
+ -- AddForeignKey
499
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_payerId_fkey` FOREIGN KEY (`payerId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
500
+
501
+ -- AddForeignKey
502
+ ALTER TABLE `application_documents` ADD CONSTRAINT `application_documents_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
503
+
504
+ -- AddForeignKey
505
+ ALTER TABLE `application_documents` ADD CONSTRAINT `application_documents_uploadedById_fkey` FOREIGN KEY (`uploadedById`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
506
+
507
+ -- AddForeignKey
508
+ ALTER TABLE `offer_letters` ADD CONSTRAINT `offer_letters_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
509
+
510
+ -- AddForeignKey
511
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
512
+
513
+ -- AddForeignKey
514
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
515
+
516
+ -- AddForeignKey
517
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_initiatorId_fkey` FOREIGN KEY (`initiatorId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
518
+
519
+ -- AddForeignKey
520
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_reviewedBy_fkey` FOREIGN KEY (`reviewedBy`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
521
+
522
+ -- AddForeignKey
523
+ ALTER TABLE `payment_method_change_requests` ADD CONSTRAINT `payment_method_change_requests_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
524
+
525
+ -- AddForeignKey
526
+ ALTER TABLE `property_transfer_requests` ADD CONSTRAINT `property_transfer_requests_sourceApplicationId_fkey` FOREIGN KEY (`sourceApplicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
527
+
528
+ -- AddForeignKey
529
+ ALTER TABLE `property_transfer_requests` ADD CONSTRAINT `property_transfer_requests_targetApplicationId_fkey` FOREIGN KEY (`targetApplicationId`) REFERENCES `applications`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;