create or replace PACKAGE BODY PG_MIGRACION AS
 
    -- Seleccion de que hacer antes de lanzar la migracion:
    -- - p_borrado = true/false
    -- - proceso lanzar: 1/2/3/4/5/6/7
    PROCEDURE INICIA IS
        vCont number(10):=0;
        vTexto VARCHAR2(4000);
    BEGIN
            if instr(C_PROCESO,'UNO') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_UNO:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_UNO_NEW;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_UNO: '||SQLCODE||'-'||SQLERRM);
                END;    
                /*DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_UNO:  '||SYSDATE);
                SELECT count(*) into vCont FROM AD74A04T00 WHERE USU_ALTA_04 = C_USUARIO;
                vTexto := vTexto||' AD74A04T00(dependencia): '||vCont;

                SELECT count(*) into vCont FROM AD74A23T00 WHERE USU_ALTA_23 = C_USUARIO;
                vTexto := vTexto||', AD74A23T00(dispositivos por solicitante): '||vCont;

                SELECT count(*) into vCont FROM AD74A01T00 WHERE USU_ALTA_01 = C_USUARIO;
                vTexto := vTexto||', AD74A01T00(solicitantes) : '||vCont;

                SELECT count(*) into vCont FROM AD74A05T00 WHERE USU_ALTA_05 = C_USUARIO;
                vTexto := vTexto||', AD74A05T00(cuentas): '||vCont;

                SELECT count(*) into vCont FROM AD74A07T00 WHERE USU_ALTA_07 = C_USUARIO;
                vTexto := vTexto||', AD74A07T00(perfiles): '||vCont;              

                SELECT count(*) into vCont FROM T_CLAVES_X01 WHERE TABLA_AD74A IN ('AD74A01T00');
                vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vCont;

                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_UNO:  '||vTexto);*/
            end if; -- proceso uno
            if instr(C_PROCESO,'DOS') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_DOS:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_DOS_NEW;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_DOS: '||SQLCODE||'-'||SQLERRM);
                END;     
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_DOS:  '||SYSDATE);

                SELECT count(*) into vCont FROM AD74A06T00 WHERE USU_ALTA_06 = C_USUARIO;
                vTexto := vTexto||', AD74A06T00(direcciones): '||vCont;      

                SELECT count(*) into vCont FROM T_CLAVES_X34_H;
                vTexto := vTexto||', T_CLAVES_X34_H: '||vCont;
				
				SELECT count(*) into vCont FROM T_CLAVES_X34_N;
                vTexto := vTexto||', T_CLAVES_X34_N: '||vCont;
				
				SELECT count(*) into vCont FROM T_CLAVES_X34_T;
                vTexto := vTexto||', T_CLAVES_X34_T: '||vCont;

                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_DOS:  '||vTexto);
            end if; -- proceso DOS
            if instr(C_PROCESO,'TRES') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_TRES_NEW:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_TRES_NEW;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_TRES_NEW: '||SQLCODE||'-'||SQLERRM);
                END;  
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_TRES_NEW:  '||SYSDATE);

                SELECT count(*) into vCont FROM AD74A00T00 WHERE USU_ALTA_00 = C_USUARIO;
                vTexto := vTexto||', AD74A00T00(expedientes): '||vCont;      

                SELECT count(*) into vCont FROM T_CLAVES_X00_E;
                vTexto := vTexto||', T_CLAVES_X00_E: '||vCont;
				
                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_TRES_NEW:  '||vTexto);
/*
				vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_TRES:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_TRES;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_TRES: '||SQLCODE||'-'||SQLERRM);
                END;  
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_TRES:  '||SYSDATE);

                SELECT count(*) into vCont FROM AD74A00T00 WHERE USU_ALTA_00 = C_USUARIO;
                vTexto := vTexto||', AD74A00T00(expedientes): '||vCont;      

                SELECT count(*) into vCont FROM T_CLAVESX87B_AD74A WHERE TABLA_AD74A IN ('AD74A00T00');
                vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vCont;

                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_TRES:  '||vTexto);
*/
            end if; -- proceso TRES
            if instr(C_PROCESO,'CUATRO') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_CUATRO:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_CUATRO_NEW;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_CUATRO: '||SQLCODE||'-'||SQLERRM);
                END;  
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_CUATRO:  '||SYSDATE);

                SELECT count(*) into vCont from ad74a82t00 where ID_INF_SOCIAL_82 in (select ID_INF_SOCIAL_02 
                                                                    from AD74A02T00 
                                                                    where ID_INFORME_02 IN (SELECT ID_INFORME_16 
                                                                                            FROM AD74A16T00 
                                                                                            WHERE USU_ALTA_16 =C_USUARIO));
                vTexto := vTexto||', ad74a82t00(convivientes por informe social): '||vCont;      


                SELECT count(*) into vCont FROM  AD74A02T00 where ID_INFORME_02 IN (SELECT ID_INFORME_16 
                                                                 FROM AD74A16T00 
                                                                  WHERE USU_ALTA_16 =C_USUARIO);
                vTexto := vTexto||', ad74a02t00(informe social): '||vCont;                                                  

                SELECT count(*) into vCont FROM AD74A16T00 WHERE USU_ALTA_16 =C_USUARIO;
                vTexto := vTexto||', AD74A16T00(informes): '||vCont;   

                SELECT count(*) into vCont FROM T_CLAVESX87B_AD74A WHERE TABLA_AD74A IN ('AD74A82T00','AD74A02T00'); 
                vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vCont;

                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_CUATRO:  '||vTexto);
            end if; -- proceso CUATRO
            if instr(C_PROCESO,'CINCO') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_CINCO:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_CINCO_NEW;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_CINCO: '||SQLCODE||'-'||SQLERRM);
                END;  
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_CINCO:  '||SYSDATE);

                SELECT count(*) into vCont FROM AD74A03T00 WHERE USU_ALTA_03 = C_USUARIO;
                vTexto := vTexto||' AD74A03T00(contactos): '||vCont;

                SELECT count(*) into vCont FROM T_CLAVES_X04; 
                vTexto := vTexto||', T_CLAVES_X04: '||vCont;

                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_CINCO:  '||vTexto);

            end if; -- proceso CINCO
			if instr(C_PROCESO,'SEIS') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_SEIS:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_SEIS;

                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_SEIS: '||SQLCODE||'-'||SQLERRM);
                END;  
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_SEIS:  '||SYSDATE);

                SELECT count(*) into vCont FROM AD74A89T00 WHERE USU_ALTA_89 = C_USUARIO;
                vTexto := vTexto||' AD74A89T00(liquidaciones): '||vCont;

				SELECT count(*) into vCont FROM AD74A90T00;
                vTexto := vTexto||' AD74A90T00(liquidaciones): '||vCont;
				
                SELECT count(*) into vCont FROM T_CLAVES_X81_L; 
                vTexto := vTexto||', T_CLAVES_X81_L: '||vCont;

				SELECT count(*) into vCont FROM T_CLAVES_X81_F; 
                vTexto := vTexto||', T_CLAVES_X81_F: '||vCont;

                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_SEIS:  '||vTexto);

            end if; -- proceso SIETE
			if instr(C_PROCESO,'SIETE') !=0 then
                vTexto := 'Total de registros migrados en ';
                DBMS_OUTPUT.PUT_LINE('INICIO MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_SIETE:  '||SYSDATE);
                BEGIN
                    P_MIGRACION_SIETE;
					NULL;
                EXCEPTION
                    WHEN OTHERS THEN
                        DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR EN LA EJECUCION DE P_MIGRACION_SIETE: '||SQLCODE||'-'||SQLERRM);
                END;  
                DBMS_OUTPUT.PUT_LINE('FIN  MIGRACION DE REGISTROS DE TABLAS DEL PROCESO_SIETE:  '||SYSDATE);

                SELECT count(*) into vCont FROM AD74A29T00 WHERE USU_ALTA_29 = C_USUARIO AND SENTIDO_29 = 0;
                vTexto := vTexto||' AD74A29T00(LLAMADAS EMITIDAS): '||vCont;

                --SELECT count(*) into vCont FROM T_CLAVES_X64_O; 
                --vTexto := vTexto||', T_CLAVES_X64_O: '||vCont;

				SELECT count(*) into vCont FROM T_CLAVES_X64_I; 
                vTexto := vTexto||', T_CLAVES_X64_I: '||vCont;
				
                DBMS_OUTPUT.PUT_LINE('INFORME MIGRADO TABLAS PROCESO_SIETE:  '||vTexto);

            end if; -- proceso SIETE
    EXCEPTION 
        WHEN OTHERS THEN
			ROLLBACK;
            DBMS_OUTPUT.PUT_LINE('SE HA PRODUCIDO UN ERROR: '||SQLCODE||'-'||SQLERRM);
    END INICIA;
	
	PROCEDURE RELLENA_IDEXP_16 IS 
		cursor idExpInf is 
		 SELECT ID_INFORME_16, (SELECT VALOR_AD74A FROM T_CLAVES_X00_E
								WHERE VALOR_X87B  =X00.IDSOLICITUD_000) AS IDEXPEDIENTE
		 FROM AD74A16T00, T_CLAVES_X03, 
			 X87B.X8703T00@X87B_DBL0 X03, X87B.X8700T00@X87B_DBL0 X00
		 WHERE VALOR_AD74A = ID_INFORME_16
		 and X03.IDINFSOCIAL_003 = X00.IDINFSOCIAL_003(+)
		 and VALOR_X87B = X03.IDINFSOCIAL_003;
		begin
			for rId in idExpInf loop
				if rId.IDEXPEDIENTE IS NOT NULL THEN
					update AD74A16T00 set id_expediente_16 = rId.IDEXPEDIENTE
					WHERE ID_INFORME_16 = rId.ID_INFORME_16;
					commit;
				END IF;
			end loop;
	END RELLENA_IDEXP_16;
	PROCEDURE RELLENA_ID_DIR_NOTIF_00 IS 
		 cursor idNotif is 
		    select ID_EXPEDIENTE_00, idsolicitante_001,S.valor_AD74A, idcontactonotifi_035,X34.IDDOMICILIO_034, (SELECT VALOR_AD74A FROM T_CLAVES_X34_N WHERE VALOR_X87B=X34.IDDOMICILIO_034) AS  ID_DIR_NOTIF
            from X87B.X8701T00@X87B_DBL0 X01, X87B.X8735T00@X87B_DBL0 X35, 
            X87B.X8734T00@X87B_DBL0 X34,    t_claves_x01 S, AD74A00T00 
            where  X34.IDDOMICILIO_034 = X35.IDDOMICILIO_034 
            AND X35.IDCONTACTO_035 = X01.IDCONTACTONOTIFI_035
            AND idsolicitante_001 = S.VALOR_X87B
            AND ID_SOLICITANTE_00 =  S.VALOR_AD74A;
		begin
			for rId in idNotif loop
				
				update AD74A00T00 set ID_DIRECCION_NOTIF_00 = rId.ID_DIR_NOTIF
				WHERE ID_EXPEDIENTE_00 = rId.ID_EXPEDIENTE_00;
				commit;
			end loop;
	END RELLENA_ID_DIR_NOTIF_00;
	PROCEDURE RELLENA_ID_DIR_00 IS 
		  cursor IDDIR is 
		    select ID_EXPEDIENTE_00, idsolicitante_001,S.valor_AD74A, IDCONTACTOHABIT_035,X34.IDDOMICILIO_034, (SELECT VALOR_AD74A FROM T_CLAVES_X34_H WHERE VALOR_X87B=X34.IDDOMICILIO_034) AS  ID_DIR
            from X87B.X8701T00@X87B_DBL0 X01, X87B.X8735T00@X87B_DBL0 X35, 
            X87B.X8734T00@X87B_DBL0 X34,    t_claves_x01 S, AD74A00T00 
            where  X34.IDDOMICILIO_034 = X35.IDDOMICILIO_034 
            AND X35.IDCONTACTO_035 = X01.IDCONTACTOHABIT_035
            AND idsolicitante_001 = S.VALOR_X87B
            AND ID_SOLICITANTE_00 =  S.VALOR_AD74A;
		begin
			for rId in idDIR loop
				
				update AD74A00T00 set ID_DIRECCION_00 = rId.id_DIR
				WHERE ID_EXPEDIENTE_00 = rId.ID_EXPEDIENTE_00;
				commit;
			end loop;
	END RELLENA_ID_DIR_00;
	PROCEDURE RELLENA_ID_SOL_03 IS 
			cursor IDSOL is 
			SELECT DISTINCT ID_CONTACTO_03, ID_SOLICITANTE_03, BACK.VALOR_AD74A ID_OLD, BACK.VALOR_X87B ID_X87, N.VALOR_AD74A ID_NEW
			FROM AD74A03T00, T_CLAVES_X01_BACK BACK, T_CLAVES_X01 N
			WHERE ID_SOLICITANTE_03  = BACK.VALOR_AD74A
			AND BACK.VALOR_X87B = N.VALOR_X87B;
	begin
		for rId in IDSOL loop
			uPDATE AD74A03T00 SET ID_SOLICITANTE_03 =  rId.ID_NEW
			WHERE ID_SOLICITANTE_03 = rId.ID_OLD
			AND ID_CONTACTO_03 = rId.ID_CONTACTO_03;
			commit;
		end loop;
	END RELLENA_ID_SOL_03;
	PROCEDURE RELLENA_ID_SOL_00 IS 
			cursor IDSOL is 
			SELECT DISTINCT ID_EXPEDIENTE_00, ID_SOLICITANTE_00, BACK.VALOR_AD74A ID_OLD, BACK.VALOR_X87B ID_X87, N.VALOR_AD74A ID_NEW
			FROM AD74A00T00, T_CLAVES_X01_BACK BACK, T_CLAVES_X01 N
			WHERE ID_SOLICITANTE_00  = BACK.VALOR_AD74A
			AND BACK.VALOR_X87B = N.VALOR_X87B;
	begin
		for rId in IDSOL loop
			uPDATE AD74A00T00 SET ID_SOLICITANTE_00 =  rId.ID_NEW
			WHERE ID_SOLICITANTE_00 = rId.ID_OLD
			AND ID_EXPEDIENTE_00 = rId.ID_EXPEDIENTE_00;
			commit;
		end loop;
	END RELLENA_ID_SOL_00;
END PG_MIGRACION;

/*DECLARE
			cursor IDSOL is 
			SELECT DISTINCT ID_EXPEDIENTE_00, ID_SOLICITANTE_01, ID_PERFIL_00, ID_PERFIL_01
			FROM AD74A00T00, AD74A07T00, AD74A01T00
			WHERE ID_SOLICITANTE_00  = ID_SOLICITANTE_01
            AND ID_PERFIL_07=ID_PERFIL_01 AND ID_PERFIL_07 <> ID_PERFIL_00;
			
	begin
		for rId in IDSOL loop
			uPDATE AD74A00T00 SET ID_PERFIL_00 =  rId.ID_PERFIL_01
			WHERE ID_EXPEDIENTE_00 = rId.ID_EXPEDIENTE_00
			AND ID_SOLICITANTE_00 = rId.ID_SOLICITANTE_01;
			commit;
		end loop;
	END;
	
	
	DECLARE
			cursor IDSOL is 
			SELECT DISTINCT ID_EXPEDIENTE_00, ID_SOLICITANTE_05, ID_CUENTA_00, ID_CUENTA_05
			FROM AD74A00T00, AD74A05T00
			WHERE ID_SOLICITANTE_00  = ID_SOLICITANTE_05
            AND ID_CUENTA_00 != ID_CUENTA_05;
			
	begin
		for rId in IDSOL loop
			uPDATE AD74A00T00 SET ID_CUENTA_00 =  rId.ID_CUENTA_05
			WHERE ID_EXPEDIENTE_00 = rId.ID_EXPEDIENTE_00
			AND ID_SOLICITANTE_00 = rId.ID_SOLICITANTE_05;
			commit;
		end loop;
	END;
	
	
	DECLARE
			cursor IDSOL is 
			SELECT DISTINCT ID_INFORME_16, ID_BENEFICIARIO_16, BACK.VALOR_AD74A ID_OLD, BACK.VALOR_X87B ID_X87, N.VALOR_AD74A ID_NEW
			FROM AD74A16T00, T_CLAVES_X01_BACK BACK, T_CLAVES_X01 N
			WHERE ID_BENEFICIARIO_16  = BACK.VALOR_AD74A
			AND BACK.VALOR_X87B = N.VALOR_X87B;
	begin
		for rId in IDSOL loop
			uPDATE AD74A16T00 SET ID_BENEFICIARIO_16 =  rId.ID_NEW
			WHERE ID_BENEFICIARIO_16 = rId.ID_OLD
			AND ID_INFORME_16 = rId.ID_INFORME_16;
			commit;
		end loop;
	END;
	
	DECLARE
			cursor IDSOL is 
			SELECT DISTINCT ID_ALARMA_24, ID_SOLICITANTE_24, BACK.VALOR_AD74A ID_OLD, BACK.VALOR_X87B ID_X87, N.VALOR_AD74A ID_NEW
			FROM AD74A24T00, T_CLAVES_X01_BACK BACK, T_CLAVES_X01 N
			WHERE ID_SOLICITANTE_24  = BACK.VALOR_AD74A
			AND BACK.VALOR_X87B = N.VALOR_X87B;
	begin
		for rId in IDSOL loop
			uPDATE AD74A24T00 SET ID_SOLICITANTE_24 =  rId.ID_NEW
			WHERE ID_SOLICITANTE_24 = rId.ID_OLD
			AND ID_ALARMA_24 = rId.ID_ALARMA_24;
			commit;
		end loop;
	END;
	DECLARE
			cursor IDSOL is 
			SELECT DISTINCT ID_MENSUALIDAD_89, ID_SOLICITANTE_89, BACK.VALOR_AD74A ID_OLD, BACK.VALOR_X87B ID_X87, N.VALOR_AD74A ID_NEW
			FROM AD74A89T00, T_CLAVES_X01_BACK BACK, T_CLAVES_X01 N
			WHERE ID_SOLICITANTE_89  = BACK.VALOR_AD74A
			AND BACK.VALOR_X87B = N.VALOR_X87B;
	begin
		for rId in IDSOL loop
			uPDATE AD74A89T00 SET ID_SOLICITANTE_89 =  rId.ID_NEW
			WHERE ID_SOLICITANTE_89 = rId.ID_OLD
			AND ID_MENSUALIDAD_89 = rId.ID_MENSUALIDAD_89;
			commit;
		end loop;
	END;
	*/

-- PROCESO UNO:  
	-- INSERTAMOS LOS DATOS DE VALORACION EN LA TABLA AD74A08T00 PARA UN ID_SOLICITANTE: NO EXISTE EN ESTA TABLA CREADA LA FK A LA TABLA DE SOLICITANTES. HAY QUE CREARLA???
	-- TABLA AD74A09T00: NO SE RELLENA CON LA MIGRACION. HAY QUE RELLENAR ALGO??
	-- MOTIVO DE BAJA: NO TIRA DEL MAESTRO EN LA 01 SE INSERTA A NULL
	-- ID_INF_SOCIAL_01: SE RELLENA A NULL, NO PARECE QUE EN PROCESO DE INFORMES SE ESTE ACTUALIZANDO ¿?
	-- INSERT DE LA TABLA 23, NO TENGO MUY CLARO COMO INSERTA LOS DATOS (LAS FKS O NO LAS USA O NO EXISTEN)


-- PROCESO TRES:
	-- ID_AVISO SE RELLENA A NULL, NO SE RELLENA EL ID DE LA FK.


-- PROCESO CUATRO:
	-- AL INSERTAR EN LA TABLA AD74A16T00 HAY CUATRO INFORMES QUE TIENEN 2 SOLICITUDES DISTINTAS, ESTO NO PUEDO INSERTAR LA TABLA 
	-- EL CAMPO CALCULADO DE LA 02 NO SE INCLUYE EN LA TABLA DE SOLICITANTES. 
	-- AL INSERTA EN LA TABLA AD74A82T00 EL CAMPO DE PARENTESCO_82 ES DE 50 Y ALGUNOS REGISTROS EN X87 TIENEN EL TAMAÑO MAYOR, EN X87 ES DE 100. SE HA PUESTO UN SUBSTR, PERO IGUAL AUMENTAR TAMAÑO CAMPO DE LA TABLA??

-- PROCESO CINCO: 
	-- AL INSERTAR EN LA TABLA 03 NO SE INSERTA NINGUN IDEXPEDIENTE. 
 /* -- Se inicializa que proceso se quiere ejecutar y para ello que datos se deben borrar si P_BORRADO is true
		
        if C_BORRADO then
			BEGIN
							
				
				-- TABLAS DE ALARMAS: AD74A24T00 || AD74A29T00
				if instr(C_PROCESO,'SIETE') != 0 then
				
					SELECT COUNT(*) INTO vCont FROM T_CLAVES_X64;
					
					DELETE FROM T_CLAVES_X64;
						
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','T_CLAVESX87B_AD74A','Registros T_CLAVESX87B_AD74A proceso: ANTES: '||vCont||', DESPUES:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 2;
				
					SELECT COUNT(*) INTO vCont FROM AD74A24T00 WHERE USU_ALTA_24 = C_USUARIO;
					DELETE FROM AD74A24T00 WHERE USU_ALTA_24 = C_USUARIO;
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AD74A24T00','Registros AD74A24T00 proceso: ANTES: '||vCont||', DESPUES:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 31;
					SELECT COUNT(*) INTO vCont FROM AD74A29T00 WHERE USU_ALTA_29 = C_USUARIO;
					DELETE FROM AD74A29T00 WHERE USU_ALTA_29 = C_USUARIO;
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','T_CLAVESX87B_AD74A','Registros T_CLAVESX87B_AD74A proceso: ANTES: '||vCont||', DESPUES:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 32;
					truncate table ad74a24t00
						truncate table ad74a29t00
						select * from ad74a29t00 where usu_alta_29 <> 'MIGRADO'

						EXECUTE IMMEDIATE 'ALTER SEQUENCE ad74a29t00_SEQ INCREMENT BY -3728988 MINVALUE 0'; 

						ALTER SEQUENCE ad74a29t00_SEQ INCREMENT BY 1 MINVALUE 0
						SELECT ad74a29t00_SEQ.NEXTVAL FROM DUAL

				end if;
				-- TABLAS DE GESTION ECONOMICA : AD74A90T00 || AD74A89T00 
				-- AE01B.AE01B01T00 ||  AE01B.AE01B00T00 || AE01B.AE01B05T00
				if instr(C_PROCESO,'SEIS') != 0 then
					SELECT COUNT(*) INTO vCont FROM T_CLAVES_X81_F;
					DELETE FROM T_CLAVES_X81_F;
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','T_CLAVES_X81_F','Registros T_CLAVES_X81_F  proceso: ANTES: '||vCont||', DESPUES:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 21;
					
					SELECT COUNT(*) INTO vCont FROM T_CLAVES_X81_L;
					DELETE FROM T_CLAVES_X81_L; 
					vTotalDelete := SQL%ROWCOUNT;
					
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','T_CLAVES_X81_L','Registros T_CLAVES_X81_L  proceso: ANTES: '||vCont||', DESPUES:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 22;
					
					delete from AD74A89T00 WHERE USU_ALTA_89 = C_USUARIO;
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AD74A89T00','Registros AD74A89T00  BORRADOS:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 31;
					
					Delete from AD74A90T00;
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AD74A90T00','Registros AD74A90T00 BORRADOS:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 32;
					
					DELETE FROM  AE01B.AE01B05T00 where ID_FICHERO_05 IN (select VALOR_AD74A 
																		from T_CLAVES_X81_F);
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AE01B.AE01B05T00','Registros AE01B.AE01B05T00  BORRADOS:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos:=33;
					
					
					DELETE FROM  AE01B.AE01B05T00 where ID_FICHERO_05 IN (select VALOR_AD74A 
																		from T_CLAVES_X81_F);
					delete from AE01B.AE01B01T00 where ID_LIQUIDACION_01 in (select ID_LIQUIDACION_00 from AE01B.AE01B00T00  where ID_FICHERO_ENV_00 in (select VALOR_AD74A 
																		from T_CLAVES_X81_F ));
					delete from AE01B.AE01B00T00 where ID_FICHERO_ENV_00 in (select VALOR_AD74A 
																		from T_CLAVES_X81_F );
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AE01B.AE01B01T00','Registros AE01B.AE01B01T00  BORRADOS:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 34;
					
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AE01B.AE01B00T00','Registros AE01B.AE01B00T00  BORRADOS:'||vTotalDelete,sysdate);
					COMMIT;
					vTotalDelete := SQL%ROWCOUNT;	
					vPasos := 35;
				end if;
				if instr(C_PROCESO,'CINCO') !=0 then
					vTexto := 'Total de registros borrados en ';
					DBMS_OUTPUT.PUT_LINE('INICIO BORRADO DE REGISTROS DE TABLAS DEL PROCESO_CINCO:  '||SYSDATE);
					-- borrar datos de las tablas implicadas en el P_MIGRACION_CINCO
					-- T_CLAVESX87B_AD74A	
					-- AD74A03T00	Tabla de contactos
					-- AD74A79T00 (comentada)	Iprem
					SELECT COUNT(*) INTO vCont FROM AD74A79T00 WHERE USU_ALTA_79 = C_USUARIO;
					DELETE FROM AD74A79T00 WHERE USU_ALTA_79 = C_USUARIO;
					vTotalDelete := SQL%ROWCOUNT;
					vTexto := vTexto||' AD74A79T00: '||vTotalDelete;
					
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AD74A79T00','Registros AD74A79T00 proceso: ANTES: '||vCont||', DESPUES:'||vTotalDelete,sysdate);
					COMMIT;
					vPasos := 41;
					
					SELECT COUNT(*) INTO vCont FROM AD74A03T00 WHERE USU_ALTA_03 = C_USUARIO;
					DELETE FROM AD74A03T00 WHERE USU_ALTA_03 = C_USUARIO;
					vTotalDelete := SQL%ROWCOUNT;
					vTexto := vTexto||' AD74A03T00: '||vTotalDelete;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','AD74A03T00','Registros AD74A03T00  BORRADOS:'||vTotalDelete,sysdate);
					vTexto := vTexto||', T_CLAVES_X04: '||vTotalDelete;
					
					DELETE FROM T_CLAVES_X04; 
					vTotalDelete := SQL%ROWCOUNT;
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','T_CLAVES_X04','Registros T_CLAVES_X04  BORRADOS:'||vTotalDelete,sysdate);
					vTexto := vTexto||', T_CLAVES_X04: '||vTotalDelete;
				
					commit;
					DBMS_OUTPUT.PUT_LINE('INFORME BORRADO TABLAS PROCESO_CINCO:  '||vTexto);
					DBMS_OUTPUT.PUT_LINE('FIN BORRADO DE REGISTROS DE TABLAS DEL PROCESO_CINCO:  '||SYSDATE);
				end if;-- borrado P_PROCESO CINCO
				if instr(C_PROCESO,'CUATRO') !=0 then
					 vTexto := 'Total de registros borrados en ';
					 -- borrar datos de las tablas implicadas en el P_MIGRACION_CUATRO
					 -- T_CLAVESX87B_AD74A	
					 -- AD74A16T00	Tabla de informes
					 -- AD74A02T00	Tabla de informe social
					 -- AD74A82T00	Tabla de convivientes por informe social
					 DBMS_OUTPUT.PUT_LINE('INICIO BORRADO DE REGISTROS DE TABLAS DEL PROCESO_CUATRO:  '||SYSDATE);
					 select count(*) into vCont from ad74a82t00 where id_inf_social_82 in (select valor_ad74a from t_claves_x03);
					 DELETE from ad74a82t00 where ID_CONVIVIENTE_82 in (select valor_ad74a from T_CLAVES_X37);
					 vTotalDelete := SQL%ROWCOUNT;
					 insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
						values ('BORRAR','ad74a82t00','Registros  total: '||vCont||', ad74a82t00  BORRADOS:'||vTotalDelete,sysdate);
					 vTexto := vTexto||' AD74A82T00: '||vTotalDelete;
					 vPasos:=5;
					 
					 delete from T_CLAVES_X37;
					 vTotalDelete := SQL%ROWCOUNT;
					 insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('BORRAR','T_CLAVES_X37','Registros T_CLAVES_X37  BORRADOS:'||vTotalDelete,sysdate);
					 

					 DELETE FROM  AD74A02T00 where ID_INFORME_02 IN (SELECT ID_INFORME_16 
																	 FROM AD74A16T00 
						WHERE USU_ALTA_16 =C_USUARIO);
					 vTotalDelete := SQL%ROWCOUNT;
					 vTexto := vTexto||' AD74A02T00: '||vTotalDelete;      
					 DELETE FROM AD74A16T00 WHERE USU_ALTA_16 =C_USUARIO;
					 vTotalDelete := SQL%ROWCOUNT;
					 vTexto := vTexto||' AD74A16T00: '||vTotalDelete;  
					 DELETE FROM T_CLAVESX87B_AD74A WHERE TABLA_AD74A IN ('AD7482T00','AD7402T00'); 
					 vTotalDelete := SQL%ROWCOUNT;
					 vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vTotalDelete;
					 DBMS_OUTPUT.PUT_LINE('INFORME BORRADO TABLAS PROCESO_CUATRO:  '||vTexto);
					 DBMS_OUTPUT.PUT_LINE('FIN BORRADO DE REGISTROS DE TABLAS DEL PROCESO_CUATRO:  '||SYSDATE);
				end if;-- borrado P_PROCESO CUATRO
			EXCEPTION	
				WHEN OTHERS THEN 
					insert into t_errores_mig (PROCESO, ERROR, DESC_ERROR, FECHA_ERROR)
					values ('ERROR','BORRAR','ERROR EN EL BORRADO DE REGISTROS COMPRUEBE PASO: '||vPasos,sysdate);
					COMMIT;
			END;
			
		end if; -- C_BORRADO
		
			

			
			if instr(C_PROCESO,'TRES') !=0 then
                 vTexto := 'Total de registros borrados en ';
                 -- borrar datos de las tablas implicadas en el P_MIGRACION_TRES
                 -- 3T_CLAVESX87B_AD74A	
                 -- AD74A00T00	Tabla de expedientes
                DBMS_OUTPUT.PUT_LINE('INICIO BORRADO DE REGISTROS DE TABLAS DEL PROCESO_TRES:  '||SYSDATE);
                DELETE FROM AD74A00T00 WHERE USU_ALTA_00 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||' AD74A00T00: '||vTotalDelete;

                DELETE FROM T_CLAVESX87B_AD74A WHERE TABLA_AD74A IN ('AD7400T00'); 
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vTotalDelete;
                DBMS_OUTPUT.PUT_LINE('INFORME BORRADO TABLAS PROCESO_TRES:  '||vTexto);               
                DBMS_OUTPUT.PUT_LINE('FIN BORRADO DE REGISTROS DE TABLAS DEL PROCESO_TRES:  '||SYSDATE);
            end if;-- borrado P_PROCESO TRES
			if instr(C_PROCESO,'DOS') !=0  then
                vTexto := 'Total de registros borrados en ';
                -- borrar datos de las tablas implicadas en el P_MIGRACION_DOS
                -- T_CLAVESX87B_AD74A	    
                -- AD74A06T00	Tabla de direcciones
                -- AD74A32T00 (comentada)	Tabla de pisos tutelados
                DBMS_OUTPUT.PUT_LINE('INICIO BORRADO DE REGISTROS DE TABLAS DEL PROCESO_DOS:  '||SYSDATE);
                DELETE FROM AD74A06T00 WHERE USU_ALTA_06 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||' AD74A06T00: '||vTotalDelete;
                --DELETE FROM AD74A32T00 WHERE USU_ALTA_32 = C_USUARIO;
                --vTotalDelete := SQL%ROWCOUNT;
                --vTexto := vTexto||' AD74A32T00: '||vTotalDelete;
                DELETE FROM T_CLAVESX87B_AD74A WHERE TABLA_AD74A IN ('AD7406T00'); --, AD74A32T00');
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vTotalDelete;
                DBMS_OUTPUT.PUT_LINE('INFORME BORRADO TABLAS PROCESO_DOS:  '||vTexto);
                DBMS_OUTPUT.PUT_LINE('FIN BORRADO DE REGISTROS DE TABLAS DEL PROCESO_DOS:  '||SYSDATE);
            end if;-- borrado P_PROCESO DOS
            if instr(C_PROCESO,'UNO') !=0 then
                 vTexto := 'Total de registros borrados en ';
                -- borrar datos de las tablas implicadas en el P_MIGRACION_UNO
                -- T_CLAVESX87B_AD74A	    
                -- AD74A07T00	Tabla de perfiles
                -- AD74A05T00	Tabla de cuentas
				-- AD74A03T00	Tabla de contactos
				-- AD74A70T00	Tabla de documentos de avisos
				-- AD74A20T00 	Tabla de avisos
				-- AD74A89T00 	Tabla de facturaciones a ayuntamientos
                -- AD74A01T00	Tabla de solicitantes
                -- AD74A23T00	Tabla de dispositivos por solicitante
                -- AD74A04T00	Tabla de dependencia
                DBMS_OUTPUT.PUT_LINE('INICIO BORRADO DE REGISTROS DE TABLAS DEL PROCESO_UNO:  '||SYSDATE);
                DELETE FROM AD74A04T00 WHERE USU_ALTA_04 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||' AD74A04T00: '||vTotalDelete;
                DELETE FROM AD74A23T00 WHERE USU_ALTA_23 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A23T00: '||vTotalDelete;
				DELETE FROM AD74A25T00 WHERE id_solicitante_25 in (select id_solicitante_01 from AD74A01T00 WHERE USU_ALTA_01 = C_USUARIO);
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A25T00: '||vTotalDelete;
				DELETE FROM AD74A70T00 WHERE ID_AVISO_70 in (select id_aviso_20 FROM AD74A20T00 WHERE ID_SOLICITANTE_20 in (select id_solicitante_20 from AD74A01T00 WHERE USU_ALTA_01 = C_USUARIO));
				vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A70T00: '||vTotalDelete;
				DELETE FROM AD74A20T00 WHERE id_solicitante_20 in (select id_solicitante_01 from AD74A01T00 WHERE USU_ALTA_01 = C_USUARIO);
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A20T00: '||vTotalDelete;
				DELETE FROM AD74A89T00 WHERE id_solicitante_89 in (select id_solicitante_01 from AD74A01T00 WHERE USU_ALTA_01 = C_USUARIO);
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A89T00: '||vTotalDelete;
                DELETE FROM AD74A01T00 WHERE USU_ALTA_01 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A04T00: '||vTotalDelete;
                DELETE FROM AD74A05T00 WHERE USU_ALTA_05 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A05T00: '||vTotalDelete;
                DELETE FROM AD74A07T00 WHERE USU_ALTA_07 = C_USUARIO;
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', AD74A07T00: '||vTotalDelete;
                DELETE FROM T_CLAVESX87B_AD74A WHERE TABLA_AD74A IN ('AD7401T00');
                vTotalDelete := SQL%ROWCOUNT;
                vTexto := vTexto||', T_CLAVESX87B_AD74A: '||vTotalDelete;
                DBMS_OUTPUT.PUT_LINE('INFORME BORRADO TABLAS PROCESO_UNO:  '||vTexto);
                DBMS_OUTPUT.PUT_LINE('FIN BORRADO DE REGISTROS DE TABLAS DEL PROCESO_UNO:  '||SYSDATE);
            end if; -- borrado P_PROCESO uno

		
        COMMIT;
        IF  C_EJECUCION THEN*/