From 711ebed656096cac4bc047f2aa89c97feff14052 Mon Sep 17 00:00:00 2001 From: kmiola <kmiola@ethz.ch> Date: Sat, 16 Nov 2024 13:26:33 +0000 Subject: [PATCH] creditpayments, reimbursements, billy, in one list, filter works --- src/pages/CreditPaymentsList.tsx | 36 ++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/pages/CreditPaymentsList.tsx b/src/pages/CreditPaymentsList.tsx index 28e0926..4d3f94c 100644 --- a/src/pages/CreditPaymentsList.tsx +++ b/src/pages/CreditPaymentsList.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { Container, CircularProgress, Typography, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Alert, TextField, FormControl, InputLabel, Select, MenuItem } from '@mui/material'; -import { creditPaymentsReadCreditPayments, reimbursementsReadReimbursements, client, ledgersReadLedgers, kstsReadKsts } from '../client/services.gen'; -import { CreditPaymentPublic_Output, CreditPaymentsList, ReimbursementsList, ReimbursementPublic_Output, LedgerPublic, KstPublic } from '../client/types.gen'; +import { billsReadBills, creditPaymentsReadCreditPayments, reimbursementsReadReimbursements, client, ledgersReadLedgers, kstsReadKsts } from '../client/services.gen'; +import { BillsList, BillPublic_Output, CreditPaymentPublic_Output, CreditPaymentsList, ReimbursementsList, ReimbursementPublic_Output, LedgerPublic, KstPublic } from '../client/types.gen'; import { SelectChangeEvent } from '@mui/material/Select'; // Set the base URL and headers for the client @@ -15,6 +15,7 @@ client.setConfig({ export default function CreditPaymentsPage() { const [creditPayments, setCreditPayments] = useState<CreditPaymentPublic_Output[]>([]); const [reimbursements, setReimbursements] = useState<ReimbursementPublic_Output[]>([]); + const [bills, setBills] = useState<BillPublic_Output[]>([]); const [originalPayments, setOriginalPayments] = useState([]); const [filteredPayments, setFilteredPayments] = useState<any[]>([]); const [ledgerItems, setLedgerItems] = useState<LedgerPublic[]>([]); @@ -32,6 +33,28 @@ export default function CreditPaymentsPage() { amount: '', }); + const fetchBills = async () => { + setLoading(true); + setError(null); + + try { + const response = await billsReadBills(); + if (typeof response.data !== 'object' || !('items' in response.data)) { + console.error('Unexpected response format:', response.data); + setError('Received unexpected response format from the server.'); + return; + } + + const billsList = response.data as BillsList; + setBills(billsList.items); + } catch (err) { + console.error('Error fetching credit payments:', err); + setError('Error fetching credit payments'); + } finally { + setLoading(false); + } + }; + const fetchCreditPayments = async () => { setLoading(true); setError(null); @@ -122,6 +145,10 @@ export default function CreditPaymentsPage() { const mergeData = () => { const merged = [ + ...bills.map(item => ({ + ...item, + type: 'bill', + })), ...creditPayments.map(item => ({ ...item, type: 'Credit Payment', @@ -157,6 +184,7 @@ export default function CreditPaymentsPage() { }; useEffect(() => { + fetchBills(); fetchCreditPayments(); fetchReimbursements(); fetchLedgers(); @@ -164,10 +192,10 @@ export default function CreditPaymentsPage() { }, []); useEffect(() => { - if (creditPayments.length > 0 && reimbursements.length > 0) { + if (bills.length > 0 && creditPayments.length > 0 && reimbursements.length > 0) { mergeData(); } - }, [creditPayments, reimbursements]); + }, [bills, creditPayments, reimbursements]); useEffect(() => { applyFilters(); -- GitLab