Fix setup wizard starred group persistence + pencil edit
- SetupWizard: honor client.renewalDate when determining which group is starred on reopen - PolicyGroupManager: defensively handle Date or string in handleOpenEdit to unblock pencil
This commit is contained in:
parent
b44bddfc6a
commit
e6485b35dc
3 changed files with 24 additions and 3 deletions
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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<GroupState[]>(() => buildInitialGroups())
|
||||
const [windowDays, setWindowDays] = useState(defaultWindowDays)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue