diff --git a/src/components/cases/collections-tab.tsx b/src/components/cases/collections-tab.tsx index a0298cb..9cdcb84 100644 --- a/src/components/cases/collections-tab.tsx +++ b/src/components/cases/collections-tab.tsx @@ -140,6 +140,7 @@ export function CaseCollectionsTab({ const [collections, setCollections] = useState([]); const [homeowners, setHomeowners] = useState([]); + const [contactHomeowners, setContactHomeowners] = useState([]); const [balances, setBalances] = useState>({}); const [loading, setLoading] = useState(true); const [activeId, setActiveId] = useState(null); @@ -151,7 +152,7 @@ export function CaseCollectionsTab({ const load = async () => { setLoading(true); - const [{ data: cols }, { data: hos }] = await Promise.all([ + const [{ data: cols }, { data: hos }, { data: ccs }] = await Promise.all([ supabase .from("collections") .select("*, homeowner:homeowners(*)") @@ -162,10 +163,23 @@ export function CaseCollectionsTab({ .select("*") .eq("client_id", clientId) .order("last_name"), + supabase + .from("case_contacts") + .select("role, contact:contacts(*)") + .eq("case_id", caseId), ]); const list = cols ?? []; setCollections(list); setHomeowners(hos ?? []); + // Filter: case_contacts.role = 'homeowner' OR contact.contact_type = 'homeowner' + const hoContacts = (ccs ?? []) + .filter((cc: any) => { + const roleMatch = (cc.role || "").toLowerCase() === "homeowner"; + const typeMatch = (cc.contact?.contact_type || "").toLowerCase() === "homeowner"; + return cc.contact && (roleMatch || typeMatch); + }) + .map((cc: any) => ({ ...cc.contact, _link_role: cc.role })); + setContactHomeowners(hoContacts); // pull balances per collection if (list.length) {