From d163ffde95160d9a0c036c515bd1315c838acac4 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Wed, 25 Sep 2024 10:38:58 +0800 Subject: [PATCH] update --- .../CompanyTeamCashFlow.tsx | 7 ++++- .../GenerateCrossTeamChargeReport.tsx | 14 +++++++-- .../GenerateCrossTeamChargeReportWrapper.tsx | 11 +++++-- .../ProjectResourceSummary.tsx | 29 +++++++++++++++++++ 4 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/components/CompanyTeamCashFlow/CompanyTeamCashFlow.tsx b/src/components/CompanyTeamCashFlow/CompanyTeamCashFlow.tsx index dd8f397..3987377 100644 --- a/src/components/CompanyTeamCashFlow/CompanyTeamCashFlow.tsx +++ b/src/components/CompanyTeamCashFlow/CompanyTeamCashFlow.tsx @@ -19,7 +19,7 @@ import SearchBox, { Criterion } from "../SearchBox"; import ProgressByClientSearch from "@/components/ProgressByClientSearch"; import { Suspense } from "react"; import ProgressCashFlowSearch from "@/components/ProgressCashFlowSearch"; -import { Input, Label } from "reactstrap"; +import { CardFooter, Input, Label } from "reactstrap"; import Select, { components } from "react-select"; import { fetchTeamCombo, fetchTeamCashFlowChartData } from "@/app/api/teamCashflow"; import { VIEW_DASHBOARD_ALL } from "@/middleware"; @@ -395,6 +395,11 @@ const CompanyTeamCashFlow: React.FC = ({ abilities, staff }) => { height="500" /> + + + * Cumulative Expenditure: Manpower Expense + Other Expense + + diff --git a/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReport.tsx b/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReport.tsx index 683b701..9288a18 100644 --- a/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReport.tsx +++ b/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReport.tsx @@ -10,15 +10,19 @@ import { TeamResult } from "@/app/api/team"; import { SessionStaff } from "@/config/authConfig"; interface Props { - teams: TeamResult[]; + _teams: TeamResult[]; userStaff: SessionStaff; } type SearchQuery = Partial>; type SearchParamNames = keyof SearchQuery; -const GenerateCrossTeamChargeReport: React.FC = ({ teams, userStaff }) => { +const GenerateCrossTeamChargeReport: React.FC = ({ _teams, userStaff }) => { const { t } = useTranslation("report"); + let teams = _teams + if (Boolean(userStaff?.isTeamLead)) { + teams.filter(team => team.id == userStaff.teamId) + } const teamCombo = teams.map(team => `${team.code} - ${team.name}`) const searchCriteria: Criterion[] = useMemo( @@ -50,7 +54,11 @@ const GenerateCrossTeamChargeReport: React.FC = ({ teams, userStaff }) => // const projectIndex = projectCombo.findIndex(({value}) => value === parseInt(query.project)) const teamIndex = teamCombo.findIndex(team => team === query.team) - const response = await fetchCrossTeamChargeReport({ month: query.month, teamId: teamIndex >= 0 ? teams[teamIndex].id : "All", }) + const response = await fetchCrossTeamChargeReport( + { + month: query.month, + teamId: teamIndex >= 0 ? teams[teamIndex].id : "All", + }) if (response) { downloadFile(new Uint8Array(response.blobValue), response.filename!!) } diff --git a/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReportWrapper.tsx b/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReportWrapper.tsx index 6d39541..eb4b250 100644 --- a/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReportWrapper.tsx +++ b/src/components/GenerateCrossTeamChargeReport/GenerateCrossTeamChargeReportWrapper.tsx @@ -9,10 +9,15 @@ interface SubComponents { } const GenerateCrossTeamChargeReportWrapper: React.FC & SubComponents = async () => { + const [ + teams, + userStaff + ] = await Promise.all([ + fetchTeam(), + fetchUserStaff() + ]) - const [teams, userStaff] = await Promise.all([fetchTeam(), fetchUserStaff()]) - - return team.id === userStaff?.teamId)} userStaff={userStaff}/>; + return team.id === userStaff?.teamId)} userStaff={userStaff}/>; }; GenerateCrossTeamChargeReportWrapper.Loading = GenerateCrossTeamChargeReportLoading; diff --git a/src/components/ProjectResourceSummary/ProjectResourceSummary.tsx b/src/components/ProjectResourceSummary/ProjectResourceSummary.tsx index 03bb662..c0e26b4 100644 --- a/src/components/ProjectResourceSummary/ProjectResourceSummary.tsx +++ b/src/components/ProjectResourceSummary/ProjectResourceSummary.tsx @@ -47,6 +47,7 @@ const ProjectResourceSummary: React.FC = () => { const [projectBudget, setProjectBudget]:any = React.useState(0); const [expenditure, setExpenditure]:any = React.useState(0); const [remainingBudget, setRemainingBudget]:any = React.useState(0); + const [expense, setExpense] = React.useState(0); const [status, setStatus]:any = React.useState("NA"); const [plannedResources, setPlannedResources]:any = React.useState(0); const [actualResourcesSpent, setActualResourcesSpent]:any = React.useState(0); @@ -105,6 +106,7 @@ const ProjectResourceSummary: React.FC = () => { setPlannedResources(result[0].summaryInformation[0].plannedResources) setActualResourcesSpent(result[0].summaryInformation[0].resourcesSpent) setRemainingResources(result[0].summaryInformation[0].remainingResources) + setExpense(result[0].summaryInformation[0].expense) console.log(result); const mainStageResult = result[0].summaryMainStage const subStageResult = result[0].summarySubStage @@ -661,10 +663,37 @@ const columns2 = [ {t("Cumulative Expenditure")} +
+ {/* + {t(" (Manpower + Other Expense)")} + */}
HKD ${expenditure.toFixed(2)}
+ {/*
+ {`HKD $(${(expenditure - expense).toFixed(2)} + ${expense.toFixed(2)})`} +
*/} + +
+
+ + {t("Manpower Expense")} + +
+
+ HKD ${(expenditure - expense).toFixed(2)} +
+
+
+
+ + {t("Other Expense")} + +
+
+ HKD ${(expense).toFixed(2)} +