sales documents
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "SalesQuote" ADD COLUMN "approvedAt" DATETIME;
|
||||
ALTER TABLE "SalesQuote" ADD COLUMN "approvedById" TEXT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "SalesOrder" ADD COLUMN "approvedAt" DATETIME;
|
||||
ALTER TABLE "SalesOrder" ADD COLUMN "approvedById" TEXT;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "SalesQuoteRevision" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"quoteId" TEXT NOT NULL,
|
||||
"revisionNumber" INTEGER NOT NULL,
|
||||
"reason" TEXT NOT NULL,
|
||||
"snapshot" TEXT NOT NULL,
|
||||
"createdById" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "SalesQuoteRevision_quoteId_fkey" FOREIGN KEY ("quoteId") REFERENCES "SalesQuote" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "SalesQuoteRevision_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "SalesOrderRevision" (
|
||||
"id" TEXT NOT NULL PRIMARY KEY,
|
||||
"orderId" TEXT NOT NULL,
|
||||
"revisionNumber" INTEGER NOT NULL,
|
||||
"reason" TEXT NOT NULL,
|
||||
"snapshot" TEXT NOT NULL,
|
||||
"createdById" TEXT,
|
||||
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" DATETIME NOT NULL,
|
||||
CONSTRAINT "SalesOrderRevision_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "SalesOrder" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "SalesOrderRevision_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "SalesQuote_approvedById_idx" ON "SalesQuote"("approvedById");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "SalesOrder_approvedById_idx" ON "SalesOrder"("approvedById");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "SalesQuoteRevision_quoteId_revisionNumber_key" ON "SalesQuoteRevision"("quoteId", "revisionNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "SalesQuoteRevision_quoteId_createdAt_idx" ON "SalesQuoteRevision"("quoteId", "createdAt");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "SalesOrderRevision_orderId_revisionNumber_key" ON "SalesOrderRevision"("orderId", "revisionNumber");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "SalesOrderRevision_orderId_createdAt_idx" ON "SalesOrderRevision"("orderId", "createdAt");
|
||||
@@ -24,6 +24,10 @@ model User {
|
||||
ownedProjects Project[] @relation("ProjectOwner")
|
||||
workOrderMaterialIssues WorkOrderMaterialIssue[]
|
||||
workOrderCompletions WorkOrderCompletion[]
|
||||
approvedSalesQuotes SalesQuote[] @relation("SalesQuoteApprovedBy")
|
||||
approvedSalesOrders SalesOrder[] @relation("SalesOrderApprovedBy")
|
||||
salesQuoteRevisionsCreated SalesQuoteRevision[] @relation("SalesQuoteRevisionCreatedBy")
|
||||
salesOrderRevisionsCreated SalesOrderRevision[] @relation("SalesOrderRevisionCreatedBy")
|
||||
}
|
||||
|
||||
model Role {
|
||||
@@ -305,6 +309,8 @@ model SalesQuote {
|
||||
status String
|
||||
issueDate DateTime
|
||||
expiresAt DateTime?
|
||||
approvedAt DateTime?
|
||||
approvedById String?
|
||||
discountPercent Float @default(0)
|
||||
taxPercent Float @default(0)
|
||||
freightAmount Float @default(0)
|
||||
@@ -312,8 +318,10 @@ model SalesQuote {
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
customer Customer @relation(fields: [customerId], references: [id], onDelete: Restrict)
|
||||
approvedBy User? @relation("SalesQuoteApprovedBy", fields: [approvedById], references: [id], onDelete: SetNull)
|
||||
lines SalesQuoteLine[]
|
||||
projects Project[]
|
||||
revisions SalesQuoteRevision[]
|
||||
}
|
||||
|
||||
model SalesQuoteLine {
|
||||
@@ -339,6 +347,8 @@ model SalesOrder {
|
||||
customerId String
|
||||
status String
|
||||
issueDate DateTime
|
||||
approvedAt DateTime?
|
||||
approvedById String?
|
||||
discountPercent Float @default(0)
|
||||
taxPercent Float @default(0)
|
||||
freightAmount Float @default(0)
|
||||
@@ -346,9 +356,11 @@ model SalesOrder {
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
customer Customer @relation(fields: [customerId], references: [id], onDelete: Restrict)
|
||||
approvedBy User? @relation("SalesOrderApprovedBy", fields: [approvedById], references: [id], onDelete: SetNull)
|
||||
lines SalesOrderLine[]
|
||||
shipments Shipment[]
|
||||
projects Project[]
|
||||
revisions SalesOrderRevision[]
|
||||
}
|
||||
|
||||
model SalesOrderLine {
|
||||
@@ -368,6 +380,38 @@ model SalesOrderLine {
|
||||
@@index([orderId, position])
|
||||
}
|
||||
|
||||
model SalesQuoteRevision {
|
||||
id String @id @default(cuid())
|
||||
quoteId String
|
||||
revisionNumber Int
|
||||
reason String
|
||||
snapshot String
|
||||
createdById String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
quote SalesQuote @relation(fields: [quoteId], references: [id], onDelete: Cascade)
|
||||
createdBy User? @relation("SalesQuoteRevisionCreatedBy", fields: [createdById], references: [id], onDelete: SetNull)
|
||||
|
||||
@@unique([quoteId, revisionNumber])
|
||||
@@index([quoteId, createdAt])
|
||||
}
|
||||
|
||||
model SalesOrderRevision {
|
||||
id String @id @default(cuid())
|
||||
orderId String
|
||||
revisionNumber Int
|
||||
reason String
|
||||
snapshot String
|
||||
createdById String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
order SalesOrder @relation(fields: [orderId], references: [id], onDelete: Cascade)
|
||||
createdBy User? @relation("SalesOrderRevisionCreatedBy", fields: [createdById], references: [id], onDelete: SetNull)
|
||||
|
||||
@@unique([orderId, revisionNumber])
|
||||
@@index([orderId, createdAt])
|
||||
}
|
||||
|
||||
model Shipment {
|
||||
id String @id @default(cuid())
|
||||
shipmentNumber String @unique
|
||||
|
||||
Reference in New Issue
Block a user