MCL · OneTrust · Análisis de integración

Reconciliación de modelos de datos:
middleware de consentimiento ↔ modelo OneTrust de Mapfre

Proyecto mcl-onetrust · Estado análisis para decisión · actualizado 25 de junio de 2026
Insumos: respuestas de Nelson Quintanilla (Mapfre) del 23 y 25 de junio de 2026, su modelo de datos (seis tablas) y el paquete PL/SQL dc_k_onetrust_mcl; esquema Oracle del middleware.

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.

1. Punto de partida

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.

MAPFRE Modelo entregado

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 OneTrust
  • G2999731 / G2999728 — propósitos y sus versiones
  • G2999761 / G2999733 — puntos de recolección y su relación con cada propósito
  • dc_k_onetrust_mcl — paquete con las consultas de catálogo y las altas

MIDDLEWARE Esquema diseñado

Ocho tablas + paquetes PL/SQL. No guarda el consentimiento: lo despacha.

  • Bandeja de salida (outbox) de mensajes a despachar, con reintentos y arrendamiento
  • Reserva de idempotencia con respuesta en caché
  • Auditoría inmutable (solo inserción) y pares petición/respuesta saneados
  • Claves de API por satélite, control de tasa por ventana deslizante

Fuente del lado MW: esquema Oracle del repositorio (directorio de DDL del middleware). Detalle de rutas en el anexo.

2. Cómo se relacionan los dos modelos: lo confirmado y lo abierto

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.

Catálogo de propósitos G2999731 / 728 / 733 / 761 propósitos · versiones · puntos Satélite Mapfre pantalla de captura del consentimiento muestra los propósitos al usuario lee la lista ✓ consentimiento capturado ¿hacia dónde? Registro · Mapfre (prdman) A9009072 · registro_consentimientos A9009082 · cola_sync_onetrust Middleware (MW) este proyecto · outbox-only outbox_mensajes bandeja de salida + idempotencia + auditoría ¿cómo interactúan registro / cola ↔ MW? OneTrust fuente de verdad despacha ¿despacha también? ❓
relación confirmada relación sin definir (❓)
Lo único confirmado: el catálogo de propósitos (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.

3. Dos filosofías de persistencia

DimensiónMiddleware (MW)Modelo Mapfre
Estado del consentimientoNo lo guarda. Viaja dentro del cuerpo del mensaje de salida.Lo guarda completo en registro_consentimientos.
Fuente de verdadOneTrust. La lectura se resuelve contra OneTrust en tiempo real.Conserva copia local para trazabilidad (Ley 21.719).
Receipt de OneTrustNo se persiste; queda en caché temporal de idempotencia.Se persiste en txt_evidencia_receipt_jwt.
Identificador del titularSolo el hash (SHA-256). Nunca el RUT en claro.RUT en claro (tip_docum/cod_docum).
Propósitos y versionesNo se modelan.Catálogo versionado propio; lo lee el satélite.

4. Mapa de correspondencia

ConceptoModelo MapfreMiddlewareVeredicto
Consentimiento del titularA9009072 (tabla completa)dentro del cuerpo del mensaje de salidafilosofía distinta
Cola de envío a OneTrustA9009082 cola_sync_onetrustoutbox_mensajesposible duplicación
Revocaciónestado en la fila (mca_enviado=REVOCADO)cadena de eventos enlazadosrepresentación distinta
Receipt de OneTrusttxt_evidencia_receipt_jwtno se persistesin camino de retorno
Identificador del titularRUT en clarohash SHA-256frontera de datos personales
Catálogo de propósitosG2999731 + G2999728 (lo lee el satélite)no se modelarelación confirmada
IdempotenciaOneTrust no la ofrece; registra por actualización-o-altaidempotencia_respuestas (control propio)queda en el MW
Auditoría · tasa · claves APIno apareceresuelto en el MWsolo MW

5. Los puntos a resolver

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ó.

5.1 · Decisiones de arquitectura

  1. Dos colas hacia OneTrust. Mapfre tiene 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.
  2. El receipt no tiene camino de retorno. Mapfre confirma que guarda el receipt en 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.
  3. RUT en claro frente a hash. El diseño de protección de datos del MW parte de no tocar el RUT en claro (guarda solo su hash). Mapfre lo conserva en claro para su trazabilidad legal. Es coherente de su lado, pero marca la frontera donde el dato personal entra y sale, y condiciona qué viaja hacia el MW.
  4. Revocación: estado en la fila frente a cadena de eventos. El modelo de Mapfre representa la revocación sobre el mismo registro —cambia 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.

5.2 · Observaciones sobre el modelo y el paquete de Mapfre

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.

  1. El identificador se genera con «máximo + 1». El alta de consentimiento calcula el nuevo código como 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.
  2. El paquete confirma la transacción por su cuenta. Cada procedimiento ejecuta su propio 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.
  3. Defecto puntual en el alta de punto de recolección. El procedimiento 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.
  4. Permisos abiertos sobre las tablas. El script concede 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.

6. Estado de las consultas con Mapfre

Respondido por Mapfre (23 y 25 de junio):

  • Identificador del titular: será el RUT, eventualmente combinado con el correo.
  • Comprobante: el receipt se persiste del lado de Mapfre, en txt_evidencia_receipt_jwt.
  • Idempotencia: OneTrust no tiene clave de idempotencia propia; su registro funciona por actualización-o-alta sobre el mismo titular y propósito. El control de duplicados queda en el middleware.
  • requestInformation (JWT): es un metadato que entrega el corporativo y se guarda con la versión del propósito (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:

  1. Responsable del despacho. Si 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?
  2. Escritura del middleware sobre las tablas de Mapfre. ¿El middleware debe escribir el registro y la cola a través del paquete 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.
  3. Retorno del comprobante. El receipt lo emite OneTrust de forma asíncrona al despachar. ¿Cómo espera Mapfre recibirlo para guardarlo en el registro: respuesta de una consulta posterior, notificación de retorno, u otra vía?
  4. Frontera del RUT. ¿El middleware debe recibir el RUT en claro para construir el envío a OneTrust, o Mapfre prefiere que el dato en claro no salga de su dominio?
  5. Procedimiento de revocación. Mapfre lo dejó para revisar en conjunto con Seguridad, Marketing y TI. Mientras tanto, el contrato técnico del MW para revocar queda a la espera de esa definición funcional.
  6. Lectura del catálogo desde el middleware. Confirmado que el satélite lee el catálogo para la lista de propósitos. ¿El middleware también necesita leerlo —por ejemplo, para validar la versión vigente al despachar—, o el satélite ya entrega la versión consentida dentro del envío?

Anexo

A · Modelo de datos entregado por Mapfre

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

Modelo de datos de OneTrust entregado por Mapfre: tablas de propósitos, versiones, puntos de recolección, registro de consentimientos y cola de sincronización, con sus relaciones de clave foránea
Modelo de datos original de Mapfre (base prdman). Es el insumo que este documento interpreta.

B · Referencias del esquema del middleware

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

C · Paquete PL/SQL de Mapfre — resumen

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

D · Script de creación de tablas de Mapfre — contenido literal

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;

E · Paquete PL/SQL de Mapfre — contenido literal

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