Migración del frontend localStorage a backend autenticado bajo Donna. * SQL 004: tramites_legales (todos los campos por dept en columnas nullable + ENUMs Sí/No), tramites_obs (bitácora N:1), tramites_hours (registro de horas N:1), tramites_seq (contador por departamento). IDs server-side tipo ADM-001 / CRP-001 / MIG-001 / LIT-001 con SELECT FOR UPDATE para atomicidad. * public/tramites/api.php: list/create/update/delete + set_status + add_obs + add_hours. Valida departamento y estatus contra los enums del frontend. Audita creado_por / actualizado_por con el email autenticado. * views/tramites.html: artifact original adaptado. Quitado backup/restore localStorage (mysqldump diario ya hace ese trabajo). Cada mutación va vía fetch con manejo de 401 → redirect a login. Mapeo id<->codigo para preservar el contrato del artifact. * Apps.php: la card "Gestión de Casos" placeholder se reemplaza por "Control de Trámites Legales" en estado live.
87 lines
3.7 KiB
SQL
87 lines
3.7 KiB
SQL
-- ============================================================
|
|
-- Donna — Schema 004: Control de Trámites Legales
|
|
-- ============================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS tramites_legales (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
codigo VARCHAR(20) NOT NULL UNIQUE,
|
|
departamento ENUM('adm','corp','mig','lit') NOT NULL,
|
|
|
|
-- Comunes
|
|
cliente VARCHAR(255) NOT NULL DEFAULT '',
|
|
abogado VARCHAR(100) NOT NULL DEFAULT '',
|
|
estatus VARCHAR(50) NOT NULL DEFAULT 'Solicitado',
|
|
instrucciones TEXT NOT NULL,
|
|
fecha_solicitud DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
-- adm + corp
|
|
nombre VARCHAR(255) NOT NULL DEFAULT '',
|
|
-- adm
|
|
institucion VARCHAR(255) NOT NULL DEFAULT '',
|
|
-- corp
|
|
tipo_documento VARCHAR(255) NOT NULL DEFAULT '',
|
|
-- mig
|
|
tipo_tramite VARCHAR(255) NOT NULL DEFAULT '',
|
|
doc_completa ENUM('Sí','No') NULL,
|
|
permiso_trabajo ENUM('Sí','No') NULL,
|
|
dependientes ENUM('Sí','No') NULL,
|
|
fecha_vencimiento DATE NULL,
|
|
-- lit
|
|
esfera ENUM('Civil','Penal') NULL,
|
|
instancia ENUM('Primera','Segunda','CSJ') NULL,
|
|
circuito VARCHAR(100) NOT NULL DEFAULT '',
|
|
juzgado VARCHAR(255) NOT NULL DEFAULT '',
|
|
tipo_proceso VARCHAR(255) NOT NULL DEFAULT '',
|
|
incidentes ENUM('Sí','No') NULL,
|
|
amparo ENUM('Sí','No') NULL,
|
|
fecha_termino DATE NULL,
|
|
|
|
-- Auditoría
|
|
creado_por VARCHAR(255) NOT NULL DEFAULT '',
|
|
actualizado_por VARCHAR(255) NOT NULL DEFAULT '',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
INDEX idx_dept (departamento),
|
|
INDEX idx_estatus (estatus),
|
|
INDEX idx_abogado (abogado),
|
|
INDEX idx_cliente (cliente),
|
|
INDEX idx_fecha (fecha_solicitud DESC)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS tramites_obs (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
tramite_id INT NOT NULL,
|
|
texto TEXT NOT NULL,
|
|
abogado VARCHAR(100) NOT NULL DEFAULT '',
|
|
autor_email VARCHAR(255) NOT NULL DEFAULT '',
|
|
fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_tramite (tramite_id),
|
|
INDEX idx_fecha (fecha DESC),
|
|
CONSTRAINT fk_tramites_obs FOREIGN KEY (tramite_id)
|
|
REFERENCES tramites_legales(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS tramites_hours (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
tramite_id INT NOT NULL,
|
|
abogado VARCHAR(100) NOT NULL DEFAULT '',
|
|
hrs DECIMAL(6,2) NOT NULL DEFAULT 0,
|
|
descripcion VARCHAR(500) NOT NULL DEFAULT '',
|
|
autor_email VARCHAR(255) NOT NULL DEFAULT '',
|
|
fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_tramite (tramite_id),
|
|
INDEX idx_fecha (fecha DESC),
|
|
CONSTRAINT fk_tramites_hours FOREIGN KEY (tramite_id)
|
|
REFERENCES tramites_legales(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Contador para generar códigos ADM-001 / CRP-001 / MIG-001 / LIT-001
|
|
CREATE TABLE IF NOT EXISTS tramites_seq (
|
|
departamento VARCHAR(10) PRIMARY KEY,
|
|
next_seq INT NOT NULL DEFAULT 1
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
INSERT IGNORE INTO tramites_seq (departamento, next_seq) VALUES
|
|
('adm', 1), ('corp', 1), ('mig', 1), ('lit', 1);
|