@@ -81,6 +81,21 @@ export interface ExportFinancialSummaryByClientExcel { | |||||
financialSummaryByClients: FinancialSummaryByClientExcel[] | 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) => { | export const exportFinancialSummaryByClientExcel = cache(async (data: ExportFinancialSummaryByClientExcel) => { | ||||
const reportBlob = await serverFetchBlob<FileResponse>( | const reportBlob = await serverFetchBlob<FileResponse>( | ||||
`${BASE_API_URL}/dashboard/exportFinancialSummaryByClientExcel`, | `${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<FileResponse>( | |||||
`${BASE_API_URL}/dashboard/exportFinancialSummaryByProjectExcel`, | |||||
{ | |||||
method: "POST", | |||||
body: JSON.stringify(data), | |||||
headers: { "Content-Type": "application/json" }, | |||||
}, | |||||
); | |||||
return reportBlob | |||||
}) | }) |
@@ -19,7 +19,7 @@ import SearchBox, { Criterion } from "../SearchBox"; | |||||
import ProgressByClientSearch from "@/components/ProgressByClientSearch"; | import ProgressByClientSearch from "@/components/ProgressByClientSearch"; | ||||
import { Suspense } from "react"; | import { Suspense } from "react"; | ||||
import { fetchFinancialSummaryCard } from "@/app/api/financialsummary"; | 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 ProjectFinancialCard from "./ProjectFinancialCard"; | ||||
import VisibilityIcon from '@mui/icons-material/Visibility'; | import VisibilityIcon from '@mui/icons-material/Visibility'; | ||||
import { downloadFile } from "@/app/utils/commonUtil"; | import { downloadFile } from "@/app/utils/commonUtil"; | ||||
@@ -467,7 +467,11 @@ const columns2 = [ | |||||
console.log(clientFinancialRows) | 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) | console.log(projectFinancialRows) | ||||
}; | }; | ||||