Bladeren bron

update filter project and invoice with team

tags/Baseline_180220205_Frontend
MSI\derek 11 maanden geleden
bovenliggende
commit
10e581184f
4 gewijzigde bestanden met toevoegingen van 24 en 50 verwijderingen
  1. +1
    -0
      src/app/api/invoices/index.ts
  2. +4
    -15
      src/components/InvoiceSearch/InvoiceSearch.tsx
  3. +9
    -32
      src/components/InvoiceSearch/InvoiceSearchWrapper.tsx
  4. +10
    -3
      src/components/ProjectSearch/ProjectSearchWrapper.tsx

+ 1
- 0
src/app/api/invoices/index.ts Bestand weergeven

@@ -21,6 +21,7 @@ export interface InvoiceResultV2 {
projectCode: string;
projectName: string;
team: string;
teamId: number;
teamCodeName: string;
stage: string;
paymentMilestone: string;


+ 4
- 15
src/components/InvoiceSearch/InvoiceSearch.tsx Bestand weergeven

@@ -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(() => {


+ 9
- 32
src/components/InvoiceSearch/InvoiceSearchWrapper.tsx Bestand weergeven

@@ -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}
/>


+ 10
- 3
src/components/ProjectSearch/ProjectSearchWrapper.tsx Bestand weergeven

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


Laden…
Annuleren
Opslaan