| @@ -11,6 +11,7 @@ import { StaffResult } from "@/app/api/staff"; | |||
| import { TeamResult } from "@/app/api/team"; | |||
| import { Customer } from "@/app/api/customer"; | |||
| import { Subsidiary } from "@/app/api/subsidiary"; | |||
| import CostAndExpenseReportLoading from "../CostAndExpenseReport/CostAndExpenseReportLoading"; | |||
| interface Props { | |||
| team: TeamResult[] | |||
| @@ -19,6 +20,12 @@ interface Props { | |||
| needAll: boolean | |||
| } | |||
| type combo = { | |||
| value: string, | |||
| label: string, | |||
| group: string | |||
| } | |||
| type SearchQuery = Partial<Omit<ProjectResourceOverconsumptionReportFilter, "id">>; | |||
| type SearchParamNames = keyof SearchQuery; | |||
| @@ -26,19 +33,27 @@ const ResourceOverconsumptionReport: React.FC<Props> = ({ team, customer, subsid | |||
| const { t } = useTranslation("report"); | |||
| const statusCombo = ["Potential Overconsumption"] | |||
| 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}`, | |||
| label: `${c.code} - ${c.name}`, | |||
| 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}`, | |||
| label: `${sub.code} - ${sub.name}`, | |||
| 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( | |||
| () => [ | |||
| { | |||
| @@ -83,18 +98,11 @@ return ( | |||
| status: "All", | |||
| 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) | |||
| // 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)) { | |||
| postData.lowerLimit = query.lowerLimit/100 | |||