create or replace PROCEDURE P_MIGRACION_08_INT  AS 
	
	-- Identificadores del tipo de intervencion en el esquema ad74a:
	cAveria AD74A45T00.ID_TIPO_INTERVENCION_45%type := 2; --Averías // X87 Tecnico A, Averia 1
	cManten AD74A45T00.ID_TIPO_INTERVENCION_45%type := 3; -- Mantenimientos // X87 Tecnico M, Mantenimiento 7
	cBaja   AD74A45T00.ID_TIPO_INTERVENCION_45%type := 5; -- Bajas // X87 Tecnico B, Baja 2
	cInstal AD74A45T00.ID_TIPO_INTERVENCION_45%type := 6;  -- Instalación de dispositivos // X87 Tecnico I, Instalacion 3,4,5,6
	
	CURSOR C_62 IS 
		SELECT IDINTERVENCION_062, cl25.VALOR_AD74A id_intervencion_25, X62.IDBENEFICIARIO_009, CL.VALOR_AD74A ID_SOLICITANTE, FECHAINTERVENCION_062, FECHAMODIF_062,
		 decode(X62.IDTIPOINTERVEN_067,1,2,2,5,7,3,6) IDTIPOINTERVEN,--X66.DESCRIPCION_066,
         X62.IDTIPODISPOSIT_066--,
          --DECODE(X66.DESCRIPCION_066,'Detector Fuego/Humo',1 ,'Detector Gas',2 ,'Detector CO',3 ,'Detector Movilidad',4 ,'Detector iVi',5,'Terminal TLA',NULL,8 )AS DISPOSITIVO,
        --DECODE(X66.DESCRIPCION_066,'Terminal TLA',1,null )AS TERMINAL
		--DECODE(X62.IDTIPODISPOSIT_066, 7,1,NULL) AS DISPOSITIVO,
        --DECODE(X62.IDTIPODISPOSIT_066,1,1, 2,1,NULL) AS TERMINAL
		FROM X87B.X8762T00@X87B_DBL0 X62, X87B.X8709T00@X87B_DBL0 X09, CLAVES_AD7401 CL,CLAVES_AD7425 CL25,  X87B.X8766T00@X87B_DBL0 X66
		where X62.IDBENEFICIARIO_009 = X09.IDBENEFICIARIO_009 
		AND CL.VALOR_X87B = X09.IDSOLICITANTE_001 
        and IDINTERVENCION_062 = cl25.valor_x87b 
        AND (NVL(X62.IDTIPODISPOSIT_066,8) = X66.IDTIPODISPOSIT_066 )
		AND NOT EXISTS(SELECT ID_INTERVENCION_25 FROM AD74A25T00 WHERE ID_INTERVENCION_25 = CL25.VALOR_AD74A); 
	
	
	cursor c_63 is 
		select IDPARTEEMER_063, cl27.VALOR_AD74A id_emergencia_27, x63.IDBENEFICIARIO_009, cl.valor_ad74a idsolicitante, FECHAAPERTURA_063,
			FECHAARCHIVO_063,IDENTIFICADOR_063,TIPOEMERGENC_063,DECODE(TIPOEMERGENC_063,'Emergencia Sanitaria',1,'Emergencia Social',2,'Problema Social',3,'Problema de Salud',4,'Emergencia de detector',5,'Emergencia Detector',5,'Problema técnico',6,'Problema Tecnico',6,'Otras',7) ID_TIPO_EMERGENCIA_46,
            FECHAMODIF_063 
		from  X87B.X8763T00@X87B_DBL0 X63,X87B.X8709T00@X87B_DBL0 X09, claves_ad7401 cl, claves_ad7427 cl27
		where X63.IDBENEFICIARIO_009 = X09.IDBENEFICIARIO_009 
		  AND X09.IDSOLICITANTE_001 = CL.VALOR_X87B
          and IDPARTEEMER_063 = cl27.valor_x87b
		  AND NOT EXISTS(SELECT ID_EMERGENCIA_27 FROM AD74A27T00 WHERE ID_EMERGENCIA_27 = CL27.VALOR_AD74A);
	
	
	cursor c_65 (id63 varchar2) is 
        SELECT idparteemer_063, descrecurso_065,decode(descrecurso_065,'Familiares',1,'Vecinos/Amigos',1,'Companyia de la llum',1,'CompaÃ±ia de Luz',1,'Familiar',1,'Familiars',1,'Gerocultor/a',1,'SAP / SAD',1,'Servicio Sanitario Privado',1,
                                                                        'Vecinos',1,'VeÃ¯ns / Amics',1,'Veïns / Amics',1,
                                                                        'Coord.Zona',2,'Unidad Movil',2,
                                                                        'U.M.',4,'SOS Deiak',4,'061',4,'112',4,'Ambulancia',4,'Bomberos',4,'Bombers',4,'Centro Coordinador de Emergencias',4,'DYA',4,'Empresa Ambulancias',4, 'Ertzaintza',4,'Medico de guardia',4,
                                                                        'MobilitzaciÃ³ Claus Policia Local',4,'Mobilització Claus Policia Local',4,'Mobilització Claus U.M.',4,'Otros',4,'Policia Local',4,'Policia Nacional',4,'Protecció Civil',4,
                                                                        'Consejo Sanitario',5,'Osakidetza',5,'Mutua Privada',5,'Ambulatorio',5,0) idrecurso
        FROM X87B.X8765T00@X87B_DBL0 X65
 	WHERE X65.IDPARTEEMER_063 = id63;


	-- Actualizar la tabla de solicitantes con el tipo de beneficiario:
	cursor cTipoBen is 
	SELECT decode(x62.tipousuario_062,'01',1,'10',2,'20',3,null) TIPO_BENEFICIARIO, CL.VALOR_AD74A ID_SOLICITANTE
		FROM X87B.X8762T00@X87B_DBL0 X62, X87B.X8709T00@X87B_DBL0 X09, CLAVES_AD7401 CL
		where X62.IDBENEFICIARIO_009 = X09.IDBENEFICIARIO_009 
		AND CL.VALOR_X87B = X09.IDSOLICITANTE_001;

	vIdRecurso AD74A28T00.ID_REC_MOVIL_EMER_28%type;
	
	vSql varchar2(4000);
	
BEGIN
	
	FOR R_62 IN C_62 LOOP
		BEGIN
			
			INSERT INTO AD74A25T00 (ID_INTERVENCION_25,ID_TIPO_INTERVENCION_25,PENDIENTE_25,BAJA_25,
									F_INTERVENCION_25,ID_SOLICITANTE_25,F_ALTA_25,USU_ALTA_25)--, ID_DISPOSITIVO_25, ID_TERMINAL_25)
			VALUES(R_62.id_intervencion_25, R_62.IDTIPOINTERVEN, 0,0, 
					 R_62.FECHAINTERVENCION_062,R_62.ID_SOLICITANTE,R_62.FECHAMODIF_062,'MIGRADO');--,R_62.DISPOSITIVO, R_62.TERMINAL); 
			
		EXCEPTION	
			WHEN OTHERS THEN
				vSql:= sqlcode||'-'||substr(sqlerrm,1,1000);
				PG_MIGRACION.INSERTA_TRAZA('DATOS 25','insert AD74A25T00', 'ERROR '||vSql||', Se ha producido un error al guardar  el registro: idIntervencio, idtipoInter, idsol: '||R_62.id_intervencion_25||','||R_62.IDTIPOINTERVEN||','||R_62.ID_SOLICITANTE, null);
				
		END;
		COMMIT;
	END LOOP;
	FOR rTipoBen in cTipoBen LOOP
		
		BEGIN
			UPDATE AD74A01T00 SET TIPO_BENEFICIARIO_01 = rTipoBen.TIPO_BENEFICIARIO
			WHERE ID_SOLICITANTE_01 = rTipoBen.ID_SOLICITANTE;
		
		EXCEPTION	
			WHEN OTHERS THEN
				vSql:= sqlcode||'-'||substr(sqlerrm,1,1000);
				PG_MIGRACION.INSERTA_TRAZA('DATOS 25','update AD74A01T00', 'ERROR '||vSql||', Se ha producido un error actualizar el tipobeneficiario, idsol: '||rTipoBen.TIPO_BENEFICIARIO||','||rTipoBen.ID_SOLICITANTE, null);
		END;
		commit;
	END LOOP;
	FOR R_63 IN C_63 LOOP
		BEGIN
			
			INSERT INTO AD74A27T00 (ID_EMERGENCIA_27,ID_TIPO_EMERGENCIA_27,F_EMERGENCIA_27,
									ID_SOLICITANTE_27,F_ALTA_27,USU_ALTA_27)
				VALUES (R_63.id_emergencia_27,R_63.ID_TIPO_EMERGENCIA_46,R_63.FECHAAPERTURA_063, 
						R_63.idsolicitante,sysdate, 'MIGRADO'); 
			--AD74A: Recurso movilizado: 1: Contactos socio familiares; 2: UM propia; 3: UM de soporte; 4: SOS DEIAK; 5: CS – Consejo Sanitario
			
			--Familiares -> 1; Osakidetza ->5; SOS Deiak->4; U.M. -> 3; Vecinos/amigos->1
			FOR R_65 IN C_65 (R_63.IDPARTEEMER_063) LOOP
				SELECT AD74A28T00_SEQ.NEXTVAL INTO vIdRecurso FROM DUAL;
				
				insert into  AD74A28T00 (ID_REC_MOVIL_EMER_28,ID_EMERGENCIA_28,TIEMPO_LLEGADA_28,
										RECURSO_MOVILIZADO_28,F_ALTA_28,USU_ALTA_28, F_ARCHIVO_28)
				values(vIdRecurso,R_63.id_emergencia_27,null,
						R_65.idrecurso, R_63.FECHAMODIF_063, 'MIGRADO', R_63.FECHAARCHIVO_063);
			END LOOP;	
		EXCEPTION	
			WHEN OTHERS THEN
				vSql:= sqlcode||'-'||substr(sqlerrm,1,1000);
				PG_MIGRACION.INSERTA_TRAZA('DATOS 27','insert AD74A27T00', 'ERROR '||vSql||', Se ha producido un error  al guardar  el registro: IDPARTEEMER : '|| R_63.IDPARTEEMER_063, null);
		END;
		COMMIT;

	END LOOP;
	
END P_MIGRACION_08_INT;
/

