import { useEffect, useState } from 'react' import { FaSpinner } from 'react-icons/fa6' import { Card, Badge, Button } from '../ui' import { listCredits } from '../../lib/teamApi' import { creditStatus } from '../../lib/creditFormat' import { fmtDate, fmtDateTime, formatCents } from '../../lib/format' import '../../styles/admin-areas.css' // Liste der Uebernahmegutschriften (Filter "Offen"/"Alle"), wie im frueheren Admin-Panel; optional nur ein Kunde export default function CreditList({ customerId, selectedId, onSelect, reloadKey }) { const [filter, setFilter] = useState('open') const [rows, setRows] = useState(null) const [error, setError] = useState(null) useEffect(() => { let alive = true setError(null) listCredits({ status: filter, customerId }) .then(({ requests }) => { if (alive) setRows(requests || []) }) .catch((err) => { if (alive) setError(err.message || 'Anträge konnten nicht geladen werden.') }) return () => { alive = false } }, [filter, customerId, reloadKey]) return (
{error &&
{error}
} {!rows && !error &&
} {rows && (
EingangKundeLeistung / bisher beiRechnungBezahlt bisStatus
{rows.length === 0 &&
{filter === 'open' ? 'Keine offenen Anträge.' : 'Noch keine Anträge.'}
} {rows.map((r) => { const st = creditStatus(r.status) return (
{fmtDateTime(r.createdAt)}
{r.ref}
{r.customerName}{r.customerCode && <>
Kd.-Nr. {r.customerCode}}
{r.services}
{r.provider}{r.domain ? ` · ${r.domain}` : ''}
{formatCents(r.invoiceAmountCents)}
für {r.billingMonths} Mon.
{fmtDate(r.paidUntil)} {st.label} {r.status === 'genehmigt' && <>
{formatCents(r.amountCents)}{r.appliedAt ? '' : ' · nicht gebucht'}}
) })}
)}
) }