From e0759c9e3c74e8bca6cfaa4fc31359c2240e10a5 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Fri, 2 Aug 2024 16:39:53 +0800 Subject: [PATCH] update --- src/app/api/invoices/index.ts | 2 ++ src/app/api/projects/index.ts | 1 + src/components/EditStaff/EditStaff.tsx | 2 +- .../InvoiceSearch/InvoiceSearch.tsx | 20 ++++++++++++------- .../InvoiceSearch/InvoiceSearchWrapper.tsx | 1 + .../ProjectSearch/ProjectSearch.tsx | 10 ++++++---- .../ResourceOverconsumptionReport.tsx | 6 +++--- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/app/api/invoices/index.ts b/src/app/api/invoices/index.ts index 2c0a326..526d028 100644 --- a/src/app/api/invoices/index.ts +++ b/src/app/api/invoices/index.ts @@ -21,6 +21,7 @@ export interface InvoiceResultV2 { projectCode: string; projectName: string; team: string; + teamCodeName: string; stage: string; paymentMilestone: string; paymentMilestoneDate: string; @@ -72,6 +73,7 @@ export interface invoiceList { issuedAmount: number; receivedAmount: number; team: string; + teamCodeName: string; } export interface invoiceColum { diff --git a/src/app/api/projects/index.ts b/src/app/api/projects/index.ts index 188e4ac..788ba56 100644 --- a/src/app/api/projects/index.ts +++ b/src/app/api/projects/index.ts @@ -11,6 +11,7 @@ export interface ProjectResult { name: string; category: string; team: string; + teamCodeName: string; teamId: number; client: string; status: string; diff --git a/src/components/EditStaff/EditStaff.tsx b/src/components/EditStaff/EditStaff.tsx index 271fc87..251b5bd 100644 --- a/src/components/EditStaff/EditStaff.tsx +++ b/src/components/EditStaff/EditStaff.tsx @@ -134,7 +134,7 @@ const EditStaff: React.FC = ({ Staff, combos }) => { haveError = true formProps.setError("salaryId", { message: t("Please Enter Salary."), type: "required" }) } - if (data.joinDate &&data.departDate && new Date(data.departDate) <= new Date(data.joinDate)) { + if (data.joinDate && data.departDate && new Date(data.departDate) <= new Date(data.joinDate)) { haveError = true formProps.setError("departDate", { message: t("Depart Date cannot be earlier than Join Date."), type: "required" }) } diff --git a/src/components/InvoiceSearch/InvoiceSearch.tsx b/src/components/InvoiceSearch/InvoiceSearch.tsx index 84ff379..2f337f0 100644 --- a/src/components/InvoiceSearch/InvoiceSearch.tsx +++ b/src/components/InvoiceSearch/InvoiceSearch.tsx @@ -20,6 +20,7 @@ import { QrCodeScannerOutlined } from "@mui/icons-material"; import { DatePicker, LocalizationProvider } from "@mui/x-date-pickers"; import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; import dayjs from "dayjs"; +import { uniq } from "lodash"; interface Props { issuedInvoice: issuedInvoiceList[]; @@ -45,6 +46,7 @@ type SearchQuery2 = Partial>; type SearchParamNames2 = keyof SearchQuery2; const InvoiceSearch: React.FC = ({ issuedInvoice, receivedInvoice, invoices }) => { + console.log(invoices) const { t } = useTranslation("invoices"); const [tabIndex, setTabIndex] = useState(0); @@ -56,7 +58,12 @@ const InvoiceSearch: React.FC = ({ issuedInvoice, receivedInvoice, invoic () => [ { label: t("Invoice No"), paramName: "invoiceNo", type: "text" }, { label: t("Project Code"), paramName: "projectCode", type: "text" }, - { label: t("Team"), paramName: "team", type: "text" }, + { + label: t("Team"), + paramName: "team", + type: "select", + options: uniq(invoices.map((invoice) => invoice.teamCodeName)), + }, { label: t("Issue Date"), label2: t("Issue Date To"), paramName: "invoiceDate", type: "dateRange" }, { label: t("Settle Date"), label2: t("Settle Date To"), paramName: "dueDate", type: "dateRange" }, ], @@ -481,12 +488,11 @@ const InvoiceSearch: React.FC = ({ issuedInvoice, receivedInvoice, invoic console.log(query) setFilterInovices( invoices.filter( - (s) => - (isDateInRange(s.issuedDate, query.invoiceDate ?? undefined, query.invoiceDateTo ?? undefined)) && - (isDateInRange(s.receiptDate, query.dueDate ?? undefined, query.dueDateTo ?? undefined)) && - (s.invoiceNo.toLowerCase().includes(query.invoiceNo.toLowerCase())) && - (s.projectCode.toLowerCase().includes(query.projectCode.toLowerCase())) && - (s.team.toLowerCase().includes(query.team.toLowerCase())) + (s) => (s.invoiceNo.toLowerCase().includes(query.invoiceNo.toLowerCase())) + && (s.projectCode.toLowerCase().includes(query.projectCode.toLowerCase())) + && (query.team === "All" || query.team.toLowerCase().includes(s.team.toLowerCase())) + && (isDateInRange(s.issuedDate, query.invoiceDate ?? undefined, query.invoiceDateTo ?? undefined)) + && (isDateInRange(s.receiptDate, query.dueDate ?? undefined, query.dueDateTo ?? undefined)) ), ); }} diff --git a/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx b/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx index 9171f6e..c166afc 100644 --- a/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx +++ b/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx @@ -55,6 +55,7 @@ const InvoiceSearchWrapper: React.FC & SubComponents = async () => { projectCode: invoice.projectCode, projectName: invoice.projectName, team: invoice.team, + teamCodeName: invoice.teamCodeName, issuedDate: timestampToDateString(invoice.invoiceDate)!!, receiptDate: timestampToDateString(invoice.receiptDate)!!, issuedAmount: invoice.issueAmount, diff --git a/src/components/ProjectSearch/ProjectSearch.tsx b/src/components/ProjectSearch/ProjectSearch.tsx index 4c2b405..e2b4982 100644 --- a/src/components/ProjectSearch/ProjectSearch.tsx +++ b/src/components/ProjectSearch/ProjectSearch.tsx @@ -20,6 +20,7 @@ type SearchQuery = Partial>; type SearchParamNames = keyof SearchQuery; const ProjectSearch: React.FC = ({ projects, projectCategories, abilities }) => { + console.log(projects) const router = useRouter(); const { t } = useTranslation("projects"); @@ -32,8 +33,8 @@ const ProjectSearch: React.FC = ({ projects, projectCategories, abilities { label: t("Client name"), paramName: "client", - type: "select", - options: uniq(projects.map((project) => project.client)), + type: "autocomplete", + options: uniq(projects.map((project) => ({value: project.client, label: project.client}))), }, { label: t("Project category"), @@ -45,7 +46,7 @@ const ProjectSearch: React.FC = ({ projects, projectCategories, abilities label: t("Team"), paramName: "team", type: "select", - options: uniq(projects.map((project) => project.team)), + options: uniq(projects.map((project) => project.teamCodeName)), }, { label: t("Status"), @@ -101,7 +102,8 @@ const ProjectSearch: React.FC = ({ projects, projectCategories, abilities p.name.toLowerCase().includes(query.name.toLowerCase()) && (query.client === "All" || p.client === query.client) && (query.category === "All" || p.category === query.category) && - (query.team === "All" || p.team === query.team) && + // (query.team === "All" || p.team === query.team) && + (query.team === "All" || query.team.toLowerCase().includes(p.team.toLowerCase())) && (query.status === "All" || p.status === query.status), ), ); diff --git a/src/components/ResourceOverconsumptionReport/ResourceOverconsumptionReport.tsx b/src/components/ResourceOverconsumptionReport/ResourceOverconsumptionReport.tsx index 06d0b62..c29038c 100644 --- a/src/components/ResourceOverconsumptionReport/ResourceOverconsumptionReport.tsx +++ b/src/components/ResourceOverconsumptionReport/ResourceOverconsumptionReport.tsx @@ -25,17 +25,17 @@ type SearchParamNames = keyof SearchQuery; const ResourceOverconsumptionReport: React.FC = ({ team, customer, subsidiaries, needAll }) => { const { t } = useTranslation("report"); const statusCombo = ["Potential Overconsumption"] - const teamCombo = team.map(t => `${t.name} - ${t.code}`) + const teamCombo = team.map(t => `${t.code} - ${t.name}`).sort() const custCombo = customer.map(c => ({ value: `custId-${c.id}`, label: `${c.code} - ${c.name}`, group: t("Client") - })) + })).sort() const subsidiariesCombo = 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)