diff --git a/src/components/credits/CreditList.jsx b/src/components/credits/CreditList.jsx index 55bd225..823b12e 100644 --- a/src/components/credits/CreditList.jsx +++ b/src/components/credits/CreditList.jsx @@ -1,10 +1,8 @@ import { useEffect, useState } from 'react' -import { FaSpinner } from 'react-icons/fa6' -import { Card, Badge, Button } from '../ui' +import { Badge, EmptyState, Tabs } from '../ui' import { listCredits } from '../../lib/teamApi' -import { creditStatus } from '../../lib/creditFormat' +import { creditActionLabel, creditStatus, creditStatusNote } 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 }) { @@ -23,41 +21,52 @@ export default function CreditList({ customerId, selectedId, onSelect, reloadKey return (
-
- - -
- - {error &&
{error}
} - {!rows && !error &&
} - {rows && ( -
-
EingangKundeLeistung / bisher beiRechnungBezahlt bisStatus
- {rows.length === 0 &&
{filter === 'open' ? 'Keine offenen Anträge.' : 'Noch keine Anträge.'}
} + + {error &&
{error}
} + {!rows && !error &&
Wird geladen …
} + {rows && rows.length === 0 && ( + + )} + {rows && rows.length > 0 && ( + + + + + + + + + + + + {rows.map((r) => { const st = creditStatus(r.status) + const note = creditStatusNote(r) 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)} - +
+ + + + + + + + ) })} - - )} - + +
EingangKundeLeistung / bisher beiRechnungBezahlt bisStatus +
{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'}} - - - - - + {note &&
{note}
} +
+ +
+ )}
) } diff --git a/src/components/credits/CreditsView.jsx b/src/components/credits/CreditsView.jsx index e1ce355..6474339 100644 --- a/src/components/credits/CreditsView.jsx +++ b/src/components/credits/CreditsView.jsx @@ -23,11 +23,11 @@ export default function CreditsView({ customerId }) { return (
{selected && ( -
- select('')} onOpen={select} onChanged={() => setReloadKey((k) => k + 1)} /> -
+ select('')} onOpen={select} onChanged={() => setReloadKey((k) => k + 1)} /> )} - +
+ +
) } diff --git a/src/pages/CreditsPage.jsx b/src/pages/CreditsPage.jsx index 3a87e62..bdac8d0 100644 --- a/src/pages/CreditsPage.jsx +++ b/src/pages/CreditsPage.jsx @@ -7,7 +7,7 @@ export default function CreditsPage() {
-

+

Übernahmegutschrift: Der Kunde hat Domain, Hosting oder E-Mail beim bisherigen Anbieter schon bezahlt. Nach der Prüfung wird der doppelt bezahlte Anteil als Guthaben in Stripe gebucht und mit den nächsten Abo-Rechnungen verrechnet.