create or replace PROCEDURE P_MIGRACION_UNO_NEW AS 

-- 25/01/2024: cambio del tipo de identificador del titular de la cuenta (si coincide con el dni del titular poner el mismo, sino 1)
-- 29/01/2024: unificar campos de la tabla de claves.

-- 05/02/2024: quitamos update porque ya se esta rellenando el campo en la insert:   --UPDATE AD74A.AD74A01T00 SET EXENCION_01 =R.EXENCION_01 WHERE ID_SOLICITANTE_01=W_ID_SOLICITANTE;
-- CONSTANTES: 
	--C_TABLA_X87_01 VARCHAR2(10):= 'X8701T00';
	--C_TABLA_AD74A_01  VARCHAR2(10):= 'AD74A01T00';
  
  
  /*EN LA TABLA DE CLAVES SE INSERTA  IDSOLICITANTE_001,IDTIPODISPOSIT_066,IDBENEFICIARIO_009,
  SE INCERTA EN LAS TABLAS AD74A.AD74A07T00 , AD74A.AD74A05T00, AD74A.AD74A01T00, AD74A.AD74A23T00*/
  
  /* ********************************
	cursor para solicitantes
  *********************************/
  
  CURSOR CSEL
  IS
    SELECT TE.APELLIDO1_001 AS APELLIDO1_01 ,       ---- VARCHAR2(100 BYTE) Yes Apellido 1
      TE.APELLIDO2_001      AS APELLIDO2_01 ,       ---- VARCHAR2(100 BYTE) Yes Apellido 2
      NVL(TE.CONCESEXENCION_001,0) AS EXENCION_01 ,        ---- NUMBER(1,0) Yes Indica si en el beneficiario est� o no exento de pago. 0: no exento 1: exento
      TE.FECNACIMIENTO_001  AS F_NACIMIENTO_01 ,    ---- DATE Yes Fecha de nacimiento del solicitante
      TE.IDENTIFICADOR_001  AS IDENTIFICADOR_01 ,   ---- VARCHAR2(20 BYTE) No Documento de identificación
      DECODE( TE.IDIOMASERV_001,'es',0,'eu',1,null,null,2)     AS IDIOMA_SERVICIO_01 , ---- NUMBER(1,0) Yes Idioma de prestación del servicio 0:castellano 1:euskera 2:otros
      TE.IDPERFIL_001       AS ID_PERFIL_01 ,       ---- NUMBER Yes FK a la tabla 07 de PERFIL
      TE.IDSOLICITANTE_001  AS ID_SOLICITANTE_01 ,  ---- NUMBER No Identificador interno del solicitante
      TE.NOMBRE_001         AS NOMBRE_01 ,          ---- VARCHAR2(100 BYTE) Yes Nombre
      TE.NUMSS_001          AS NUMSS_01 ,           ---- VARCHAR2(20 BYTE) Yes Número de la SS del solicitante
      TE.NUMTIS_001         AS NUMTIS_01 ,          ---- VARCHAR2(8 BYTE) Yes Numero TIS del solicitante
      CASE
        WHEN TE.IDIOMA_001 LIKE '%ot;%'
        THEN SUBSTR(TE.IDIOMA_001,INSTR(TE.IDIOMA_001,'ot;')+3,20)
        ELSE NULL
      END                               AS OTRO_IDIOMA_01,           --- -- tiene el formato es;eu;ot;ingles    Si tiene ot:xxx se a�adir� xxx. Si no no se a�adira ---?????????????????????????????????????????????????????????????????????????
      DECODE(TE.SEXO_001,'V','H',TE.SEXO_001)      AS SEXO_01 ,               ---- VARCHAR2(1 BYTE) Yes Sexo
      NVL(TE.TIPOIDENTIFICADOR_001,'1') AS TIPO_IDENTIFICADOR_01 , ---- VARCHAR2(1 BYTE) No Tipo identificador: 1-->DNI/NAN; 2-->CIF/IFK; 3-->NIE/AIZ; 4-->Pasaporte/Pasaportea; 5-->Otros/Beste Batzuk
      TE.TELEFSERV_001                  AS TLFNO_SERVICIO_01 ,     ---- VARCHAR2(20 BYTE) Yes Telefono de servicio
      TE.IDCONTACTOHABIT_035,
      TE.IDCONTACTONOTIFI_035,
      TE.FECHAMODIF_001,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),4),0,0,1) AS DIS_FISICA_07,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),3),0,0,1) AS DIS_INTELECTUAL_07,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),5),0,0,1) AS DIS_SENSORIAL_07,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),7),0,0,1) AS ENF_MENTAL_07, 
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),0),0,0,1) AS MAYOR_65_DEP_07,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),1),0,0,1) AS MAYOR_65_RIESGO_DEP_07,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),2),0,0,1) AS MAYOR_75_SOLA_07,
      DECODE(INSTR(NVL(TE.IDPERFIL_001,'X'),6),0,0,1) AS RIESGO_AISLAMIENTO_07,
      PISOTUTELADO_001 AS PISO_TUTELADO_07,
      idpiso_083,
      DEPENFECRESOL_001,
      DEPENBAREMO_001,
      DEPENDESC_001,
	  NUMEROCUENTA_001,
	  decode(instr(identificador_001,dnicuenta_001),1,nvl(tipoidentificadortitular_001,nvl(tipoidentificador_001,1)),decode(nvl(dnicuenta_001,'X'),'X',null,nvl(tipoidentificadortitular_001,1))) TIPOIDENTIFICADORTITULAR_001,
      NVL(DNICUENTA_001,'SIN_DNI') as DNICUENTA_001,
      TITULARCUENTA_001,
      FECHAMODIFCUENTA_001,
      NUMCUENTAANTIGUA_001,
	  BE.FECHAALTA_009 AS FECHAALTA_009,
	  TO_NUMBER (CASE WHEN BE.FECHAINISERVICIO_009 IS NOT NULL THEN 1 ELSE  0 END, '9999') as BENEFICIARIO_009,
      BE.FECHABAJA_009 AS FECHABAJA_009,
	  BE.FECHAINISERVICIO_009 FECHAINISERVICIO_009,
	  CASE WHEN TE.FECHAMODIF_001< BE.FECHAMODIF_009 THEN TE.FECHAMODIF_001  ELSE BE.FECHAMODIF_009  END AS FECHAMODIF_009,
      BE.NOREINTENTAR_009 AS NOREINTENTAR_009,
      BE.NUMABONADO_009 AS NUMABONADO_009,
      BE.OBSERVACIONES_009 AS OBSERVACIONES_009,
	  SUBSTR(DA.EMAIL_035 ,1,100) AS EMAIL_035,
      DA.TELEF_035 AS TELEF_035,
      DA.IDCONTACTO_035 AS IDCONTACTO_035
    FROM X87B.X8701T00@X87B_DBL0 TE, X87B.X8709T00@X87B_DBL0 BE, X87B.X8735T00@X87B_DBL0 DA
	WHERE TE.IDSOLICITANTE_001 = BE.IDSOLICITANTE_001(+)
	  AND TE.IDCONTACTOHABIT_035 = DA.IDCONTACTO_035(+)
	  AND NOT EXISTS ( SELECT VALOR_X87B FROM T_CLAVES_X01 WHERE VALOR_X87B =TE.IDSOLICITANTE_001)
    ORDER BY TE.IDSOLICITANTE_001;
	
	  
	/* *************************************
	cursor para dispositivos_solicitantes
	AD74A23T00
	******************/
  CURSOR DIS (W_SOLICITANTE VARCHAR2)
  IS
    SELECT W_IDTIPODISPOSIT_066,
      TERMINAL_009
    FROM
      (SELECT DP.IDTIPODISPOSIT_066,
        DECODE(DP.DESCRIPCION_066,'Detector Fuego/Humo',1 ,'Detector Gas',2 ,'Detector CO',3 ,'Detector Movilidad',4 ,'Detector iVi',5,8 )AS W_IDTIPODISPOSIT_066,
        DP.DESCRIPCION_066,
        BE.TERMINAL_009
      FROM X87B.X8766T00@X87B_DBL0 DP,
        X87B.X8769T00@X87B_DBL0 DB,
        X87B.X8709T00@X87B_DBL0 BE
      WHERE BE.IDBENEFICIARIO_009=DB.IDBENEFICIARIO_009
      AND DB.IDTIPODISPOSIT_066  =DP.IDTIPODISPOSIT_066
      AND BE.IDSOLICITANTE_001   =W_SOLICITANTE
      GROUP BY DP.IDTIPODISPOSIT_066,
        DP.DESCRIPCION_066,
        BE.IDSOLICITANTE_001,
        BE.TERMINAL_009
      )
  GROUP BY W_IDTIPODISPOSIT_066,
    TERMINAL_009;
	
	-- caloulo del id de solicitante.  PK de tabla clave del proceso. 
	W_ID_SOLICITANTE           NUMBER:=0;  -- calculo AD74A01T00_SEQ.NEXTVAL
	
	-- calculo del id del perfil para luego insertar en solicitantes
	W_ID_PERFIL                NUMBER:=0; -- calculo AD74A07T00_SEQ.NEXTVAL
	  
	-- Calculo de los ids de cuentas para insertar en la tabla de solicitantes.
	W_ID_CUENTA                NUMBER:=0; --calculo AD74A05T00_SEQ.NEXTVAL
	W_ID_CUENTA_NOT            NUMBER:=0; --calculo AD74A05T00_SEQ.NEXTVAL
	
	-- caloulo del id de dispositivo-solicitante. 
	W_ID_DISP_SOL_23 NUMBER; -- calculo AD74A23T00_SEQ.NEXTVAL
	  
	-- caloulo del id de dependencia 
	W_ID_DEPENDENCIA_04 NUMBER;-- calculo AD74A04T00_SEQ.NEXTVAL
	
	-- calculo del id de la valoracion
	W_ID_VALORACION AD74A08T00.ID_VALORACION_08%TYPE; -- calculo AD74A08T00_SEQ.NEXTVAL
	
	-- Exception que deja 
    ID_SOL_ERROR EXCEPTION;
	
	-- Valor para nivel de soporte a moderado
	C_MODERADO AD74A58T00.ID_NIVEL_SOPORTE_58%TYPE; 
  
	BEGIN
		select ID_NIVEL_SOPORTE_58 INTO C_MODERADO from ad74a58t00 where upper(DESC_ES_58) like '%MODERADO%';
		
		FOR R IN CSEL LOOP --loop para solicitantes
		BEGIN
			/*control para  ID_SOLICITANTE_01*/
			SELECT AD74A01T00_SEQ.NEXTVAL INTO W_ID_SOLICITANTE FROM DUAL;
    
			-- Insert para la nueva tabla de claves IDSOLICITANTE_001 ++
			BEGIN
				INSERT INTO T_CLAVES_X01  (VALOR_X87B,  VALOR_AD74A, FECHA_MIG, MIGRADO)
				VALUES (R.ID_SOLICITANTE_01, W_ID_SOLICITANTE, SYSDATE, 'S');
			EXCEPTION
				WHEN dup_val_on_index THEN
					NULL;
			END;
    
			-- Datos de los perfiles del solicitante recuperados en el cursor
			/* AD74A07T00 PERFILES  *********************/
			-- El registro generado en la tabla: W_ID_PERFIL se insertara en la nueva tabla de solicitantes
			SELECT AD74A07T00_SEQ.NEXTVAL INTO W_ID_PERFIL FROM DUAL;
			BEGIN
				INSERT INTO AD74A.AD74A07T00 (	DIS_FISICA_07, DIS_INTELECTUAL_07, DIS_SENSORIAL_07, ENF_MENTAL_07, F_ALTA_07, ID_PERFIL_07, 
												MAYOR_65_DEP_07, MAYOR_65_RIESGO_DEP_07, MAYOR_75_SOLA_07, PISO_TUTELADO_07, RIESGO_AISLAMIENTO_07,USU_ALTA_07)
				VALUES ( R.DIS_FISICA_07, R.DIS_INTELECTUAL_07, R.DIS_SENSORIAL_07, R.ENF_MENTAL_07, SYSDATE, W_ID_PERFIL, 
						 R.MAYOR_65_DEP_07, R.MAYOR_65_RIESGO_DEP_07, R.MAYOR_75_SOLA_07, R.PISO_TUTELADO_07, R.RIESGO_AISLAMIENTO_07, 'MIGRADO' );
			
				-- COMMIT; 05/02/2024 quitado para que no inserte datos a medias.
			EXCEPTION
				WHEN OTHERS THEN
					insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert AD74A07T00','ERROR  AD74A07T00  '||W_ID_PERFIL, sysdate);
					DBMS_OUTPUT.PUT_LINE('ERROR  AD74A07T00  perfil: '||W_ID_PERFIL||' '||SQLERRM);
			END;
    
			/* *******************************************************
			---Bloque para migracion de la AD74A05T00 CUENTAS ********************************************************/
    
			-- Cambio de la programacion de las cuentas, para que guarde la cuenta nueva y vieja en orden correcto. 
			-- Si tenemos cuenta antigua tenemos que insertarla primero para que queden en orden correcto:
			-- 08/02/2024. Se dejan los valores del titular de la cuenta : NOMBRE_TIT_CUENTA_05, APELLIDO1_TIT_CUENTA_05, APELLIDO2_TIT_CUENTA_05 vacios hasta que los separen en X87
			if (R.FECHAMODIFCUENTA_001 IS NOT NULL AND R.NUMCUENTAANTIGUA_001 IS NOT NULL) then
				
				begin
			
					SELECT AD74A05T00_SEQ.NEXTVAL INTO W_ID_CUENTA_NOT FROM DUAL;
			
					INSERT INTO AD74A.AD74A05T00 ( 	ID_CUENTA_05, NUM_CUENTA_05, COD_TIPO_IDEN_TITULAR_05, IDEN_TITULAR_05, TITULAR_CUENTA_05,
													ID_SOLICITANTE_05, USU_HISTORICO_05, F_HISTORICO_05, F_ALTA_05, USU_ALTA_05, MOTIVO_05,
													NOMBRE_TIT_CUENTA_05, APELLIDO1_TIT_CUENTA_05, APELLIDO2_TIT_CUENTA_05)
					VALUES ( W_ID_CUENTA_NOT,  R.NUMCUENTAANTIGUA_001, R.TIPOIDENTIFICADORTITULAR_001, NVL(R.DNICUENTA_001,'SIN_DNI'), R.TITULARCUENTA_001,
							 W_ID_SOLICITANTE, NULL, R.FECHAMODIFCUENTA_001, SYSDATE, 'MIGRADO', NULL,
							 R.TITULARCUENTA_001, null, null);
				EXCEPTION
					WHEN OTHERS THEN
						insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert AD74A05T00','ERROR  AD74A05T00 sol: '||R.ID_SOLICITANTE_01||', cta ANTIGUA '||R.NUMCUENTAANTIGUA_001, sysdate);
						DBMS_OUTPUT.PUT_LINE('CARGA AD74A05T00. CUENTA ANTIGUA, sol: '||W_ID_SOLICITANTE||' '||SQLCODE||SQLERRM);
				END;
			end if;
			
			if (R.NUMEROCUENTA_001 IS NOT NULL) then
				begin
			
					SELECT AD74A05T00_SEQ.NEXTVAL INTO W_ID_CUENTA FROM DUAL;
			
					INSERT INTO AD74A.AD74A05T00 ( 	ID_CUENTA_05, NUM_CUENTA_05, COD_TIPO_IDEN_TITULAR_05, IDEN_TITULAR_05, TITULAR_CUENTA_05,
													ID_SOLICITANTE_05, USU_HISTORICO_05, F_HISTORICO_05, F_ALTA_05, USU_ALTA_05, MOTIVO_05,
													NOMBRE_TIT_CUENTA_05, APELLIDO1_TIT_CUENTA_05, APELLIDO2_TIT_CUENTA_05)
					VALUES ( W_ID_CUENTA,  R.NUMEROCUENTA_001, R.TIPOIDENTIFICADORTITULAR_001, NVL(R.DNICUENTA_001,'SIN_DNI'), R.TITULARCUENTA_001,
							 W_ID_SOLICITANTE, NULL, NULL, SYSDATE, 'MIGRADO', NULL,
							 R.TITULARCUENTA_001, null, null);
				EXCEPTION
					WHEN OTHERS THEN
						insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert AD74A05T00','ERROR  AD74A05T00 sol: '||R.ID_SOLICITANTE_01||', cta NUEVA '||R.NUMEROCUENTA_001, sysdate);
						DBMS_OUTPUT.PUT_LINE('CARGA AD74A05T00. CUENTA NUEVA '||W_ID_SOLICITANTE||' '||SQLCODE||SQLERRM);
				END;
			end if;
    
			/* insert de valoraciones AD74A08T00 *****************/
			BEGIN
				SELECT AD74A08T00_SEQ.NEXTVAL INTO W_ID_VALORACION FROM DUAL;
				
				-- tipo de valoracion: 3 (presencial)
				-- nivel de soporte: moderado (recogido del maestro tabla 58)--C_MODERADO
				-- 19/02/2024: se quita el solicitante de la tabla de valoracion, se deja unicamente en la tabla de solicitantes el valor de la valoracion. 
				INSERT INTO AD74A.AD74A08T00(ID_VALORACION_08, F_VALORACION_08, TIPO_VALORACION_08, CONTRATO_ACTUACION_08, ID_NIVEL_SOPORTE_08,
											 ALTO_RIESGO_08, NIVEL_MALTRATO_08, NIVEL_SUICIDIO_08, PERIODICIDAD_PROPUESTA_08, PERIODICIDAD_ACORDADA_08,
											 PROPUESTA_ACEPTADA_08, MOTIVO_RETRASO_08, ID_SOLICITANTE_08, USU_HISTORICO_08, F_HISTORICO_08,
											 F_ALTA_08, USU_ALTA_08)
				VALUES(	W_ID_VALORACION, R.FECHAALTA_009, 3, null, C_MODERADO,
						null, null, null, null, null,
						null, null, null, null, null,
						sysdate, 'MIGRADO');
				EXCEPTION
				WHEN OTHERS THEN
					insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert valoracion','ERROR  AD74A08T00 '||W_ID_SOLICITANTE||' idval: '||W_ID_VALORACION, sysdate);
					DBMS_OUTPUT.PUT_LINE('CARGA AD74A08T00.  '||W_ID_VALORACION||' solicitante: '||W_ID_SOLICITANTE||' '||SQLCODE||SQLERRM);
			END;
			
			/* INSERT Solicitantes AD74A01T00 */
			BEGIN
				INSERT INTO AD74A.AD74A01T00 ( APELLIDO1_01, APELLIDO2_01, BENEFICIARIO_01, EMAIL_01, EXENCION_01,
											   F_ALTA_TELEASISTENCIA_01, F_BAJA_01, F_BENEFICIARIO_01, F_INICIO_01,	F_MODIF_01,
											   F_NACIMIENTO_01, ID_CUENTA_01, IDENTIFICADOR_01, ID_INF_SOCIAL_01, IDIOMA_SERVICIO_01,
											   ID_PERFIL_01, ID_SOLICITANTE_01, ID_VALORACION_01,
											   NOMBRE_01, NO_REINTENTAR_01,	NUM_ABONADO_01,	NUMSS_01, NUMTIS_01,
											   OBSERVACIONES_01, OTRO_IDIOMA_01,	SEXO_01, TIPO_IDENTIFICADOR_01,	TLFNO_MOVIL_01,
											   TLFNO_SERVICIO_01, USU_ALTA_01, MOTIV_INST_FUERA_PLAZO_01, INSTALADO_01,	ID_MOTIVO_BAJA_01 )
				VALUES  ( R.APELLIDO1_01, R.APELLIDO2_01, R.BENEFICIARIO_009, R.EMAIL_035, R.EXENCION_01,
						  R.FECHAALTA_009, R.FECHABAJA_009, R.FECHAINISERVICIO_009, R.FECHAINISERVICIO_009, R.FECHAMODIF_009,
						  R.F_NACIMIENTO_01, W_ID_CUENTA, R.IDENTIFICADOR_01, NULL, R.IDIOMA_SERVICIO_01,
						  W_ID_PERFIL, W_ID_SOLICITANTE,  W_ID_VALORACION,
						  R.NOMBRE_01, R.NOREINTENTAR_009, R.NUMABONADO_009, R.NUMSS_01, R.NUMTIS_01,
						  R.OBSERVACIONES_009, R.OTRO_IDIOMA_01, R.SEXO_01, R.TIPO_IDENTIFICADOR_01, R.TELEF_035,
						  R.TLFNO_SERVICIO_01, 'MIGRADO', NULL, DECODE(R.FECHAINISERVICIO_009,NULL,NULL,1),NULL );
     
			EXCEPTION
				WHEN OTHERS THEN
					RAISE ID_SOL_ERROR;
					DBMS_OUTPUT.PUT_LINE('Error al insertar en Solicitantes'||W_ID_SOLICITANTE||' '||SQLERRM);
			END;
			

		/* ****************************  insertamos en DISPOSITIVOS  AD74A23T00 **************************/
		FOR CUR IN DIS (R.ID_SOLICITANTE_01) LOOP
			SELECT AD74A23T00_SEQ.NEXTVAL INTO W_ID_DISP_SOL_23 FROM DUAL;
    
			BEGIN
				INSERT INTO AD74A.AD74A23T00 (  ID_DISP_SOL_23, ID_SOLICITANTE_23,  ID_TERMINAL_23, --- NOTA REVISAR ESTE CAMPO CUANDO HAYA DATOS CORRECTOS
												ID_DISPOSITIVO_23, F_INSTALACION_23, USU_ALTA_23,
												F_ALTA_23, USU_BAJA_23, F_BAJA_23, ACEPTADO_23)
				VALUES  ( W_ID_DISP_SOL_23, W_ID_SOLICITANTE, CUR.TERMINAL_009,
						  CUR.W_IDTIPODISPOSIT_066, NULL, 'MIGRADO',
						  NULL, NULL, NULL, 1 );
			EXCEPTION
				WHEN OTHERS THEN
					insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert disps-solicitante','ERROR  AD74A23T00 '||W_ID_SOLICITANTE||' iddisp: '||W_ID_DISP_SOL_23, sysdate);
					DBMS_OUTPUT.PUT_LINE('CARGA AD74A23T00.  '||W_ID_DISP_SOL_23||' '||W_ID_SOLICITANTE||' '||CUR.W_IDTIPODISPOSIT_066||' '||SQLCODE||SQLERRM);
			END;
		END LOOP; ---FIN LOOP DISPOSITIVOS
    

    
		/* **************************************  Bloque para DEPENDECIAS -AD74A04T00   ****************************************/
		IF R.DEPENFECRESOL_001 IS NOT NULL THEN   
			SELECT AD74A04T00_SEQ.NEXTVAL INTO W_ID_DEPENDENCIA_04 FROM DUAL;
			
			BEGIN
				INSERT INTO AD74A.AD74A04T00 ( 	ID_DEPENDENCIA_04, ID_GRADO_DEPENDENCIA_04, ID_EXPEDIENTE_04, ID_SOLICITANTE_04,
												F_RESOLUCION_04, BAREMO_04, USU_HISTORICO_04, F_HISTORICO_04,
												USU_ALTA_04, F_ALTA_04, DESC_OTRA_DEPENDENCIA_04 )
				VALUES ( W_ID_DEPENDENCIA_04, NULL, NULL, W_ID_SOLICITANTE,
						 R.DEPENFECRESOL_001, R.DEPENBAREMO_001, NULL, NULL,
						 'MIGRADO', SYSDATE, R.DEPENDESC_001 );
			EXCEPTION
				WHEN OTHERS THEN
					insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert dependencias','ERROR  AD74A04T00 '||W_ID_SOLICITANTE||' idDependencia: '||W_ID_DEPENDENCIA_04, sysdate);
					DBMS_OUTPUT.PUT_LINE('CARGA AD74A04T00. DEPENDENCIAS '||W_ID_SOLICITANTE||' '||SQLCODE||SQLERRM);
			END;
		END IF; -- FIN LOOP DEPENDENCIAS
	  

		
	  COMMIT; -- Se hace commit de cada solicitante completo
	 EXCEPTION
		WHEN ID_SOL_ERROR THEN
			ROLLBACK;
			insert into t_errores_mig(PROCESO,ERROR,DESC_ERROR,FECHA_ERROR)
						values('UNO', 'insert solicitantes','ERROR  AD74A01T00 '||R.ID_SOLICITANTE_01||','||W_ID_SOLICITANTE, sysdate);
			delete from T_CLAVES_X01 where VALOR_X87B = R.ID_SOLICITANTE_01;
			commit;
	 END;
     END LOOP;--- FIN loop de solicitantes

END P_MIGRACION_UNO_NEW;
/