DELETE FROM asurnet.dbo.GRUPOSDECOLABORADORES
-- Migrar datos de GRUPOSDECOLABORADORES desde Visualseg a Asurnet
-- Para poder insertar datos en un campo identity hay que habilitar la posibilidad
-- y después volver a deshabilitarla
SET IDENTITY_INSERT asurnet.dbo.GRUPOSDECOLABORADORES ON;
INSERT INTO asurnet.dbo.GRUPOSDECOLABORADORES
(GCO_Id, GCO_Alias, GCO_Nombre, GCO_Observaciones, GCO_FC, GCO_FM, USR_Id_FC, USR_Id_FM, GCO_OfiCode)
SELECT A.GCO_Id, A.GCO_Alias, A.GCO_Nombre, A.GCO_Observaciones, A.GCO_FC, A.GCO_FM, C.UseId, D.UseId, A.GCO_OfiCode
FROM vsegbas.dbo.GRUPOSDECOLABORADORES A
LEFT JOIN (
	SELECT A.USR_Id, B.UseId FROM vsegbas.dbo.USUARIOS A
	INNER JOIN tssbase.dbo.Usuarios B
	ON A.USR_Login = B.UseLog COLLATE Modern_Spanish_CI_AI
) C ON A.USR_Id_FC = C.USR_Id
LEFT JOIN (
	SELECT A.USR_Id, B.UseId FROM vsegbas.dbo.USUARIOS A
	INNER JOIN tssbase.dbo.Usuarios B
	ON A.USR_Login = B.UseLog COLLATE Modern_Spanish_CI_AI
) D ON A.USR_Id_FM = D.USR_Id
SET IDENTITY_INSERT asurnet.dbo.GRUPOSDECOLABORADORES OFF;

DELETE FROM asurnet.dbo.CONDICIONES
-- Migrar datos de CONDICIONES desde Visualseg a Asurnet
-- Para poder insertar datos en un campo identity hay que habilitar la posibilidad
-- y después volver a deshabilitarla
SET IDENTITY_INSERT asurnet.dbo.CONDICIONES ON;
INSERT INTO asurnet.dbo.CONDICIONES
(CND_Id, CND_Alias, CND_Base, CND_ImpMax, CND_ImpMin, CND_ComRecibo, CND_ComAnual, CND_FC, USR_Id_FC, CND_FM, USR_Id_FM)
SELECT A.CND_Id, A.CND_Alias, A.CND_Base, A.CND_ImpMax, A.CND_ImpMin, A.CND_ComRecibo, A.CND_ComAnual, A.CND_FC, C.UseId,
A.CND_FM, D.UseId
FROM vsegbas.dbo.CONDICIONES A
LEFT JOIN (
	SELECT A.USR_Id, B.UseId FROM vsegbas.dbo.USUARIOS A
	INNER JOIN tssbase.dbo.Usuarios B
	ON A.USR_Login = B.UseLog COLLATE Modern_Spanish_CI_AI
) C ON A.USR_Id_FC = C.USR_Id
LEFT JOIN (
	SELECT A.USR_Id, B.UseId FROM vsegbas.dbo.USUARIOS A
	INNER JOIN tssbase.dbo.Usuarios B
	ON A.USR_Login = B.UseLog COLLATE Modern_Spanish_CI_AI
) D ON A.USR_Id_FM = D.USR_Id
SET IDENTITY_INSERT asurnet.dbo.CONDICIONES OFF;

-- Insertar datos que no están en Te-sis de Colaboradores en COLABORADORES de Asurnet
-- Estos colaboradores no están en Fusion, por lo tanto para añadir esos campos hay que insertar los registros
INSERT INTO asurnet.dbo.COLABORADORES
(COL_Contacto, COL_Titular, COL_TipoPersona, COL_Irpf, COL_NumColegiado, COL_Zona, COL_NoLiquidar, COL_LimiteLiq, COL_FacturarSiCero, COL_Facturar, COL_TipoAux,
CND_Id, GCO_ID, COL_TesisId, COL_Edicion, COL_Fecha_Alta)
SELECT A.COL_Nombre AS COL_Contacto, A.COL_Nombre AS COL_Titular, A.COL_TipoPersona, A.COL_Irpf, A.COL_NumColegiado, A.COL_Zona, A.COL_NoLiquidar, A.COL_LimiteLiq, A.COL_FacturarSiCero, A.COL_Facturar,
A.COL_TipoAux, A.CND_Id, A.GCO_ID, C.IDTSS AS COL_TesisId, 0 AS COL_Edicion, GETDATE() AS COL_Fecha_Alta
FROM vsegbas.dbo.COLABORADORES A
LEFT JOIN asurnet.dbo.COLABORADORES B ON A.COL_Id = B.COL_VisualId
INNER JOIN (
	SELECT * FROM tssseg0001.dbo.IDTraspasos
	WHERE TableID = 'Colaboradores'
) C ON A.COL_Id = C.IdTras
WHERE B.COL_VisualId IS NULL

-- Actualizar datos que no están en Te-sis de colaboradores en COLABORADORES de Asurnet
-- Estos colaboradores ya existen en Fusion, por eso se actualizan los campos
UPDATE A
SET A.COL_TipoPersona = B.COL_TipoPersona,
A.COL_Irpf = B.COL_Irpf,
A.COL_NumColegiado = B.COL_NumColegiado,
A.COL_Zona = B.COL_Zona,
A.COL_NoLiquidar = B.COL_NoLiquidar,
A.COL_LimiteLiq = B.COL_LimiteLiq,
A.COL_FacturarSiCero = B.COL_FacturarSiCero,
A.COL_Facturar = B.COL_Facturar,
A.COL_TipoAux = B.COL_TipoAux,
A.CND_Id = B.CND_Id,
A.GCO_ID = B.GCO_ID,
A.USR_PropietarioTesis = B.USR_PropietarioTesis,
A.EJE_IdTesis = B.EJE_IdTesis,
A.GES_IdTesis = B.GES_IdTesis,
A.COL_TesisId = B.COL_TesisId,
A.COL_Alias = B.COL_Alias
FROM asurnet.dbo.COLABORADORES A
INNER JOIN (
	SELECT B.COL_MyId, A.COL_Alias, A.COL_TipoPersona, A.COL_Irpf, A.COL_NumColegiado, A.COL_Zona, A.COL_NoLiquidar, A.COL_LimiteLiq, A.COL_FacturarSiCero, A.COL_Facturar,
	A.COL_TipoAux, A.CND_Id, A.GCO_ID, C.UseId AS USR_PropietarioTesis,
	F.IDTSS AS EJE_IdTesis,
	CASE E.GES_Tipo
	WHEN 1 THEN 'CAE'
	WHEN 4 THEN 'CAE'
	WHEN 2 THEN 'CAB'
	WHEN 3 THEN 'CCO'
	WHEN 5 THEN 'CDC'
	WHEN 6 THEN 'CAC'
	ELSE NULL
	END AS GES_IdTesis,
	D.IDTSS AS COL_TesisId
	FROM vsegbas.dbo.COLABORADORES A
	INNER JOIN asurnet.dbo.COLABORADORES B ON A.COL_Id = B.COL_VisualId
	LEFT JOIN (
		SELECT A.USR_Id, B.UseId FROM vsegbas.dbo.USUARIOS A
		INNER JOIN tssbase.dbo.Usuarios B
		ON A.USR_Login = B.UseLog COLLATE Modern_Spanish_CI_AI
	) C ON B.USR_Propietario = C.USR_Id
	INNER JOIN (
		SELECT * FROM tssseg0001.dbo.IDTraspasos
		WHERE TableID = 'Colaboradores'
	) D ON A.COL_Id = D.IdTras
	LEFT JOIN vsegbas.dbo.GESTORESDECOBRO E ON B.GES_Id = E.GES_Id
	LEFT JOIN tssseg0001.dbo.IDTraspasos F ON B.EJE_ID = F.IdTras AND F.TableID = 'Ejecutivos'
) B ON A.COL_MyId = B.COL_MyId

-- Actualizar oficinas de Asurnet en Te-sis
UPDATE A
SET A.EmpDVID = B.COL_Oficina
FROM tssseg0001.dbo.Colaboradores A
INNER JOIN
(
	SELECT B.ColID,
	CASE WHEN C.IDTSS IS NULL
	THEN 0
	ELSE A.COL_Oficina
	END AS COL_Oficina
	FROM asurnet.dbo.COLABORADORES A
	INNER JOIN tssseg0001.dbo.Colaboradores B
	ON A.COL_TesisId = B.ColID
	LEFT JOIN tssseg0001.dbo.IDTraspasos C
	ON C.TableID = 'Oficinas' AND C.IDTras = A.COL_Oficina
) B ON A.ColID = B.ColID

-- Actualizar el valor de los colaboradores de Te-sis obteniendo el ID del traspaso de Te-sis
UPDATE A
SET A.AGN_UsuarioDestinoTesis = B.AGN_UsuarioDestinoTesis,
A.USR_Id_FCTesis = B.USR_Id_FCTesis,
A.USR_Id_FMTesis = B.USR_Id_FMTesis
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, B.IDTSS AS AGN_UsuarioDestinoTesis, C.IDTSS AS USR_Id_FCTesis,
	D.IDTSS AS USR_Id_FMTesis
	FROM asurnet.dbo.AGENDA A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B
	ON A.AGN_UsuarioDestino = B.IDTras COLLATE Modern_Spanish_CI_AI AND B.TableID = 'Colaboradores'
    LEFT JOIN tssseg0001.dbo.IDTraspasos C
	ON A.USR_Id_FC = C.IDTras COLLATE Modern_Spanish_CI_AI AND C.TableID = 'Colaboradores'
	LEFT JOIN tssseg0001.dbo.IDTraspasos D
	ON A.USR_Id_FM = D.IDTras COLLATE Modern_Spanish_CI_AI AND D.TableID = 'Colaboradores'
) B ON A.AGN_ID = B.AGN_ID


-- Actualizar eventos de agenda relacionados con clientes
UPDATE A
SET A.AGN_ObjetoIDTesis = ISNULL(B.AGN_ObjetoIDTesis, '0')
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, B.IDTSS AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B ON A.AGN_ObjetoID = B.IDTras AND B.TableID = 'Clientes'
	WHERE A.AGN_TipoObjeto = 1
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda relacionados con colaboradores
UPDATE A
SET A.AGN_ObjetoIDTesis = ISNULL(B.AGN_ObjetoIDTesis, '0')
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, B.IDTSS AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B ON A.AGN_ObjetoID = B.IDTras AND B.TableID = 'Colaboradores'
	WHERE A.AGN_TipoObjeto = 2
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda relacionados con pólizas
UPDATE A
SET A.AGN_ObjetoIDTesis = B.AGN_ObjetoIDTesis
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, A.AGN_ObjetoID AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	WHERE A.AGN_TipoObjeto = 7
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda relacionados con recibos
UPDATE A
SET A.AGN_ObjetoIDTesis = ISNULL(B.AGN_ObjetoIDTesis, '0')
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, B.IDTSS AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B ON A.AGN_ObjetoID = B.IDTras AND B.TableID = 'Recibos'
	WHERE A.AGN_TipoObjeto = 10
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda relacionados con siniestros
UPDATE A
SET A.AGN_ObjetoIDTesis = ISNULL(B.AGN_ObjetoIDTesis, '0')
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, B.IDTSS AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B ON A.AGN_ObjetoID = B.IDTras AND B.TableID = 'Siniestros'
	WHERE A.AGN_TipoObjeto = 13
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda relacionados con cambios de mediación
UPDATE A
SET A.AGN_ObjetoIDTesis = B.AGN_ObjetoIDTesis
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, A.AGN_ObjetoID AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	WHERE A.AGN_TipoObjeto = 1000
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda relacionados con oportunidades
UPDATE A
SET A.AGN_ObjetoIDTesis = B.AGN_ObjetoIDTesis
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, A.AGN_ObjetoID AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	WHERE A.AGN_TipoObjeto = 160
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de agenda de objetos genéricos
UPDATE A
SET A.AGN_ObjetoIDTesis = '0'
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, A.AGN_ObjetoID AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	WHERE A.AGN_TipoObjeto = 99
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar eventos de sin tipo de objeto
UPDATE A
SET A.AGN_ObjetoIDTesis = NULL
FROM asurnet.dbo.AGENDA A
INNER JOIN (
	SELECT A.AGN_ID, A.AGN_ObjetoID AS AGN_ObjetoIDTesis
	FROM asurnet.dbo.AGENDA A
	WHERE A.AGN_TipoObjeto IS NULL
) B ON A.AGN_ID = B.AGN_ID;

-- Actualizar el valor del colaborador de Te-sis obteniendo el ID del traspaso de Te-sis
UPDATE A
SET A.ColID = B.ColID
FROM asurnet.dbo.NOTIFICACIONES A
INNER JOIN (
	SELECT A.NOT_Id, B.IDTSS AS ColID
	FROM asurnet.dbo.NOTIFICACIONES A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B
	ON A.COL_VisualId = B.IDTras COLLATE Modern_Spanish_CI_AI AND B.TableID = 'Colaboradores'
) B ON A.NOT_Id = B.NOT_Id


-- Actualizar el valor del colaborador de Te-sis obteniendo el ID del traspaso de Te-sis
UPDATE A
SET A.ColID = B.ColID
FROM asurnet.dbo.PUSH_DEVICES A
INNER JOIN (
	SELECT A.DVC_Id, B.IDTSS AS ColID
	FROM asurnet.dbo.PUSH_DEVICES A
	LEFT JOIN tssseg0001.dbo.IDTraspasos B
	ON A.COL_Id = B.IDTras COLLATE Modern_Spanish_CI_AI AND B.TableID = 'Colaboradores'
) B ON A.DVC_Id = B.DVC_Id


