Kundenakte → Zähler: Checkbox "Zähler ohne Verträge anzeigen"

Standardmäßig werden nur Zähler angezeigt, die mindestens einem
Vertrag zugeordnet sind (entweder als Hauptzähler oder über die
Folgezähler-Kette). Mit der neuen Checkbox lassen sich auch
verwaiste Zähler ins Listing holen – nützlich beim Aufräumen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-30 14:50:24 +02:00
parent b4b0dbb004
commit 0d024b94c2
@@ -1296,7 +1296,17 @@ function MetersTab({
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['customer', customerId] }),
});
const filtered = showInactive ? meters : meters.filter((m) => m.isActive);
const [showWithoutContracts, setShowWithoutContracts] = useState(false);
// Liefert true, wenn der Zähler mindestens einem Vertrag zugeordnet ist
// (entweder als Hauptzähler oder über die Folgezähler-Kette).
const hasAnyContract = (m: Meter) =>
(m.energyDetails?.some((ed) => ed.contract) ?? false)
|| (m.contractMeters?.some((cm) => cm.energyContractDetails?.contract) ?? false);
const filtered = meters
.filter((m) => showInactive ? true : m.isActive)
.filter((m) => showWithoutContracts ? true : hasAnyContract(m));
// Sort readings by date (newest first)
const getSortedReadings = (readings: any[] | undefined) => {
@@ -1329,6 +1339,15 @@ function MetersTab({
/>
Inaktive anzeigen
</label>
<label className="flex items-center gap-2 text-sm">
<input
type="checkbox"
checked={showWithoutContracts}
onChange={(e) => setShowWithoutContracts(e.target.checked)}
className="rounded"
/>
Zähler ohne Verträge anzeigen
</label>
</div>
{canEdit && !hasDeliveryAddress && (
<div className="mb-4 p-3 bg-yellow-50 border border-yellow-200 rounded-lg text-sm text-yellow-800">