backfill from projects

This commit is contained in:
2026-03-18 11:54:22 -05:00
parent c18de77640
commit f12744f05d
15 changed files with 281 additions and 9 deletions

View File

@@ -0,0 +1,38 @@
ALTER TABLE "PurchaseOrder" ADD COLUMN "projectId" TEXT REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE;
CREATE INDEX "PurchaseOrder_projectId_issueDate_idx" ON "PurchaseOrder"("projectId", "issueDate");
UPDATE "WorkOrder"
SET "projectId" = (
SELECT "Project"."id"
FROM "Project"
WHERE "Project"."salesOrderId" = "WorkOrder"."salesOrderId"
ORDER BY "Project"."createdAt" ASC
LIMIT 1
)
WHERE "projectId" IS NULL
AND "salesOrderId" IS NOT NULL
AND EXISTS (
SELECT 1
FROM "Project"
WHERE "Project"."salesOrderId" = "WorkOrder"."salesOrderId"
);
UPDATE "PurchaseOrder"
SET "projectId" = (
SELECT "Project"."id"
FROM "PurchaseOrderLine"
INNER JOIN "Project" ON "Project"."salesOrderId" = "PurchaseOrderLine"."salesOrderId"
WHERE "PurchaseOrderLine"."purchaseOrderId" = "PurchaseOrder"."id"
AND "PurchaseOrderLine"."salesOrderId" IS NOT NULL
ORDER BY "Project"."createdAt" ASC
LIMIT 1
)
WHERE "projectId" IS NULL
AND EXISTS (
SELECT 1
FROM "PurchaseOrderLine"
INNER JOIN "Project" ON "Project"."salesOrderId" = "PurchaseOrderLine"."salesOrderId"
WHERE "PurchaseOrderLine"."purchaseOrderId" = "PurchaseOrder"."id"
AND "PurchaseOrderLine"."salesOrderId" IS NOT NULL
);

View File

@@ -618,6 +618,7 @@ model Project {
shipment Shipment? @relation(fields: [shipmentId], references: [id], onDelete: SetNull)
owner User? @relation("ProjectOwner", fields: [ownerId], references: [id], onDelete: SetNull)
workOrders WorkOrder[]
purchaseOrders PurchaseOrder[]
milestones ProjectMilestone[]
@@index([customerId, createdAt])
@@ -864,6 +865,7 @@ model PurchaseOrder {
id String @id @default(cuid())
documentNumber String @unique
vendorId String
projectId String?
status String
issueDate DateTime
taxPercent Float @default(0)
@@ -872,10 +874,13 @@ model PurchaseOrder {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
vendor Vendor @relation(fields: [vendorId], references: [id], onDelete: Restrict)
project Project? @relation(fields: [projectId], references: [id], onDelete: SetNull)
lines PurchaseOrderLine[]
receipts PurchaseReceipt[]
revisions PurchaseOrderRevision[]
capexEntries CapexEntry[]
@@index([projectId, issueDate])
}
model PurchaseOrderLine {