| @@ -11,6 +11,7 @@ import { StaffResult } from "@/app/api/staff"; | |||||
| import { TeamResult } from "@/app/api/team"; | import { TeamResult } from "@/app/api/team"; | ||||
| import { Customer } from "@/app/api/customer"; | import { Customer } from "@/app/api/customer"; | ||||
| import { Subsidiary } from "@/app/api/subsidiary"; | import { Subsidiary } from "@/app/api/subsidiary"; | ||||
| import CostAndExpenseReportLoading from "../CostAndExpenseReport/CostAndExpenseReportLoading"; | |||||
| interface Props { | interface Props { | ||||
| team: TeamResult[] | team: TeamResult[] | ||||
| @@ -19,6 +20,12 @@ interface Props { | |||||
| needAll: boolean | needAll: boolean | ||||
| } | } | ||||
| type combo = { | |||||
| value: string, | |||||
| label: string, | |||||
| group: string | |||||
| } | |||||
| type SearchQuery = Partial<Omit<ProjectResourceOverconsumptionReportFilter, "id">>; | type SearchQuery = Partial<Omit<ProjectResourceOverconsumptionReportFilter, "id">>; | ||||
| type SearchParamNames = keyof SearchQuery; | type SearchParamNames = keyof SearchQuery; | ||||
| @@ -26,19 +33,27 @@ const ResourceOverconsumptionReport: React.FC<Props> = ({ team, customer, subsid | |||||
| const { t } = useTranslation("report"); | const { t } = useTranslation("report"); | ||||
| const statusCombo = ["Potential Overconsumption"] | const statusCombo = ["Potential Overconsumption"] | ||||
| const teamCombo = team.map(t => `${t.code} - ${t.name}`).sort() | const teamCombo = team.map(t => `${t.code} - ${t.name}`).sort() | ||||
| const custCombo = customer.map(c => ({ | |||||
| const custCombo: combo[] = customer.map(c => ({ | |||||
| value: `custId-${c.id}`, | value: `custId-${c.id}`, | ||||
| label: `${c.code} - ${c.name}`, | label: `${c.code} - ${c.name}`, | ||||
| group: t("Client") | group: t("Client") | ||||
| })).sort() | |||||
| const subsidiariesCombo = subsidiaries.map(sub => ({ | |||||
| })) | |||||
| .sort((a: combo, b: combo) => { | |||||
| const [_custType_A, id_A] = readIntFromString(a.value) as [string, number] | |||||
| const [_custType_B, id_B] = readIntFromString(b.value) as [string, number] | |||||
| return (id_A - id_B) | |||||
| }); | |||||
| const subsidiariesCombo: combo[] = subsidiaries.map(sub => ({ | |||||
| value: `subsidiaryId-${sub.id}`, | value: `subsidiaryId-${sub.id}`, | ||||
| label: `${sub.code} - ${sub.name}`, | label: `${sub.code} - ${sub.name}`, | ||||
| group: t("Subsidiary") | group: t("Subsidiary") | ||||
| })).sort() | |||||
| // const staffCombo = staffs.map(staff => `${staff.name} - ${staff.staffId}`) | |||||
| // console.log(staffs) | |||||
| })) | |||||
| .sort((a: combo, b: combo) => { | |||||
| const [_custType_A, id_A] = readIntFromString(a.value) as [string, number] | |||||
| const [_custType_B, id_B] = readIntFromString(b.value) as [string, number] | |||||
| return (id_A - id_B) | |||||
| }); | |||||
| const searchCriteria: Criterion<SearchParamNames>[] = useMemo( | const searchCriteria: Criterion<SearchParamNames>[] = useMemo( | ||||
| () => [ | () => [ | ||||
| { | { | ||||
| @@ -83,18 +98,11 @@ return ( | |||||
| status: "All", | status: "All", | ||||
| lowerLimit: 0.9 | lowerLimit: 0.9 | ||||
| } | } | ||||
| if (query.team.length > 0 && query.team.toLocaleLowerCase() !== "all") { | |||||
| if (query.team.length > 0 && query.team.toLocaleLowerCase() !== "all") { | |||||
| index = teamCombo.findIndex(team => team === query.team) | index = teamCombo.findIndex(team => team === query.team) | ||||
| // console.log(index) | |||||
| // console.log(teamCombo) | |||||
| const sortedTeam = team.sort((a, b) => a.code.localeCompare(b.code)) | |||||
| // console.log(sortedTeam) | |||||
| const sortedId = sortedTeam[index].id | |||||
| // console.log(sortedId) | |||||
| // console.log(team.find(team => query.team === `${team.code} - Team ${team.staffName}`)?.id) | |||||
| // const teamId = team.find(team => query.team === `${team.code} - Team ${team.staffName}`)?.id | |||||
| postData.teamId = sortedId | |||||
| // postData.teamId = teamId | |||||
| const teamId = team[index].id | |||||
| console.log(teamId) | |||||
| postData.teamId = teamId | |||||
| } | } | ||||
| if (Boolean(query.lowerLimit)) { | if (Boolean(query.lowerLimit)) { | ||||
| postData.lowerLimit = query.lowerLimit/100 | postData.lowerLimit = query.lowerLimit/100 | ||||