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:
parent
e5abdcab62
commit
5886e1b269
6 changed files with 53 additions and 12 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue