Closed edwargl7 closed 1 month ago
Borrador de Script SQL
CREATE TABLE contrato_general (
id SERIAL PRIMARY KEY NOT NULL,
tipo_compromiso_id INTEGER,
tipo_contrato_id INTEGER,
perfil_contratista_id INTEGER,
fecha_suscripcion_estudios DATE,
aplica_poliza BOOLEAN,
ordenador_id INTEGER,
modalidad_seleccion_id INTEGER,
tipologia_especifica_id INTEGER,
regimen_contratacion_id INTEGER,
procedimiento_id INTEGER,
plazo_ejecucion INTEGER,
unidad_ejecutora_id INTEGER,
numero_constancia INTEGER,
clase_contratista_id INTEGER,
tipo_moneda_id INTEGER,
valor_pesos NUMERIC(16,2),
tipo_gasto_id INTEGER,
origen_recursos_id INTEGER,
origen_presupuestos_id INTEGER,
tema_gasto_inversion_id INTEGER,
valor_contrato_me NUMERIC(16,3),
valor_tasa_cambio NUMERIC(16,10),
medio_pogo_id INTEGER,
clausula_registro_presupuestal BOOLEAN,
modo_pago VARCHAR,
observaciones VARCHAR(500),
vigencia VARCHAR(4),
consecutivo_elaboracion VARCHAR(50),
fecha_inicial DATE,
fecha_final DATE,
usuario_legacy VARCHAR(15),
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL
);
CREATE TABLE documento_contrato (
id SERIAL PRIMARY KEY NOT NULL,
contrato_general_id INTEGER NOT NULL,
documento_id INTEGER,
activo BOOLEAN NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE estado_contrato (
id SERIAL PRIMARY KEY NOT NULL,
usuario_id INTEGER,
motivo VARCHAR(250),
fecha_ejecucion_estado TIMESTAMP,
contrato_general_id INTEGER NOT NULL,
estado_id INTEGER,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE solicitante (
id SERIAL PRIMARY KEY NOT NULL,
dependencia_solicitante_id INTEGER,
sede_solicitante_id INTEGER,
contrato_general_id INTEGER NOT NULL UNIQUE,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE lugar_ejecucion (
id SERIAL PRIMARY KEY NOT NULL,
pais_id INTEGER,
ciudad_id INTEGER,
municipio_id INTEGER,
dependencia_id INTEGER,
sede_id INTEGER,
direccion VARCHAR(120),
contrato_general_id INTEGER NOT NULL UNIQUE,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE supervisor_contrato (
id SERIAL PRIMARY KEY NOT NULL,
contrato_general_id INTEGER NOT NULL,
supervisor_id INTEGER NOT NULL,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE cdp (
id SERIAL PRIMARY KEY NOT NULL,
numero_cdp_id INTEGER,
fecha_registro DATE,
vigencia_cdp INTEGER,
contrato_general_id INTEGER NOT NULL,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE registro_presupuestal (
id SERIAL PRIMARY KEY NOT NULL,
numero_disponibilidad INTEGER,
fecha_registro DATE,
vigencia_cdp INTEGER,
cdp_id INTEGER NOT NULL UNIQUE,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (cdp_id) REFERENCES cdp(id)
);
CREATE TABLE contrato_arrendamiento (
id SERIAL PRIMARY KEY NOT NULL,
destinacion VARCHAR,
plazo_pago_mensual INTEGER,
reajuste VARCHAR,
plazo_administracion INTEGER,
valor_administracion INTEGER,
plazo_entrega INTEGER,
valor_arrendamiento INTEGER,
contrato_general_id INTEGER NOT NULL UNIQUE,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE contratista (
id SERIAL PRIMARY KEY NOT NULL,
numero_documento VARCHAR(20) NOT NULL,
tipo_persona_id INTEGER,
contrato_general_id INTEGER NOT NULL UNIQUE,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
CREATE TABLE convenio (
id SERIAL PRIMARY KEY NOT NULL,
vigencia INTEGER NOT NULL,
nombre VARCHAR(100) NOT NULL,
tipo_convenio_id INTEGER NOT NULL,
contrato_general_id INTEGER NOT NULL UNIQUE,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
Se inician pruenas con los mocks:
Documentos asociados a un contrato:
Estados de un contrato:
Solicitante de un contrato:
Lugar de ejecución de un contrato:
Se puede usar de guía para descripción de cada campo sugerido por DBA de cada campo https://github.com/udistrital/terceros_crud/blob/develop/database/scripts/20210127_160659_crear_tabla_vinculacion_up.sql
CREATE TABLE contrato_general (
id SERIAL PRIMARY KEY NOT NULL,
tipo_compromiso_id INTEGER,
tipo_contrato_id INTEGER,
perfil_contratista_id INTEGER,
fecha_suscripcion_estudios DATE,
aplica_poliza BOOLEAN,
ordenador_id INTEGER,
modalidad_seleccion_id INTEGER,
tipologia_especifica_id INTEGER,
regimen_contratacion_id INTEGER,
procedimiento_id INTEGER,
plazo_ejecucion INTEGER,
unidad_ejecutora_id INTEGER,
numero_constancia INTEGER,
clase_contratista_id INTEGER,
tipo_moneda_id INTEGER,
valor_pesos NUMERIC(16,2),
tipo_gasto_id INTEGER,
origen_recursos_id INTEGER,
origen_presupuestos_id INTEGER,
tema_gasto_inversion_id INTEGER,
valor_contrato_me NUMERIC(16,3),
valor_tasa_cambio NUMERIC(16,10),
medio_pogo_id INTEGER,
clausula_registro_presupuestal BOOLEAN,
modo_pago VARCHAR,
observaciones VARCHAR(500),
vigencia VARCHAR(4),
consecutivo_elaboracion VARCHAR(50),
fecha_inicial DATE,
fecha_final DATE,
usuario_legacy VARCHAR(15),
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL
);
COMMENT ON TABLE contrato_general IS 'Tabla principal que almacena la información general de los contratos';
COMMENT ON COLUMN contrato_general.id IS 'Id único del contrato';
COMMENT ON COLUMN contrato_general.tipo_compromiso_id IS 'Parámetros CRUD: id del tipo de compromiso del contrato';
COMMENT ON COLUMN contrato_general.tipo_contrato_id IS 'Parámetros CRUD: Id del tipo de contrato';
COMMENT ON COLUMN contrato_general.perfil_contratista_id IS 'Parámetros CRUD: Id del perfil del contratista';
COMMENT ON COLUMN contrato_general.fecha_suscripcion_estudios IS 'Fecha de suscripción de los estudios previos';
COMMENT ON COLUMN contrato_general.aplica_poliza IS 'Bool. Indica si el contrato aplica póliza de seguro';
COMMENT ON COLUMN contrato_general.ordenador_id IS 'Id del ordenador del gasto';
COMMENT ON COLUMN contrato_general.modalidad_seleccion_id IS 'Parámetros CRUD: Id de la modalidad de selección del contratista';
COMMENT ON COLUMN contrato_general.tipologia_especifica_id IS 'Parámetros CRUD: Id de la tipología específica del contrato';
COMMENT ON COLUMN contrato_general.regimen_contratacion_id IS 'Parámetros CRUD: Id del régimen de contratación';
COMMENT ON COLUMN contrato_general.procedimiento_id IS 'Parámetros CRUD: Id del procedimiento de contratación';
COMMENT ON COLUMN contrato_general.plazo_ejecucion IS 'Plazo de ejecución del contrato';
COMMENT ON COLUMN contrato_general.unidad_ejecutora_id IS 'Parámetros CRUD: Id de la unidad ejecutora del contrato';
COMMENT ON COLUMN contrato_general.numero_constancia IS 'Número de constancia del contrato';
COMMENT ON COLUMN contrato_general.clase_contratista_id IS 'Parámetros CRUD: Id de la clase de contratista';
COMMENT ON COLUMN contrato_general.tipo_moneda_id IS 'Parámetros CRUD: Id del tipo de moneda del contrato';
COMMENT ON COLUMN contrato_general.valor_pesos IS 'Valor del contrato en pesos colombianos';
COMMENT ON COLUMN contrato_general.tipo_gasto_id IS 'Parámetros CRUD: Id del tipo de gasto';
COMMENT ON COLUMN contrato_general.origen_recursos_id IS 'Parámetros CRUD: Id del origen de los recursos';
COMMENT ON COLUMN contrato_general.origen_presupuestos_id IS 'Parámetros CRUD: Id del origen de los presupuestos';
COMMENT ON COLUMN contrato_general.tema_gasto_inversion_id IS 'Parámetros CRUD: Id del tema de gasto o inversión';
COMMENT ON COLUMN contrato_general.valor_contrato_me IS 'Valor del contrato en moneda extranjera';
COMMENT ON COLUMN contrato_general.valor_tasa_cambio IS 'Valor de la tasa de cambio aplicada';
COMMENT ON COLUMN contrato_general.medio_pogo_id IS 'Parámetros CRUD: Id del medio de pago';
COMMENT ON COLUMN contrato_general.clausula_registro_presupuestal IS 'Indica si el contrato tiene cláusula de registro presupuestal';
COMMENT ON COLUMN contrato_general.modo_pago IS 'Modo de pago del contrato';
COMMENT ON COLUMN contrato_general.observaciones IS 'Observaciones generales del contrato';
COMMENT ON COLUMN contrato_general.vigencia IS 'Año de vigencia del contrato';
COMMENT ON COLUMN contrato_general.consecutivo_elaboracion IS 'Número consecutivo de elaboración del contrato';
COMMENT ON COLUMN contrato_general.fecha_inicial IS 'Fecha de inicio del contrato';
COMMENT ON COLUMN contrato_general.fecha_final IS 'Fecha de finalización del contrato';
COMMENT ON COLUMN contrato_general.usuario_legacy IS 'Usuario legacy importado de ARGOV1.';
COMMENT ON COLUMN contrato_general.activo IS 'Auditoría: Indica si el registro está activo';
COMMENT ON COLUMN contrato_general.fecha_creacion IS 'Auditoría: Fecha y hora de creación del registro';
COMMENT ON COLUMN contrato_general.fecha_modificacion IS 'Auditoría: Fecha y hora de la última modificación del registro';
CREATE TABLE documento_contrato (
id SERIAL PRIMARY KEY NOT NULL,
contrato_general_id INTEGER NOT NULL,
documento_id INTEGER,
activo BOOLEAN NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
COMMENT ON TABLE documento_contrato IS 'Tabla que relaciona los documentos asociados a cada contrato';
COMMENT ON COLUMN documento_contrato.id IS 'Identificador único de la relación documento-contrato';
COMMENT ON COLUMN documento_contrato.contrato_general_id IS 'Identificador del contrato general asociado';
COMMENT ON COLUMN documento_contrato.documento_id IS 'Identificador del documento asociado al contrato en el gestor documental.';
COMMENT ON COLUMN documento_contrato.activo IS 'Auditoría: Indica si el registro está activo';
CREATE TABLE estado_contrato (
id SERIAL PRIMARY KEY NOT NULL,
usuario_id INTEGER,
motivo VARCHAR(250),
fecha_ejecucion_estado TIMESTAMP,
contrato_general_id INTEGER NOT NULL,
estado_id INTEGER,
activo BOOLEAN NOT NULL,
fecha_creacion TIMESTAMP NOT NULL,
fecha_modificacion TIMESTAMP NOT NULL,
FOREIGN KEY (contrato_general_id) REFERENCES contrato_general(id)
);
COMMENT ON TABLE estado_contrato IS 'Tabla que almacena los diferentes estados por los que pasa un contrato';
COMMENT ON COLUMN estado_contrato.id IS 'Identificador único del estado del contrato';
COMMENT ON COLUMN estado_contrato.usuario_id IS 'Identificador del usuario que realizó el cambio de estado';
COMMENT ON COLUMN estado_contrato.motivo IS 'Motivo del cambio de estado';
COMMENT ON COLUMN estado_contrato.fecha_ejecucion_estado IS 'Fecha y hora en que se ejecutó el cambio de estado';
COMMENT ON COLUMN estado_contrato.contrato_general_id IS 'Identificador del contrato general asociado';
COMMENT ON COLUMN estado_contrato.estado_id IS 'Parámetros CRUD: Identificador del estado del contrato';
COMMENT ON COLUMN estado_contrato.activo IS 'Auditoría: Indica si el registro está activo';
COMMENT ON COLUMN estado_contrato.fecha_creacion IS 'Auditoría: Fecha y hora de creación del registro';
COMMENT ON COLUMN estado_contrato.fecha_modificacion IS 'Auditoría: Fecha y hora de la última modificación del registro';
Duda: El consecutivo de elaboración se asigna desde el comienzo o solo cuando se termina de editar?
El orden de generación es una vez el abogado completa los 9 pasos y genera la minuta, en esa generación que tiene el estado Por Suscribir se genera el consecutivo_elaboración. Una vez la minuta del contrato es validada por el jefe de contratación y firmada por las partes se genera el número de contrato y cambia al estado Suscrito.
Confirmar si el numero_constancia es el que almacenará el número de contrato en el nuevo modelo.
Se inician pruebas funcionales.
Se observa una buena implementación en las pruebas, se revisará parte del código con detalle antes de finalizar la Issue. Por el momento, se observa un endpoint para consultar contratista por contrato que se puede cambiar por el uso de query params o el cambio del endpoint a contratistas/contrato/{contrato_id}.
Finalizado PR.
Se requiere realizar la implementación del microservicio de gestión contractual basado en el modelo relacional preaprobado siguiendo los lineamientos de nombres de endpoint y demás lineamientos que apliquen.
Sub Tareas
Criterios de aceptación
Requerimientos
No aplica
Especificaciones técnicas
Material de apoyo
Lineamientos Generales Lineamientos que se deben cumplir en cualquier desarrollo.
Lineamientos Microservicios
Definition of Ready - DoR
Definition of Done - DoD - Desarrollo