add subscription upgrade plan
Build & Push / Pipeline Tests (push) Failing after 2m0s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Successful in 53s
Test / API Unit Tests (push) Successful in 1m8s
Test / Homepage Unit Tests (push) Successful in 48s
Test / Carplace Unit Tests (push) Successful in 42s
Test / Admin Unit Tests (push) Successful in 41s
Test / Dashboard Unit Tests (push) Successful in 43s
Test / API Integration Tests (push) Failing after 1m7s
Build & Push / Pipeline Tests (push) Failing after 2m0s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Successful in 53s
Test / API Unit Tests (push) Successful in 1m8s
Test / Homepage Unit Tests (push) Successful in 48s
Test / Carplace Unit Tests (push) Successful in 42s
Test / Admin Unit Tests (push) Successful in 41s
Test / Dashboard Unit Tests (push) Successful in 43s
Test / API Integration Tests (push) Failing after 1m7s
This commit is contained in:
@@ -45,6 +45,28 @@ enum SubscriptionStatus {
|
||||
UNPAID
|
||||
}
|
||||
|
||||
enum SubscriptionUpgradeRequestType {
|
||||
IMMEDIATE_PRORATED
|
||||
AT_RENEWAL
|
||||
TERM_RESET
|
||||
}
|
||||
|
||||
enum SubscriptionUpgradeRequestStatus {
|
||||
DRAFT
|
||||
QUOTED
|
||||
PAYMENT_PENDING
|
||||
PAYMENT_REVIEW
|
||||
CORRECTION_REQUIRED
|
||||
APPROVED
|
||||
ACTIVATED
|
||||
SCHEDULED
|
||||
REJECTED
|
||||
EXPIRED
|
||||
CANCELLED
|
||||
ACTIVATION_FAILED
|
||||
SUPERSEDED
|
||||
}
|
||||
|
||||
enum InvoiceStatus {
|
||||
PENDING
|
||||
PAID
|
||||
@@ -618,6 +640,8 @@ model Company {
|
||||
subscriptionPaymentRef String?
|
||||
|
||||
subscription Subscription?
|
||||
subscriptionUpgradeRequests SubscriptionUpgradeRequest[]
|
||||
subscriptionPlanHistory SubscriptionPlanHistory[]
|
||||
billingAccounts BillingAccount[]
|
||||
billingInvoices BillingInvoice[]
|
||||
brand BrandSettings?
|
||||
@@ -692,6 +716,8 @@ model Subscription {
|
||||
billingInvoices BillingInvoice[]
|
||||
collectionsCases CollectionsCase[]
|
||||
events SubscriptionEvent[]
|
||||
upgradeRequests SubscriptionUpgradeRequest[]
|
||||
planHistory SubscriptionPlanHistory[]
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -853,6 +879,7 @@ model BillingInvoice {
|
||||
subscriptionId String?
|
||||
subscription Subscription? @relation(fields: [subscriptionId], references: [id])
|
||||
legacySubscriptionInvoice SubscriptionInvoice?
|
||||
subscriptionUpgradeRequest SubscriptionUpgradeRequest?
|
||||
invoiceNumber String? @unique
|
||||
invoiceSequence Int? @unique
|
||||
invoiceType BillingInvoiceType
|
||||
@@ -907,6 +934,122 @@ model BillingInvoice {
|
||||
@@map("billing_invoices")
|
||||
}
|
||||
|
||||
model SubscriptionUpgradeRequest {
|
||||
id String @id @default(cuid())
|
||||
companyId String
|
||||
company Company @relation(fields: [companyId], references: [id], onDelete: Cascade)
|
||||
subscriptionId String
|
||||
subscription Subscription @relation(fields: [subscriptionId], references: [id], onDelete: Cascade)
|
||||
requestType SubscriptionUpgradeRequestType
|
||||
fromPlan Plan
|
||||
fromBillingPeriod BillingPeriod
|
||||
toPlan Plan
|
||||
toBillingPeriod BillingPeriod
|
||||
status SubscriptionUpgradeRequestStatus @default(DRAFT)
|
||||
requestedByEmployeeId String
|
||||
requestedByEmployee Employee @relation("SubscriptionUpgradeRequester", fields: [requestedByEmployeeId], references: [id])
|
||||
requestedAt DateTime @default(now())
|
||||
effectiveAt DateTime?
|
||||
scheduledFor DateTime?
|
||||
quoteId String? @unique
|
||||
quote SubscriptionUpgradeQuote? @relation("ActiveSubscriptionUpgradeQuote", fields: [quoteId], references: [id])
|
||||
quotes SubscriptionUpgradeQuote[] @relation("SubscriptionUpgradeQuotes")
|
||||
companyLanguageSnapshot String @default("en")
|
||||
billingTimezoneSnapshot String @default("Africa/Casablanca")
|
||||
acceptedTermsVersion String?
|
||||
acceptedAt DateTime?
|
||||
cancelledAt DateTime?
|
||||
cancelledByEmployeeId String?
|
||||
cancellationReason String?
|
||||
expiresAt DateTime?
|
||||
billingInvoiceId String? @unique
|
||||
billingInvoice BillingInvoice? @relation(fields: [billingInvoiceId], references: [id])
|
||||
approvedPaymentAttemptId String?
|
||||
approvedByAdminId String?
|
||||
approvedByAdmin AdminUser? @relation("SubscriptionUpgradeApprover", fields: [approvedByAdminId], references: [id], onDelete: SetNull)
|
||||
approvedAt DateTime?
|
||||
activationKey String? @unique
|
||||
activatedAt DateTime?
|
||||
rejectionReason String?
|
||||
correctionReason String?
|
||||
version Int @default(1)
|
||||
metadata Json @default("{}")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([companyId, status])
|
||||
@@index([subscriptionId, status])
|
||||
@@index([expiresAt])
|
||||
@@index([scheduledFor])
|
||||
@@map("subscription_upgrade_requests")
|
||||
}
|
||||
|
||||
model SubscriptionUpgradeQuote {
|
||||
id String @id @default(cuid())
|
||||
upgradeRequestId String
|
||||
upgradeRequest SubscriptionUpgradeRequest @relation("SubscriptionUpgradeQuotes", fields: [upgradeRequestId], references: [id], onDelete: Cascade)
|
||||
activeForUpgradeRequest SubscriptionUpgradeRequest? @relation("ActiveSubscriptionUpgradeQuote")
|
||||
currency String @default("MAD")
|
||||
currentEligibleNetTermPrice Int
|
||||
targetNetTermPrice Int
|
||||
termStart DateTime
|
||||
renewalDate DateTime
|
||||
pricingEffectiveAt DateTime
|
||||
termDays Int
|
||||
remainingDays Int
|
||||
prorationNumerator Int
|
||||
prorationDenominator Int
|
||||
currentCredit Int
|
||||
targetRemainingValue Int
|
||||
discountAmount Int @default(0)
|
||||
taxAmount Int @default(0)
|
||||
feeAmount Int @default(0)
|
||||
subtotalAmount Int
|
||||
totalAmount Int
|
||||
calculationVersion String
|
||||
inputSnapshot Json @default("{}")
|
||||
integrityHash String
|
||||
expiresAt DateTime
|
||||
expiredAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@index([upgradeRequestId])
|
||||
@@index([expiresAt])
|
||||
@@map("subscription_upgrade_quotes")
|
||||
}
|
||||
|
||||
model SubscriptionPlanHistory {
|
||||
id String @id @default(cuid())
|
||||
subscriptionId String
|
||||
subscription Subscription @relation(fields: [subscriptionId], references: [id], onDelete: Cascade)
|
||||
companyId String
|
||||
company Company @relation(fields: [companyId], references: [id], onDelete: Cascade)
|
||||
previousPlan Plan
|
||||
previousBillingPeriod BillingPeriod
|
||||
newPlan Plan
|
||||
newBillingPeriod BillingPeriod
|
||||
changeType String
|
||||
sourceUpgradeRequestId String?
|
||||
approvedPaymentAttemptId String?
|
||||
effectiveAt DateTime
|
||||
previousTermStart DateTime?
|
||||
previousTermEnd DateTime?
|
||||
newTermStart DateTime?
|
||||
newTermEnd DateTime?
|
||||
actorType String
|
||||
actorId String?
|
||||
approvingAdminId String?
|
||||
entitlementSnapshot Json @default("{}")
|
||||
auditCorrelationId String
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@unique([sourceUpgradeRequestId])
|
||||
@@index([subscriptionId])
|
||||
@@index([companyId])
|
||||
@@index([changeType])
|
||||
@@map("subscription_plan_history")
|
||||
}
|
||||
|
||||
model BillingInvoiceLineItem {
|
||||
id String @id @default(cuid())
|
||||
invoiceId String
|
||||
@@ -1365,6 +1508,7 @@ model Employee {
|
||||
billingContacts BillingContact[]
|
||||
manualPaymentSubmissions ManualPaymentSubmission[]
|
||||
manualPaymentDocuments ManualPaymentDocument[]
|
||||
subscriptionUpgradeRequests SubscriptionUpgradeRequest[] @relation("SubscriptionUpgradeRequester")
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -2290,6 +2434,7 @@ model AdminUser {
|
||||
ownedBillingAccounts BillingAccount[] @relation("BillingAccountCollectionsOwner")
|
||||
confirmedManualPayments BillingPaymentAttempt[] @relation("ManualPaymentConfirmingAdmin")
|
||||
reviewedManualSubmissions ManualPaymentSubmission[] @relation("ManualPaymentReviewingAdmin")
|
||||
approvedSubscriptionUpgrades SubscriptionUpgradeRequest[] @relation("SubscriptionUpgradeApprover")
|
||||
ownedCollectionsCases CollectionsCase[] @relation("CollectionsCaseOwner")
|
||||
assignedCollectionsTasks CollectionsCallTask[] @relation("CollectionsTaskAssignee")
|
||||
completedCollectionsTasks CollectionsCallTask[] @relation("CollectionsTaskCompleter")
|
||||
|
||||
Reference in New Issue
Block a user