diff --git a/src/modules/registratura/services/deadline-catalog.ts b/src/modules/registratura/services/deadline-catalog.ts index 7ad7f87..fb0ef79 100644 --- a/src/modules/registratura/services/deadline-catalog.ts +++ b/src/modules/registratura/services/deadline-catalog.ts @@ -510,13 +510,31 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [ }, // ═══════════════════════════════════════════════════════════════ - // URBANISM (PUD/PUZ/PUG) — renamed from "Analiza" + // URBANISM (PUD/PUZ/PUG) — nu se aplica acordul tacit // ═══════════════════════════════════════════════════════════════ { - id: "ctatu-analiza", - label: "Analiza CTATU", + id: "retele-furnizare-date", + label: "Furnizare date detinatori retele", description: - "Termen de analiza in Comisia Tehnica de Amenajare a Teritoriului si Urbanism.", + "Detinatorii de retele tehnico-edilitare furnizeaza gratuit datele solicitate de autoritate, in 15 zile de la solicitare. Aplicabil doar proiectelor cu autoritati publice.", + days: 15, + dayType: "calendar", + startDateLabel: "Data solicitarii de la autoritate", + requiresCustomStartDate: true, + startDateHint: + "Data la care autoritatea a solicitat datele de la detinatorii de retele", + tacitApprovalApplicable: false, + category: "urbanism", + legalReference: "Legea 350/2001", + directionFilter: ["iesit"], + }, + + // ── Aviz de oportunitate (PUZ privat) ── + { + id: "aviz-oportunitate-verificare", + label: "Aviz oportunitate — verificare / completare", + description: + "Autoritatea verifica documentatia si solicita completari in max. 30 de zile de la depunere. Daca nu solicita completari, documentatia intra in comisie.", days: 30, dayType: "calendar", startDateLabel: "Data depunerii", @@ -527,9 +545,10 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [ directionFilter: ["iesit"], }, { - id: "consiliu-promovare", - label: "Promovare Consiliu Local", - description: "Termen de promovare in sedinta Consiliului Local.", + id: "aviz-oportunitate-ctatu", + label: "Aviz oportunitate — convocare CTATU", + description: + "Documentatia trebuie introdusa in Comisia Tehnica (CTATU) in maximum 30 de zile de la depunere. Se inchide cu event de tip Convocare sedinta.", days: 30, dayType: "calendar", startDateLabel: "Data depunerii", @@ -538,17 +557,89 @@ export const DEADLINE_CATALOG: DeadlineTypeDef[] = [ category: "urbanism", legalReference: "Legea 350/2001", directionFilter: ["iesit"], + chainNextTypeId: "aviz-oportunitate-emitere", + chainNextActionLabel: + "Adauga termen emitere aviz oportunitate (15 zile cal.)", + }, + { + id: "aviz-oportunitate-emitere", + label: "Aviz oportunitate — emitere dupa comisie", + description: + "Se emite avizul de oportunitate in maximum 15 zile de la analiza favorabila in comisia tehnica CTATU.", + days: 15, + dayType: "calendar", + startDateLabel: "Data analizei in comisie", + requiresCustomStartDate: true, + startDateHint: + "Data la care comisia CTATU a analizat favorabil documentatia", + tacitApprovalApplicable: false, + category: "urbanism", + legalReference: "Legea 350/2001", + directionFilter: ["iesit"], + autoTrack: true, + }, + + // ── Aviz arhitect sef PUD/PUZ ── + { + id: "aviz-arh-sef-ctatu", + label: "Aviz arhitect sef — convocare CTATU", + description: + "Documentatia PUD/PUZ trebuie introdusa in Comisia Tehnica (CTATU) in maximum 30 de zile de la depunere. Se inchide cu event de tip Convocare sedinta.", + days: 30, + dayType: "calendar", + startDateLabel: "Data depunerii", + requiresCustomStartDate: false, + tacitApprovalApplicable: false, + category: "urbanism", + legalReference: "Legea 350/2001", + directionFilter: ["iesit"], + chainNextTypeId: "aviz-arh-sef-emitere", + chainNextActionLabel: "Adauga termen emitere aviz arh. sef (15 zile cal.)", + }, + { + id: "aviz-arh-sef-emitere", + label: "Aviz arhitect sef — emitere dupa comisie", + description: + "Se emite avizul arhitectului sef in maximum 15 zile de la analiza in comisia tehnica CTATU.", + days: 15, + dayType: "calendar", + startDateLabel: "Data analizei in comisie", + requiresCustomStartDate: true, + startDateHint: + "Data la care comisia CTATU a analizat documentatia PUD/PUZ", + tacitApprovalApplicable: false, + category: "urbanism", + legalReference: "Legea 350/2001", + directionFilter: ["iesit"], + autoTrack: true, + }, + + // ── Consiliul Local ── + { + id: "consiliu-promovare", + label: "Promovare Consiliu Local", + description: + "Primarul promoveaza documentatia completa si avizata catre Consiliul Local in maximum 30 de zile de la inregistrare.", + days: 30, + dayType: "calendar", + startDateLabel: "Data inregistrarii documentatiei complete", + requiresCustomStartDate: false, + tacitApprovalApplicable: false, + category: "urbanism", + legalReference: "Legea 350/2001", + directionFilter: ["iesit"], }, { id: "consiliu-vot", label: "Vot Consiliu Local", description: - "Termen de vot in Consiliu Local de la finalizarea dezbaterii publice.", + "Consiliul Local emite hotararea (aprobare sau respingere) in maximum 45 de zile de la finalizarea dezbaterii publice si inaintarea rapoartelor.", days: 45, dayType: "calendar", - startDateLabel: "Data finalizare dezbatere", + startDateLabel: "Data finalizare dezbatere publica", requiresCustomStartDate: true, - startDateHint: "Data finalizarii dezbaterii publice", + startDateHint: + "Data finalizarii dezbaterii publice si inaintarii rapoartelor catre Consiliu", tacitApprovalApplicable: false, category: "urbanism", legalReference: "Legea 350/2001", @@ -710,22 +801,12 @@ export const CATEGORY_LABELS: Record = { contestatie: "Contestatie", }; -/** All permitting categories — shown for cerere/aviz doc types regardless of direction */ -const ALL_PERMITTING_CATEGORIES: DeadlineCategory[] = [ - "certificat", - "avize", - "urbanism", - "autorizare", - "completari", - "contestatie", -]; - -/** Restricted categories per direction (for non-permitting doc types) */ +/** Full categories available per direction (before doc type filtering) */ export const DIRECTION_CATEGORIES: Record< RegistryDirection, DeadlineCategory[] > = { - iesit: ["completari"], + iesit: ["certificat", "avize", "urbanism", "autorizare", "completari"], intrat: ["completari", "contestatie"], }; @@ -737,19 +818,21 @@ const FULL_DEADLINE_DOC_TYPES = new Set(["cerere", "aviz"]); /** * Get the ordered list of deadline categories for a given direction + document type. - * - "cerere" / "aviz" doc types → full permitting set (certificat, avize, urbanism, autorizare, completari, contestatie) - * - All other doc types (scrisoare, notificare, etc.) → direction-dependent limited set + * - iesit + cerere/aviz → full set (certificat, avize, urbanism, autorizare, completari) + * - intrat → completari + contestatie (always, regardless of doc type) + * - iesit + other doc types → only completari */ export function getCategoriesForDirection( direction: RegistryDirection, documentType?: string, ): DeadlineCategory[] { - // cerere / aviz unlock ALL permitting categories regardless of direction + const all = DIRECTION_CATEGORIES[direction]; + // If doc type triggers full permitting flow, show all categories for this direction if (!documentType || FULL_DEADLINE_DOC_TYPES.has(documentType)) { - return ALL_PERMITTING_CATEGORIES; + return all; } - // Other doc types get direction-specific limited categories - return DIRECTION_CATEGORIES[direction]; + // Otherwise, only completari + contestatie + return all.filter((c) => c === "completari" || c === "contestatie"); } /**