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
{/* Row 0: Balance Amount + Expected Payment Date */}
{/* Balance Amount */}
Balance Amount :
{formatFigure(data?.balanceAmount, {
type: "currency",
currency: "INR",
})}
{/* Expected Payment Date */}
Expected Payment Date :
{formatUTCToLocalTime(data?.exceptedPaymentDate)}
{/* Project and Status */}
{data?.project?.name}
{data?.markAsCompleted ? "Active" : "Inactive"}
{(isAdmin || canEditCollection) &&
!data?.receivedInvoicePayments &&
!data?.markAsCompleted && (
)}
{/* Title */}
{/* Invoice Number */}
Invoice Number:
{data?.invoiceNumber}
{/* E-Invoice Number */}
E-Invoice Number:
{data?.eInvoiceNumber}
{/* Invoice Date */}
Invoice Date:
{formatUTCToLocalTime(data?.invoiceDate)}
{/* Client Submitted Date */}
Client Submission Date:
{formatUTCToLocalTime(data?.clientSubmitedDate)}
{/* Basic Amount */}
Basic Amount :
{formatFigure(data?.basicAmount, {
type: "currency",
currency: "INR",
})}
{/* Tax Amount */}
Tax Amount :
{formatFigure(data?.taxAmount, {
type: "currency",
currency: "INR",
})}
{/* Created At */}
Created At :
{formatUTCToLocalTime(data?.createdAt)}
{/* Created By */}
Created By :
{data?.createdBy?.firstName} {data?.createdBy?.lastName}
{/* Description */}
Description :
{data?.description}
{/* Attachments */}
{data?.attachments?.map((doc) => {
const isImage = doc.contentType?.includes("image");
return (
{
if (isImage) {
setDocumentView({
IsOpen: true,
Image: doc.preSignedUrl,
});
}
}}
>
{doc.fileName}
);
}) ?? "No Attachment"}
{/* Tabs Section */}
-
-
{activeTab === "payments" && (
)}
{activeTab === "details" && (
)}
);
};
export default ViewCollection;