Versión  0.91 (Sep.2006)

* Reporte consolidado incluye presuntos responsables.
* Nueva categoria en marco teórico del Banco de Datos (desde ./psql.sh):
INSERT INTO categoria (id, fecha_creacion, fecha_deshabilitacion, id_supracategoria, id_tipo_violencia, col_rep_consolidado, nombre) VALUES (910, '2006-07-12', NULL, 1, 'C', NULL, 'ENFRENTAMIENTO - INTERNO');

* Cambios a la base de datos. Hagálos desde ./psql.sh
ALTER TABLE filiacion ADD COLUMN nomt VARCHAR(100);
UPDATE filiacion SET nomt=CAST(trim(nombre) AS VARCHAR(100));
ALTER TABLE filiacion DROP COLUMN nombre;
ALTER TABLE filiacion RENAME COLUMN nomt TO nombre;
UPDATE TABLE municipio SET nombre='BOGOTÁ' WHERE id='1' AND
	id_departamento='11';
ALTER TABLE parametros_reporte_consolidado RENAME no_columuna TO no_columna;
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (1, 'MUERTOS', 'DH', 'VIDA');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (2, 'MUERTOS', 'DIH', 'VIDA');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (3, 'MUERTOS', 'VP', 'VIDA');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (4, 'TORTURA', 'DH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (5, 'HERIDOS', 'DH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (6, 'ATENTADOS', 'DH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (7, 'AMENAZAS', 'DH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (8, 'VIOLENCIA SEXUAL', 'DH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (9, 'TORTURA', 'DIH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (10, 'HERIDOS', 'DIH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (11, 'AMENAZAS', 'DIH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (12, 'VIOLENCIA SEXUAL', 'DIH', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (13, 'TORTURA', 'VP', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (14, 'HERIDOS', 'VP', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (15, 'ATENTADOS', 'VP', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (16, 'AMENAZAS', 'VP', 'INTEGRIDAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (17, 'DESAPARICION', 'DH', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (18, 'DETENCION ARBITRARIA', 'DH', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (19, 'DEPORTACION', 'DH', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (20, 'TOMA DE REHENES', 'DIH', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (21, 'RECLUTAMIENTO DE MENORES', 'DIH', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (22, 'ESCUDO', 'DIH', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (23, 'DESPARICION', 'VP', 'LIBERTAD');
INSERT INTO parametros_reporte_consolidado (no_columna, rotulo, tipo_violencia, clasificacion) VALUES (24, 'SECUESTRO', 'VP', 'LIBERTAD');

ALTER table categoria RENAME col_rep_consolidad TO col_rep_consolidado;
UPDATE categoria SET col_rep_consolidado=NULL WHERE col_rep_consolidado='0';
ALTER table categoria ADD FOREIGN KEY (col_rep_consolidado) REFERENCES parametros_reporte_consolidado (no_columna);

* Consulta web puede tener un cabezote y un pie de página. Se configuran
  con las variables cabezote_consulta_web y pie_consulta_web en aut/conf.php
* Consulta web da opción de códigos sólo a usuarios autenticados.
* No requiere session.auto_start=1 en php.ini
* Copias de respaldo remotas con scp, llave pública y puede ser
  a varias máquinas (ver conrespaldo.sh.plantilla y respaldo.sh)
  --agradecimiento por sugerir requerimientos a wiroal.

Versión 0.9 (May.2006)
* Se requiere HTML_JavaScript >= 1.1.1
* Consulta externa ya no requiere solucionar bug en DB_Dataobject. El reporte
  HTML ahora si puede incluir fuentes frecuentes.
* Reporte consolidado puede generarse en LaTeX. Se deja acorde con
   N&N 32 y tomando parametros de BD:
UPDATE categoria SET col_rep_consolidad='1' WHERE id='20';
UPDATE categoria SET col_rep_consolidad=NULL WHERE id='101';
UPDATE categoria SET col_rep_consolidad='19' WHERE id='78';
UPDATE categoria SET col_rep_consolidad='20' WHERE id='75';
UPDATE categoria SET col_rep_consolidad='21' WHERE id='74';
UPDATE categoria SET col_rep_consolidad='22' WHERE id='48';
UPDATE categoria SET col_rep_consolidad='22' WHERE id='58';
UPDATE categoria SET col_rep_consolidad='23' WHERE id='41';
* Reporte consolidado permite especificar fecha máxima de ingreso a base
  (util para regenerar listados previos --excluyendo actualizaciones) los
  excluidos son listados en HTML solamente.
* Reporte consolidado permite agregar columna con resto de categorias no
  incluidas.
* Nombres de categorias:
ALTER TABLE categoria ADD COLUMN nomt VARCHAR(80);
UPDATE categoria SET nomt=CAST(trim(nombre) AS VARCHAR(80));
ALTER TABLE categoria DROP COLUMN nombre;
ALTER TABLE categoria RENAME COLUMN nomt TO nombre;
* Fallas corregidas en Reporte revista (incluye categorias sin víctima) y
  en reporte consolidado (municipios correctos y presentar mensaje de error 
  en caso de falla).
* Valida nombres de víctimas individuales no vacíos.
* Puede usarse ispell para chequear ortografía.  Agregue a aut/conf.php
  $GLOBALS['MENS_ORTOGRAFIA'] tomado de aut/conf.php.plantilla, rm confv.sh,
  ./conf.sh
* En consulta web checkbox retroalimentación.
* Diseño de Menú.
./psql.sh -c "UPDATE opcion SET descripcion='Administración' WHERE id_opcion='10';"
./psql.sh -c "UPDATE opcion SET descripcion='Caso' WHERE id_opcion='20';"
./psql.sh -c "UPDATE opcion SET descripcion='Consultas' WHERE id_opcion='30';"
./psql.sh -c "UPDATE opcion SET descripcion='Reportes' WHERE id_opcion='40';"
./psql.sh -c "UPDATE opcion SET descripcion='Estadísticas' WHERE id_opcion='50';"
./psql.sh -c "UPDATE opcion SET descripcion='Otros' WHERE id_opcion='60';"
./psql.sh -c "UPDATE opcion SET nomid=NULL WHERE id_opcion='60';"
./psql.sh -c "INSERT INTO opcion  (id_opcion, descripcion, id_mama, nomid) VALUES ('61', 'Salir', 60, 'terminar');"
 
Versión 0.8 (Ene.2006)

* Consulta externa.
* Validación de un caso al examir reporte general desde la ficha.
* Validación en subformularios: localización, fuente, pr. resp, victima.
* Reestructuración de formulario captura, cada página desciende bien
  de PagBaseSimple o bien de PagBaseMultiple.
* Falla en estadísticas por caso con presunto responsable corregida
* Sugerido aumentar tiempos en servidor web y php, sugerido usar 
  imagen encriptada para manetener base, ver Instala.txt
* Script actver.sh que actualiza base de datos, ejecutarlo después de
  actualizar fuentes.


Versión 0.7 (Oct.2005)
* Mejor especificado sexo cuando no hay información, ya no puede ser NULL.
ALTER TABLE victima DROP CONSTRAINT "victima_sexo";
UPDATE victima SET sexo = 'S' WHERE sexo IS NULL;
ALTER TABLE victima ADD CHECK (sexo='S' OR sexo='M' OR sexo='F');
ALTER TABLE victima ALTER COLUMN sexo SET NOT NULL;

ALTER TABLE combatiente DROP CONSTRAINT "combatiente_sexo";
UPDATE combatiente SET sexo = 'S' WHERE sexo IS NULL;
ALTER TABLE combatiente ADD CHECK (sexo='S' OR sexo='M' OR sexo='F');
ALTER TABLE combatiente ALTER COLUMN sexo SET NOT NULL;

* tipo_ubicacion e intervalo en caso

ALTER TABLE caso DROP CONSTRAINT "caso_tipo_ubicacion";
UPDATE caso SET tipo_ubicacion='S' WHERE tipo_ubicacion IS NULL;
UPDATE caso SET tipo_ubicacion='S' WHERE tipo_ubicacion='';
ALTER TABLE caso ADD CHECK (tipo_ubicacion='R' OR
                tipo_ubicacion='S' OR tipo_ubicacion='U' OR
                tipo_ubicacion='A');
ALTER TABLE caso ALTER COLUMN tipo_ubicacion SET NOT NULL;

UPDATE caso SET id_intervalo='5' WHERE id_intervalo IS NULL;
ALTER TABLE caso ALTER COLUMN id_intervalo SET NOT NULL;

* Bug con campos NULL en estructura.sql corregido:

ALTER TABLE combatiente DROP CONSTRAINT "combatiente_edad";
ALTER TABLE combatiente ADD CHECK (edad IS NULL OR edad>=0);
ALTER TABLE antecedente DROP CONSTRAINT "antecedente_fecha_deshabilitacion";
ALTER TABLE antecedente ADD CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion);
ALTER TABLE tipo_violencia DROP CONSTRAINT "tipo_violencia_fecha_deshabilitacion";
ALTER TABLE tipo_violencia CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion);
ALTER TABLE supracategoria DROP CONSTRAINT "supracategoria_fecha_deshabilitacion";
ALTER TABLE supracategoria ADD CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion);
ALTER TABLE categoria DROP CONSTRAINT "categoria_fecha_deshabilitacion";
ALTER TABLE categoria ADD CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion);
ALTER TABLE contexto DROP CONSTRAINT "contexto_fecha_deshabilitacion";
ALTER TABLE contexto ADD CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion);
ALTER TABLE presuntos_responsables DROP CONSTRAINT "presuntos_responsables_fecha_deshabilitacion";
ALTER TABLE presuntos_responsables ADD CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion);
ALTER TABLE victima DROP CONSTRAINT "victima_edad";
ALTER TABLE victima ADD CHECK (edad IS NULL OR (edad>='0' AND edad<='130'));
ALTER TABLE victima DROP CONSTRAINT "victima_hijos";
ALTER TABLE victima ADD CHECK (hijos IS NULL OR (hijos>='0' AND hijos<='100'));


* Estadística por casos.
* Homegeneizando categorias:
  UPDATE categoria SET nombre='ATENTADO' WHERE nombre='ATENTADOS';
* Reporte revista agrupa victimas, pr. responsables y categorias como en la
  revista.
* Consulta_web con varios códigos de caso los presenta en el mismo orden
  que el usuario emplee.
* Estadísticas por víctima separadas de las de combatiente:

./psql.sh -c "UPDATE opcion SET descripcion='Estadísticas V. Individuales' WHERE id_opcion='51';"
./psql.sh -c "INSERT INTO opcion VALUES ('52', 'Estadísticas V. Combatientes', 50, 'estadisticas_comb');"


Versión 0.6 (Ago.2005)

* Nuevo diseño de la ficha Caso  con base en generador de
  barras de progreso del paquete HTML_Progress de Pear.
* Cabezote, fondo (wiroal)
* Estadísticas por presunto resp, sexo, rango de edad y resultado agresión.
* Falla en buscar solucionada, podían cambiarse datos de un caso, si
  se ingresaba un código en el campo de buscar código en Basicos.
* Todos los reportes implementados.
UPDATE opcion SET nomid='consolidado' WHERE id_opcion='43';
ALTER TABLE opcion ADD COLUMN nomidt VARCHAR(150);
UPDATE opcion SET nomidt = CAST(trim(nomid) AS VARCHAR(150));
ALTER TABLE opcion DROP COLUMN nomid;
ALTER TABLE opcion RENAME COLUMN nomidt TO nomid;

UPDATE opcion SET nomid='consulta_web?mostrar=revista&sincampos=caso_id' WHERE id_opcion='41';
UPDATE opcion SET nomid='consulta_web?mostrar=general' WHERE id_opcion='42';
UPDATE opcion SET nomid='consulta_web?mostrar=general&orden=localizacion' WHERE id_opcion='44';
UPDATE opcion SET nomid='consulta_web?mostrar=revista' WHERE id_opcion='45';
UPDATE opcion SET nomid='consulta_web?mostrar=revista&categoria=belicas&sincampos=caso_id' WHERE id_opcion='46';
UPDATE opcion SET nomid='consulta_web?mostrar=revista&categoria=belicas&sincampos=caso_id,m_victimas,m_presponsables,m_tipificacion,m_fuentes' WHERE id_opcion='47';
UPDATE opcion SET nomid='consulta_web?mostrar=revista&categoria=nobelicas&sincampos=caso_id' WHERE id_opcion='48';
UPDATE opcion SET nomid='consulta_web?mostrar=revista&categoria=nobelicas&sincampos=caso_id,m_victimas,m_presponsables,m_tipificacion,m_fuentes' WHERE id_opcion='49';
 

Versión 0.5 (Jul.2005)

* Autocompleta rango de edad cuando no se digita.  
  Valida edad y rango de edad en víctima combatiente.
* Botones para nueva víctima colectiva como copia y nueva víctima
  individual como copia.
* Tipos VARCHAR
BEGIN;
ALTER TABLE victima ADD COLUMN nombret VARCHAR(100);
UPDATE victima SET nombret = CAST(trim(nombre) AS VARCHAR(100));
ALTER TABLE victima DROP COLUMN nombre;
ALTER TABLE victima RENAME COLUMN nombret TO nombre;

ALTER TABLE victima_colectiva ADD COLUMN nombret VARCHAR(150);
UPDATE victima_colectiva SET nombret = CAST(trim(nombre) AS VARCHAR(150));
ALTER TABLE victima_colectiva DROP COLUMN nombre;
ALTER TABLE victima_colectiva RENAME COLUMN nombret TO nombre;

ALTER TABLE combatiente ADD COLUMN nombret VARCHAR(100);
ALTER TABLE combatiente ADD COLUMN aliast VARCHAR(100);
UPDATE combatiente SET nombret = CAST(trim(nombre) AS VARCHAR(100));
UPDATE combatiente SET aliast = CAST(trim(alias) AS VARCHAR(100));
ALTER TABLE combatiente DROP COLUMN nombre;
ALTER TABLE combatiente DROP COLUMN alias;
ALTER TABLE combatiente RENAME COLUMN nombret TO nombre;
ALTER TABLE combatiente RENAME COLUMN aliast TO alias;

COMMIT;
* Estadísticas
UPDATE opcion SET nomid='estadisticas' WHERE id_opcion='51';
* Nombres de fuentes
UPDATE prensa SET nombre='M - EL MUNDO' WHERE id='4';
UPDATE prensa SET nombre='VOZ - VOZ' WHERE id='17';
UPDATE prensa SET nombre='L7 - LLANO 7 DIAS' WHERE id='18';
UPDATE prensa SET nombre='LN - LA NACION' WHERE id='19';
UPDATE prensa SET nombre='FD - FUENTE DIRECTA' WHERE id='22';
UPDATE prensa SET nombre='CJ - CRONICA JUDICIAL' WHERE id='24';
UPDATE prensa SET nombre='VLB - VANGUARDIA LIBERAL BARRANCA' WHERE id='13';
UPDATE prensa SET nombre='DS - DIARIO DEL SUR' WHERE id='42';
UPDATE prensa SET nombre='ME - SU MERIDIANO DE SUCRE' WHERE id='43';
* Mejor perfil Consulta
DELETE FROM opcion_rol WHERE id_opcion='21' AND id_rol='4';
INSERT INTO opcion_rol VALUES ('42', '4');


Versión 0.4 (Jun.2005)

* Categorias sólo incluyen las del marco conceptual más reciente.
	DELETE FROM categoria WHERE fecha_deshabilitacion IS NOT NULL;
* Interfaz de captura de una ficha renovada
* Reporte revista consultable por analistas:
	INSERT INTO opcion_rol VALUES ('41', '2');
* Tablas actualizadas:
 DELETE FROM region WHERE id='1' OR id='2' OR id='3' OR id='4';
 INSERT INTO region VALUES (11, 'EXTERIOR');
 UPDATE contexto SET nombre='CULTIVOS DE USO ILICITO' WHERE id='14';
 INSERT INTO filiacion VALUES (14, 'FRENTE SOCIAL Y POLÍTICO');
 INSERT INTO sector_social VALUES (16, 'TRANSPORTADOR');
* Ahora los antecedentes de victimas, comunidades y combatientes no 
  tienen que ser antecedentes del caso.
* Integridad referencial entre categoria_comunidad y categoria_caso.
  Si hace actualización de se sugiere ejecutar:
  ALTER TABLE categoria_comunidad ADD FOREIGN KEY 
	(id_caso, id_tipo_violencia, id_supracategoria, id_categoria)     
	REFERENCES categoria_caso (id_caso, id_tipo_violencia, 
        id_supracategoria, id_categoria);
* Integridad referencial entre categoria_p_responsable_caso y categoria_caso.
  Si actualiza se sugiere ejecutar:
  ALTER TABLE categoria_p_responsable_caso ADD FOREIGN KEY 
	(id_caso, id_tipo_violencia, id_supracategoria, id_categoria)     
	REFERENCES categoria_caso (id_caso, id_tipo_violencia, 
        id_supracategoria, id_categoria);
* Integridad referencial entre categoria_personal y categoria_caso 
  (por el momento sólo en interfaz porque la estructura de la base
   no permite hacerlo a nivel de SQL --victima no debería tener campo
   id_caso).
* Integridad referencial en la interfaz entre presuntos responsables
  de agresiones a victimas, vic. colectivas o combatientes y 
  presuntos responsables del caso 
* A usuarios la consulta web les permite buscar por usuario y presentar
	en forma de reporte general o reporte revista.  Si actualiza ejecutar:
UPDATE opcion SET nomid='consulta_web' WHERE id_opcion='41' OR id_opcion='42';

* En resultados de Consulta Web (tabla) incluye victimas colectivas.
* Máximo de resultados de consulta web (tabla) configurable (si es 
	0 es ilimitado)
* Establecidos máximos en campos de texto (que evita un error no recuperable
   que ocurría cuando se sobrepasaba).
* Busqueda por nombre rápida.   Optimizadas consultas que hace al ingresar
  información de forma que ahora es más rápido.


Versión 0.3 (Abril 2005)

* Permite capturar información 
* Soporte preliminar para búsquedas
* Soporta reportes: general y revista.
