diff --git a/ondeck/src/app/(dashboard)/manager/setup/[clientId]/page.tsx b/ondeck/src/app/(dashboard)/manager/setup/[clientId]/page.tsx index e92343f..d18cd33 100644 --- a/ondeck/src/app/(dashboard)/manager/setup/[clientId]/page.tsx +++ b/ondeck/src/app/(dashboard)/manager/setup/[clientId]/page.tsx @@ -30,6 +30,7 @@ export default async function SetupWizardPage({ notes: true, claimsAdvocateId: true, setupCompletedAt: true, + renewalDate: true, policies: { where: { expirationDate: { gte: new Date() } }, select: { @@ -91,6 +92,7 @@ export default async function SetupWizardPage({ clientName={client.name} clientNotes={client.notes} claimsAdvocateId={client.claimsAdvocateId} + clientRenewalDate={client.renewalDate?.toISOString() ?? null} setupCompletedAt={client.setupCompletedAt?.toISOString() ?? null} policies={policiesData} existingGroups={groupsData} diff --git a/ondeck/src/components/clients/policy-group-manager.tsx b/ondeck/src/components/clients/policy-group-manager.tsx index 40c2adf..2d2eceb 100644 --- a/ondeck/src/components/clients/policy-group-manager.tsx +++ b/ondeck/src/components/clients/policy-group-manager.tsx @@ -134,9 +134,16 @@ export function PolicyGroupManager({ const handleOpenEdit = (group: PolicyGroup) => { setEditingGroup(group) + const rd: any = group.renewalDate + const dateStr = + typeof rd === 'string' + ? rd.split('T')[0] + : rd instanceof Date + ? rd.toISOString().split('T')[0] + : new Date(rd).toISOString().split('T')[0] setFormData({ name: group.name, - renewalDate: group.renewalDate.split('T')[0], + renewalDate: dateStr, notes: group.notes || '', policyIds: group.policies.map((p) => p.id), }) diff --git a/ondeck/src/components/renewal-groups/setup-wizard.tsx b/ondeck/src/components/renewal-groups/setup-wizard.tsx index 44999c2..bcb06be 100644 --- a/ondeck/src/components/renewal-groups/setup-wizard.tsx +++ b/ondeck/src/components/renewal-groups/setup-wizard.tsx @@ -64,6 +64,7 @@ interface SetupWizardProps { clientName: string clientNotes: string | null claimsAdvocateId: string | null + clientRenewalDate?: string | null setupCompletedAt: string | null policies: WizardPolicy[] existingGroups: ExistingGroup[] @@ -143,6 +144,7 @@ export function SetupWizard({ clientName, clientNotes: initialClientNotes, claimsAdvocateId: initialAdvocateId, + clientRenewalDate, setupCompletedAt, policies, existingGroups, @@ -159,6 +161,16 @@ export function SetupWizard({ const buildInitialGroups = useCallback((): GroupState[] => { if (existingGroups.length > 0) { + // Determine which group matches the persisted starred renewal date + const clientRdStr = clientRenewalDate + ? new Date(clientRenewalDate).toISOString().split('T')[0] + : null + const matchIndex = clientRdStr + ? existingGroups.findIndex( + (eg) => new Date(eg.renewalDate).toISOString().split('T')[0] === clientRdStr + ) + : -1 + const defaultIndex = matchIndex >= 0 ? matchIndex : 0 return existingGroups.map((eg, i) => { const gid = newGroupId() return { @@ -173,12 +185,12 @@ export function SetupWizard({ rule: 'nearest-to-year-start' as DateRule, renewalDate: new Date(eg.renewalDate).toISOString().split('T')[0], notes: eg.notes || '', - isDefault: i === 0, + isDefault: i === defaultIndex, } }) } return runEngine(policies, defaultWindowDays, defaultRule) - }, [existingGroups, policies, defaultWindowDays, defaultRule]) + }, [existingGroups, policies, defaultWindowDays, defaultRule, clientRenewalDate]) const [groups, setGroups] = useState(() => buildInitialGroups()) const [windowDays, setWindowDays] = useState(defaultWindowDays)