@@ -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; | |||