UX: Upgrades-Tab — Button zeigt vorhandene Rechnung an, SW by-v1074

- Backend: /admin/upgrade-requests liefert pro Request die offene
  Rechnung (id+number+status) per Subquery aus der invoices-Tabelle
  (status draft|sent → also nicht bezahlt, nicht storniert)
- Frontend: Wenn schon eine Rechnung existiert, wird statt 'Rechnung
  erstellen' (orange) der Button 'Rechnung bearbeiten' (gelb,
  #eab308) gezeigt. Klick lädt die Rechnung und öffnet das Modal im
  Edit-Modus — kein doppeltes Anlegen, Nummerierung bleibt sauber.
This commit is contained in:
rene 2026-05-26 13:50:03 +02:00
parent e5abdcab62
commit 5886e1b269
6 changed files with 53 additions and 12 deletions

View file

@ -1139,7 +1139,16 @@ async def list_upgrade_requests(user=Depends(require_admin)):
SELECT r.id, r.user_id, r.tier, r.message, r.created_at, r.fulfilled_at,
u.name, u.email, u.billing_address,
u.is_founder, u.is_founder_pending, u.referred_by,
COALESCE((SELECT COUNT(*) FROM users WHERE referred_by=u.id), 0) AS referral_count
COALESCE((SELECT COUNT(*) FROM users WHERE referred_by=u.id), 0) AS referral_count,
(SELECT id FROM invoices i WHERE i.user_id=r.user_id
AND i.status IN ('draft','sent')
ORDER BY i.created_at DESC LIMIT 1) AS existing_invoice_id,
(SELECT invoice_number FROM invoices i WHERE i.user_id=r.user_id
AND i.status IN ('draft','sent')
ORDER BY i.created_at DESC LIMIT 1) AS existing_invoice_number,
(SELECT status FROM invoices i WHERE i.user_id=r.user_id
AND i.status IN ('draft','sent')
ORDER BY i.created_at DESC LIMIT 1) AS existing_invoice_status
FROM upgrade_requests r
JOIN users u ON u.id = r.user_id
ORDER BY r.fulfilled_at IS NOT NULL, r.created_at DESC