Está en la página 1de 3

----VERSION 4

-- Revertir firma digital


DECLARE

CURSOR c1 IS
SELECT f.fechafirma,
e.nroexpediente,
t.nombre tipo_documento,
d.nrodocumento,
d.iddocumento,
a.idarchivo,
(SUBSTR(a.nombre, INSTR(a.nombre, ']') + 1)) nombre_archivo,
d.asunto,
u.nombres usuario_firmante,
un.nombre unidad
FROM siged.expediente e,
siged.documento d,
siged.archivo a,
siged.firmantedigitalxarchivo f,
SIGED.tipodocumento t,
siged.usuario u,
siged.unidad un
WHERE e.idexpediente = d.expediente
AND d.iddocumento = a.documento
AND f.idarchivo = a.idarchivo
AND t.idtipodocumento = d.tipodocumento
AND f.idfirmantedigital = u.idusuario
AND u.idunidad = un.idunidad
AND NVL(e.estado, 'N') != 'N'
and NVL(d.estado, 'N') != 'N'
AND NVL(a.estadodigitalizacion, 'I') IN ('Y', 'A')
AND f.idaccion = 33
AND f.in_ultima_accion = 'S'
AND f.idarchivo = 11644183 --agregar el idarchivo del pdf a revirtir
ORDER BY f.fechafirma;

lv_rutaAlfresco varchar2(100);
lv_nombre_archivo varchar2(100);
lv_nombreoriginal varchar2(100);
lv_nuevonombre varchar2(100);
lc_grupo char(2);
ln_idusuariobandeja number;
ln_idfirmantedigital number;
ln_idfirmantedigitalArchi number;

ln_id_documento_acumulador number := 6166217;

BEGIN

FOR x IN c1 LOOP

BEGIN

SELECT SUBSTR(nombre, INSTR(nombre, ']') + 1)


INTO lv_nombre_archivo
FROM siged.archivo
WHERE idarchivo = x.idarchivo;

UPDATE siged.documento
SET firmadodigital = 'N'
WHERE iddocumento = x.iddocumento;

UPDATE siged.archivo
SET DOCUMENTO = ln_id_documento_acumulador,
rutaalfresco = 'NO_GENERO_PDF'
WHERE idarchivo = x.idarchivo;

UPDATE siged.archivo
SET ESTADODIGITALIZACION = 'Y'
WHERE documento = x.iddocumento
AND ((UPPER(SUBSTR(nombre, INSTR(nombre, ']') + 1)) =
UPPER(REPLACE(SUBSTR(lv_nombre_archivo,
INSTR(lv_nombre_archivo, ']') + 1),
regexp_substr(lv_nombre_archivo, '\.[^\.]*$'),
'') || '.DOC')) OR
(UPPER(SUBSTR(nombre, INSTR(nombre, ']') + 1)) =
UPPER(REPLACE(SUBSTR(lv_nombre_archivo,
INSTR(lv_nombre_archivo, ']') + 1),
regexp_substr(lv_nombre_archivo, '\.[^\.]*$'),
'') || '.DOCX')));

SELECT z.idfirmantedigitalxarchivo,
z.nombreoriginal,
z.nuevonombre,
z.grupo,
z.idusuariobandeja,
z.idfirmantedigital
INTO ln_idfirmantedigitalArchi,
lv_nombreoriginal,
lv_nuevonombre,
lc_grupo,
ln_idusuariobandeja,
ln_idfirmantedigital
FROM siged.firmantedigitalxarchivo z
WHERE z.idarchivo = x.idarchivo
AND z.idaccion = 33
AND z.idfirmantedigitalxarchivo =
(SELECT MAX(idfirmantedigitalxarchivo)
FROM siged.firmantedigitalxarchivo
WHERE idarchivo = z.idarchivo);

UPDATE siged.firmantedigitalxarchivo
SET in_ultima_accion = 'N'
WHERE idfirmantedigitalxarchivo = ln_idfirmantedigitalArchi;

INSERT INTO siged.firmantedigitalxarchivo (idarchivo, nombreoriginal,


nuevonombre, grupo,
idusuariobandeja,
idfirmantedigital, fechafirma,
idaccion, in_ultima_accion,
de_ruta_version_resultante,
de_motivo_reversion_firma)
VALUES (x.idarchivo, lv_nombreoriginal, lv_nuevonombre,TO_NUMBER(lc_grupo)
+ 1,
ln_idusuariobandeja, ln_idfirmantedigital, SYSDATE,
34, 'S', NULL,
'Reversion realizada por TI A SOLICITU DEL USUARIO Robert
Babilonia, PDF no existente');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('No se logró actualizar la rutaAlfresco del idArchivo:
' ||
x.idarchivo);
END;

END LOOP;

END;

También podría gustarte