import React, { useState } from "react"; import { useCollectionContext } from "../../pages/collections/CollectionPage"; import { useCollection } from "../../hooks/useCollections"; import { formatUTCToLocalTime } from "../../utils/dateUtils"; import { formatFigure, getIconByFileType } from "../../utils/appUtils"; import Avatar from "../common/Avatar"; import PaymentHistoryTable from "./PaymentHistoryTable"; import Comment from "./Comment"; import { CollectionDetailsSkeleton } from "./CollectionSkeleton"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { ADMIN_COLLECTION, EDIT_COLLECTION } from "../../utils/constants"; const ViewCollection = ({ onClose }) => { const [activeTab, setActiveTab] = useState("payments"); const isAdmin = useHasUserPermission(ADMIN_COLLECTION); const canEditCollection = useHasUserPermission(EDIT_COLLECTION); const { viewCollection, setCollection, setDocumentView } = useCollectionContext(); const { data, isLoading, isError, error } = useCollection(viewCollection); const handleEdit = () => { setCollection({ isOpen: true, invoiceId: viewCollection }); onClose(); }; if (isLoading) return ; if (isError) return
{error.message}
; return (

Collection Details

{data?.project?.name}
{" "} {data?.isActive ? "Active" : "Inactive"} {(isAdmin || canEditCollection) && !data?.receivedInvoicePayments && ( )}
Title :
{data?.title}
Invoice Number:
{data?.invoiceNumber}
{/* Row 2: E-Invoice Number + Project */}
E-Invoice Number:
{data?.eInvoiceNumber}
{/* Row 3: Invoice Date + Client Submitted Date */}
Invoice Date:
{formatUTCToLocalTime(data?.invoiceDate)}
Client Submission Date:
{formatUTCToLocalTime(data?.clientSubmitedDate)}
{/* Row 4: Expected Payment Date + Mark as Completed */}
Expected Payment Date:
{formatUTCToLocalTime(data?.exceptedPaymentDate)}
{/* Row 5: Basic Amount + Tax Amount */}
Basic Amount :
{formatFigure(data?.basicAmount, { type: "currency", currency: "INR", })}
Tax Amount :
{formatFigure(data?.taxAmount, { type: "currency", currency: "INR", })}
{/* Row 6: Balance Amount + Created At */}
Balance Amount :
{formatFigure(data?.balanceAmount, { type: "currency", currency: "INR", })}
Created At :
{formatUTCToLocalTime(data?.createdAt)}
{/* Row 7: Created By */}
Created By :
{data?.createdBy?.firstName} {data?.createdBy?.lastName}
{/* Description */}
Description :
{data?.description}
{data?.attachments?.map((doc) => { const isImage = doc.contentType?.startsWith("image"); return (
{ if (isImage) { setDocumentView({ IsOpen: true, Image: doc.preSignedUrl, }); } else { window.open(doc.preSignedUrl, "_blank"); } }} > {doc.fileName}
); }) ?? "No Attachment"}
{/* Tabs Navigation */}
{/* Tab Content */}
{activeTab === "payments" && (
)} {activeTab === "details" && (
)}
); }; export default ViewCollection;