En una frase: el modelo de datos que entregó Mapfre y el esquema del middleware (MW) parten de filosofías opuestas —Mapfre guarda el consentimiento completo; el MW no lo guarda y solo lo despacha—. No es un conflicto de columnas: es una decisión de arquitectura que conviene cerrar con Mapfre antes de avanzar.
Mapfre ya respondió varias consultas (identificador, comprobante, idempotencia) y entregó su modelo y su paquete PL/SQL. Quedan cuatro decisiones de arquitectura y cuatro observaciones técnicas sobre el modelo y el paquete, más las consultas abiertas al final de este documento.
Mapfre respondió el levantamiento técnico y adjuntó su modelo de datos de OneTrust
(seis tablas en su base prdman). Por nuestro lado ya existe el esquema Oracle del MW.
Al ponerlos lado a lado aparece una diferencia de fondo en qué persiste cada uno.
Seis tablas y un paquete PL/SQL. Guarda el consentimiento y su evidencia.
A9009072_MCL — registro de consentimientos (con receipt, versión de propósito, respuesta y estado de revocación)A9009082_MCL — cola de sincronización hacia OneTrustG2999731 / G2999728 — propósitos y sus versionesG2999761 / G2999733 — puntos de recolección y su relación con cada propósitodc_k_onetrust_mcl — paquete con las consultas de catálogo y las altasOcho tablas + paquetes PL/SQL. No guarda el consentimiento: lo despacha.
outbox) de mensajes a despachar, con reintentos y arrendamientoFuente del lado MW: esquema Oracle del repositorio (directorio de DDL del middleware). Detalle de rutas en el anexo.
De las seis tablas de Mapfre, hoy solo hay una relación confirmada: el catálogo de propósitos alimenta la pantalla del satélite, que lo usa para mostrar al usuario la lista de propósitos a consentir. En cambio, cómo el registro de consentimientos y la cola de sincronización se relacionan con el middleware —ambos al mismo nivel— está sin definir, y es el centro de la reconciliación.
G…) alimenta la pantalla del satélite.
Cómo el registro y la cola de Mapfre (A…) se relacionan con el middleware —ambos al mismo nivel— y
quién despacha finalmente a OneTrust son las preguntas abiertas.| Dimensión | Middleware (MW) | Modelo Mapfre |
|---|---|---|
| Estado del consentimiento | No lo guarda. Viaja dentro del cuerpo del mensaje de salida. | Lo guarda completo en registro_consentimientos. |
| Fuente de verdad | OneTrust. La lectura se resuelve contra OneTrust en tiempo real. | Conserva copia local para trazabilidad (Ley 21.719). |
| Receipt de OneTrust | No se persiste; queda en caché temporal de idempotencia. | Se persiste en txt_evidencia_receipt_jwt. |
| Identificador del titular | Solo el hash (SHA-256). Nunca el RUT en claro. | RUT en claro (tip_docum/cod_docum). |
| Propósitos y versiones | No se modelan. | Catálogo versionado propio; lo lee el satélite. |
| Concepto | Modelo Mapfre | Middleware | Veredicto |
|---|---|---|---|
| Consentimiento del titular | A9009072 (tabla completa) | dentro del cuerpo del mensaje de salida | filosofía distinta |
| Cola de envío a OneTrust | A9009082 cola_sync_onetrust | outbox_mensajes | posible duplicación |
| Revocación | estado en la fila (mca_enviado=REVOCADO) | cadena de eventos enlazados | representación distinta |
| Receipt de OneTrust | txt_evidencia_receipt_jwt | no se persiste | sin camino de retorno |
| Identificador del titular | RUT en claro | hash SHA-256 | frontera de datos personales |
| Catálogo de propósitos | G2999731 + G2999728 (lo lee el satélite) | no se modela | relación confirmada |
| Idempotencia | OneTrust no la ofrece; registra por actualización-o-alta | idempotencia_respuestas (control propio) | queda en el MW |
| Auditoría · tasa · claves API | no aparece | resuelto en el MW | solo MW |
Con el modelo y el paquete PL/SQL a la vista, los puntos se separan en dos planos: las decisiones de arquitectura, que definen quién hace qué, y las observaciones técnicas sobre el paquete que Mapfre entregó.
A9009082 cola_sync_onetrust con estado y reintentos;
el MW tiene su bandeja de salida con la misma función. Dos colas de envío resiliente al mismo destino
son redundancia o un malentendido de responsabilidad. Hay que definir quién despacha a OneTrust:
el MW a través de su bandeja de salida, o Mapfre a través de su cola.txt_evidencia_receipt_jwt, pero OneTrust lo emite al despachar —de forma asíncrona, después del
202—. El MW hoy no lo persiste ni lo devuelve; solo lo retiene en caché con vencimiento.
Falta definir cómo llega ese comprobante al registro: respuesta de una consulta posterior, notificación de
retorno, o una vía nueva.mca_enviado a REVOCADO y fija la fecha de expiración—.
El MW la diseñó como una cadena de eventos enlazados. Son dos representaciones del mismo hecho; hay que elegir
una para que el envío a OneTrust y la trazabilidad local coincidan.Al revisar el DDL y el paquete dc_k_onetrust_mcl aparecen cuatro puntos que conviene plantear,
sobre todo si el middleware llegara a escribir a través de ese paquete.
max(cod_consentimiento) + 1. Ante dos altas simultáneas, ambas pueden tomar el mismo número y
chocar contra la clave primaria. Lo habitual es resolverlo con una secuencia de base de datos.commit y, ante un error, hace rollback y devuelve el mensaje como texto. Eso le quita
al middleware el control de la transacción: el MW necesita escribir el registro y su auditoría en la misma
unidad de trabajo, y un commit interno lo impide.p_ins_pto_collect
arma la fila y confirma, pero no ejecuta la inserción —los otros cuatro altas sí lo hacen—. Conviene avisarlo
para que lo corrijan de su lado.SELECT/INSERT/UPDATE/DELETE a
public sobre las seis tablas, incluida la de registro de consentimientos. Tratándose de datos
personales bajo la Ley 21.719, conviene acotarlo a un rol de aplicación dedicado y separar el acceso de
lectura del de escritura.Respondido por Mapfre (23 y 25 de junio):
txt_evidencia_receipt_jwt.G2999728); no es un token que el middleware deba validar. El mecanismo de firma y la
llave pública siguen pendientes del corporativo.Lo que aún traba la decisión de arquitectura:
A9009082 cola_sync_onetrust ya existe del lado de Mapfre,
¿quién envía a OneTrust: Mapfre a través de esa cola, o el middleware a través de su bandeja de salida?
¿Conviven o una reemplaza a la otra?dc_k_onetrust_mcl, escribir directo sobre las tablas, o mantener su propio
esquema y sincronizar? La respuesta define cuánto del esquema del MW se conserva.Esquema de datos de OneTrust que entregó Mapfre (base prdman): catálogo de propósitos
(G2999731) y sus versiones (G2999728), puntos de recolección (G2999761)
y su relación con cada propósito (G2999733), registro de consentimientos (A9009072)
y cola de sincronización hacia OneTrust (A9009082).
prdman). Es el insumo que este documento interpreta.Objetos Oracle del MW citados en este documento, para el equipo técnico interno.
Bandeja de salida y su paquete de operaciones —encolar, tomar pendientes con arrendamiento, marcar enviado o descartado—.
ddl/01_mmw_cns_outbox_mensajes.sql · ddl/08_mmw_cns_k_outbox.sql · ddl/14_mmw_cns_k_outbox_body.sql
Reserva de idempotencia con respuesta en caché y vencimiento.
ddl/02_mmw_cns_idempotencia_respuestas.sql · ddl/09_mmw_cns_k_idempotencia.sql · ddl/15_mmw_cns_k_idempotencia_body.sql
Auditoría inmutable y pares petición/respuesta saneados.
ddl/05_mmw_cns_auditoria_log.sql · ddl/06_mmw_cns_auditoria_req_resp.sql
Identidad de negocio del consentimiento (id_consentimiento) y hash del sujeto, añadidos en el delta 16.
ddl/16_mmw_cns_outbox_identity.sql · ddl/18_mmw_cns_k_outbox_delta_t8x.sql
Junto al modelo, Mapfre entregó el paquete dc_k_onetrust_mcl: consultas de catálogo
(propósitos, versiones y puntos de recolección activos) y altas para el registro de consentimientos, la cola de
sincronización y el propio catálogo. Es el insumo de la sección 5.2.
docs/cliente/dc_k_onetrust_mcl.pck · docs/cliente/tablas.sql · docs/cliente/Relacional_Onetrust.pdf
Contenido literal de tablas.sql tal como lo entregó Mapfre (base prdman, esquema TRON2000), sin modificaciones. Las observaciones sobre permisos y diseño están en la sección 5.2.
-- Generado por Oracle SQL Developer Data Modeler 24.3.1.351.0831
-- en: 2026-06-25 11:12:13 CLT
-- sitio: Oracle Database 21c
-- tipo: Oracle Database 21c
-- predefined type, no DDL - MDSYS.SDO_GEOMETRY
-- predefined type, no DDL - XMLTYPE
-- REgistro de concentimientos
CREATE TABLE A9009072_MCL
(
cod_consentimiento NUMBER NOT NULL ,
cod_cia NUMBER NOT NULL ,
cod_usuario VARCHAR2 (50) NOT NULL ,
cod_punto_recoleccion NUMBER NOT NULL ,
cod_punto_proposito NUMBER NOT NULL ,
cod_ver_proposito NUMBER NOT NULL ,
respuesta VARCHAR2 (500) NOT NULL ,
tip_docum VARCHAR2 (10) ,
cod_docum VARCHAR2 (20) ,
ip_origen VARCHAR2 (50) ,
sistema_origen VARCHAR2 (255) NOT NULL ,
tipo_canal VARCHAR2 (255) NOT NULL ,
user_agent VARCHAR2 (500) ,
txt_evidencia_receipt_jwt VARCHAR2 (3000) ,
hash_evidencia VARCHAR2 (128) ,
fec_consentimiento DATE ,
fec_expiracion DATE ,
mca_enviado CHAR (20) NOT NULL ,
fec_actu DATE NOT NULL ,
cod_user VARCHAR2 (50) NOT NULL
)
;
COMMENT ON TABLE A9009072_MCL IS 'REgistro de concentimientos'
;
COMMENT ON COLUMN A9009072_MCL.cod_consentimiento IS 'Codigo del consentimiento que se esta guardando'
;
COMMENT ON COLUMN A9009072_MCL.cod_cia IS 'compañia ya que esto relaciona al sector que puede vehiculos, generales, vida'
;
COMMENT ON COLUMN A9009072_MCL.cod_usuario IS 'usuario del punto de coleccion quien ingresa el registro'
;
COMMENT ON COLUMN A9009072_MCL.cod_punto_recoleccion IS 'codigode punto de recoleccion'
;
COMMENT ON COLUMN A9009072_MCL.cod_punto_proposito IS 'codigo de punto de proposito'
;
COMMENT ON COLUMN A9009072_MCL.cod_ver_proposito IS 'codigo de la version del proposito'
;
COMMENT ON COLUMN A9009072_MCL.respuesta IS 'Esto corresponde a la respuesta del servicio, sie s afrimativa un 200 o 201 y si es negativa puede ser un 401 o 500 o etc'
;
COMMENT ON COLUMN A9009072_MCL.tip_docum IS 'corresponde al tipo de documeto del tercero RUT, COG, etc'
;
COMMENT ON COLUMN A9009072_MCL.cod_docum IS 'corresponde al valor del tipo de documento'
;
COMMENT ON COLUMN A9009072_MCL.ip_origen IS 'ip origen de donde proviene el consentimiento'
;
COMMENT ON COLUMN A9009072_MCL.sistema_origen IS '-- sistema que ejecutó la lógica(VIDA_CONDUCTOR, VEHICULOS_FLEXIBLES, ETC)'
;
COMMENT ON COLUMN A9009072_MCL.tipo_canal IS 'negocio (WEB, APP, etc.)'
;
COMMENT ON COLUMN A9009072_MCL.user_agent IS 'usuario de agente'
;
COMMENT ON COLUMN A9009072_MCL.txt_evidencia_receipt_jwt IS 'corresponde al response del servicio en el casod e crear un consentimiento, la respuesta del json del atributo receipt'
;
COMMENT ON COLUMN A9009072_MCL.hash_evidencia IS 'corresponde a una evidencia que se recepcionno correctamente'
;
COMMENT ON COLUMN A9009072_MCL.fec_consentimiento IS 'la fecha de la creaciondel consentimiento'
;
COMMENT ON COLUMN A9009072_MCL.fec_expiracion IS 'fecha de revocacion del concentimiento'
;
COMMENT ON COLUMN A9009072_MCL.mca_enviado IS 'posibles valores
-- ACTIVO
-- REVOCADO
-- EXPIRADO'
;
COMMENT ON COLUMN A9009072_MCL.fec_actu IS 'fecha del registro'
;
COMMENT ON COLUMN A9009072_MCL.cod_user IS 'ussauriode base de datos quien crea el registro'
;
CREATE INDEX A9009072_MCL_IDX ON A9009072_MCL
(
cod_consentimiento ASC ,
cod_cia ASC ,
tipo_canal ASC
)
;
ALTER TABLE A9009072_MCL
ADD CONSTRAINT registro_consentimientos_PK PRIMARY KEY ( cod_consentimiento ) ;
-- Envio de consentimiento asincrono
CREATE TABLE A9009082_MCL
(
cod_sync NUMBER NOT NULL ,
cod_consentimiento NUMBER NOT NULL ,
estado_sync VARCHAR2 (30) NOT NULL ,
fec_ultimo_intento DATE ,
respuesta_ot VARCHAR2 (2000) NOT NULL ,
fec_primer_intento DATE NOT NULL ,
codigo_error VARCHAR2 (100) ,
fec_actu DATE ,
cod_user VARCHAR2 (50)
)
;
COMMENT ON TABLE A9009082_MCL IS 'Envio de consentimiento asincrono'
;
COMMENT ON COLUMN A9009082_MCL.cod_sync IS 'identificador unico de l valor asincrono'
;
COMMENT ON COLUMN A9009082_MCL.cod_consentimiento IS 'codigo del concentimiento'
;
COMMENT ON COLUMN A9009082_MCL.estado_sync IS 'posibles valores
-- PENDIENTE
-- ENVIANDO
-- OK
-- ERROR
-- REINTENTO'
;
COMMENT ON COLUMN A9009082_MCL.fec_ultimo_intento IS 'fecha del ultimo intento de envio'
;
COMMENT ON COLUMN A9009082_MCL.respuesta_ot IS 'respuesta de la orden de trabajo del intento'
;
COMMENT ON COLUMN A9009082_MCL.fec_primer_intento IS 'fecha del primer intento de envio'
;
COMMENT ON COLUMN A9009082_MCL.codigo_error IS 'codigo del error, posible valor html 200,201,400,500, etc'
;
COMMENT ON COLUMN A9009082_MCL.fec_actu IS 'fecha de creacion del registro'
;
COMMENT ON COLUMN A9009082_MCL.cod_user IS 'codigo del usuario quein creo el registro'
;
CREATE INDEX A9009082_MCL_IDX ON A9009082_MCL
(
cod_consentimiento ASC ,
estado_sync ASC
)
;
ALTER TABLE A9009082_MCL
ADD CONSTRAINT cola_sync_onetrust_PK PRIMARY KEY ( cod_sync ) ;
-- Version de cada proposito
CREATE TABLE G2999728_MCL
(
cod_ver_proposito NUMBER NOT NULL ,
cod_proposito NUMBER NOT NULL ,
nom_version_proposito VARCHAR2 (50) NOT NULL ,
txt_legal_version VARCHAR2 (600) NOT NULL ,
txt_detalle_legal VARCHAR2 (3000) NOT NULL ,
-- Metadatos de informacion del consentimiento y propositos que son entregados
-- por negocio
requestInformation CLOB NOT NULL ,
fec_ini DATE NOT NULL ,
fec_fin DATE NOT NULL ,
mca_estado CHAR (1) NOT NULL ,
fec_actu DATE NOT NULL ,
cod_user VARCHAR2 (50) NOT NULL
)
;
COMMENT ON TABLE G2999728_MCL IS 'Version de cada proposito'
;
COMMENT ON COLUMN G2999728_MCL.cod_ver_proposito IS 'identificador de la version del proposito'
;
COMMENT ON COLUMN G2999728_MCL.cod_proposito IS 'codigo del proposito'
;
COMMENT ON COLUMN G2999728_MCL.nom_version_proposito IS 'nombre de la version del proposito'
;
COMMENT ON COLUMN G2999728_MCL.txt_legal_version IS 'texto del area legal para el proposito'
;
COMMENT ON COLUMN G2999728_MCL.txt_detalle_legal IS 'detalle del texto legal del proposito'
;
COMMENT ON COLUMN G2999728_MCL.requestInformation IS 'Metadatos de informacion del consentimiento y propositos que son entregados por negocio'
;
COMMENT ON COLUMN G2999728_MCL.fec_ini IS 'fecha de inicio de vigencia de la version'
;
COMMENT ON COLUMN G2999728_MCL.fec_fin IS 'fecha de fin de vigencia de la version'
;
COMMENT ON COLUMN G2999728_MCL.mca_estado IS 'estado S activo N inactivo'
;
COMMENT ON COLUMN G2999728_MCL.fec_actu IS 'fecha de actualizacion'
;
COMMENT ON COLUMN G2999728_MCL.cod_user IS 'codigo del ussuario de base de datos quien ingreso el registro'
;
CREATE INDEX G2999728_MCL_IDX ON G2999728_MCL
(
cod_proposito ASC ,
cod_ver_proposito ASC
)
;
ALTER TABLE G2999728_MCL
ADD CONSTRAINT proposito_version_PK PRIMARY KEY ( cod_ver_proposito ) ;
-- Tabla que guardara los propositos, para el registro de consentimientos
CREATE TABLE G2999731_MCL
(
cod_proposito NUMBER NOT NULL ,
cod_cia NUMBER NOT NULL ,
cod_proposito_codigo VARCHAR2 (100) ,
nom_proposito VARCHAR2 (255) NOT NULL ,
mca_estado CHAR (1) NOT NULL ,
fec_actu DATE NOT NULL ,
cod_user VARCHAR2 (50) NOT NULL
)
;
COMMENT ON TABLE G2999731_MCL IS 'Tabla que guardara los propositos, para el registro de consentimientos'
;
COMMENT ON COLUMN G2999731_MCL.cod_proposito IS 'Llave primaria de Propositos'
;
COMMENT ON COLUMN G2999731_MCL.cod_cia IS 'compañia ya que esto relaciona al sector que puede vehiculos, generales, vida'
;
COMMENT ON COLUMN G2999731_MCL.cod_proposito_codigo IS 'identificador del proposito alfanumerico'
;
COMMENT ON COLUMN G2999731_MCL.nom_proposito IS 'nombre del proposito'
;
COMMENT ON COLUMN G2999731_MCL.mca_estado IS 'estado del propositos S activo N inactivo'
;
COMMENT ON COLUMN G2999731_MCL.fec_actu IS 'fecha de actualizacion'
;
COMMENT ON COLUMN G2999731_MCL.cod_user IS 'ussuario quien creo el registro'
;
CREATE INDEX G2999731_MCL_IDX ON G2999731_MCL
(
cod_proposito ASC ,
cod_cia ASC ,
mca_estado ASC
)
;
ALTER TABLE G2999731_MCL
ADD CONSTRAINT propositos_PK PRIMARY KEY ( cod_proposito ) ;
-- Tabla de puntos de coleccion por cada proposito
CREATE TABLE G2999733_MCL
(
cod_punto_proposito NUMBER NOT NULL ,
cod_cia NUMBER NOT NULL ,
cod_punto_recolecicon NUMBER NOT NULL ,
cod_proposito NUMBER NOT NULL ,
obligatorio NUMBER NOT NULL ,
txt_link_canal VARCHAR2 (500) ,
nom_link VARCHAR2 (255) ,
mca_estado CHAR (1) NOT NULL ,
fec_actu DATE NOT NULL ,
cod_user VARCHAR2 (50) NOT NULL
)
;
COMMENT ON TABLE G2999733_MCL IS 'Tabla de puntos de coleccion por cada proposito'
;
COMMENT ON COLUMN G2999733_MCL.cod_punto_proposito IS 'llave primaria del registro'
;
COMMENT ON COLUMN G2999733_MCL.cod_cia IS 'compañia ya que esto relaciona al sector que puede vehiculos, generales, vida'
;
COMMENT ON COLUMN G2999733_MCL.cod_punto_recolecicon IS 'corresponde al punto de colleccion o sea el link especifico donde va este consentimiento'
;
COMMENT ON COLUMN G2999733_MCL.cod_proposito IS 'indentificador del proposito'
;
COMMENT ON COLUMN G2999733_MCL.obligatorio IS 'identifica si es obligatorio'
;
COMMENT ON COLUMN G2999733_MCL.txt_link_canal IS 'url la cual controla el poposito'
;
COMMENT ON COLUMN G2999733_MCL.nom_link IS 'nombre del link del proposito'
;
COMMENT ON COLUMN G2999733_MCL.mca_estado IS 'estado S Activo N inactivo'
;
COMMENT ON COLUMN G2999733_MCL.fec_actu IS 'fecha de actualizacion'
;
COMMENT ON COLUMN G2999733_MCL.cod_user IS 'usuario quien creo el registro'
;
CREATE INDEX G2999733_MCL_IDX ON G2999733_MCL
(
cod_punto_proposito ASC ,
cod_cia ASC ,
cod_proposito ASC
)
;
ALTER TABLE G2999733_MCL
ADD CONSTRAINT punto_proposito_PK PRIMARY KEY ( cod_punto_proposito ) ;
-- Tabla de Puntos de collecion
CREATE TABLE G2999761_MCL
(
cod_punto_coleccion_id NUMBER NOT NULL ,
cod_cia NUMBER NOT NULL ,
nom_punto_recoleccion VARCHAR2 (255) NOT NULL ,
desc_punto_recoleccion VARCHAR2 (500) ,
canal VARCHAR2 (50) NOT NULL ,
origen VARCHAR2 (100) NOT NULL ,
url_politica VARCHAR2 (500) ,
mca_estado CHAR (1) NOT NULL ,
fec_actu DATE NOT NULL ,
cod_user VARCHAR2 (50) NOT NULL
)
;
COMMENT ON TABLE G2999761_MCL IS 'Tabla de Puntos de collecion'
;
COMMENT ON COLUMN G2999761_MCL.cod_punto_coleccion_id IS 'identificador unico de punto de coleccion'
;
COMMENT ON COLUMN G2999761_MCL.cod_cia IS 'compañia ya que esto relaciona al sector que puede vehiculos, generales, vida'
;
COMMENT ON COLUMN G2999761_MCL.nom_punto_recoleccion IS 'nombre del puento de coleccion'
;
COMMENT ON COLUMN G2999761_MCL.desc_punto_recoleccion IS 'descripcion del punto de coleccion'
;
COMMENT ON COLUMN G2999761_MCL.canal IS 'canal de origen'
;
COMMENT ON COLUMN G2999761_MCL.origen IS 'origendel punto de colecicon'
;
COMMENT ON COLUMN G2999761_MCL.url_politica IS 'url del punto de coleccion de politica'
;
COMMENT ON COLUMN G2999761_MCL.mca_estado IS 'estados S activo y N inactivo'
;
COMMENT ON COLUMN G2999761_MCL.fec_actu IS 'fecha del registro'
;
COMMENT ON COLUMN G2999761_MCL.cod_user IS 'ussuario de base de datos quien creo el registro'
;
CREATE INDEX G2999761_MCL_IDX ON G2999761_MCL
(
cod_punto_coleccion_id ASC ,
cod_cia ASC ,
canal ASC ,
origen ASC
)
;
ALTER TABLE G2999761_MCL
ADD CONSTRAINT punto_coleccion_PK PRIMARY KEY ( cod_punto_coleccion_id ) ;
ALTER TABLE G2999728_MCL
ADD CONSTRAINT propo_ver_propo_FK FOREIGN KEY
(
cod_proposito
)
REFERENCES G2999731_MCL
(
cod_proposito
)
;
ALTER TABLE G2999733_MCL
ADD CONSTRAINT propo_x_collec_FK FOREIGN KEY
(
cod_punto_recolecicon
)
REFERENCES G2999761_MCL
(
cod_punto_coleccion_id
)
;
ALTER TABLE G2999733_MCL
ADD CONSTRAINT propositos_FK FOREIGN KEY
(
cod_proposito
)
REFERENCES G2999731_MCL
(
cod_proposito
)
;
ALTER TABLE A9009072_MCL
ADD CONSTRAINT reg_consen_propo_ver_FK FOREIGN KEY
(
cod_ver_proposito
)
REFERENCES G2999728_MCL
(
cod_ver_proposito
)
;
ALTER TABLE A9009072_MCL
ADD CONSTRAINT reg_consen_pto_colec_FK FOREIGN KEY
(
cod_punto_recoleccion
)
REFERENCES G2999761_MCL
(
cod_punto_coleccion_id
)
;
-- Informe de Resumen de Oracle SQL Developer Data Modeler:
--
-- CREATE TABLE 6
-- CREATE INDEX 6
-- ALTER TABLE 11
-- CREATE VIEW 0
-- ALTER VIEW 0
-- CREATE PACKAGE 0
-- CREATE PACKAGE BODY 0
-- CREATE PROCEDURE 0
-- CREATE FUNCTION 0
-- CREATE TRIGGER 0
-- ALTER TRIGGER 0
-- CREATE COLLECTION TYPE 0
-- CREATE STRUCTURED TYPE 0
-- CREATE STRUCTURED TYPE BODY 0
-- CREATE CLUSTER 0
-- CREATE CONTEXT 0
-- CREATE DATABASE 0
-- CREATE DIMENSION 0
-- CREATE DIRECTORY 0
-- CREATE DISK GROUP 0
-- CREATE ROLE 0
-- CREATE ROLLBACK SEGMENT 0
-- CREATE SEQUENCE 0
-- CREATE MATERIALIZED VIEW 0
-- CREATE MATERIALIZED VIEW LOG 0
-- CREATE SYNONYM 0
-- CREATE TABLESPACE 0
-- CREATE USER 0
--
-- DROP TABLESPACE 0
-- DROP DATABASE 0
--
-- REDACTION POLICY 0
--
-- ORDS DROP SCHEMA 0
-- ORDS ENABLE SCHEMA 0
-- ORDS ENABLE OBJECT 0
--
-- ERRORS 0
-- WARNINGS 0
create or replace synonym A9009072
for TRON2000.A9009072_MCL;
create or replace synonym A9009082
for TRON2000.A9009082_MCL;
create or replace synonym G2999728
for TRON2000.G2999728_MCL;
create or replace synonym G2999731
for TRON2000.G2999731_MCL;
create or replace synonym G2999733
for TRON2000.G2999733_MCL;
create or replace synonym G2999761
for TRON2000.G2999761_MCL;
GRANT DELETE,INSERT,SELECT,UPDATE,REFERENCES ON TRON2000.A9009072_MCL TO public;
GRANT DELETE,INSERT,SELECT,UPDATE,REFERENCES ON TRON2000.A9009082_MCL TO public;
GRANT DELETE,INSERT,SELECT,UPDATE,REFERENCES ON TRON2000.G2999728_MCL TO public;
GRANT DELETE,INSERT,SELECT,UPDATE,REFERENCES ON TRON2000.G2999731_MCL TO public;
GRANT DELETE,INSERT,SELECT,UPDATE,REFERENCES ON TRON2000.G2999733_MCL TO public;
GRANT DELETE,INSERT,SELECT,UPDATE,REFERENCES ON TRON2000.G2999761_MCL TO public;
Contenido literal de dc_k_onetrust_mcl.pck tal como lo entregó Mapfre, sin modificaciones. Las observaciones sobre el identificador, el control transaccional y el defecto del alta están en la sección 5.2.
create or replace package dc_k_onetrust_mcl as
g_estado_activo constant varchar2(1) := 'S';
procedure p_sel_propositos(p_cursor out sys_refcursor);
procedure p_sel_pto_collecion_proposito(p_cod_proposito in g2999733.cod_proposito%type,
p_cursor out sys_refcursor);
procedure p_sel_pto_collecion(p_cod_pto_collecion in g2999761.cod_punto_coleccion_id%type,
p_cursor out sys_refcursor);
procedure p_ins_reg_consentimientos(p_cod_cia in A9009072.cod_cia %type,
p_cod_usuario in A9009072.cod_usuario %type,
p_cod_punto_recoleccion in A9009072.cod_punto_recoleccion %type,
p_cod_punto_proposito in A9009072.cod_punto_proposito %type,
p_cod_ver_proposito in A9009072.cod_ver_proposito %type,
p_respuesta in A9009072.respuesta %type,
p_tip_docum in A9009072.tip_docum %type,
p_cod_docum in A9009072.cod_docum %type,
p_ip_origen in A9009072.ip_origen %type,
p_sistema_origen in A9009072.sistema_origen %type,
p_tipo_canal in A9009072.tipo_canal %type,
p_user_agent in A9009072.user_agent %type,
p_txt_evidencia_receipt_jwt in A9009072.txt_evidencia_receipt_jwt %type,
p_hash_evidencia in A9009072.hash_evidencia %type,
p_fec_consentimiento in A9009072.fec_consentimiento %type,
p_fec_expiracion in A9009072.fec_expiracion %type,
p_msg out varchar2);
procedure p_ins_reg_cons_asc(p_cod_consentimiento in a9009082.cod_consentimiento%type,
p_estado_sync in a9009082.estado_sync %type,
p_fec_ultimo_intento in a9009082.fec_ultimo_intento%type,
p_respuesta_ot in a9009082.respuesta_ot %type,
p_fec_primer_intento in a9009082.fec_primer_intento%type,
p_codigo_error in a9009082.codigo_error %type,
p_msg out varchar2);
procedure p_ins_propositos(p_cod_cia in G2999731.cod_cia%type,
p_cod_proposito_codigo in G2999731.cod_proposito_codigo%type,
p_nom_proposito in G2999731.nom_proposito%type,
p_msg out varchar2);
procedure p_ins_ver_proposito(p_cod_proposito in g2999728.cod_proposito %type,
p_nom_version_proposito in g2999728.nom_version_proposito%type,
p_txt_legal_version in g2999728.txt_legal_version %type,
p_txt_detalle_legal in g2999728.txt_detalle_legal %type,
p_requestInformation in g2999728.requestInformation %type,
p_fec_ini in g2999728.fec_ini %type,
p_fec_fin in g2999728.fec_fin %type,
p_msg out varchar2);
procedure p_ins_colect_proposito(p_cod_cia in g2999733.cod_cia %type,
p_cod_punto_recolecicon in g2999733.cod_punto_recolecicon%type,
p_cod_proposito in g2999733.cod_proposito %type,
p_obligatorio in g2999733.obligatorio %type,
p_txt_link_canal in g2999733.txt_link_canal %type,
p_nom_link in g2999733.nom_link %type,
p_msg out varchar2);
procedure p_ins_pto_collect(p_cod_cia in G2999761.cod_cia %type,
p_nom_punto_recoleccion in G2999761.nom_punto_recoleccion %type,
p_desc_punto_recoleccion in G2999761.desc_punto_recoleccion%type,
p_canal in G2999761.canal %type,
p_origen in G2999761.origen %type,
p_url_politica in G2999761.url_politica %type,
p_msg out varchar2);
end dc_k_onetrust_mcl;
/
create or replace package body dc_k_onetrust_mcl as
procedure p_sel_propositos(p_cursor out sys_refcursor) as
begin
open p_cursor for
select * from g2999731 pro where pro.mca_estado = g_estado_activo;
end p_sel_propositos;
procedure p_sel_pto_collecion_proposito(p_cod_proposito in g2999733.cod_proposito%type,
p_cursor out sys_refcursor) as
begin
open p_cursor for
select *
from g2999733 pc
where pc.cod_proposito = p_cod_proposito
and pc.mca_estado = g_estado_activo;
end p_sel_pto_collecion_proposito;
procedure p_sel_pto_collecion(p_cod_pto_collecion in g2999761.cod_punto_coleccion_id%type,
p_cursor out sys_refcursor) as
begin
open p_cursor for
select *
from g2999761 pc
where pc.cod_punto_coleccion_id = p_cod_pto_collecion
and pc.mca_estado = g_estado_activo;
end p_sel_pto_collecion;
procedure p_sel_version_proposito(p_cod_proposito in g2999728.cod_proposito%type,
p_cursor out sys_refcursor) as
begin
open p_cursor for
select *
from g2999728 vp
where vp.cod_proposito = p_cod_proposito
and vp.mca_estado = g_estado_activo;
end p_sel_version_proposito;
procedure p_ins_reg_consentimientos(p_cod_cia in A9009072.cod_cia %type,
p_cod_usuario in A9009072.cod_usuario %type,
p_cod_punto_recoleccion in A9009072.cod_punto_recoleccion %type,
p_cod_punto_proposito in A9009072.cod_punto_proposito %type,
p_cod_ver_proposito in A9009072.cod_ver_proposito %type,
p_respuesta in A9009072.respuesta %type,
p_tip_docum in A9009072.tip_docum %type,
p_cod_docum in A9009072.cod_docum %type,
p_ip_origen in A9009072.ip_origen %type,
p_sistema_origen in A9009072.sistema_origen %type,
p_tipo_canal in A9009072.tipo_canal %type,
p_user_agent in A9009072.user_agent %type,
p_txt_evidencia_receipt_jwt in A9009072.txt_evidencia_receipt_jwt %type,
p_hash_evidencia in A9009072.hash_evidencia %type,
p_fec_consentimiento in A9009072.fec_consentimiento %type,
p_fec_expiracion in A9009072.fec_expiracion %type,
p_msg out varchar2) as
ln_cod_consentimiento A9009072.cod_consentimiento%type;
lrA9009072 A9009072%rowtype;
begin
begin
select (nvl(max(cc.cod_consentimiento), 0) + 1) id_cons
into ln_cod_consentimiento
from A9009072 cc;
exception
when others then
ln_cod_consentimiento := 1;
end;
lrA9009072.Cod_Consentimiento := ln_cod_consentimiento;
lrA9009072.Cod_Cia := p_cod_cia;
lrA9009072.Cod_Usuario := p_cod_usuario;
lrA9009072.Cod_Punto_Recoleccion := p_cod_punto_recoleccion;
lrA9009072.Cod_Punto_Proposito := p_cod_punto_proposito;
lrA9009072.Cod_Ver_Proposito := p_cod_ver_proposito;
lrA9009072.Respuesta := p_respuesta;
lrA9009072.Tip_Docum := p_tip_docum;
lrA9009072.Cod_Docum := p_cod_docum;
lrA9009072.Ip_Origen := p_ip_origen;
lrA9009072.Sistema_Origen := p_sistema_origen;
lrA9009072.Tipo_Canal := p_tipo_canal;
lrA9009072.User_Agent := p_user_agent;
lrA9009072.Txt_Evidencia_Receipt_Jwt := p_txt_evidencia_receipt_jwt;
lrA9009072.Hash_Evidencia := p_hash_evidencia;
lrA9009072.Fec_Consentimiento := p_fec_consentimiento;
lrA9009072.Fec_Expiracion := p_fec_expiracion;
lrA9009072.Fec_Actu := sysdate;
lrA9009072.Cod_User := user;
insert into A9009072 values lrA9009072;
commit;
p_msg := 'OK';
exception
when others then
rollback;
p_msg := replace(replace(dbms_utility.format_error_backtrace,
chr(10),
null),
chr(13),
null) || ', ' || dbms_utility.format_error_stack;
end p_ins_reg_consentimientos;
procedure p_ins_reg_cons_asc(p_cod_consentimiento in a9009082.cod_consentimiento%type,
p_estado_sync in a9009082.estado_sync %type,
p_fec_ultimo_intento in a9009082.fec_ultimo_intento%type,
p_respuesta_ot in a9009082.respuesta_ot %type,
p_fec_primer_intento in a9009082.fec_primer_intento%type,
p_codigo_error in a9009082.codigo_error %type,
p_msg out varchar2) as
ln_cod_sync a9009082.cod_sync%type;
lra9009082 a9009082%rowtype;
begin
begin
select (nvl(max(cc.cod_sync), 0) + 1) id_cons
into ln_cod_sync
from a9009082 cc;
exception
when others then
ln_cod_sync := 1;
end;
lra9009082.cod_sync := ln_cod_sync;
lra9009082.cod_consentimiento := p_cod_consentimiento;
lra9009082.estado_sync := p_estado_sync;
lra9009082.fec_ultimo_intento := p_fec_ultimo_intento;
lra9009082.respuesta_ot := p_respuesta_ot;
lra9009082.fec_primer_intento := p_fec_primer_intento;
lra9009082.codigo_error := p_codigo_error;
lra9009082.fec_actu := sysdate;
lra9009082.cod_user := user;
insert into a9009082 values lra9009082;
commit;
p_msg := 'OK';
exception
when others then
rollback;
p_msg := replace(replace(dbms_utility.format_error_backtrace,
chr(10),
null),
chr(13),
null) || ', ' || dbms_utility.format_error_stack;
end p_ins_reg_cons_asc;
procedure p_ins_propositos(p_cod_cia in G2999731.cod_cia%type,
p_cod_proposito_codigo in G2999731.cod_proposito_codigo%type,
p_nom_proposito in G2999731.nom_proposito%type,
p_msg out varchar2) as
ln_cod_proposito G2999731.Cod_Proposito%type;
lrG2999731 G2999731%rowtype;
begin
begin
select (nvl(max(cc.Cod_Proposito), 0) + 1) id_cons
into ln_cod_proposito
from G2999731 cc;
exception
when others then
ln_cod_proposito := 1;
end;
lrG2999731.Cod_Proposito := ln_cod_proposito;
lrG2999731.Cod_Cia := p_cod_cia;
lrG2999731.Cod_Proposito_Codigo := p_cod_proposito_codigo;
lrG2999731.Nom_Proposito := p_nom_proposito;
lrG2999731.Mca_Estado := g_estado_activo;
lrG2999731.Fec_Actu := sysdate;
lrG2999731.Cod_User := user;
insert into G2999731 values lrG2999731;
commit;
p_msg := 'OK';
exception
when others then
rollback;
p_msg := replace(replace(dbms_utility.format_error_backtrace,
chr(10),
null),
chr(13),
null) || ', ' || dbms_utility.format_error_stack;
end p_ins_propositos;
procedure p_ins_ver_proposito(p_cod_proposito in g2999728.cod_proposito %type,
p_nom_version_proposito in g2999728.nom_version_proposito%type,
p_txt_legal_version in g2999728.txt_legal_version %type,
p_txt_detalle_legal in g2999728.txt_detalle_legal %type,
p_requestInformation in g2999728.requestInformation %type,
p_fec_ini in g2999728.fec_ini %type,
p_fec_fin in g2999728.fec_fin %type,
p_msg out varchar2) as
ln_cod_ver_proposito G2999728.Cod_Ver_Proposito%type;
lrG2999728 G2999728%rowtype;
begin
begin
select (nvl(max(cc.Cod_Ver_Proposito), 0) + 1) id_cons
into ln_cod_ver_proposito
from G2999728 cc;
exception
when others then
ln_cod_ver_proposito := 1;
end;
lrG2999728.cod_ver_proposito := ln_cod_ver_proposito;
lrG2999728.cod_proposito := p_cod_proposito;
lrG2999728.nom_version_proposito := p_nom_version_proposito;
lrG2999728.txt_legal_version := p_txt_legal_version;
lrG2999728.txt_detalle_legal := p_txt_detalle_legal;
lrG2999728.requestInformation := p_requestInformation;
lrG2999728.fec_ini := p_fec_ini;
lrG2999728.fec_fin := p_fec_fin;
lrG2999728.mca_estado := g_estado_activo;
lrG2999728.fec_actu := sysdate;
lrG2999728.cod_user := user;
insert into G2999728 values lrG2999728;
commit;
p_msg := 'OK';
exception
when others then
rollback;
p_msg := replace(replace(dbms_utility.format_error_backtrace,
chr(10),
null),
chr(13),
null) || ', ' || dbms_utility.format_error_stack;
end p_ins_ver_proposito;
procedure p_ins_colect_proposito(p_cod_cia in g2999733.cod_cia %type,
p_cod_punto_recolecicon in g2999733.cod_punto_recolecicon%type,
p_cod_proposito in g2999733.cod_proposito %type,
p_obligatorio in g2999733.obligatorio %type,
p_txt_link_canal in g2999733.txt_link_canal %type,
p_nom_link in g2999733.nom_link %type,
p_msg out varchar2) as
ln_cod_punto_proposito G2999733.Cod_Punto_Proposito%type;
lrG2999733 G2999733%rowtype;
begin
begin
select (nvl(max(cc.Cod_Punto_Proposito), 0) + 1) id_cons
into ln_cod_punto_proposito
from G2999733 cc;
exception
when others then
ln_cod_punto_proposito := 1;
end;
lrG2999733.cod_punto_proposito := ln_cod_punto_proposito;
lrG2999733.cod_cia := p_cod_cia;
lrG2999733.cod_punto_recolecicon := p_cod_punto_recolecicon;
lrG2999733.cod_proposito := p_cod_proposito;
lrG2999733.obligatorio := p_obligatorio;
lrG2999733.txt_link_canal := p_txt_link_canal;
lrG2999733.nom_link := p_nom_link;
lrG2999733.mca_estado := g_estado_activo;
lrG2999733.fec_actu := sysdate;
lrG2999733.cod_user := user;
insert into G2999733 values lrG2999733;
commit;
p_msg := 'OK';
exception
when others then
rollback;
p_msg := replace(replace(dbms_utility.format_error_backtrace,
chr(10),
null),
chr(13),
null) || ', ' || dbms_utility.format_error_stack;
end p_ins_colect_proposito;
procedure p_ins_pto_collect(p_cod_cia in G2999761.cod_cia %type,
p_nom_punto_recoleccion in G2999761.nom_punto_recoleccion %type,
p_desc_punto_recoleccion in G2999761.desc_punto_recoleccion%type,
p_canal in G2999761.canal %type,
p_origen in G2999761.origen %type,
p_url_politica in G2999761.url_politica %type,
p_msg out varchar2) as
lrG2999761 G2999761%rowtype;
ln_cod_punto_coleccion_id G2999761.Cod_Punto_Coleccion_Id%type;
begin
begin
select (nvl(max(cc.Cod_Punto_Coleccion_Id), 0) + 1) id_cons
into ln_cod_punto_coleccion_id
from G2999761 cc;
exception
when others then
ln_cod_punto_coleccion_id := 1;
end;
lrG2999761.cod_punto_coleccion_id := ln_cod_punto_coleccion_id;
lrG2999761.cod_cia := p_cod_cia;
lrG2999761.nom_punto_recoleccion := p_nom_punto_recoleccion;
lrG2999761.desc_punto_recoleccion := p_desc_punto_recoleccion;
lrG2999761.canal := p_canal;
lrG2999761.origen := p_origen;
lrG2999761.url_politica := p_url_politica;
lrG2999761.mca_estado := g_estado_activo;
lrG2999761.fec_actu := sysdate;
lrG2999761.cod_user := user;
commit;
p_msg := 'OK';
exception
when others then
rollback;
p_msg := replace(replace(dbms_utility.format_error_backtrace,
chr(10),
null),
chr(13),
null) || ', ' || dbms_utility.format_error_stack;
end p_ins_pto_collect;
end dc_k_onetrust_mcl;
/