diff --git a/backend/src/services/contract.service.ts b/backend/src/services/contract.service.ts
index 9afbff3f..21c07ec9 100644
--- a/backend/src/services/contract.service.ts
+++ b/backend/src/services/contract.service.ts
@@ -102,6 +102,22 @@ export async function getAllContracts(filters: ContractFilters) {
simCards: { select: { phoneNumber: true, isMain: true } },
},
},
+ // 2026-07-04: für Vertragsauswahl-Labels brauchen wir überall
+ // die Zählernummer (Strom/Gas) und die erste Festnetznummer
+ // (Internet). Beides light-select, damit das Payload klein bleibt.
+ energyDetails: {
+ select: {
+ meter: { select: { id: true, meterNumber: true } },
+ },
+ },
+ internetDetails: {
+ select: {
+ phoneNumbers: {
+ select: { phoneNumber: true, isMain: true },
+ orderBy: { id: 'asc' },
+ },
+ },
+ },
carInsuranceDetails: { select: { licensePlate: true } },
},
}),
diff --git a/frontend/src/components/email/AssignToContractModal.tsx b/frontend/src/components/email/AssignToContractModal.tsx
index d56f7fb0..2344bcec 100644
--- a/frontend/src/components/email/AssignToContractModal.tsx
+++ b/frontend/src/components/email/AssignToContractModal.tsx
@@ -4,6 +4,7 @@ import Modal from '../ui/Modal';
import Button from '../ui/Button';
import { contractApi, cachedEmailApi, CachedEmail } from '../../services/api';
import { formatDate } from '../../utils/dateFormat';
+import { buildContractLabelParts } from '../../utils/contractLabel';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
interface AssignToContractModalProps {
@@ -147,6 +148,14 @@ export default function AssignToContractModal({
{contract.contractCategory?.name}
{contract.provider && ` - ${contract.provider.name}`}
+ {(() => {
+ const parts = buildContractLabelParts(contract);
+ return parts.extras.length > 0 ? (
+
+ {parts.extras.join(' · ')}
+
+ ) : null;
+ })()}
Start: {formatDateOrDash(contract.startDate)}
diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx
index 4f937733..8f89df43 100644
--- a/frontend/src/pages/Dashboard.tsx
+++ b/frontend/src/pages/Dashboard.tsx
@@ -3,6 +3,7 @@ import { useQuery, useQueryClient } from '@tanstack/react-query';
import { Link, useNavigate } from 'react-router-dom';
import { useAuth } from '../context/AuthContext';
import { customerApi, contractApi, contractTaskApi, appSettingsApi } from '../services/api';
+import { buildContractLabelParts } from '../utils/contractLabel';
import Card from '../components/ui/Card';
import Button from '../components/ui/Button';
import Input from '../components/ui/Input';
@@ -572,6 +573,14 @@ function CreateSupportTicketModal({
{contract.providerName || 'Kein Anbieter'}
{contract.tariffName && ` - ${contract.tariffName}`}
+ {(() => {
+ const parts = buildContractLabelParts(contract);
+ return parts.extras.length > 0 ? (
+
+ {parts.extras.join(' · ')}
+
+ ) : null;
+ })()}
))
) : (
diff --git a/frontend/src/pages/contracts/ContractForm.tsx b/frontend/src/pages/contracts/ContractForm.tsx
index 7da15343..8df2bf6a 100644
--- a/frontend/src/pages/contracts/ContractForm.tsx
+++ b/frontend/src/pages/contracts/ContractForm.tsx
@@ -11,6 +11,7 @@ import Input from '../../components/ui/Input';
import Select from '../../components/ui/Select';
import CopyButton from '../../components/ui/CopyButton';
import CustomerInfoModal from '../../components/contracts/CustomerInfoModal';
+import { buildContractLabelParts } from '../../utils/contractLabel';
import type { ContractType } from '../../types';
import { formatDate } from '../../utils/dateFormat';
import { useProviderSettings } from '../../hooks/useProviderSettings';
@@ -878,10 +879,15 @@ export default function ContractForm() {