| @@ -21,6 +21,7 @@ export interface InvoiceResultV2 { | |||
| projectCode: string; | |||
| projectName: string; | |||
| team: string; | |||
| teamId: number; | |||
| teamCodeName: string; | |||
| stage: string; | |||
| paymentMilestone: string; | |||
| @@ -23,8 +23,6 @@ import CreateInvoiceModal from "./CreateInvoiceModal"; | |||
| interface Props { | |||
| issuedInvoice: issuedInvoiceList[]; | |||
| receivedInvoice: receivedInvoiceList[]; | |||
| invoices: invoiceList[]; | |||
| } | |||
| @@ -45,13 +43,13 @@ type SearchParamNames = keyof SearchQuery; | |||
| type SearchQuery2 = Partial<Omit<receivedInvoiceSearchForm, "id">>; | |||
| type SearchParamNames2 = keyof SearchQuery2; | |||
| const InvoiceSearch: React.FC<Props> = ({ issuedInvoice, receivedInvoice, invoices }) => { | |||
| const InvoiceSearch: React.FC<Props> = ({ invoices }) => { | |||
| // console.log(invoices) | |||
| const { t } = useTranslation("Invoice"); | |||
| const [tabIndex, setTabIndex] = useState(0); | |||
| const [filteredIssuedInvoices, setFilteredIssuedInvoices] = useState(issuedInvoice); | |||
| const [filteredReceivedInvoices, setFilteredReceivedInvoices] = useState(receivedInvoice); | |||
| // const [filteredIssuedInvoices, setFilteredIssuedInvoices] = useState(issuedInvoice); | |||
| // const [filteredReceivedInvoices, setFilteredReceivedInvoices] = useState(receivedInvoice); | |||
| const [filteredIvoices, setFilterInovices] = useState(invoices); | |||
| const searchCriteria: Criterion<SearchParamNames>[] = useMemo( | |||
| @@ -67,16 +65,7 @@ const InvoiceSearch: React.FC<Props> = ({ issuedInvoice, receivedInvoice, invoic | |||
| { 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" }, | |||
| ], | |||
| [t, issuedInvoice], | |||
| ); | |||
| const searchCriteria2: Criterion<SearchParamNames2>[] = useMemo( | |||
| () => [ | |||
| { label: t("Invoice No"), paramName: "invoiceNo", type: "text" }, | |||
| { label: t("Project Code"), paramName: "projectCode", type: "text" }, | |||
| { label: t("Recipt Date"), label2: t("Recipt Date To"), paramName: "receiptDate", type: "dateRange" }, | |||
| ], | |||
| [t, issuedInvoice], | |||
| [t, invoices], | |||
| ); | |||
| const onReset = useCallback(() => { | |||
| @@ -4,6 +4,8 @@ import InvoiceSearch from "./InvoiceSearch"; | |||
| import InvoiceSearchLoading from "./InvoiceSearchLoading"; | |||
| import { fetchInvoicesV3, fetchIssuedInvoices, fetchReceivedInvoices, issuedInvoiceList, issuedInvoiceResult } from "@/app/api/invoices"; | |||
| import { INPUT_DATE_FORMAT, convertDateArrayToString, convertDateToString, moneyFormatter, timestampToDateString } from "@/app/utils/formatUtil"; | |||
| import { fetchTeam } from "@/app/api/team"; | |||
| import { fetchUserStaff } from "@/app/utils/fetchUtil"; | |||
| interface SubComponents { | |||
| @@ -16,39 +18,16 @@ interface SubComponents { | |||
| // } | |||
| const InvoiceSearchWrapper: React.FC & SubComponents = async () => { | |||
| const issuedInvoices = await fetchIssuedInvoices() | |||
| const receivedInvoices = await fetchReceivedInvoices() | |||
| const userStaff = await fetchUserStaff() | |||
| const teamId = userStaff?.teamId | |||
| const invoices = await fetchInvoicesV3() | |||
| // console.log(invoices) | |||
| const convertedIssedInvoices = issuedInvoices.map((invoice)=>{ | |||
| return{ | |||
| id: invoice.id, | |||
| invoiceNo: invoice.invoiceNo, | |||
| projectCode: invoice.projectCode, | |||
| projectName: invoice.projectName, | |||
| stage: invoice.stage, | |||
| paymentMilestone: invoice.paymentMilestone, | |||
| invoiceDate: convertDateArrayToString(invoice.invoiceDate, INPUT_DATE_FORMAT, false)!!, | |||
| dueDate: convertDateArrayToString(invoice.dueDate, INPUT_DATE_FORMAT, false)!!, | |||
| issuedAmount: moneyFormatter.format(invoice.issuedAmount) | |||
| } | |||
| }) | |||
| const convertedReceivedInvoices = receivedInvoices.map((invoice)=>{ | |||
| return{ | |||
| id: invoice.id, | |||
| invoiceNo: invoice.invoiceNo, | |||
| projectCode: invoice.projectCode, | |||
| projectName: invoice.projectName, | |||
| team: invoice.team, | |||
| receiptDate: convertDateArrayToString(invoice.receiptDate, INPUT_DATE_FORMAT, false)!!, | |||
| receivedAmount: moneyFormatter.format(invoice.receivedAmount) | |||
| } | |||
| }) | |||
| let filteredInvoice = invoices | |||
| if (teamId) { | |||
| filteredInvoice = invoices.filter(invoice => invoice.teamId === teamId) | |||
| } | |||
| const convertedInvoices = invoices.map((invoice)=>{ | |||
| const convertedInvoices = filteredInvoice.map((invoice)=>{ | |||
| return{ | |||
| id: invoice.id, | |||
| invoiceNo: invoice.invoiceNo, | |||
| @@ -64,8 +43,6 @@ const InvoiceSearchWrapper: React.FC & SubComponents = async () => { | |||
| }) | |||
| return <InvoiceSearch | |||
| issuedInvoice={convertedIssedInvoices} | |||
| receivedInvoice={convertedReceivedInvoices} | |||
| invoices={convertedInvoices} | |||
| /> | |||
| @@ -2,7 +2,9 @@ import { fetchProjectCategories, fetchProjects } from "@/app/api/projects"; | |||
| import React from "react"; | |||
| import ProjectSearch from "./ProjectSearch"; | |||
| import ProjectSearchLoading from "./ProjectSearchLoading"; | |||
| import { fetchUserAbilities } from "@/app/utils/fetchUtil"; | |||
| import { fetchUserAbilities, fetchUserStaff } from "@/app/utils/fetchUtil"; | |||
| import { authOptions } from "@/config/authConfig"; | |||
| import { getServerSession } from "next-auth"; | |||
| interface SubComponents { | |||
| Loading: typeof ProjectSearchLoading; | |||
| @@ -10,11 +12,16 @@ interface SubComponents { | |||
| const ProjectSearchWrapper: React.FC & SubComponents = async () => { | |||
| const projectCategories = await fetchProjectCategories(); | |||
| const userStaff = await fetchUserStaff() | |||
| const teamId = userStaff?.teamId | |||
| const projects = await fetchProjects(); | |||
| let filteredProjects = projects | |||
| if (teamId) { | |||
| filteredProjects = projects.filter(project => project.teamId === teamId) | |||
| } | |||
| const abilities = await fetchUserAbilities() | |||
| return <ProjectSearch projects={projects} projectCategories={projectCategories} abilities={abilities}/>; | |||
| return <ProjectSearch projects={filteredProjects} projectCategories={projectCategories} abilities={abilities}/>; | |||
| }; | |||
| ProjectSearchWrapper.Loading = ProjectSearchLoading; | |||