Files
donna/sql/004_tramites.sql
T
Soporte ZH Consultores 1bb63f12f6 feat(tramites): app "Control de Trámites Legales" + backend
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.
2026-05-11 20:03:28 +00:00

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);