diff --git a/src/app/api/financialsummary/actions.ts b/src/app/api/financialsummary/actions.ts index d3adfb0..41baac2 100644 --- a/src/app/api/financialsummary/actions.ts +++ b/src/app/api/financialsummary/actions.ts @@ -81,6 +81,21 @@ export interface ExportFinancialSummaryByClientExcel { financialSummaryByClients: FinancialSummaryByClientExcel[] } +export interface FinancialSummaryByProjectExcel { + projectCode: string; + projectName: string; + customerName: string; + subsidiaryName?: string | null; + totalFee: number; + cumulativeExpenditure: number; + totalInvoiced: number; + totalReceived: number; +} + +export interface ExportFinancialSummaryByProjectExcel { + financialSummaryByProjects: FinancialSummaryByProjectExcel[] +} + export const exportFinancialSummaryByClientExcel = cache(async (data: ExportFinancialSummaryByClientExcel) => { const reportBlob = await serverFetchBlob( `${BASE_API_URL}/dashboard/exportFinancialSummaryByClientExcel`, @@ -91,5 +106,18 @@ export const exportFinancialSummaryByClientExcel = cache(async (data: ExportFina }, ); -return reportBlob + return reportBlob +}) + +export const exportFinancialSummaryByProjectExcel = cache(async (data: ExportFinancialSummaryByProjectExcel) => { + const reportBlob = await serverFetchBlob( + `${BASE_API_URL}/dashboard/exportFinancialSummaryByProjectExcel`, + { + method: "POST", + body: JSON.stringify(data), + headers: { "Content-Type": "application/json" }, + }, +); + + return reportBlob }) diff --git a/src/components/ProjectFinancialSummary/ProjectFinancialSummary.tsx b/src/components/ProjectFinancialSummary/ProjectFinancialSummary.tsx index bc5634a..b16db56 100644 --- a/src/components/ProjectFinancialSummary/ProjectFinancialSummary.tsx +++ b/src/components/ProjectFinancialSummary/ProjectFinancialSummary.tsx @@ -19,7 +19,7 @@ import SearchBox, { Criterion } from "../SearchBox"; import ProgressByClientSearch from "@/components/ProgressByClientSearch"; import { Suspense } from "react"; import { fetchFinancialSummaryCard } from "@/app/api/financialsummary"; -import { exportFinancialSummaryByClientExcel, searchFinancialSummaryByClient,searchFinancialSummaryByProject } from "@/app/api/financialsummary/actions"; +import { exportFinancialSummaryByClientExcel, exportFinancialSummaryByProjectExcel, searchFinancialSummaryByClient,searchFinancialSummaryByProject } from "@/app/api/financialsummary/actions"; import ProjectFinancialCard from "./ProjectFinancialCard"; import VisibilityIcon from '@mui/icons-material/Visibility'; import { downloadFile } from "@/app/utils/commonUtil"; @@ -467,7 +467,11 @@ const columns2 = [ console.log(clientFinancialRows) }; - const handleExportByProject = () => { + const handleExportByProject = async () => { + const response = await exportFinancialSummaryByProjectExcel({financialSummaryByProjects: projectFinancialRows}) + if (response) { + downloadFile(new Uint8Array(response.blobValue), response.filename!!) + } console.log(projectFinancialRows) };