From 9b990206864c427941946ae1300cfe937c279249 Mon Sep 17 00:00:00 2001 From: ValueOn AG
Du hast aktuell Zugriff auf keine Feature-Instanzen.
-Kontaktiere einen Administrator, um Zugriff zu erhalten.
-Fehler: {error}
@@ -340,7 +345,7 @@ export const AdminFeatureAccessPage: React.FC = () => { } return ( -Fehler: {error}
@@ -400,7 +403,7 @@ export const AdminFeatureInstanceUsersPage: React.FC = () => { } return ( -{error}
@@ -258,7 +258,7 @@ export const AdminFeatureRolesPage: React.FC = () => { } return ( -Fehler: {error}
@@ -255,7 +255,7 @@ export const AdminInvitationsPage: React.FC = () => { } return ( -Fehler: {error}
@@ -307,7 +307,7 @@ export const AdminMandateRolesPage: React.FC = () => { } return ( -Fehler beim Laden der Mandanten: {error}
@@ -104,7 +135,7 @@ export const AdminMandatesPage: React.FC = () => { } return ( -
+ Stammdaten kommen aus dem Modell Mandate (API). Abrechnung wird in{' '}
+ BillingSettings pro Mandant gespeichert.
+
Fehler: {error}
@@ -531,7 +531,7 @@ export const AdminUserAccessOverviewPage: React.FC = () => { } return ( -Fehler: {error}
@@ -270,7 +270,7 @@ export const AdminUserMandatesPage: React.FC = () => { } return ( -Fehler beim Laden der Benutzer: {error}
@@ -138,7 +138,7 @@ export const AdminUsersPage: React.FC = () => { } return ( -| {getUserDisplayName(u as any)} | {u.email || '-'} | - {u.roleLabels?.join(', ') || '-'} + {_roleTextForRow(u, roleLookup)} + {options?.onEditRoles && roleLookup.length > 0 && ( + + )} |
{
const renderAddUserForm = (
availableUsers: Array<{ id?: string; userId?: string; username: string; email?: string | null; fullName?: string; firstname?: string | null; lastname?: string | null }>,
roles: RoleOption[],
- formValue: { userId: string; roleIds: string[] },
- setFormValue: (fn: (prev: { userId: string; roleIds: string[] }) => { userId: string; roleIds: string[] }) => void,
+ formValue: { userIds: string[]; roleIds: string[] },
+ setFormValue: (fn: (prev: { userIds: string[]; roleIds: string[] }) => { userIds: string[]; roleIds: string[] }) => void,
onSubmit: () => void,
onCancel: () => void,
) => (
-
-
{roles.length > 0 && (
-
+
{roles.map(r => (
)}
-
-
-
-
-
-
@@ -363,7 +364,6 @@ const AccountsOverview: React.FC
@@ -373,13 +373,113 @@ const AccountsOverview: React.FC
{account.userId && User: {_userNameMap.get(account.userId) || account.userId}}
Guthaben: {formatCurrency(account.balance)}
- {account.creditLimit && Limit: {formatCurrency(account.creditLimit)}}
Status: {account.enabled ? 'Aktiv' : 'Deaktiviert'}
+
+ );
+};
+
// ============================================================================
// MAIN COMPONENT
// ============================================================================
export const BillingAdmin: React.FC = () => {
+ const [searchParams, setSearchParams] = useSearchParams();
+ const { user: currentUser } = useCurrentUser();
+ const isSysAdmin = currentUser?.isSysAdmin === true;
+
const [selectedMandateId, setSelectedMandateId] = useStateGuthaben via Stripe aufladen++ Sie werden zu Stripe weitergeleitet. Nach erfolgreicher Zahlung kehren Sie hierher zurück. + + {localMsg &&{localMsg} }
+
+ Billing Administration-Verwaltung von Abrechnungseinstellungen und Guthaben ++ {isSysAdmin + ? 'Verwaltung von Abrechnungseinstellungen und Guthaben' + : 'Guthaben und Konten für Ihre Mandanten'} + + {isSysAdmin && ( ++ + Mandanten-Übersicht (Balances & Transaktionen) + + + )}
+
+ )}
+
+ {stripeReturnMessage.text}
+
+
- Bitte wählen Sie einen Mandanten aus.
-
+ Bitte wählen Sie einen Mandanten aus.
)}
diff --git a/src/pages/billing/BillingMandateView.tsx b/src/pages/billing/BillingMandateView.tsx
index f6792c6..cc84f16 100644
--- a/src/pages/billing/BillingMandateView.tsx
+++ b/src/pages/billing/BillingMandateView.tsx
@@ -39,13 +39,8 @@ const MandateBalanceTable: React.FC |