diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTable.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTable.tsx index 348a5a11..d1e07c96 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTable.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTable.tsx @@ -64,6 +64,10 @@ const COLUMN_LABELS: Record = { epcPrn: "EPC Certificate Number", batch: "Group", batchDescription: "Group Description", + coordinationComments: "Coordination Comments", + dampAndMouldGrowth: "Damp and Mould Growth", + dampMouldAndRepairComments: "Damp, Mould and Repair Comments", + domnaSurveyRequested: "Domna Survey Requested" }; type DocFilter = "all" | "has_docs" | "incomplete" | "none"; @@ -106,6 +110,10 @@ export default function PropertyTable({ data, onOpenDrawer, portfolioId = "", sh epcPrn: false, batch: false, batchDescription: false, + coordinationComments: false, + dampAndMouldGrowth: false, + dampMouldAndRepairComments: false, + domnaSurveyRequested: false, }); // Pre-filter by stage, doc status, and removal status before TanStack gets it diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTableColumns.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTableColumns.tsx index b889d636..aa0157a2 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTableColumns.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/PropertyTableColumns.tsx @@ -268,12 +268,12 @@ export function createPropertyTableColumns( // ── EPC SAP score (potential) ───────────────────────────────────────── { - accessorKey: "epcSapScorePotential", + accessorKey: "potentialPostSapScoreDropdown", id: "epcSapScorePotential", header: ({ column }) => , cell: ({ row }) => ( - {row.original.epcSapScorePotential ?? } + {row.original.potentialPostSapScoreDropdown ?? } ), }, @@ -371,6 +371,74 @@ export function createPropertyTableColumns( ), }, + // ── Coordination comments ──────────────────────────────────────────── + { + accessorKey: "coordinationComments", + id: "coordinationComments", + header: () => ( + + Coordination Comments + + ), + cell: ({ row }) => ( + + {row.original.coordinationComments ?? } + + ), + }, + + // ── Damp and mould growth ──────────────────────────────────────────── + { + id: "dampAndMouldGrowth", + accessorFn: (row) => row.dampMouldFlag, + header: () => ( + + Damp & Mould Growth + + ), + cell: ({ row }) => ( + + {row.original.dampMouldFlag ?? } + + ), + }, + + // ── Damp, mould and repair comments ───────────────────────────────── + { + accessorKey: "dampMouldAndRepairComments", + id: "dampMouldAndRepairComments", + header: () => ( + + Damp, Mould & Repair Comments + + ), + cell: ({ row }) => ( + + {row.original.dampMouldAndRepairComments ?? } + + ), + }, + + // ── Domna survey required ──────────────────────────────────────────── + { + id: "domnaSurveyRequested", + accessorFn: (row) => row.domnasurveyRequired, + header: () => ( + + Domna Survey Required + + ), + cell: ({ row }) => { + const val = row.original.domnasurveyRequired; + if (val === null || val === undefined) return ; + return ( + + {val ? "Yes" : "No"} + + ); + }, + }, + ]; if (showDocuments) { diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx index 95c72fa5..29568024 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/DealPage.tsx @@ -93,7 +93,7 @@ export default function DealPage({ }); const parsedPreSap = parsePreSap(deal.preSapScore); - const epcPotential = sapToEpc(deal.epcSapScorePotential != null ? Number(deal.epcSapScorePotential) : null); + const epcPotential = sapToEpc(deal.potentialPostSapScoreDropdown != null ? Number(deal.potentialPostSapScoreDropdown) : null); const technicalApprovedMeasures = parseMeasures( deal.technicalApprovedMeasuresForInstall ?? null, ); diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/page.test.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/page.test.ts index c8bf7a11..d154a872 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/page.test.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/[dealId]/page.test.ts @@ -187,7 +187,7 @@ const mockDealRow = { eiScore: null, eiScorePotential: null, epcSapScore: null, - epcSapScorePotential: null, + potentialPostSapScoreDropdown: null, epcPrn: null, surveyType: null, measuresForPibiOrdered: null, diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/dealQuery.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/dealQuery.ts index 0532ab36..68ce00ac 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/dealQuery.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/dealQuery.ts @@ -36,6 +36,8 @@ export function mapDbRowToHubspotDeal(row: DealRow): HubspotDeal { sharepointLink: d.sharepointLink, dampMouldFlag: d.dampmouldGrowth, dampMouldAndRepairComments: d.dampMouldAndRepairComments, + coordinationComments: d.coordination_comments, + domnasurveyRequired: d.domnasurveyRequired, preSapScore: d.preSap, coordinator: row.coordinator, ioeV1Date: d.mtpCompletionDate, @@ -58,7 +60,7 @@ export function mapDbRowToHubspotDeal(row: DealRow): HubspotDeal { eiScore: d.eiScore, eiScorePotential: d.eiScorePotential, epcSapScore: d.epcSapScore, - epcSapScorePotential: d.epcSapScorePotential, + potentialPostSapScoreDropdown: d.potentialPostSapScoreDropdown, epcPrn: d.epcPrn, surveyType: d.surveyType, measuresForPibiOrdered: d.measuresForPibiOrdered, diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts index 029e4113..32d1671e 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/docStatus.test.ts @@ -47,7 +47,7 @@ function makeDeal(overrides: Partial = {}): HubspotDeal { eiScore: null, eiScorePotential: null, epcSapScore: null, - epcSapScorePotential: null, + potentialPostSapScoreDropdown: null, epcPrn: null, surveyType: null, measuresForPibiOrdered: null, @@ -60,6 +60,8 @@ function makeDeal(overrides: Partial = {}): HubspotDeal { domnaSurveyDate: null, batch: null, batchDescription: null, + coordinationComments: null, + domnasurveyRequired: null, createdAt: new Date(), updatedAt: new Date(), ...overrides, diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/measureFilters.test.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/measureFilters.test.ts index 9166e8b5..6a30d703 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/measureFilters.test.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/measureFilters.test.ts @@ -46,7 +46,7 @@ function makeDeal(overrides: Partial = {}): ClassifiedDeal { eiScore: null, eiScorePotential: null, epcSapScore: null, - epcSapScorePotential: null, + potentialPostSapScoreDropdown: null, epcPrn: null, surveyType: null, measuresForPibiOrdered: null, @@ -59,6 +59,8 @@ function makeDeal(overrides: Partial = {}): ClassifiedDeal { domnaSurveyDate: null, batch: null, batchDescription: null, + coordinationComments: null, + domnasurveyRequired: null, createdAt: new Date(), updatedAt: new Date(), displayStage: "Coordination in Progress", diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.test.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.test.ts index da315e1a..91501665 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.test.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.test.ts @@ -46,7 +46,7 @@ function makeDeal(overrides: Partial = {}): HubspotDeal { eiScore: null, eiScorePotential: null, epcSapScore: null, - epcSapScorePotential: null, + potentialPostSapScoreDropdown: null, epcPrn: null, surveyType: null, measuresForPibiOrdered: null, @@ -59,6 +59,8 @@ function makeDeal(overrides: Partial = {}): HubspotDeal { domnaSurveyDate: null, batch: null, batchDescription: null, + coordinationComments: null, + domnasurveyRequired: null, createdAt: new Date(), updatedAt: new Date(), ...overrides, diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.ts index 37de6463..1b29caab 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/propertyCsv.ts @@ -18,7 +18,7 @@ export const PROPERTY_CSV_FIELDS: PropertyCsvField[] = [ { key: "eiScore", label: "EI Score" }, { key: "eiScorePotential", label: "EI Score (Potential)" }, { key: "epcSapScore", label: "EPC SAP Score" }, - { key: "epcSapScorePotential", label: "EPC SAP (Potential)" }, + { key: "potentialPostSapScoreDropdown", label: "EPC SAP (Potential)" }, { key: "lodgementStatus", label: "Lodgement Status" }, { key: "surveyedDate", label: "Surveyed Date" }, { key: "designDate", label: "Design Date" }, @@ -26,6 +26,10 @@ export const PROPERTY_CSV_FIELDS: PropertyCsvField[] = [ { key: "epcPrn", label: "EPC Certificate Number" }, { key: "batch", label: "Group" }, { key: "batchDescription", label: "Group Description" }, + { key: "coordinationComments", label: "Coordination Comments" }, + { key: "dampMouldFlag", label: "Damp and Mould Growth" }, + { key: "dampMouldAndRepairComments", label: "Damp Mould and Repair Comments" }, + { key: "domnasurveyRequired", label: "Domna Survey Required" }, ]; export function escapeCsvCell(value: unknown): string { diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/transforms.test.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/transforms.test.ts index a60db64e..ad7bf045 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/transforms.test.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/transforms.test.ts @@ -53,7 +53,7 @@ function makeDeal(overrides: Partial = {}): HubspotDeal { eiScore: null, eiScorePotential: null, epcSapScore: null, - epcSapScorePotential: null, + potentialPostSapScoreDropdown: null, epcPrn: null, surveyType: null, measuresForPibiOrdered: null, @@ -66,6 +66,8 @@ function makeDeal(overrides: Partial = {}): HubspotDeal { domnaSurveyDate: null, batch: null, batchDescription: null, + coordinationComments: null, + domnasurveyRequired: null, createdAt: new Date(), updatedAt: new Date(), ...overrides, diff --git a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/types.ts b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/types.ts index f53d71aa..6f2ab002 100644 --- a/src/app/portfolio/[slug]/(portfolio)/your-projects/live/types.ts +++ b/src/app/portfolio/[slug]/(portfolio)/your-projects/live/types.ts @@ -30,6 +30,8 @@ export type HubspotDeal = { sharepointLink: string | null; dampMouldFlag: string | null; // coordinator-stage damp/mould flag dampMouldAndRepairComments: string | null; // coordinator damp/mould comments + coordinationComments: string | null; + domnasurveyRequired: boolean | null; preSapScore: string | null; // kept as text (HubSpot returns strings) coordinator: string | null; ioeV1Date: Date | null; @@ -52,7 +54,7 @@ export type HubspotDeal = { eiScore: string | null; eiScorePotential: string | null; epcSapScore: string | null; - epcSapScorePotential: string | null; + potentialPostSapScoreDropdown: string | null; epcPrn: string | null; // ── New per-deal workflow fields (issue #249 slice) ────────────────────