create or replace PROCEDURE P_MIGRACION_UNO 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)

  /*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*/
  /*********************************
  primer 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
      TE.CONCESEXENCION_001 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ñadirá ---?????????????????????????????????????????????????????????????????????????
      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,
      ----valores para la 07 prefiles
      CASE
        WHEN TE.IDPERFIL_001 ='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='4'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='4'
        THEN 1
        ELSE 0
      END AS DIS_FISICA_07,
      CASE
        WHEN TE.IDPERFIL_001 ='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='3'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='3'
        THEN 1
        ELSE 0
      END AS DIS_INTELECTUAL_07,
      CASE
        WHEN TE.IDPERFIL_001 ='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='5'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='5'
        THEN 1
        ELSE 0
      END AS DIS_SENSORIAL_07,---5
      CASE
        WHEN TE.IDPERFIL_001 ='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='7'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='7'
        THEN 1
        ELSE 0
      END AS ENF_MENTAL_07, ---7
      --nuevo F_ALTA_07
      ---nuevo ID_PERFIL_07
      --IDPISO_083 AS ID_PISO_07, -- char de 32 hacer la conversion FK a la tabla 32 de PISOS_TUTELADOS EN LA X87B.X87  TABLA 82, LO PONGO A NULL DE MOMRNTO
      CASE
        WHEN TE.IDPERFIL_001 ='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='0'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='0'
        THEN 1
        ELSE 0
      END AS MAYOR_65_DEP_07, ---0
      CASE
        WHEN TE.IDPERFIL_001 ='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='1'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='1'
        THEN 1
        ELSE 0
      END AS MAYOR_65_RIESGO_DEP_07,----1
      CASE
        WHEN TE.IDPERFIL_001 ='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='2'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='2'
        THEN 1
        ELSE 0
      END              AS MAYOR_75_SOLA_07, ----2
      PISOTUTELADO_001 AS PISO_TUTELADO_07,
      CASE
        WHEN TE.IDPERFIL_001 ='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),1,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),2,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),3,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),4,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),5,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),6,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),7,1)='6'
        THEN 1
        WHEN SUBSTR( REPLACE(TE.IDPERFIL_001, ';',''),8,1)='6'
        THEN 1
        ELSE 0
      END AS RIESGO_AISLAMIENTO_07,
      idpiso_083,----fin valores para perfiles
      DEPENFECRESOL_001,
      DEPENBAREMO_001,
      DEPENDESC_001
    FROM X87B.X8701T00@X87B_DBL0 TE
  --   where rownum<1000
    ORDER BY TE.IDSOLICITANTE_001;
  W_EMAIL_01                 VARCHAR2(200);
  W_TLFNO_MOVIL_01           VARCHAR2(20);
  W_IDCONTACTO_035           VARCHAR2(32);
  W_BENEFICIARIO_01          NUMBER;
  W_F_ALTA_TELEASISTENCIA_01 DATE;
  W_F_BAJA_01                DATE;
  W_F_BENEFICIARIO_01        DATE;
  W_F_INICIO_01              DATE;
  W_F_MODIF_01               DATE;
  W_ID_INF_SOCIAL_01 NUMBER;
  W_NO_REINTENTAR_01 NUMBER;
  W_NUM_ABONADO_01   VARCHAR2(20);
  W_OBSERVACIONES_01 VARCHAR2(2000);
  W_INSTALADO_01     NUMBER:=0;
  W_ID_DEPENDENCIA_04 NUMBER;--VARIABLE PRA TABLA DE DEPENDENCIAS
  
  /**************************************
  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;
  W_ID_DISP_SOL_23 NUMBER;
  
   
 --W_ID_PISO_32      VARCHAR2(32);
  W_DENOMINACION_32          VARCHAR2(100);
  W_ID_PISO_32_CLAVE         NUMBER;
  W_IDSOLICITANTE_CLAVE07    NUMBER:=0;
  W_ID_PERFIL_CLAVE07        NUMBER:=0;
  W_ID_PERFIL                NUMBER:=0;
  W_IDPISO_083_CLAVE         NUMBER:=0;
  W_ID_INF_SOCIAL            NUMBER:=0;
  W_ID_SOLICITANTE           NUMBER:=0;
  W_EXENCION                 NUMBER;
  W_ID_CUENTA                NUMBER:=0;
  W_ROWNUM                   NUMBER;
  W_NUM_CUENTA_05            VARCHAR2(100);
  W_COD_TIPO_IDEN_TITULAR_05 VARCHAR2(100);
  W_IDEN_TITULAR_05          VARCHAR2(100);
  W_TITULAR_CUENTA_05        VARCHAR2(100);
 
 
 
 
 
  w_IDCONTACTOHABIT_035      VARCHAR2(300);
  /*variables para la carga de la AD74A05T00 NOT*/
  W_NUM_CUENTA_05_NOT            VARCHAR2(100);
  W_COD_TIPO_IDEN_TITULAR_05_NOT VARCHAR2(100);
  W_IDEN_TITULAR_05_NOT          VARCHAR2(100);
  W_TITULAR_CUENTA_05_NOT        VARCHAR2(100);
  W_F_HISTORICO_05_NOT           DATE;
  W_NUM_CUENTA_05_ANT_NOT        VARCHAR2(100);
  W_ID_CUENTA_NOT                NUMBER:=0;
  W_NOT                          NUMBER;
  /******************
  variables para PISOS TUTELADOS
  AD74A32T00
  **************************/
  W_ID_PISO_32         NUMBER:=0;
  W_ID_AYUNTAMIENTO_32 NUMBER;
  W_ID_DIRECCION_32    NUMBER;
  /******************
  variables para DIRECCIONES
  AD74A06T00
  **************************/
  W_ID_DIRECCION_06 NUMBER;
  W_IDSOLICITANTE   NUMBER;
  
  
  
BEGIN
  FOR R IN CSEL
  LOOP --loop para solicitantes
  
    /*control para  ID_SOLICITANTE_01*/
    SELECT AD74A01T00_SEQ.NEXTVAL
    INTO W_ID_SOLICITANTE
    FROM DUAL;
    
    
    IF R.EXENCION_01 IS NULL THEN
      W_EXENCION     :=0;
    ELSE
      W_EXENCION:= R.EXENCION_01;
    END IF;
    -- Insert para la nueva tabla de claves IDSOLICITANTE_001 ++
    BEGIN
      INSERT
      INTO T_CLAVESX87B_AD74A
        (
          TABLA_X87B ,
          NOMBRE_COLUM_X87B,
          VALOR_COLUM_X87B,
          TABLA_AD74A,
          NOMBRE_COLUM_AD7A4,
          VALOR_COLUM_AD74A
        )
        VALUES
        (
          'X87B.X8701T00',
          'IDSOLICITANTE_001',
          R.ID_SOLICITANTE_01,
          'AD7401T00',
          'ID_SOLICITANTE_01',
          W_ID_SOLICITANTE
        );
    EXCEPTION
    WHEN dup_val_on_index THEN
      NULL;
    END;
    ---Fin para la nueva tabla de claves
    /********************
    Abrimos cursor para
    AD74A07T00 PERFILES
    *********************/
    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,
          --ID_PISO_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,
          --W_IDPISO_083_CLAVE,
          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;
    EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('ERROR  AD74A07T00  '||W_ID_PERFIL||' '||SQLERRM);
      END;
    /********************************************************
    ---Bloque para migracion de la AD74A05T00 CUENTAS
    ********************************************************/
    ---control para ID_CUENTA_01  FK DE LA 05 CUENTAS
    SELECT AD74A05T00_SEQ.NEXTVAL
    INTO W_ID_CUENTA
    FROM DUAL;
    -------ojo incluir en claves   cuenta
    BEGIN
      SELECT ROWNUM,
        NUMEROCUENTA_001,
        --TIPOIDENTIFICADORTITULAR_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'),
		TITULARCUENTA_001
      INTO W_ROWNUM,
        W_NUM_CUENTA_05,
        W_COD_TIPO_IDEN_TITULAR_05,
        W_IDEN_TITULAR_05,
        W_TITULAR_CUENTA_05
      FROM X87B.X8701T00@X87B_DBL0
      WHERE IDSOLICITANTE_001=R.ID_SOLICITANTE_01
      AND ROWNUM             = 1;
      IF W_ROWNUM            >0 THEN
        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
          )
          VALUES
          (
            W_ID_CUENTA,
            W_NUM_CUENTA_05,
            W_COD_TIPO_IDEN_TITULAR_05,
            W_IDEN_TITULAR_05,
            W_TITULAR_CUENTA_05,
            W_ID_SOLICITANTE,
            NULL,
            NULL,
            SYSDATE,
            'MIGRADO',
            NULL
            
          );
        COMMIT;
      END IF;-- FIN W_ROWNUM>0
    EXCEPTION
       WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('CARGA AD74A05T00. CUENTAS 1 '||W_IDSOLICITANTE||' '||SQLCODE||SQLERRM);
    END; --- FIN Bloque para migracion de la AD74A05T00 CUENTAS
    /************************************************************
    ---Bloque para migracion de la AD74A05T00 CUENTAS NOT
    ***********************************************************/
    BEGIN
      SELECT COUNT(*)
      INTO W_NOT
      FROM X87B.X8701T00@X87B_DBL0
      WHERE FECHAMODIFCUENTA_001 IS NOT NULL
      AND NUMCUENTAANTIGUA_001   IS NOT NULL
      AND IDSOLICITANTE_001       =R.ID_SOLICITANTE_01;
      --  AND ROWNUM = 1;
      IF w_not>0 THEN
        SELECT TIPOIDENTIFICADORTITULAR_001,
          NVL(DNICUENTA_001,'SIN_DNI'),
          TITULARCUENTA_001,
          FECHAMODIFCUENTA_001,
          NUMCUENTAANTIGUA_001
        INTO W_COD_TIPO_IDEN_TITULAR_05_NOT,
          W_IDEN_TITULAR_05_NOT,
          W_TITULAR_CUENTA_05_NOT ,
          W_F_HISTORICO_05_NOT,
          W_NUM_CUENTA_05_ANT_NOT
        FROM X87B.X8701T00@X87B_DBL0
        WHERE FECHAMODIFCUENTA_001 IS NOT NULL
        AND NUMCUENTAANTIGUA_001   IS NOT NULL
        AND IDSOLICITANTE_001       =R.ID_SOLICITANTE_01;
        --  AND ROWNUM = 1;
        ---control para ID_CUENTA_01  FK DE LA 05 CUENTAS
        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
          )
          VALUES
          (
            W_ID_CUENTA_NOT,
            W_NUM_CUENTA_05_ANT_NOT,
            W_COD_TIPO_IDEN_TITULAR_05_NOT,
            W_IDEN_TITULAR_05_NOT,
            W_TITULAR_CUENTA_05_NOT,
            W_ID_SOLICITANTE,
            NULL,
            W_F_HISTORICO_05_NOT,
            SYSDATE,
            'MIGRADO',
            NULL
          );
      END IF;-- FIN w_not
    EXCEPTION
     WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('CARGA AD74A05T00. CUENTAS 2 '||W_IDSOLICITANTE||' '||SQLCODE||SQLERRM);
    END;
    --- FIN Bloque para migracion de la AD74A05T00 CUENTAS NOT
    
     
    /* ESTRAEMOS LOS DATOS DEL BENEFICIARIO */
 BEGIN
      SELECT 
       BE.FECHAALTA_009,
       TO_NUMBER
(
CASE
WHEN BE.FECHAINISERVICIO_009 IS NOT NULL
THEN 1
ELSE  0 END, '9999'),---BENEFICIARIO
        BE.FECHABAJA_009 ,
        NVL(BE.FECHAINISERVICIO_009,BE.FECHAINISERVICIO_009),--W_F_BENEFICIARIO_01
        BE.FECHAINISERVICIO_009,--W_F_INICIO_01
        CASE
          WHEN R.FECHAMODIF_001< BE.FECHAMODIF_009
          THEN R.FECHAMODIF_001
          ELSE BE.FECHAMODIF_009
        END,--AS F_MODIF_01, 
    ---   TO_NUMBER( BE.IDINFSOCIAL_003,'99999'),FK a la tabla 02 de INFORMES_SOCIALES
        BE.NOREINTENTAR_009,
        BE.NUMABONADO_009,
        BE.OBSERVACIONES_009
        
      INTO 
        
        W_F_ALTA_TELEASISTENCIA_01 ,
        W_BENEFICIARIO_01,
        W_F_BAJA_01 ,
        W_F_BENEFICIARIO_01,
        W_F_INICIO_01 ,
        W_F_MODIF_01,
      --  W_ID_INF_SOCIAL_01 ,
        W_NO_REINTENTAR_01 ,
        W_NUM_ABONADO_01 ,
        W_OBSERVACIONES_01
        
      FROM X87B.X8709T00@X87B_DBL0 BE
      WHERE BE.IDSOLICITANTE_001=R.ID_SOLICITANTE_01
      GROUP BY 
         BE.FECHAALTA_009 ,
         BE.FECHAINISERVICIO_009,
        BE.FECHABAJA_009,
        BE.FECHAINISERVICIO_009,
        BE.FECHAMODIF_009,
      ---  BE.IDINFSOCIAL_003,
        BE.NOREINTENTAR_009,
        BE.NUMABONADO_009,
        BE.OBSERVACIONES_009;
 EXCEPTION
        
    
   WHEN NO_DATA_FOUND THEN
        W_F_ALTA_TELEASISTENCIA_01:=NULL;
        W_BENEFICIARIO_01:=NULL;
        W_F_BAJA_01:=NULL;
        W_F_BENEFICIARIO_01:=NULL;
        W_F_INICIO_01:=NULL;
        W_F_MODIF_01:=NULL;
        --  W_ID_INF_SOCIAL_01 ,
        W_NO_REINTENTAR_01 :=NULL;
        W_NUM_ABONADO_01 :=NULL;
        W_OBSERVACIONES_01:=NULL;
        
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('Error al extraer datos de la X09'||R.ID_SOLICITANTE_01||' '||SQLERRM);
END;
        
   
    ---EXTRAEMOS LOS DATOS DE DIRECCIONES
  BEGIN
    SELECT
    SUBSTR(DA.EMAIL_035 ,1,100),
           DA.TELEF_035,
           DA.IDCONTACTO_035
    INTO
          W_EMAIL_01 ,
          W_TLFNO_MOVIL_01 ,
          W_IDCONTACTO_035
    FROM X87B.X8735T00@X87B_DBL0 DA,
         X87B.X8701T00@X87B_DBL0 TE
    WHERE DA.IDCONTACTO_035 =TE.IDCONTACTOHABIT_035
    AND TE.IDSOLICITANTE_001=R.ID_SOLICITANTE_01 ;
    
     EXCEPTION
        
    
   WHEN NO_DATA_FOUND THEN
          W_EMAIL_01 :=NULL;
          W_TLFNO_MOVIL_01:=NULL;
          W_IDCONTACTO_035:=NULL;
        
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('Error al extraer datos de la X35'||R.ID_SOLICITANTE_01||' '||SQLERRM);
END;
    
    
    
    IF W_F_INICIO_01 IS NOT NULL THEN
        W_INSTALADO_01:=1;
    END IF;

    
    /*INSERT Solicitantes AD74A01T00 */
    BEGIN
      INSERT
      INTO AD74A.AD74A01T00
        (
          APELLIDO1_01,
          APELLIDO2_01,
          BENEFICIARIO_01,
          EMAIL_01,
          EXENCION_01,
          --  EXONERACION_01,
          F_ALTA_TELEASISTENCIA_01,
          --- F_ALTA_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 FK A LA TABLA 08 DE
          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,
          W_BENEFICIARIO_01,
          W_EMAIL_01,
          W_EXENCION,
          -- R.EXONERACION_01,
          W_F_ALTA_TELEASISTENCIA_01,
          --  R.F_ALTA_01,
          W_F_BAJA_01 ,
          W_F_BENEFICIARIO_01,
          W_F_INICIO_01,
          W_F_MODIF_01,
          R.F_NACIMIENTO_01,
          W_ID_CUENTA,
          R.IDENTIFICADOR_01,
          NULL, --W_ID_INF_SOCIAL, ---FK ID_INF_SOCIAL_02 CON 02
          R.IDIOMA_SERVICIO_01,
          W_ID_PERFIL,-- FK CON 07
          W_ID_SOLICITANTE,
          ---W_ID_VALORACION   FK CON LA 08
          R.NOMBRE_01,
          W_NO_REINTENTAR_01,
          W_NUM_ABONADO_01,
          R.NUMSS_01,
          R.NUMTIS_01,
          W_OBSERVACIONES_01,
          R.OTRO_IDIOMA_01,
          R.SEXO_01,
          R.TIPO_IDENTIFICADOR_01,
          W_TLFNO_MOVIL_01,
          R.TLFNO_SERVICIO_01,
          'MIGRADO',
          NULL,
          W_INSTALADO_01,
          NULL
        );
     
      UPDATE AD74A.AD74A01T00
      SET EXENCION_01        =W_EXENCION
      WHERE ID_SOLICITANTE_01=W_ID_SOLICITANTE;
    EXCEPTION
    WHEN OTHERS THEN
    
    DBMS_OUTPUT.PUT_LINE('Error al insertar en Solicitantes'||W_ID_SOLICITANTE||' '||SQLERRM);

    END;
    -- FIN INSERT Solicitantes AD74A01T00
    /*****************************
    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
    DBMS_OUTPUT.PUT_LINE('CARGA AD74A23T00.  '||W_ID_DISP_SOL_23||' '||R.ID_SOLICITANTE_01||' '||CUR.W_IDTIPODISPOSIT_066||' '||SQLCODE||SQLERRM);
  END;
    END LOOP; ---FIN LOOP DISPOSITIVOS
    COMMIT;
    ---FIN PARA AD74A23T00
    
    
  /***************************************
      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

        );
      COMMIT;
    EXCEPTION
     WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('CARGA AD74A04T00. DEPENDENCIAS '||W_IDSOLICITANTE||' '||SQLCODE||SQLERRM);
    END;
  END IF;    
    ---FIN BLOQUE DEPENDENCIAS
    
     END LOOP;--- FIN loop de solicitantes
  COMMIT;
  
END P_MIGRACION_UNO;
/