Fix Folgevertrag aus deaktiviertem Vertrag + Kundendaten-Modal erweitern
1) Folgevertrag-Bug: Backend legt den Folgevertrag korrekt mit previousContractId an. Der Verlust passierte im Frontend - das Vorgaenger-Dropdown holt Vertraege ueber getAll, das DEACTIVATED standardmaessig ausblendet. Beim Bearbeiten des Folgevertrags war der deaktivierte Vorgaenger nicht als Option da -> Verknuepfung ging beim Speichern verloren. Fix: getAllContracts + Controller + contractApi.getAll um includeDeactivated erweitert; Vorgaenger-Dropdown nutzt es und markiert deaktivierte Vertraege mit '· deaktiviert'. Verifiziert (Flag inkludiert deaktivierte; Folgevertrag setzt previousContractId). 2) Kundendaten-Modal: zeigt jetzt zusaetzlich Lieferadresse + (falls abweichend) Rechnungsadresse des geoeffneten Vertrags, die Stressfrei- Adresse des Vertrags einzeln und darunter alle weiteren Stressfrei- Adressen des Kunden. CustomerInfoModal nimmt optionale Vertragskontext- Props; ContractDetail + ContractForm uebergeben sie. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -119,6 +119,7 @@ export async function getContracts(req: AuthRequest, res: Response): Promise<voi
|
||||
search: search as string,
|
||||
page: page ? parseInt(page as string) : undefined,
|
||||
limit: limit ? parseInt(limit as string) : undefined,
|
||||
includeDeactivated: includeDeactivated === 'true',
|
||||
});
|
||||
// Portal-User bekommen die Strict-Variante (ohne commission/notes/
|
||||
// nextReviewDate/portalPasswordEncrypted), Mitarbeiter die normale.
|
||||
|
||||
@@ -12,10 +12,11 @@ export interface ContractFilters {
|
||||
search?: string;
|
||||
page?: number;
|
||||
limit?: number;
|
||||
includeDeactivated?: boolean; // wenn true: auch DEACTIVATED-Verträge listen
|
||||
}
|
||||
|
||||
export async function getAllContracts(filters: ContractFilters) {
|
||||
const { customerId, customerIds, type, status, search, page = 1, limit = 20 } = filters;
|
||||
const { customerId, customerIds, type, status, search, page = 1, limit = 20, includeDeactivated = false } = filters;
|
||||
const { skip, take } = paginate(page, limit);
|
||||
|
||||
const where: Record<string, unknown> = {};
|
||||
@@ -28,11 +29,13 @@ export async function getAllContracts(filters: ContractFilters) {
|
||||
}
|
||||
if (type) where.type = type;
|
||||
|
||||
// Status-Filter: Deaktivierte Verträge standardmäßig ausblenden
|
||||
// Status-Filter: Deaktivierte Verträge standardmäßig ausblenden – außer
|
||||
// ein expliziter Status ist gesetzt oder includeDeactivated=true (z.B. für
|
||||
// das Vorgängervertrag-Dropdown, das auch deaktivierte Verträge als
|
||||
// Vorgänger zulassen muss).
|
||||
if (status) {
|
||||
where.status = status;
|
||||
} else {
|
||||
// Wenn kein Status-Filter gesetzt, alle außer DEACTIVATED anzeigen
|
||||
} else if (!includeDeactivated) {
|
||||
where.status = { not: ContractStatus.DEACTIVATED };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user