feat(registratura): smart defaults per direction, new doc types, expanded cerere templates
- Default doc type: aviz (intrat) / cerere (iesit); auto-switches on direction toggle - New default doc types: Proces verbal, Notificare, Comunicare (with full seed templates) - Cerere templates rewritten: emiterea CU/AC, prelungirea valabilitatii, completare documentatie, indreptarea erorilor materiale, inaintare dispozitie de santier, eliberarea certificatului, aviz, racordare - Aviz label renamed to "Aviz / Act administrativ" - Scrisoare label renamed to "Scrisoare / Adresa", raport to "Raport / Studiu" - Moved PV/notificare/comunicare templates from scrisoare/altele to their own types - Cleaned up duplicate templates across categories Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -153,9 +153,8 @@ export function RegistryEntryForm({
|
||||
const [direction, setDirection] = useState<RegistryDirection>(
|
||||
initial?.direction ?? "intrat",
|
||||
);
|
||||
const [documentType, setDocumentType] = useState<DocumentType>(
|
||||
initial?.documentType ?? "scrisoare",
|
||||
);
|
||||
const defaultDocType = initial?.documentType ?? (direction === "intrat" ? "aviz" : "cerere");
|
||||
const [documentType, setDocumentType] = useState<DocumentType>(defaultDocType);
|
||||
const [customDocType, setCustomDocType] = useState("");
|
||||
const [subject, setSubject] = useState(initial?.subject ?? "");
|
||||
const [subjectQuery, setSubjectQuery] = useState(initial?.subject ?? "");
|
||||
@@ -623,7 +622,11 @@ export function RegistryEntryForm({
|
||||
<div className="mt-1 flex rounded-lg border bg-muted/30 p-1">
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setDirection("intrat")}
|
||||
onClick={() => {
|
||||
setDirection("intrat");
|
||||
// Auto-switch doc type if user hasn't customized it
|
||||
if (documentType === "cerere") setDocumentType("aviz");
|
||||
}}
|
||||
className={cn(
|
||||
"flex flex-1 items-center justify-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-all",
|
||||
direction === "intrat"
|
||||
@@ -636,7 +639,11 @@ export function RegistryEntryForm({
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setDirection("iesit")}
|
||||
onClick={() => {
|
||||
setDirection("iesit");
|
||||
// Auto-switch doc type if user hasn't customized it
|
||||
if (documentType === "aviz") setDocumentType("cerere");
|
||||
}}
|
||||
className={cn(
|
||||
"flex flex-1 items-center justify-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-all",
|
||||
direction === "iesit"
|
||||
|
||||
@@ -240,12 +240,20 @@ function fieldWidth(ft: TemplateFieldType): string {
|
||||
|
||||
const SEED_TEMPLATES: Record<string, SubjectTemplate[]> = {
|
||||
cerere: [
|
||||
// Cereri trimise (iesit)
|
||||
seedTemplate("Cerere CU nr. {nr}/{an} — {proiect}", "Cerere CU nr. 123/2026 — Farmacie Str. Exemplu"),
|
||||
seedTemplate("Cerere AC nr. {nr}/{an} — {proiect}", "Cerere AC nr. 456/2026 — Locuinta P+1E"),
|
||||
seedTemplate("Cerere prelungire CU nr. {nr}/{an} — {proiect}", "Cerere prelungire CU nr. 78/2026 — Bloc D4"),
|
||||
seedTemplate("Cerere prelungire AC nr. {nr}/{an} — {proiect}", "Cerere prelungire AC nr. 90/2026 — Hala industriala"),
|
||||
seedTemplate("Cerere completari nr. {nr}/{an} — {proiect}", "Cerere completari nr. 33/2026 — Bloc rezidential"),
|
||||
// Cereri emitere acte
|
||||
seedTemplate("Cerere pentru emiterea CU — {proiect}", "Cerere pentru emiterea CU — Farmacie Str. Exemplu"),
|
||||
seedTemplate("Cerere pentru emiterea AC — {proiect}", "Cerere pentru emiterea AC — Locuinta P+1E"),
|
||||
seedTemplate("Cerere pentru eliberarea certificatului de {detalii} — {proiect}", "Cerere pentru eliberarea certificatului de urbanism — Bloc rezidential"),
|
||||
// Cereri prelungire
|
||||
seedTemplate("Cerere pentru prelungirea valabilitatii CU nr. {nr}/{an} — {proiect}", "Cerere pentru prelungirea valabilitatii CU nr. 78/2026 — Bloc D4"),
|
||||
seedTemplate("Cerere pentru prelungirea valabilitatii AC nr. {nr}/{an} — {proiect}", "Cerere pentru prelungirea valabilitatii AC nr. 90/2026 — Hala industriala"),
|
||||
// Cereri completari / corectii
|
||||
seedTemplate("Cerere completare documentatie nr. {nr}/{an} — {proiect}", "Cerere completare documentatie nr. 33/2026 — Bloc rezidential"),
|
||||
seedTemplate("Cerere pentru indreptarea erorilor materiale — {proiect}", "Cerere pentru indreptarea erorilor materiale — Cladire birouri"),
|
||||
// Cereri diverse
|
||||
seedTemplate("Cerere inaintare dispozitie de santier — {proiect}", "Cerere inaintare dispozitie de santier — Locuinta P+1E"),
|
||||
seedTemplate("Cerere aviz {detalii} — {proiect}", "Cerere aviz ISU — Gradinita nr. 3"),
|
||||
seedTemplate("Cerere racordare {detalii} — {proiect}", "Cerere racordare gaz — Bloc rezidential"),
|
||||
],
|
||||
aviz: [
|
||||
// Acte administrative primite (intrat)
|
||||
@@ -283,13 +291,11 @@ const SEED_TEMPLATES: Record<string, SubjectTemplate[]> = {
|
||||
],
|
||||
scrisoare: [
|
||||
seedTemplate("Adresa nr. {nr}/{an} — {detalii}", "Adresa nr. 45/2026 — Raspuns solicitare informatii"),
|
||||
seedTemplate("Comunicare {detalii} — {proiect}", "Comunicare rezultat analiza — Bloc rezidential"),
|
||||
seedTemplate("Comunicare nr. {nr}/{an} — {proiect}", "Comunicare nr. 18/2026 — Farmacie Str. Exemplu"),
|
||||
seedTemplate("Notificare {detalii} — {proiect}", "Notificare incepere lucrari — Locuinta P+1E"),
|
||||
seedTemplate("Adresa {detalii} — {proiect}", "Adresa raspuns completari — Bloc rezidential"),
|
||||
seedTemplate("Adeverinta {detalii} nr. {nr}/{an}", "Adeverinta stagiu practica nr. 3/2026"),
|
||||
seedTemplate("Raspuns completari nr. {nr}/{an} — {proiect}", "Raspuns completari nr. 33/2026 — Bloc rezidential"),
|
||||
seedTemplate("Instiintare {detalii} — {proiect}", "Instiintare incepere executie — Locuinta P+1E"),
|
||||
seedTemplate("Somatie {detalii} — {proiect}", "Somatie plata factura — Cladire birouri"),
|
||||
seedTemplate("Invitatie {detalii} — {proiect}", "Invitatie sedinta receptie — Cladire birouri"),
|
||||
],
|
||||
"nota-de-comanda": [
|
||||
seedTemplate("Nota de comanda nr. {nr}/{an} — {proiect}", "Nota de comanda nr. 7/2026 — Instalatii electrice"),
|
||||
@@ -307,6 +313,29 @@ const SEED_TEMPLATES: Record<string, SubjectTemplate[]> = {
|
||||
seedTemplate("Audit energetic nr. {nr}/{an} — {proiect}", "Audit energetic nr. 4/2026 — Bloc C3"),
|
||||
seedTemplate("Caiet de sarcini — {proiect}", "Caiet de sarcini — Instalatii electrice"),
|
||||
],
|
||||
"proces-verbal": [
|
||||
seedTemplate("PV receptie nr. {nr}/{an} — {proiect}", "PV receptie nr. 5/2026 — Cladire birouri"),
|
||||
seedTemplate("PV receptie la terminarea lucrarilor nr. {nr}/{an} — {proiect}", "PV receptie la terminarea lucrarilor nr. 2/2026 — Bloc D4"),
|
||||
seedTemplate("PV receptie finala nr. {nr}/{an} — {proiect}", "PV receptie finala nr. 1/2026 — Hala logistica"),
|
||||
seedTemplate("Proces verbal {detalii} nr. {nr}/{an} — {proiect}", "Proces verbal inspectie santier nr. 3/2026 — Bloc rezidential"),
|
||||
seedTemplate("PV predare documentatie — {proiect}", "PV predare documentatie — Locuinta P+1E"),
|
||||
seedTemplate("PV constatare {detalii} — {proiect}", "PV constatare neconformitati — Cladire birouri"),
|
||||
],
|
||||
notificare: [
|
||||
seedTemplate("Notificare incepere lucrari — {proiect}", "Notificare incepere lucrari — Locuinta P+1E"),
|
||||
seedTemplate("Notificare finalizare lucrari — {proiect}", "Notificare finalizare lucrari — Bloc rezidential"),
|
||||
seedTemplate("Notificare {detalii} — {proiect}", "Notificare reluare lucrari — Hala industriala"),
|
||||
seedTemplate("Notificare nr. {nr}/{an} — {proiect}", "Notificare nr. 7/2026 — Cladire birouri"),
|
||||
seedTemplate("Instiintare {detalii} — {proiect}", "Instiintare incepere executie — Bloc D4"),
|
||||
seedTemplate("Instiintare ISC — {proiect}", "Instiintare ISC — Gradinita nr. 3"),
|
||||
],
|
||||
comunicare: [
|
||||
seedTemplate("Comunicare {detalii} — {proiect}", "Comunicare rezultat analiza — Bloc rezidential"),
|
||||
seedTemplate("Comunicare nr. {nr}/{an} — {proiect}", "Comunicare nr. 18/2026 — Farmacie Str. Exemplu"),
|
||||
seedTemplate("Comunicare completari necesare — {proiect}", "Comunicare completari necesare — Locuinta P+1E"),
|
||||
seedTemplate("Comunicare respingere cerere — {proiect}", "Comunicare respingere cerere — Hala industriala"),
|
||||
seedTemplate("Comunicare {detalii} nr. {nr}/{an}", "Comunicare programare nr. 5/2026"),
|
||||
],
|
||||
"apel-telefonic": [
|
||||
seedTemplate("Convorbire {detalii} — {proiect}", "Convorbire primarie avize — Bloc D4"),
|
||||
seedTemplate("Apel {detalii} — {proiect}", "Apel ISU programare — Gradinita nr. 3"),
|
||||
@@ -317,8 +346,6 @@ const SEED_TEMPLATES: Record<string, SubjectTemplate[]> = {
|
||||
],
|
||||
altele: [
|
||||
seedTemplate("Documentatie {detalii} — {proiect}", "Documentatie PAC+DDE — Locuinta P+M"),
|
||||
seedTemplate("PV receptie nr. {nr}/{an} — {proiect}", "PV receptie nr. 5/2026 — Cladire birouri"),
|
||||
seedTemplate("Proces verbal nr. {nr}/{an} — {proiect}", "Proces verbal nr. 3/2026 — Inspectie santier"),
|
||||
seedTemplate("Referat verificare nr. {nr}/{an} — {proiect}", "Referat verificare nr. 11/2026 — Locuinta P+1E"),
|
||||
seedTemplate("Memoriu tehnic — {proiect}", "Memoriu tehnic — Hala industriala"),
|
||||
seedTemplate("Decizie {detalii} nr. {nr}/{an}", "Decizie etapizare nr. 2/2026"),
|
||||
@@ -334,8 +361,8 @@ const SEED_TEMPLATES: Record<string, SubjectTemplate[]> = {
|
||||
|
||||
const SUBJECT_PLACEHOLDERS_MAP: Record<string, Record<string, string>> = {
|
||||
cerere: {
|
||||
intrat: "ex: Cerere completari nr. 33/2026 — Proiect X",
|
||||
iesit: "ex: Cerere CU nr. 123/2026 — Proiect X",
|
||||
intrat: "ex: Cerere completare documentatie — Proiect X",
|
||||
iesit: "ex: Cerere pentru emiterea CU — Proiect X",
|
||||
},
|
||||
aviz: {
|
||||
intrat: "ex: CU nr. 312/2026 — Proiect X",
|
||||
@@ -355,7 +382,7 @@ const SUBJECT_PLACEHOLDERS_MAP: Record<string, Record<string, string>> = {
|
||||
},
|
||||
scrisoare: {
|
||||
intrat: "ex: Adresa nr. 45/2026 — Raspuns informatii",
|
||||
iesit: "ex: Notificare incepere lucrari — Proiect X",
|
||||
iesit: "ex: Adresa raspuns completari — Proiect X",
|
||||
},
|
||||
"nota-de-comanda": {
|
||||
intrat: "ex: Nota de comanda nr. 7/2026 — Proiect X",
|
||||
@@ -365,6 +392,18 @@ const SUBJECT_PLACEHOLDERS_MAP: Record<string, Record<string, string>> = {
|
||||
intrat: "ex: Expertiza tehnica nr. 7/2026 — Proiect X",
|
||||
iesit: "ex: Raport nr. 3/2026 — Proiect X",
|
||||
},
|
||||
"proces-verbal": {
|
||||
intrat: "ex: PV receptie nr. 5/2026 — Proiect X",
|
||||
iesit: "ex: PV predare documentatie — Proiect X",
|
||||
},
|
||||
notificare: {
|
||||
intrat: "ex: Notificare finalizare lucrari — Proiect X",
|
||||
iesit: "ex: Notificare incepere lucrari — Proiect X",
|
||||
},
|
||||
comunicare: {
|
||||
intrat: "ex: Comunicare completari necesare — Proiect X",
|
||||
iesit: "ex: Comunicare nr. 18/2026 — Proiect X",
|
||||
},
|
||||
"apel-telefonic": {
|
||||
intrat: "ex: Apel primarie avize — Proiect X",
|
||||
iesit: "ex: Convorbire ISU programare — Proiect X",
|
||||
|
||||
@@ -31,6 +31,9 @@ export const DEFAULT_DOCUMENT_TYPES = [
|
||||
"nota-de-comanda",
|
||||
"raport",
|
||||
"cerere",
|
||||
"proces-verbal",
|
||||
"notificare",
|
||||
"comunicare",
|
||||
"apel-telefonic",
|
||||
"videoconferinta",
|
||||
"altele",
|
||||
@@ -42,15 +45,18 @@ export type DocumentType = (typeof DEFAULT_DOCUMENT_TYPES)[number] | string;
|
||||
/** Labels for default document types */
|
||||
export const DEFAULT_DOC_TYPE_LABELS: Record<string, string> = {
|
||||
contract: "Contract",
|
||||
oferta: "Ofertă",
|
||||
factura: "Factură",
|
||||
scrisoare: "Scrisoare",
|
||||
aviz: "Aviz",
|
||||
"nota-de-comanda": "Notă de comandă",
|
||||
raport: "Raport",
|
||||
oferta: "Oferta",
|
||||
factura: "Factura",
|
||||
scrisoare: "Scrisoare / Adresa",
|
||||
aviz: "Aviz / Act administrativ",
|
||||
"nota-de-comanda": "Nota de comanda",
|
||||
raport: "Raport / Studiu",
|
||||
cerere: "Cerere",
|
||||
"proces-verbal": "Proces verbal",
|
||||
notificare: "Notificare",
|
||||
comunicare: "Comunicare",
|
||||
"apel-telefonic": "Apel telefonic",
|
||||
videoconferinta: "Videoconferință",
|
||||
videoconferinta: "Videoconferinta",
|
||||
altele: "Altele",
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user