create or replace PROCEDURE P_MIGRACION_DOS AS 



  /*EN LA TABLA DE CLAVES SE INSERTA  IDSOLICITANTE_001,IDTIPODISPOSIT_066,IDBENEFICIARIO_009, IDDOMICILIO_034, IDPISO_083, IDAYUNTAMIENTO_082
  SE INCERTA EN LAS TABLAS AD74A.AD74A07T00(UPDATE) , AD74A.AD74A23T00, AD74A06T00
  AD74A31T00,  AD74A32T00*/

 -- 22/01/2024. Cambio id_municipio_06, al insertar daba error: el valor es demasiado grande para la columna "AD74A"."AD74A06T00"."ID_MUNICIPIO_06" (real: 4, máximo: 3)  
 -- cambio del formateo del campo
 -- 30/01/2024: Se comenta el cursor de ayuntamientos, porque no se esta usando, se carga mediante script
  
/**************************************************
  cursor para perfiles
  updte de  ad74a07t00
  **************************************************/
 CURSOR CSEL 
  IS
  SELECT te.idsolicitante_001 AS id_solicitante_01 ,
       te.idpiso_083
FROM x87b.x8701t00@x87b_dbl0 te
WHERE te.idpiso_083 is not null
GROUP BY te.idsolicitante_001,
         te.idpiso_083
ORDER BY te.idsolicitante_001;

  /**************************************************
  cursor para ayuntamientos
  AD7431T00
  **************************************************/
  /*CURSOR AYU
  IS
    SELECT IDAYUNTAMIENTO_082 AS ID_AYUNTAMIENTO_31, ---SECUENCIA
      CIF_082                 AS CIF_31,
      NULL                    AS DESC_ES_31,
      NULL                    AS DESC_EU_31,
      NUMEROCUENTA_082        AS NUM_CUENTA_31,
      FRECUENCIACOBRO_082     AS PERIODICIDAD_31,
      CONTACTO_082            AS CONTACTO_31,
      TELEFONOCONT_082        AS TELEFONO_31,
      2                       AS FORMA_PAGO_31, --PREGUNTAR A iÑAKI
      NULL F_AUTORIZACION_31,
      NULL DIA_FACTURACION_31,
      NULL AS ID_MANCOMUNIDAD_31,--Yes FK a la tabla 49 de MANCOMUNIDADES
      NULL ID_PROVINCIA_31,
      NULL      AS ID_MUNICIPIO_31,
      NULL      AS CP_31,
      - NULL    AS DIRECCION_31,
      NULL      AS DIR3_31,
      NULL      AS EMAIL_31,
      NULL      AS F_BAJA_31,
      '0'       AS BAJA_31, --????????
      'MIGRADO' AS USU_ALTA_31,
      NULL      AS USU_MODIF_31,
      NULL      AS F_ALTA_31,
      NULL      AS F_MODIF_31
    FROM X87B.X8782T00@X87B_DBL0;
  W_ID_AYUNTAMIENTO_31       NUMBER;
  W_ID_AYUNTAMIENTO_32_CLAVE NUMBER;
  W_ID_DIRECCION_32_CLAVE    NUMBER;
  ---
  */
  /************************************
  CURSOR PARA PISOS TUTELADOS
  AD7432T00
  *************************************/
  CURSOR PISO
  IS
SELECT PI.IDPISO_083    AS ID_PISO_32,
  PI.DENOMINACION_083   AS DENOMINACION_32,
  PI.IDAYUNTAMIENTO_082 AS ID_AYUNTAMIENTO_32 ,
  PI.IDDOMICILIO_034    AS ID_DIRECCION_32,
  'MIGRADO'             AS USU_ALTA_32 ,
  NULL                  AS USU_MODIF_32,
  SYSDATE               AS F_ALTA_32,
  NULL                  AS F_MODIF_32,
  NULL                  AS F_BAJA_32
FROM X87B.X8782T00@X87B_DBL0 P,
  X87B.X8783T00@X87B_DBL0 PI,
  X87B.X8734T00@X87B_DBL0 PD
WHERE P.IDAYUNTAMIENTO_082=PI.IDAYUNTAMIENTO_082
AND PI.IDDOMICILIO_034    =PD.IDDOMICILIO_034
group by PI.IDPISO_083,
PI.DENOMINACION_083,
PI.IDAYUNTAMIENTO_082,
PI.IDDOMICILIO_034; 
 /*******************************************
  CURSOR PARA DIRECCIONES
  AD7406T00
  ******************************************/
  CURSOR DIR
  IS
    select --160.450 registros
    TE.IDSOLICITANTE_001,
    DA.IDCONTACTO_035,
    RTRIM( LTRIM(F.IDDOMICILIO_034)) AS ID_DIRECCION_06,
    substr(RTRIM( LTRIM(F.DESCCALLE_034)),1,74) AS CALLE_06,
    CASE WHEN LENGTH(F.CODIGOPOSTAL_034) =1 
               THEN CASE WHEN F.CODIGOPOSTAL_034 !=0 THEN '0000'||F.CODIGOPOSTAL_034 ELSE NULL END
         WHEN LENGTH(F.CODIGOPOSTAL_034) =2
              THEN '000'||F.CODIGOPOSTAL_034
         WHEN LENGTH(F.CODIGOPOSTAL_034) =3
              THEN '00'||F.CODIGOPOSTAL_034
        WHEN LENGTH(F.CODIGOPOSTAL_034) =4
             THEN '0'||F.CODIGOPOSTAL_034 
       ELSE RTRIM(LTRIM(TO_CHAR(F.CODIGOPOSTAL_034, '99999'))) END AS CP_06,
    RTRIM( LTRIM(F.CODCALLE_034)) AS ID_CALLE_06,
    RTRIM( LTRIM( F.LOCALIDAD_034 )) AS ID_LOCALIDAD_06,
	LPAD(NVL(rtrim(ltrim(F.CODMUNICIPIO_034)),'999'),3,'0')  AS ID_MUNICIPIO_06,       
    RTRIM( LTRIM(TO_CHAR(F.CODPAIS_034, '999')))AS ID_PAIS_06,
    null                                                 as ID_PORTAL_06,
   CASE
        WHEN LENGTH (NVL( RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))))  )=1
        THEN '0'||NVL( RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99')))) 
       ELSE NVL( RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99')))) 
     END    AS ID_PROVINCIA_06,
    substr( RTRIM( LTRIM(F.MANO_034))||RTRIM( LTRIM(F.PUERTA_034)),1,10)  AS LETRA_06,
    RTRIM( LTRIM(F.DESCLOCALIDAD_034)) AS LOCALIDAD_06,
    RTRIM( LTRIM(F.DESCMUNICIPIO_034)) AS MUNICIPIO_06,
    RTRIM( LTRIM( F.PLANTA_034))        AS PISO_06,
    RTRIM( LTRIM(SUBSTR(F.NUMERO_034||F.BIS_034,1,15))) AS PORTAL_06,
    RTRIM( LTRIM(F.DESCPROVINCIA_034)) AS PROVINCIA_06,   
    RTRIM( LTRIM(F.ESCALERA_034))      as ESCALERA_06
  from X87B.X8735T00@X87B_DBL0 DA,
        X87B.X8701T00@X87B_DBL0 TE,
        X87B.X8734T00@X87B_DBL0 F
  where DA.IDCONTACTO_035 =TE.IDCONTACTOHABIT_035
    and   F.IDDOMICILIO_034 = DA.IDDOMICILIO_034;

 
 /*****************************************
 
 CURSOR PARA DIRECCIONES DE NOTIFICACION
   AD74A06T00
 ******************************************/
  CURSOR DIR_NOT
  IS SELECT   --55.887
    TE.IDSOLICITANTE_001,
    DA.IDCONTACTO_035,
    RTRIM( LTRIM(F.IDDOMICILIO_034)) AS ID_DIRECCION_06,
    substr(RTRIM( LTRIM(F.DESCCALLE_034)),1,74) AS CALLE_06,
    CASE WHEN LENGTH(F.CODIGOPOSTAL_034) =1 
               THEN CASE WHEN F.CODIGOPOSTAL_034 !=0 THEN '0000'||F.CODIGOPOSTAL_034 ELSE NULL END
         WHEN LENGTH(F.CODIGOPOSTAL_034) =2
              THEN '000'||F.CODIGOPOSTAL_034
         WHEN LENGTH(F.CODIGOPOSTAL_034) =3
              THEN '00'||F.CODIGOPOSTAL_034
        WHEN LENGTH(F.CODIGOPOSTAL_034) =4
             THEN '0'||F.CODIGOPOSTAL_034 
       ELSE RTRIM(LTRIM(TO_CHAR(F.CODIGOPOSTAL_034, '99999'))) END AS CP_06,
    RTRIM( LTRIM(F.CODCALLE_034)) AS ID_CALLE_06,
    RTRIM( LTRIM( F.LOCALIDAD_034 )) AS ID_LOCALIDAD_06,
	LPAD(NVL(rtrim(ltrim(F.CODMUNICIPIO_034)),'999'),3,'0')  AS ID_MUNICIPIO_06,       
      RTRIM( LTRIM(TO_CHAR(F.CODPAIS_034, '999')))AS ID_PAIS_06,
    null                                                 as ID_PORTAL_06,
   CASE
        WHEN LENGTH (NVL( RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))))  )=1
        THEN '0'||NVL( RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99')))) 
       ELSE NVL( RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(F.CODPROVINCIA_034, '99')))) 
     END    AS ID_PROVINCIA_06,
    substr( RTRIM( LTRIM(F.MANO_034))||RTRIM( LTRIM(F.PUERTA_034)),1,10)  AS LETRA_06,
    RTRIM( LTRIM(F.DESCLOCALIDAD_034)) AS LOCALIDAD_06,
    RTRIM( LTRIM(F.DESCMUNICIPIO_034)) AS MUNICIPIO_06,
    RTRIM( LTRIM( F.PLANTA_034))        AS PISO_06,
    RTRIM( LTRIM(SUBSTR(F.NUMERO_034||F.BIS_034,1,15))) AS PORTAL_06,
    RTRIM( LTRIM(F.DESCPROVINCIA_034)) AS PROVINCIA_06,   
    RTRIM( LTRIM(F.ESCALERA_034))      as ESCALERA_06
   FROM X87B.X8735T00@X87B_DBL0 DA,
        X87B.X8701T00@X87B_DBL0 TE,
        X87B.X8734T00@X87B_DBL0 F
   WHERE DA.IDCONTACTO_035 =TE.IDCONTACTONOTIFI_035
  AND F.IDDOMICILIO_034   = DA.IDDOMICILIO_034;
    
   W_DIR  NUMBER; 
   
   
/*********************************
CURSOR PARA DIRECCIONES DE PISOS TUTELADOS
       AD7406T00
***********************************/
CURSOR DIR_TUTELADOS
  IS 
SELECT   --100
    RTRIM( LTRIM( X83.IDDOMICILIO_034)) AS ID_DIRECCION_06,
    SUBSTR(RTRIM( LTRIM(X34.DESCCALLE_034)),1,74) AS CALLE_06,
    CASE WHEN LENGTH(X34.CODIGOPOSTAL_034) =1 
               THEN CASE WHEN X34.CODIGOPOSTAL_034 !=0 THEN '0000'||X34.CODIGOPOSTAL_034 ELSE NULL END
         WHEN LENGTH(X34.CODIGOPOSTAL_034) =2
              THEN '000'||X34.CODIGOPOSTAL_034
         WHEN LENGTH(X34.CODIGOPOSTAL_034) =3
              THEN '00'||X34.CODIGOPOSTAL_034
        WHEN LENGTH(X34.CODIGOPOSTAL_034) =4
             THEN '0'||X34.CODIGOPOSTAL_034 
        ELSE RTRIM(LTRIM(TO_CHAR(X34.CODIGOPOSTAL_034, '99999'))) END AS CP_06,
    RTRIM( LTRIM(X34.CODCALLE_034)) AS ID_CALLE_06,
    RTRIM( LTRIM( X34.LOCALIDAD_034 )) AS ID_LOCALIDAD_06,
	LPAD(NVL(rtrim(ltrim(X34.CODMUNICIPIO_034)),'999'),3,'0')  AS ID_MUNICIPIO_06,       
    RTRIM( LTRIM(TO_CHAR(X34.CODPAIS_034, '999')))AS ID_PAIS_06,
    null                                                 as ID_PORTAL_06,
   CASE
        WHEN LENGTH (NVL( RTRIM( LTRIM(TO_CHAR(X34.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(X34.CODPROVINCIA_034, '99'))))  )=1
        THEN '0'||NVL( RTRIM( LTRIM(TO_CHAR(X34.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(X34.CODPROVINCIA_034, '99')))) 
       ELSE NVL( RTRIM( LTRIM(TO_CHAR(X34.CODPROVINCIA_034, '99'))),RTRIM( LTRIM(TO_CHAR(X34.CODPROVINCIA_034, '99')))) 
     END    AS ID_PROVINCIA_06,
    substr( RTRIM( LTRIM(X34.MANO_034))||RTRIM( LTRIM(X34.PUERTA_034)),1,10)  AS LETRA_06,
    RTRIM( LTRIM(X34.DESCLOCALIDAD_034)) AS LOCALIDAD_06,
    RTRIM( LTRIM(X34.DESCMUNICIPIO_034)) AS MUNICIPIO_06,
    RTRIM( LTRIM( X34.PLANTA_034))        AS PISO_06,
    RTRIM( LTRIM(SUBSTR(X34.NUMERO_034||X34.BIS_034,1,15))) AS PORTAL_06,
    RTRIM( LTRIM(X34.DESCPROVINCIA_034)) AS PROVINCIA_06,   
    RTRIM( LTRIM(X34.ESCALERA_034))      as ESCALERA_06
FROM X87B.X8782T00@X87B_DBL0 X82,
  X87B.X8783T00@X87B_DBL0 X83,
  X87B.X8734T00@X87B_DBL0 X34
WHERE X82.IDAYUNTAMIENTO_082=X83.IDAYUNTAMIENTO_082
AND X34.IDDOMICILIO_034=X83.IDDOMICILIO_034;
 /*************************
  variables para PISOS TUTELADOS
  AD74A32T00
  **************************/
  W_ID_PISO_32  VARCHAR2(32);
  W_ID_PISO_32_CLAVE   NUMBER;
  W_DENOMINACION_32    VARCHAR2(100);

  /***********************
  variables para DIRECCIONES
  AD74A06T00
  **************************/
  W_ID_DIRECCION_06 CHAR(32);
  W_IDSOLICITANTE  NUMBER;
  W_IDSOLICITANTE_06 CHAR(32) ;
  W_IDDOMICILIO_06 CHAR(32) ;
  W_IDCONTACTO_035 CHAR(32) ;
  W_CONTADOR        NUMBER;
  
  
/************************
  variables para PERFILES
  AD74A07T00
  **************************/
  
  W_IDPISO_083_CLAVE         NUMBER:=0;
  W_IDSOLICITANTE_CLAVE07    NUMBER:=0;
  W_ID_PERFIL_CLAVE07        NUMBER:=0;

 BEGIN
 
 
  /************************************
  carga para  direcciones
  AD74A06T00
  ************************************/
  
  FOR DIR_06 IN DIR  LOOP  -- ABRO CURSOR DE DIRECCIONES
  
 SELECT AD74A06T00_SEQ.NEXTVAL
  INTO W_ID_DIRECCION_06
  FROM DUAL;
  -- Insert para la nueva tabla de claves ID_DIRECCION_06 ++
  
BEGIN
  INSERT INTO  T_CLAVESX87B_AD74A
  ( TABLA_X87B ,
  NOMBRE_COLUM_X87B,
  VALOR_COLUM_X87B,
  TABLA_AD74A,
  NOMBRE_COLUM_AD7A4,
  VALOR_COLUM_AD74A )
  values ('X8734T00',
  'IDDOMICILIO_034',
  DIR_06.ID_DIRECCION_06,
  'AD7406T00',
  'ID_DIRECCION_06',
  W_ID_DIRECCION_06);
  exception when dup_val_on_index then
  NULL;
   WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('error al INSERTAR EN T_CLAVESX87B_AD74A. IDDOMICILIO_034  '||SQLCODE||SQLERRM);
  END;
  ---Fin para la nueva tabla de claves

BEGIN
  SELECT DISTINCT VALOR_COLUM_AD74A
  INTO W_IDSOLICITANTE  --EL SOLICITANTE CON CÓDIGO NUEVO
  FROM T_CLAVESX87B_AD74A
  WHERE NOMBRE_COLUM_X87B='IDSOLICITANTE_001'
  AND VALOR_COLUM_X87B   =DIR_06.IDSOLICITANTE_001;
EXCEPTION
  WHEN NO_DATA_FOUND THEN 
       W_IDSOLICITANTE:=NULL;
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('error al hallar el solicitante.  '||DIR_06.IDSOLICITANTE_001||' '||DIR_06.ID_DIRECCION_06||' '||SQLCODE||SQLERRM);
 END;

 
  BEGIN
  INSERT
  INTO AD74A.AD74A06T00
  (
  ID_DIRECCION_06,
  CALLE_06,
  CP_06,
  ID_CALLE_06,
  ID_LOCALIDAD_06,
  ID_MUNICIPIO_06,
  ID_PAIS_06,
  ID_PORTAL_06,
  ID_PROVINCIA_06,
  LETRA_06,
  LOCALIDAD_06,
  MUNICIPIO_06,
  PAIS_06,
  PISO_06,
  PORTAL_06,
  PROVINCIA_06,
  ID_SOLICITANTE_06,
  USU_HISTORICO_06,
  F_HISTORICO_06,
  F_ALTA_06,
  USU_ALTA_06,
  ESCALERA_06
  )
  VALUES
  (
  W_ID_DIRECCION_06,
  DIR_06.CALLE_06,
  RTRIM( LTRIM(TO_CHAR( DIR_06.CP_06,'99999'))),
  DIR_06.ID_CALLE_06,
  DIR_06.ID_LOCALIDAD_06,
  DIR_06.ID_MUNICIPIO_06,
  DIR_06.ID_PAIS_06,
  DIR_06.ID_PORTAL_06,
  DIR_06.ID_PROVINCIA_06,
  DIR_06.LETRA_06,
  DIR_06.LOCALIDAD_06,
  DIR_06.MUNICIPIO_06,
  NULL,--DIR_06.PAIS_06,
  DIR_06.PISO_06,
  DIR_06.PORTAL_06,
  DIR_06.PROVINCIA_06,
  W_IDSOLICITANTE,
  NULL,
  NULL,
  SYSDATE,
  'MIGRADO',
  DIR_06.ESCALERA_06
  );
  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('CARGA AD74A06T00.  '||DIR_06.ID_DIRECCION_06||' '||W_IDSOLICITANTE||' '||SQLCODE||SQLERRM);
END;
  
    
   BEGIN 
     UPDATE AD74A.AD74A01T00
        SET ID_DIRECCION_01=W_ID_DIRECCION_06
      WHERE id_solicitante_01=W_IDSOLICITANTE;
     COMMIT;

  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A01T00 UPDATE  '||W_ID_DIRECCION_06||' '||W_IDSOLICITANTE||' '||SQLERRM);
  END;
  
  
END LOOP; ---FIN LOOP DIRECCIONES
COMMIT;
  ---FIN PARA AD74A06T00
  
 
 /**************************
 CARGA PARA DIRECCIONES DE NOTIFICACIÓN
   AD74A06T00
 ***************************/
 
  FOR D IN DIR_NOT  LOOP  -- ABRO CURSOR DE DIRECCIONES
  
SELECT AD74A06T00_SEQ.NEXTVAL
  INTO W_ID_DIRECCION_06
  FROM DUAL;
  -- Insert para la nueva tabla de claves ID_DIRECCION_06 NOTIFICACION ++
  
 BEGIN
  INSERT INTO  T_CLAVESX87B_AD74A
  ( TABLA_X87B ,
  NOMBRE_COLUM_X87B,
  VALOR_COLUM_X87B,
  TABLA_AD74A,
  NOMBRE_COLUM_AD7A4,
  VALOR_COLUM_AD74A,
   NOMBRE_COLUM_X87B_PK1,
  VALOR_COLUM_X87B_PK1
  )
  values
  ('X8734T00',
  'IDDOMICILIO_034',
  D.ID_DIRECCION_06,
  'AD7406T00',
  'ID_DIRECCION_06',
  W_ID_DIRECCION_06,
  'DIRECC_NOTIFICACION',
   NULL
  );
  exception when dup_val_on_index then
  NULL;
   WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('error al INSERTAR EN T_CLAVESX87B_AD74A. IDDOMICILIO_034 NOTIFICACIÓN  '||SQLCODE||SQLERRM);
  END;
   ---Fin para la nueva tabla de claves

BEGIN
  SELECT DISTINCT VALOR_COLUM_AD74A
  INTO W_IDSOLICITANTE  --EL SOLICITANTE CON CÓDIGO NUEVO
  FROM T_CLAVESX87B_AD74A
  WHERE NOMBRE_COLUM_X87B='IDSOLICITANTE_001'
  AND VALOR_COLUM_X87B   =D.IDSOLICITANTE_001;
EXCEPTION
  WHEN NO_DATA_FOUND THEN 
       W_IDSOLICITANTE:=NULL;
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('error al hallar el solicitante. PARA NOTIFICACIÓN '||D.IDSOLICITANTE_001||' '||D.ID_DIRECCION_06||' '||SQLCODE||SQLERRM);
 END;

 
  BEGIN
  INSERT
  INTO AD74A.AD74A06T00
  (
  ID_DIRECCION_06,
  CALLE_06,
  CP_06,
  ID_CALLE_06,
  ID_LOCALIDAD_06,
  ID_MUNICIPIO_06,
  ID_PAIS_06,
  ID_PORTAL_06,
  ID_PROVINCIA_06,
  LETRA_06,
  LOCALIDAD_06,
  MUNICIPIO_06,
  PAIS_06,
  PISO_06,
  PORTAL_06,
  PROVINCIA_06,
  ID_SOLICITANTE_06,
  USU_HISTORICO_06,
  F_HISTORICO_06,
  F_ALTA_06,
  USU_ALTA_06,
  ESCALERA_06
  )
  VALUES
  (
  W_ID_DIRECCION_06,
  D.CALLE_06,
  RTRIM( LTRIM(TO_CHAR(D.CP_06,'99999'))),
  D.ID_CALLE_06,
  D.ID_LOCALIDAD_06,
  D.ID_MUNICIPIO_06,
  D.ID_PAIS_06,
  D.ID_PORTAL_06,
  D.ID_PROVINCIA_06,
  D.LETRA_06,
  D.LOCALIDAD_06,
  D.MUNICIPIO_06,
  NULL,--D.PAIS_06,
  D.PISO_06,
  D.PORTAL_06,
  D.PROVINCIA_06,
  W_IDSOLICITANTE,
  NULL,
  NULL,
  SYSDATE,
  'MIGRADO',
  D.ESCALERA_06
  );
  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('CARGA AD74A06T00. NOTIFICACIÓN '||D.ID_DIRECCION_06||' '||W_IDSOLICITANTE||' '||SQLCODE||SQLERRM);
END;
  
    
   BEGIN 
   
    SELECT COUNT(*)
      INTO W_DIR
      FROM AD74A.AD74A01T00
     WHERE ID_SOLICITANTE_01=W_IDSOLICITANTE;
    
    IF W_DIR=0 THEN
     UPDATE AD74A.AD74A01T00
        SET ID_DIRECCION_01=W_ID_DIRECCION_06
      WHERE ID_SOLICITANTE_01=W_IDSOLICITANTE;
    END IF;
     

  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A01T00 UPDATE NOTIFICACION '||W_ID_DIRECCION_06||' '||W_IDSOLICITANTE||' '||SQLERRM);
  END;
END LOOP; ---FIN LOOP DIRECCIONES
COMMIT; 
  ---FIN PARA AD74A06T00 DIRECCIONES NOTIFICACION

 /**************************
 CARGA PARA DIRECCIONES TUTELADOS
   AD74A06T00
 ***************************/
 
 
  FOR D IN DIR_TUTELADOS  LOOP  -- ABRO CURSOR DE DIRECCIONES TUTELADOS
  
 SELECT AD74A06T00_SEQ.NEXTVAL
  INTO W_ID_DIRECCION_06
  FROM DUAL;
  -- Insert para la nueva tabla de claves ID_DIRECCION_06 PISOS TUTELADOS ++
   BEGIN
  INSERT INTO  T_CLAVESX87B_AD74A
  ( TABLA_X87B ,
  NOMBRE_COLUM_X87B,
  VALOR_COLUM_X87B,
  TABLA_AD74A,
  NOMBRE_COLUM_AD7A4,
  VALOR_COLUM_AD74A,
   NOMBRE_COLUM_X87B_PK1,
  VALOR_COLUM_X87B_PK1
  )
  VALUES
  ('X8783T00',
  'IDDOMICILIO_034',
  D.ID_DIRECCION_06,
  'AD7406T00',
  'ID_DIRECCION_06',
  W_ID_DIRECCION_06,
  'DIRECC_TUTELADOS',
   NULL
  );
  exception when dup_val_on_index then
  NULL;
   WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('error al INSERTAR EN T_CLAVESX87B_AD74A. IDDOMICILIO_034 TUTELADOS '||SQLCODE||SQLERRM);
  END;
  
  ---Fin para la nueva tabla de claves

  BEGIN
  INSERT
  INTO AD74A.AD74A06T00
  (
  ID_DIRECCION_06,
  CALLE_06,
  CP_06,
  ID_CALLE_06,
  ID_LOCALIDAD_06,
  ID_MUNICIPIO_06,
  ID_PAIS_06,
  ID_PORTAL_06,
  ID_PROVINCIA_06,
  LETRA_06,
  LOCALIDAD_06,
  MUNICIPIO_06,
  PAIS_06,
  PISO_06,
  PORTAL_06,
  PROVINCIA_06,
  ID_SOLICITANTE_06,
  USU_HISTORICO_06,
  F_HISTORICO_06,
  F_ALTA_06,
  USU_ALTA_06,
  ESCALERA_06
  )
  VALUES
  (
  W_ID_DIRECCION_06,
  D.CALLE_06,
  RTRIM( LTRIM(TO_CHAR(D.CP_06,'99999'))),
  D.ID_CALLE_06,
  D.ID_LOCALIDAD_06,
  D.ID_MUNICIPIO_06,
  D.ID_PAIS_06,
  D.ID_PORTAL_06,
  D.ID_PROVINCIA_06,
  D.LETRA_06,
  D.LOCALIDAD_06,
  D.MUNICIPIO_06,
  NULL,--D.PAIS_06,
  D.PISO_06,
  D.PORTAL_06,
  D.PROVINCIA_06,
  NULL,
  NULL,
  NULL,
  SYSDATE,
  'MIGRADO',
  D.ESCALERA_06
  );
  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('CARGA AD74A06T00. NOTIFICACIÓN '||D.ID_DIRECCION_06||' '||SQLCODE||SQLERRM);
END;
END LOOP; ---FIN LOOP DIRECCIONES TUTELADOS
COMMIT;
  ---FIN PARA AD74A06T00 DIRECCIONES TUTELADOS

/*********************************
  cargamos ayuntamientos
  AD74A31T00
  ***********************************/
 /*
  FOR Y IN AYU LOOP
  
  SELECT AD74A31T00_SEQ.NEXTVAL
  INTO W_ID_AYUNTAMIENTO_31
  FROM DUAL;
  -- Insert para la nueva tabla de claves ID_AYUNTAMIENTO_31 ++
  BEGIN
  INSERT INTO  T_CLAVESX87B_AD74A
  ( TABLA_X87B ,
  NOMBRE_COLUM_X87B,
  VALOR_COLUM_X87B,
  TABLA_AD74A,
  NOMBRE_COLUM_AD7A4,
  VALOR_COLUM_AD74A )
  values ('X87B.X8782T00',
  'IDAYUNTAMIENTO_082',
  Y.ID_AYUNTAMIENTO_31,
  'AD74A31T00',
  'ID_AYUNTAMIENTO_31',
  W_ID_AYUNTAMIENTO_31);
  exception when dup_val_on_index then
  NULL;
  END;
  ---Fin para la nueva tabla de claves
  BEGIN
   
  INSERT INTO AD74A.AD74A31T00
  (
  ID_AYUNTAMIENTO_31,
  CIF_31,
  DESC_ES_31,
  DESC_EU_31,
  NUM_CUENTA_31,
  PERIODICIDAD_31,
  CONTACTO_31,
  TELEFONO_31,
  FORMA_PAGO_31,
  F_AUTORIZACION_31,
  DIA_FACTURACION_31,
  ID_MANCOMUNIDAD_31,
  ID_PROVINCIA_31,
  ID_MUNICIPIO_31,
  CP_31,
  DIRECCION_31,
  DIR3_31 ,
  EMAIL_31 ,
  F_BAJA_31,
  BAJA_31,
  USU_ALTA_31,
  USU_MODIF_31,
  F_ALTA_31,
  F_MODIF_31
  )
  VALUES
  (
  W_ID_AYUNTAMIENTO_31,
  Y.CIF_31,
  Y.DESC_ES_31,
  Y.DESC_EU_31,
  Y.NUM_CUENTA_31,
  Y.PERIODICIDAD_31,
  Y.CONTACTO_31,
  Y.TELEFONO_31,
  Y.FORMA_PAGO_31,
  Y.F_AUTORIZACION_31,
  Y.DIA_FACTURACION_31,
  Y.ID_MANCOMUNIDAD_31,
  Y.ID_PROVINCIA_31,
  Y.ID_MUNICIPIO_31,
  Y.CP_31,
  Y.DIRECCION_31,
  Y.DIR3_31 ,
  Y.EMAIL_31 ,
  Y.F_BAJA_31,
  Y.BAJA_31,
  Y.USU_ALTA_31,
  Y.USU_MODIF_31,
  Y.F_ALTA_31,
  Y.F_MODIF_31
  );
  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('CARGA AD74A31T00.  '||W_ID_AYUNTAMIENTO_31||' '||Y.ID_AYUNTAMIENTO_31||' '||SQLCODE||SQLERRM);
 END;
  END LOOP; ---FIN LOOP fin ayuntamientoa
  COMMIT;
  -------fin ayuntamientos
  
  

  /*********************************
  cargamos pisos tutelados
   AD74A32T00
  ***********************************/
/*
for Q in PISO LOOP
 
 
  SELECT AD74A32T00_SEQ.NEXTVAL
  INTO W_ID_PISO_32_CLAVE
  from DUAL;
  
  
   -- Insert para la nueva tabla de claves ID_AYUNTAMIENTO_31 ++
  BEGIN
  INSERT INTO  T_CLAVESX87B_AD74A
  ( TABLA_X87B ,
  NOMBRE_COLUM_X87B,
  VALOR_COLUM_X87B,
  TABLA_AD74A,
  NOMBRE_COLUM_AD7A4,
  VALOR_COLUM_AD74A )
  values ('X87B.X8783T00',
  'IDPISO_083',
  Q.ID_PISO_32,
  'AD74A32T00',
  'ID_PISO_32',
  W_ID_PISO_32_CLAVE);
  exception when dup_val_on_index then
  NULL;
  END;
  ---Fin para la nueva tabla de claves
  
 
  
BEGIN
  SELECT VALOR_COLUM_AD74A
  INTO W_ID_AYUNTAMIENTO_32_CLAVE
  FROM T_CLAVESX87B_AD74A
  WHERE NOMBRE_COLUM_X87B='IDAYUNTAMIENTO_082'
  AND RTRIM(LTRIM(VALOR_COLUM_X87B))   = RTRIM(LTRIM(Q.ID_AYUNTAMIENTO_32));
   EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A32T00 AL BUSCAR EL IDAYUNTAMIENTO  '||Q.ID_AYUNTAMIENTO_32||' '||SQLERRM);
END;


BEGIN
  SELECT VALOR_COLUM_AD74A
  INTO W_ID_DIRECCION_32_CLAVE
  FROM T_CLAVESX87B_AD74A
  WHERE NOMBRE_COLUM_X87B='IDDOMICILIO_034'
  AND NOMBRE_COLUM_X87B_PK1='DIRECC_TUTELADOS'
  AND RTRIM(LTRIM(VALOR_COLUM_X87B))   =RTRIM(LTRIM(Q.ID_DIRECCION_32));
   EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A32T00 AL BUSCAR LA DIRECC. DEL PISO TUTELADO  '||Q.ID_AYUNTAMIENTO_32||' '||SQLERRM);
END;

  BEGIN
  INSERT
  INTO AD74A.AD74A32T00
  (
  ID_PISO_32,
  ID_AYUNTAMIENTO_32,
  DENOMINACION_32,
  ID_DIRECCION_32,
  USU_ALTA_32,
  USU_MODIF_32,
  F_ALTA_32,
  F_MODIF_32,
  F_BAJA_32
  )
  VALUES
  (
  W_ID_PISO_32_CLAVE,
  W_ID_AYUNTAMIENTO_32_CLAVE,
  Q.DENOMINACION_32,
  W_ID_DIRECCION_32_CLAVE,
  Q.USU_ALTA_32,
  Q.USU_MODIF_32,
  Q.F_ALTA_32,
  Q.F_MODIF_32,
  Q.F_BAJA_32
  );
  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('INSERT AD74A32T00.  '||Q.ID_DIRECCION_32||' '||Q.ID_AYUNTAMIENTO_32||' '||SQLCODE||SQLERRM);
  END;
  END LOOP; ---FIN LOOP pisos tutelados
  COMMIT;
   /********************
  Abrimos cursor para
  AD74A07T00 PERFILES
  *********************/
 /* 
  FOR R IN CSEL  LOOP --loop  solicitantes PARA UPDATE DE 07
  
  BEGIN
  
  BEGIN
  SELECT VALOR_COLUM_AD74A
  INTO W_IDPISO_083_CLAVE
  FROM T_CLAVESX87B_AD74A
  WHERE NOMBRE_COLUM_X87B='IDPISO_083'
  AND VALOR_COLUM_X87B   = R.IDPISO_083;
   EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A07T00 UPDATE AL HALLAR EL IDPISO_083'||R.IDPISO_083||' '||SQLERRM);
  END;
  
  BEGIN
  SELECT VALOR_COLUM_AD74A
  INTO W_IDSOLICITANTE_CLAVE07
  FROM T_CLAVESX87B_AD74A
  WHERE NOMBRE_COLUM_X87B='IDSOLICITANTE_001'
  AND VALOR_COLUM_X87B=R.ID_SOLICITANTE_01;
   EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A07T00 UPDATE AL HALLAR EL IDSOLICITANTE_001'||R.ID_SOLICITANTE_01||' '||SQLERRM);
    END;
  
  
  ---NO DATA FOUNF
BEGIN
  SELECT B.ID_PERFIL_07
  INTO W_ID_PERFIL_CLAVE07------listo para el update
  FROM  AD74A07T00 B, AD74A01T00 D
  WHERE B.ID_PERFIL_07=D.ID_PERFIL_01
  AND D.ID_SOLICITANTE_01=W_IDSOLICITANTE_CLAVE07;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
      W_ID_PERFIL_CLAVE07:= NULL;
  WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('ERROR  AD74A07T00 UPDATE AL HALLAR EL ID_PERFIL_07'||W_IDSOLICITANTE_CLAVE07||' '||SQLERRM);
 END;
  
  
   
  IF W_ID_PERFIL_CLAVE07 IS NOT NULL THEN
   
     UPDATE AD74A.AD74A07T00
        SET ID_PISO_07=W_IDPISO_083_CLAVE
      WHERE ID_PERFIL_07=W_ID_PERFIL_CLAVE07;
   
  END IF;
  EXCEPTION
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE('ERROR  AD74A07T00 UPDATE  '||W_ID_PERFIL_CLAVE07||' '||W_IDPISO_083_CLAVE||' '||W_IDSOLICITANTE_CLAVE07||' '||SQLERRM);
  END;
  ---FIN migracion de la AD74A07T00 PERFILES
  END LOOP;--- FIN loop de solicitantes PARA LA 07
  COMMIT;
 
*/
END P_MIGRACION_DOS;
/