+ )}
- {/* ─── MODUS B: NEUEN KUNDEN ANLEGEN ─── */}
- {customerMode === 'create' && (
-
- {(
- [
- { label: 'Firmenname *', key: 'company_name', span: true, placeholder: 'GmbH / Einzelunternehmen' },
- { label: 'USt-IdNr.', key: 'vat_id', span: false, placeholder: 'DE123456789' },
- { label: 'Vorname', key: 'first_name', span: false, placeholder: '' },
- { label: 'Nachname', key: 'last_name', span: false, placeholder: '' },
- { label: 'Straße & Hausnummer', key: 'street', span: true, placeholder: '' },
- { label: 'PLZ', key: 'zip', span: false, placeholder: '' },
- { label: 'Ort', key: 'city', span: false, placeholder: '' },
- { label: 'Kontoinhaber', key: 'bank_owner', span: false, placeholder: 'Max Mustermann' },
- { label: 'IBAN', key: 'bank_iban', span: false, placeholder: 'DE89370400440532013000' },
- { label: 'BIC', key: 'bank_bic', span: false, placeholder: 'SOLADE21XXX' },
- { label: 'Bankname', key: 'bank_name', span: false, placeholder: 'Musterbank' },
- ] as const
- ).map(({ label, key, span, placeholder }) => (
-
-
-
- setNewCustomerForm((prev: any) => ({ ...prev, [key]: e.target.value }))
- }
- placeholder={placeholder}
- className="bg-white/5 border-white/10 text-white placeholder:text-slate-500"
- />
-
- ))}
-
+ {/* ─── 2. CUSTOMER WRAPPER ─── */}
+
+ {/* Modus-Toggle: Bestandskunde vs. Neuer Kunde */}
+
+
+
+ {/* ─── 2. CUSTOMER SELECTION ─── */}
+ {customerMode === 'select' && (
+
+
+
+
+
+ {isAdmin && selectedCompanyId && selectedCompanyId !== 'all'
+ ? `Endkunden für den Partner "${companies.find((c) => c.id === selectedCompanyId)?.name || selectedCompanyId}"`
+ : 'Alle verfügbaren Endkunden'}
+
+
+
+
+ {customersByCompany.length === 0 ? (
+
+
+
+ {isAdmin && selectedCompanyId && selectedCompanyId !== 'all'
+ ? 'Keine Endkunden für den ausgewählten Partner vorhanden.'
+ : 'Noch keine Endkunden vorhanden.'}
+
+
+
+ ) : (
+
+ {/* Customer Header Controls: Search & Page Size */}
+
+
+
+ setSearchTerm(e.target.value)}
+ className="pl-9 bg-white/5 border-white/10 text-white placeholder:text-slate-500 text-sm h-9"
+ />
+
+
+ {/* Page Size Selector */}
+
+ Kunden pro Seite:
+
+
+
+
+ {filteredCustomers.length === 0 ? (
+
+ Keine passenden Kunden gefunden.
+
+ ) : (
+ <>
+ {/* Customer Card List */}
+
+ {paginatedCustomers.map((customer) => {
+ const isSelected = selectedEndCustomerId === customer.id
+
+ return (
+
handleSelectCustomer(customer)}
+ className={`flex items-start p-3.5 rounded-xl border-2 cursor-pointer transition-all select-none ${
+ isSelected
+ ? 'border-primary bg-primary/10 shadow-lg shadow-primary/5'
+ : 'border-white/5 bg-white/5 hover:bg-white/10'
+ }`}
+ >
+
handleSelectCustomer(customer)}
+ className="sr-only"
+ />
+
+
+
{customer.company_name}
+ {isAdmin && customer.partner_id && (
+
+ Partner: {companies.find((co) => co.id === customer.partner_id)?.name || customer.partner_id}
+
+ )}
+
+
+ {[customer.first_name, customer.last_name].filter(Boolean).join(' ')}
+ {customer.first_name || customer.last_name ? ' · ' : ''}
+ {[customer.street, customer.zip, customer.city].filter(Boolean).join(', ')}
+
+
+ {isSelected &&
}
+
+ );
+ })}
+
+
+ {/* Customer Pagination Footer */}
+
+
+ Zeige {totalCustomerCount === 0 ? 0 : (currentPage - 1) * pageSize + 1} bis{' '}
+ {Math.min(currentPage * pageSize, totalCustomerCount)} von {totalCustomerCount} Kunden
+
+
+
+
+
+
+
+ Seite {currentPage} von {totalCustomerPages}
+
+
+
+
+
+
+ >
+ )}
+
+ )}
+
+ )}
+
+ {/* ─── MODUS B: NEUEN KUNDEN ANLEGEN ─── */}
+ {customerMode === 'create' && (
+
+ {(
+ [
+ { label: 'Firmenname *', key: 'company_name', span: true, placeholder: 'GmbH / Einzelunternehmen' },
+ { label: 'USt-IdNr.', key: 'vat_id', span: false, placeholder: 'DE123456789' },
+ { label: 'Vorname', key: 'first_name', span: false, placeholder: '' },
+ { label: 'Nachname', key: 'last_name', span: false, placeholder: '' },
+ { label: 'Straße & Hausnummer', key: 'street', span: true, placeholder: '' },
+ { label: 'PLZ', key: 'zip', span: false, placeholder: '' },
+ { label: 'Ort', key: 'city', span: false, placeholder: '' },
+ { label: 'Kontoinhaber', key: 'bank_owner', span: false, placeholder: 'Max Mustermann' },
+ { label: 'IBAN', key: 'bank_iban', span: false, placeholder: 'DE89370400440532013000' },
+ { label: 'BIC', key: 'bank_bic', span: false, placeholder: 'SOLADE21XXX' },
+ { label: 'Bankname', key: 'bank_name', span: false, placeholder: 'Musterbank' },
+ ] as const
+ ).map(({ label, key, span, placeholder }) => (
+
+
+
+ setNewCustomerForm((prev: any) => ({ ...prev, [key]: e.target.value }))
+ }
+ placeholder={placeholder}
+ className="bg-white/5 border-white/10 text-white placeholder:text-slate-500"
+ />
+
+ ))}
+
+
+
+
+
+ )}
+
- )}
+