feat: show attachment filenames in claims and payments tables
This commit is contained in:
@@ -98,6 +98,7 @@ export const paymentsStorage: IStorage = {
|
|||||||
claim: {
|
claim: {
|
||||||
include: {
|
include: {
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
|
claimFiles: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
@@ -132,6 +133,7 @@ export const paymentsStorage: IStorage = {
|
|||||||
claim: {
|
claim: {
|
||||||
include: {
|
include: {
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
|
claimFiles: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
@@ -164,6 +166,7 @@ export const paymentsStorage: IStorage = {
|
|||||||
claim: {
|
claim: {
|
||||||
include: {
|
include: {
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
|
claimFiles: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
@@ -199,6 +202,7 @@ export const paymentsStorage: IStorage = {
|
|||||||
claim: {
|
claim: {
|
||||||
include: {
|
include: {
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
|
claimFiles: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
@@ -236,6 +240,7 @@ export const paymentsStorage: IStorage = {
|
|||||||
claim: {
|
claim: {
|
||||||
include: {
|
include: {
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
|
claimFiles: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
serviceLines: true,
|
serviceLines: true,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
Delete,
|
Delete,
|
||||||
Edit,
|
Edit,
|
||||||
Eye,
|
Eye,
|
||||||
|
Paperclip,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { apiRequest, queryClient } from "@/lib/queryClient";
|
import { apiRequest, queryClient } from "@/lib/queryClient";
|
||||||
import { useToast } from "@/hooks/use-toast";
|
import { useToast } from "@/hooks/use-toast";
|
||||||
@@ -313,6 +314,7 @@ export default function ClaimsRecentTable({
|
|||||||
<TableHead>Member ID</TableHead>
|
<TableHead>Member ID</TableHead>
|
||||||
<TableHead>Total Billed</TableHead>
|
<TableHead>Total Billed</TableHead>
|
||||||
<TableHead>Status</TableHead>
|
<TableHead>Status</TableHead>
|
||||||
|
<TableHead>Attachments</TableHead>
|
||||||
<TableHead className="text-right">Actions</TableHead>
|
<TableHead className="text-right">Actions</TableHead>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
@@ -426,6 +428,26 @@ export default function ClaimsRecentTable({
|
|||||||
</div>
|
</div>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
|
||||||
|
<TableCell>
|
||||||
|
{claim.claimFiles && claim.claimFiles.length > 0 ? (
|
||||||
|
<ul className="space-y-1">
|
||||||
|
{claim.claimFiles.map((f) => (
|
||||||
|
<li
|
||||||
|
key={f.id ?? f.filename}
|
||||||
|
className="flex items-center gap-1 text-xs text-gray-700"
|
||||||
|
>
|
||||||
|
<Paperclip className="h-3 w-3 text-gray-400 shrink-0" />
|
||||||
|
<span className="truncate max-w-[140px]" title={f.filename}>
|
||||||
|
{f.filename}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
) : (
|
||||||
|
<span className="text-xs text-gray-400">—</span>
|
||||||
|
)}
|
||||||
|
</TableCell>
|
||||||
|
|
||||||
<TableCell className="text-right">
|
<TableCell className="text-right">
|
||||||
<div className="flex justify-end space-x-2">
|
<div className="flex justify-end space-x-2">
|
||||||
{allowDelete && (
|
{allowDelete && (
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import {
|
|||||||
ThumbsDown,
|
ThumbsDown,
|
||||||
DollarSign,
|
DollarSign,
|
||||||
Ban,
|
Ban,
|
||||||
|
Paperclip,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { apiRequest, queryClient } from "@/lib/queryClient";
|
import { apiRequest, queryClient } from "@/lib/queryClient";
|
||||||
import { useToast } from "@/hooks/use-toast";
|
import { useToast } from "@/hooks/use-toast";
|
||||||
@@ -488,6 +489,7 @@ export default function PaymentsRecentTable({
|
|||||||
<TableHead>Amount</TableHead>
|
<TableHead>Amount</TableHead>
|
||||||
<TableHead>Service Date</TableHead>
|
<TableHead>Service Date</TableHead>
|
||||||
<TableHead>Status</TableHead>
|
<TableHead>Status</TableHead>
|
||||||
|
<TableHead>Attachments</TableHead>
|
||||||
<TableHead className="text-right">Actions</TableHead>
|
<TableHead className="text-right">Actions</TableHead>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
@@ -622,6 +624,26 @@ export default function PaymentsRecentTable({
|
|||||||
</div>
|
</div>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
|
||||||
|
<TableCell>
|
||||||
|
{payment.claim?.claimFiles && payment.claim.claimFiles.length > 0 ? (
|
||||||
|
<ul className="space-y-1">
|
||||||
|
{payment.claim.claimFiles.map((f: { id?: number; filename: string }) => (
|
||||||
|
<li
|
||||||
|
key={f.id ?? f.filename}
|
||||||
|
className="flex items-center gap-1 text-xs text-gray-700"
|
||||||
|
>
|
||||||
|
<Paperclip className="h-3 w-3 text-gray-400 shrink-0" />
|
||||||
|
<span className="truncate max-w-[140px]" title={f.filename}>
|
||||||
|
{f.filename}
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
) : (
|
||||||
|
<span className="text-xs text-gray-400">—</span>
|
||||||
|
)}
|
||||||
|
</TableCell>
|
||||||
|
|
||||||
<TableCell className="text-right">
|
<TableCell className="text-right">
|
||||||
<div className="flex justify-end space-x-2">
|
<div className="flex justify-end space-x-2">
|
||||||
{allowDelete && (
|
{allowDelete && (
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ export type PaymentWithExtras = Prisma.PaymentGetPayload<{
|
|||||||
claim: {
|
claim: {
|
||||||
include: {
|
include: {
|
||||||
serviceLines: true;
|
serviceLines: true;
|
||||||
|
claimFiles: true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serviceLines: true; // ✅ OCR-only service lines directly under Payment
|
serviceLines: true; // ✅ OCR-only service lines directly under Payment
|
||||||
|
|||||||
Reference in New Issue
Block a user