SQL SERVER : MODELOS DE QUERYS

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [db_owner].[Registrar_Agenda]
 @CodigoClienteUnico varchar(80)
,@IdAgente varchar(50)
,@IdRespuesta varchar(50)
,@NumeroTelefono varchar(50)
,@Gestion varchar(50)
,@FechaModificacion varchar(50)
as
INSERT INTO [Agenda]
           ([CodigoClienteUnico]
           ,[IdAgente]
           ,[IdRespuesta]
           ,[NumeroTelefono]
           ,[Gestion]
           ,[FechaModificacion])
     VALUES
           (@CodigoClienteUnico
           ,@IdAgente
           ,@IdRespuesta
           ,@NumeroTelefono
           ,@Gestion
           ,convert(datetime,@FechaModificacion,120))

*****************************************************************************
USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [db_owner].[Eliminar_AplicacionFavoritas]
@Id Int
as
DELETE FROM [AplicacionesFavoritas]
      WHERE Id=@Id

******************************************************************************
USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Actualizar_codigoUnicoCliente2]
as
--crear temporal telefono
select CodigoCliente,max(CodigoClienteUnico) as CodigoClienteUnico2
into #temporal
from contactos
group by CodigoCliente;
--actualizar campo UltimoTelefono
update Contactos set
Contactos.CodigoClienteUnico2=#temporal.CodigoClienteUnico2
from Contactos inner join #temporal on
Contactos.CodigoCliente=#temporal.CodigoCliente;
--borrar telefono
drop table #temporal;

******************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Actualizar_DeudatotalContacto]
AS
DECLARE @CodigoCliente varchar(50);

DECLARE contactos_cursor CURSOR FOR
SELECT CodigoCliente FROM Contactos
GROUP BY CodigoCliente

OPEN contactos_cursor

FETCH NEXT FROM contactos_cursor INTO @CodigoCliente
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Contactos
SET DeudaTotal=dbo.CalcularDeudaCliente(@CodigoCliente)
WHERE CodigoCliente=@CodigoCliente
FETCH NEXT FROM contactos_cursor
    INTO @CodigoCliente
END

CLOSE contactos_cursor;
DEALLOCATE contactos_cursor;


******************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[Actualizar_DeudatotalContacto_2]
AS
--Creamos tabla temporal
CREATE TABLE #tmp_deuda_cliente(
Codigo_Cliente VARCHAR(50),
Saldo DECIMAL (10,5)
);
--creamos indice tabla temporal
CREATE INDEX INDX_tmp_deuda_cliente_Codigo_Cliente
ON dbo.#tmp_deuda_cliente(Codigo_Cliente);

--ingresamos data a nuestra tabla temporal 
INSERT INTO #tmp_deuda_cliente (Codigo_Cliente,Saldo)
SELECT  Codigo_Cliente,
(SUM(COALESCE ((CASE
WHEN (MontoExigible='') THEN 0.0000
WHEN (CAST(MontoExigible AS  DECIMAL(10,5))>0.0000) THEN CAST(MontoExigible AS  DECIMAL(10,5))
WHEN (CAST(MontoExigible AS  DECIMAL(10,5))<0.0000) THEN CAST(MontoExigible AS  DECIMAL(10,5))
END),0)) 
-
SUM(
COALESCE(
(CASE
WHEN (MontoPagado='') THEN 0.0000
WHEN (CAST(MontoPagado AS  DECIMAL(10,5))>0.0000) THEN CAST(MontoPagado AS  DECIMAL(10,5))
WHEN (CAST(MontoPagado AS  DECIMAL(10,5))<0.0000) THEN CAST(MontoPagado AS  DECIMAL(10,5))
END),0)
))
 AS Saldo
FROM Deudas inner join Carteras  on Deudas.Codigo_Gestion=Carteras.CodigoGestion
where Carteras.EstadoCartera=1 and CodigoTipoDocumento in ('01','PG' )
 GROUP BY Codigo_Cliente;


--se realizo union con tabla cartera para filtrar los montos
--COALESCE se agrego para eliminar los nulos
--actualizamos tabla contactos
UPDATE Contactos SET contactos.DeudaTotal=#tmp_deuda_cliente.Saldo
FROM Contactos INNER JOIN #tmp_deuda_cliente ON Contactos.CodigoCliente = #tmp_deuda_cliente.Codigo_Cliente

DROP TABLE #tmp_deuda_cliente

***************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Actualizar_Direccion]
AS
select
CodigoCliente,
max(COALESCE(Via,''))Via,
max(COALESCE(Calle,''))Calle,
max(COALESCE(Numero,''))Numero,
max(COALESCE(Direccion,''))Direccion,
max(COALESCE(Provincia,''))Provincia,
max(COALESCE(departamento,''))area,
max(COALESCE(DescripcionZonal,''))DescripcionZonal,
max(COALESCE(CodigoSubLocalidad,''))CodigoSubLocalidad,
max(COALESCE(DescripcionSubLocalidad,''))DescripcionSubLocalidad,
max(COALESCE(CodigoPostal,'')) CodigoPostal
into #temporal
from Direccion
group by CodigoCliente;

update Contactos set
contactos.Via=#temporal.via,
contactos.Calle=#temporal.calle,
contactos.Numero=#temporal.Numero,
contactos.Direccion=#temporal.direccion,
contactos.Provincia=#temporal.Provincia,
contactos.Area=#temporal.area,
contactos.DescripcionZonal=#temporal.DescripcionZonal,
contactos.CodigoSubLocalidad=#temporal.CodigoSubLocalidad,
contactos.DescripcionSubLocalidad=#temporal.DescripcionSubLocalidad,
contactos.codigoPostal=#temporal.codigoPostal
FROM Contactos INNER JOIN #temporal ON Contactos.CodigoCliente=#temporal.codigocliente;


DROP TABLE #temporal;

***************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--Actualizar_DistribucionCarteras '8,9','0','',''
ALTER PROC [dbo].[Actualizar_DistribucionCarteras]
@list_codigoGestion varchar(max),
@list_idUsuario varchar(max),
@Filtro varchar(max),
@FiltroGroupBY varchar(max)
AS
declare @CantidadTotalUsuarios INT;
declare @sql nvarchar(max),@where nvarchar(max),@groupby nvarchar(max);
--variables para cursor
declare @CodigoCliente nvarchar(max);
declare @DeudaTotal nvarchar(max);
declare @intRowCount INT;
SET @intRowCount=1;

--creamos tabla temporal Cliente Deuda
CREATE TABLE #temporal_ClienteDeuda(
  CodigoCliente nvarchar(10) NULL,
  DeudaTotal DECIMAL(20,10) NULL,
  IdUsuario nvarchar(10) NULL,
  IdRowCount INT NULL
);

--creamos indice tabla temporal
CREATE INDEX INDX_temporal_ClienteDeuda_Codigo_Cliente_DeudaTotal
ON dbo.#temporal_ClienteDeuda(CodigoCliente,DeudaTotal);

--Creamos tabla con todos los usuarios seleccionados
CREATE TABLE #temporal_Usuario(
  Id int IDENTITY(1,1),
  IdUsuario nvarchar(5) NULL
);
IF(@list_idUsuario = '0')
BEGIN
--Primero quitamos asignacion todos los registros
set @sql = '';
set @where = '';
set @groupby = '';
set @sql = 'UPDATE Contactos SET Contactos.idUsuarioAsignado=4 FROM Contactos
INNER JOIN Cuentas ON Contactos.CodigoClienteUnico=Cuentas.CodigoClienteUnico
INNER JOIN Carteras ON Cuentas.CodigoGestion=Carteras.CodigoGestion
WHERE 1=1
AND getdate()< Carteras.FechaFinGestion
AND contactos.EstadoBloqueo=0';
if(@list_codigoGestion<>'')
BEGIN
set @where= ' AND carteras.Id IN ('+ @list_codigoGestion +')';
END
set @sql =@sql+@where+';';
exec sp_executesql @sql;
--print @sql;

--Actulizamos registros en tabla carteras
set @where = '';
set @sql = '';
set @sql = 'UPDATE Carteras SET Carteras.EstadoCartera=1,Carteras.FechaActualizacionCartera=getdate() WHERE 1=1 ';

if(@list_codigoGestion<>'')
BEGIN
set @where= ' AND Carteras.Id IN ('+ @list_codigoGestion +')';
END
set @sql =@sql+@where+';';
exec sp_executesql @sql;

END
ELSE
BEGIN
--Primero quitamos asignacion todos los registros
set @sql = '';
set @where = '';
set @groupby = '';
set @sql = 'UPDATE Contactos SET Contactos.idUsuarioAsignado=0 FROM Contactos
INNER JOIN Cuentas ON Contactos.CodigoClienteUnico=Cuentas.CodigoClienteUnico
INNER JOIN Carteras ON Cuentas.CodigoGestion=Carteras.CodigoGestion
WHERE 1=1
AND getdate()< Carteras.FechaFinGestion
AND contactos.EstadoBloqueo=0';
if(@list_codigoGestion<>'')
BEGIN
set @where= ' AND carteras.Id IN ('+ @list_codigoGestion +')';
END
set @sql =@sql+@where+';';
exec sp_executesql @sql;
--print @sql;

--Ingresamos datos tabla temporal usuarios
set @sql = '';
if(@list_idUsuario<>'')
BEGIN
set @sql= 'INSERT INTO #temporal_Usuario (#temporal_Usuario.IdUsuario)
   SELECT Usuario.Id from Usuario WHERE Usuario.Id IN ('+@list_idUsuario+')';
END
exec sp_executesql @sql;

--Ingresamos datos tabla temporal cliente deuda
set @sql = '';
set @where = '';
set @groupby = '';
set @sql = 'INSERT INTO #temporal_ClienteDeuda (#temporal_ClienteDeuda.CodigoCliente,#temporal_ClienteDeuda.DeudaTotal)
SELECT DISTINCT Contactos.CodigoCliente,Contactos.DeudaTotal
FROM Contactos
INNER JOIN Cuentas ON Contactos.CodigoClienteUnico=Cuentas.CodigoClienteUnico
INNER JOIN Carteras ON Cuentas.CodigoGestion=Carteras.CodigoGestion
WHERE 1=1
AND getdate()< Carteras.FechaFinGestion
AND contactos.EstadoBloqueo=0';

set @groupby = ' '+'GROUP BY Contactos.CodigoCliente,Contactos.DeudaTotal';
if(@list_codigoGestion<>'')
BEGIN
set @where= ' AND carteras.Id IN ('+ @list_codigoGestion +')';
END
if @Filtro<>''
begin
set @where = @where+' '+@Filtro;
set @groupby = @groupby + @FiltroGroupBY;
end
set @sql =@sql+@where+@groupby+';';
exec sp_executesql @sql;
--print @sql

--Sacamos la Cantidad de usuarios
SET @CantidadTotalUsuarios=(SELECT COUNT(#temporal_Usuario.Id) FROM #temporal_Usuario);

--Creamos cursor para actualizar #temporal_ClienteDeuda con un Id Autogenerado
DECLARE CursorClienteAsignado CURSOR FAST_FORWARD
FOR
SELECT CodigoCliente, DeudaTotal FROM #temporal_ClienteDeuda ORDER BY DeudaTotal DESC
OPEN CursorClienteAsignado
FETCH NEXT FROM CursorClienteAsignado INTO @CodigoCliente,@DeudaTotal
 WHILE (@@FETCH_STATUS <> -1)
 BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
UPDATE #temporal_ClienteDeuda SET IdRowCount= @intRowCount WHERE CodigoCliente=@CodigoCliente AND DeudaTotal=@DeudaTotal
SET @intRowCount = @intRowCount + 1;
IF(@intRowCount > @CantidadTotalUsuarios)
BEGIN
SET @intRowCount = 1;
END
FETCH NEXT FROM CursorClienteAsignado INTO @CodigoCliente,@DeudaTotal
END
 END
 CLOSE CursorClienteAsignado
 DEALLOCATE CursorClienteAsignado

--Actualizar Tabla #temporal_ClienteDeuda con IdUsuario
UPDATE #temporal_ClienteDeuda SET #temporal_ClienteDeuda.IdUsuario=#temporal_Usuario.IdUsuario
FROM #temporal_ClienteDeuda INNER JOIN #temporal_Usuario ON #temporal_ClienteDeuda.IdRowCount=#temporal_Usuario.Id;

--Actualizar Tabla Contactos con IdUsuario
set @where = '';
set @sql = '';
set @sql = 'UPDATE Contactos SET Contactos.idUsuarioAsignado=#temporal_ClienteDeuda.IdUsuario FROM Contactos
INNER JOIN #temporal_ClienteDeuda ON Contactos.CodigoCliente=#temporal_ClienteDeuda.CodigoCliente
INNER JOIN Cuentas ON Contactos.CodigoClienteUnico=Cuentas.CodigoClienteUnico
INNER JOIN Carteras ON Cuentas.CodigoGestion=Carteras.CodigoGestion
WHERE 1=1
AND getdate()< Carteras.FechaFinGestion
AND contactos.EstadoBloqueo=0';

if(@list_codigoGestion<>'')
BEGIN
set @where= ' AND carteras.Id IN ('+ @list_codigoGestion +')';
END
set @sql =@sql+@where+';';
exec sp_executesql @sql;

--Habilitamos registros en tabla carteras
set @where = '';
set @sql = '';
set @sql = 'UPDATE Carteras SET Carteras.EstadoCartera=1,Carteras.FechaActualizacionCartera=getdate() WHERE 1=1 ';

if(@list_codigoGestion<>'')
BEGIN
set @where= ' AND Carteras.Id IN ('+ @list_codigoGestion +')';
END
set @sql =@sql+@where+';';
exec sp_executesql @sql;
END
drop table #temporal_ClienteDeuda;
drop table #temporal_Usuario;

**************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Actualizar_gestionesMarcadorPredictivo_22]
as
declare @fi_rows int;
set @fi_rows=0;
select
 Id
,codigoclienteunico as CodigoClienteUnico
,(case when len(rtrim(ltrim(tmovil_obtenido)))=0 then (case when len(rtrim(ltrim(tfijo_obtenido)))=0 then '' else tmovil_obtenido end) else tmovil_obtenido end) as NumeroTelefono
,fechamodificacion as FechaModificacion
,usuariogestion as UsuarioGestion
,codigorespuesta as idCatalogoRespuesta
,fechapromesa_obtenido as FechaPrometida
,codigocuenta as CodigoCuenta
,comentario_obtenido as Comentario
,'5' as tipoGestion
,codigocliente as CodigoCliente
,'' as codigoGestion
,numerotelefono as NroTelefonoGestion
,email_obtenido
,tmovil_obtenido
,tfijo_obtenido
into #temporal
 from gestion_mp22 where estado='0';

set @fi_rows=(select count(*) from #temporal);
 if(@fi_rows>0)
 begin
insert into Agenda
(CodigoClienteUnico
,NumeroTelefono
,FechaModificacion
,UsuarioGestion
,idCatalogoRespuesta
,FechaPrometida
,CodigoCuenta
,Comentario
,tipoGestion
,CodigoCliente
,NroTelefonoGestion
)
select
CodigoClienteUnico
,NumeroTelefono
,cast(replace(FechaModificacion,'-','') as datetime) as FechaModificacion
,UsuarioGestion
,idCatalogoRespuesta
,cast(replace((case when FechaPrometida='0000-00-00' then '1900-01-01' else FechaPrometida end),'-','') as datetime) as FechaPrometida
,CodigoCuenta
,Comentario
,tipoGestion
,CodigoCliente
,NroTelefonoGestion
from #temporal;

insert Email (CodigoClienteUnico,CodigoCliente,Email,FechaRegistro,Prioridad)
select
CodigoClienteUnico as CodigoClienteUnico
,CodigoCliente as CodigoCliente
,email_obtenido as Email
,cast(replace(FechaModificacion,'-','') as datetime) as FechaRegistro
,'0' as Prioridad
from #temporal where len(ltrim(rtrim(email_obtenido)))>0;

insert into Telefonos(
CodigoClienteUnico
,CodigoCliente
,CodigoGestion
,FechaActualizacionTelefono
,EstadoTelefono
,TelefonoContacto
,Prioridad
,TipoTelefono
,Origen
)
select
CodigoClienteUnico as CodigoClienteUnico
,CodigoCliente as CodigoCliente
,CodigoGestion as CodigoGestion
,cast(replace(FechaModificacion,'-','') as datetime) as FechaActualizacionTelefono
,'1' as EstadoTelefono
,tfijo_obtenido as TelefonoContacto
,'0' as Prioridad
,'Teléfono Fijo' as TipoTelefono
,'Marcador Predictivo' as Origen
from #temporal
where len(rtrim(ltrim(tfijo_obtenido)))>0;

insert into Telefonos(
CodigoClienteUnico
,CodigoCliente
,CodigoGestion
,FechaActualizacionTelefono
,EstadoTelefono
,TelefonoContacto
,Prioridad
,TipoTelefono
,Origen
)
select
CodigoClienteUnico as CodigoClienteUnico
,CodigoCliente as CodigoCliente
,CodigoGestion as CodigoGestion
,cast(replace(FechaModificacion,'-','') as datetime) as FechaActualizacionTelefono
,'1' as EstadoTelefono
,tmovil_obtenido as TelefonoContacto
,'0' as Prioridad
,'Teléfono Móvil' as TipoTelefono
,'Marcador Predictivo' as Origen
from #temporal
where len(rtrim(ltrim(tmovil_obtenido)))>0;

update gestion_mp22 set estado='1'
from
#temporal t inner join gestion_mp22 g
on t.id = g.id;


drop table #temporal;

 end

**************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Actualizar_TablaColumnas]
@NombreColumna VARCHAR(MAX)
AS
BEGIN
DELETE FROM TablaColumnas;
END
BEGIN
INSERT INTO TablaColumnas (NombreColumna,ObjectId,FechaModificacion,Estado)
select name,OBJECT_ID,GETDATE(),1 from sys.columns
WHERE OBJECT_ID IN (SELECT DISTINCT ObjectId FROM TablaFiltros )
AND name LIKE '%'+REPLACE(@NombreColumna,'','%')+'%'
END


***************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Actualizar_TablaFiltros]
@TablaFiltros varchar(max)
AS
BEGIN
DELETE FROM TablaFiltros;
END
BEGIN
INSERT INTO TablaFiltros (NombreTabla,ObjectId,FechaModificacion,Estado)
SELECT name,object_id,GETDATE(),0 FROM sys.objects WHERE type_desc='USER_TABLE';
UPDATE TablaFiltros SET Estado=1 WHERE NombreTabla
IN ('Contactos','Deudas','Cuentas','Carteras','Agenda','CatalogoRespuesta')
AND NombreTabla LIKE '%'+REPLACE (@TablaFiltros,'','%')+'%'
END

*****************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[CargarArchivo_BasicaIvr]
@Ruta varchar(500),
@Formato varchar(500),
@ArchivoSubido varchar(500),
@Id int,
@UsuarioUltimo varchar(50)
as
declare @SQLString NVARCHAR(500)
declare @Time1 datetime
declare @Time2 datetime 

BEGIN TRY
begin TRANSACTION
set @SQLString= 'BULK INSERT ArchivosCargadosBasicaIvr FROM ' + QUOTENAME(@Ruta,'''') + N'WITH(FORMATFILE = '+ QUOTENAME(@Formato,'''')+N')'
set @Time1=getdate()
EXEC SP_EXECUTESQL @SQLString
set @Time2=getdate()

UPDATE ArchivosCargadosBasicaIvr
SET ArchivoSubido = @ArchivoSubido ,UsuarioUltimo=@UsuarioUltimo
WHERE FechaRegistro BETWEEN  @Time1 and @Time2

UPDATE ArchivosTareas
SET Estado =1 ,UsuarioUltimo=@UsuarioUltimo
WHERE Id=@Id
COMMIT TRANSACTION;

 
END TRY

BEGIN CATCH
 ROLLBACK TRANSACTION;
return  ERROR_MESSAGE();
       

END CATCH

*************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Actualizar_Telefono]
as
--crear temporal telefono
select CodigoCliente,max(TelefonoContacto) as telefono
into #temporal
from Telefonos
group by CodigoCliente;
--actualizar campo UltimoTelefono
update Contactos set
Contactos.UltimoTelefono=#temporal.telefono
from Contactos inner join #temporal on
Contactos.CodigoCliente=#temporal.CodigoCliente;
--borrar telefono
drop table #temporal;

**************************************************************************

USE [CobraBasica]
GO
/****** Object:  StoredProcedure [dbo].[CargarArchivo_AjustexReclamo]    Script Date: 11/19/2018 17:04:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[CargarArchivo_AjustexReclamo]
@Ruta varchar(500),
@Formato varchar(500),
@ArchivoSubido varchar(500),
@Id int,
@UsuarioUltimo varchar(50)
as
declare @SQLString NVARCHAR(500)
declare @Time1 datetime
declare @Time2 datetime

BEGIN TRY
begin TRANSACTION
set @SQLString= 'BULK INSERT ArchivosCargadosAjustexReclamo FROM ' + QUOTENAME(@Ruta,'''') + N'WITH(FORMATFILE = '+ QUOTENAME(@Formato,'''')+N')'
set @Time1=getdate()
EXEC SP_EXECUTESQL @SQLString
set @Time2=getdate()


--ELIMINAR LOS QUE NO SON DE CONTACT

DELETE FROM ArchivosCargadosAjustexReclamo WHERE
NombreAgencia NOT IN ('CONTACT')

UPDATE ArchivosCargadosAjustexReclamo
SET ArchivoSubido = @ArchivoSubido ,UsuarioUltimo=@UsuarioUltimo
WHERE FechaRegistro BETWEEN  @Time1 and @Time2

UPDATE ArchivosTareas
SET Estado =1 ,UsuarioUltimo=@UsuarioUltimo
WHERE Id=@Id


EXEC Separacion_BasicaAjustexReclamoxArchivoSubido @ArchivoSubido, @UsuarioUltimo


COMMIT TRANSACTION;


END TRY

BEGIN CATCH
 ROLLBACK TRANSACTION;
return  ERROR_MESSAGE();
     

END CATCH

****************************************************************************

USE [CobraBasica]
GO
/****** Object:  StoredProcedure [dbo].[CargarArchivo_Retiros]    Script Date: 11/19/2018 17:06:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[CargarArchivo_Retiros]
@Ruta varchar(500),
@Formato varchar(500),
@ArchivoSubido varchar(500),
@Id int,
@UsuarioUltimo varchar(50)
as
declare @SQLString NVARCHAR(500)
declare @Time1 datetime
declare @Time2 datetime

BEGIN TRY
begin TRANSACTION
set @SQLString= 'BULK INSERT ArchivosCargadosRetiros FROM ' + QUOTENAME(@Ruta,'''') + N'WITH(FORMATFILE = '+ QUOTENAME(@Formato,'''')+N')'


--solo registros de Contact
delete from ArchivosCargadosRetiros
where rtrim(ltrim(NombreAgencia)) <> rtrim(ltrim('CONTACT'))

set @Time1=getdate()
EXEC SP_EXECUTESQL @SQLString
set @Time2=getdate()

UPDATE ArchivosCargadosRetiros
SET ArchivoSubido = @ArchivoSubido ,UsuarioUltimo=@UsuarioUltimo
WHERE FechaRegistro BETWEEN  @Time1 and @Time2
UPDATE ArchivosTareas
SET Estado =1 ,UsuarioUltimo=@UsuarioUltimo
WHERE Id=@Id
COMMIT TRANSACTION;


END TRY

BEGIN CATCH
 ROLLBACK TRANSACTION;
return  ERROR_MESSAGE();
     

END CATCH

****************************************************************************

USE [CobraBasica]
GO
/****** Object:  StoredProcedure [dbo].[Eliminar_ArchivosDuplicados]    Script Date: 11/19/2018 17:07:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Eliminar_ArchivosDuplicados]
as

select nombrearchivo ,count(nombrearchivo ) nro_veces  into #temp   from archivostareas
group by nombrearchivo


DECLARE cCursorArchivos Cursor For
select max(id) id  from ArchivosTareas
where NombreArchivo  in
(select nombrearchivo
from #temp
where #temp.nro_veces>1)

group by nombrearchivo

DECLARE @Id int

open cCursorArchivos
  FETCH cCursorArchivos  INTO    @Id
WHILE (@@FETCH_STATUS = 0 )
BEGIN

exec Restaurar_ArchivosTareas @Id
exec Eliminar_ArchivosTareasxId @Id

FETCH cCursorArchivos INTO   @Id
END

CLOSE cCursorArchivos
DEALLOCATE cCursorArchivos

 drop table #temp


 ****************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE  [dbo].[Listar_ArchivosTareasTareasxDescripcionxFecha]
@NombreArchivo varchar(50),
@FechaRegistro varchar(10),
@TipoArchivo int
as

 if (@FechaRegistro is null or @FechaRegistro ='') and  (@NombreArchivo is null or @NombreArchivo ='' )
begin
SELECT [id]
  ,[NombreArchivo]
  ,[TimeString]
  ,[Estado]
  ,[TipoArchivo]
  ,convert(varchar(10),[FechaRegistro],103)FechaRegistro
  FROM [ArchivosTareas]
  WHERE TipoArchivo=@TipoArchivo
  ORDER BY [TimeString]asc
end
 else if (@NombreArchivo is null or @NombreArchivo ='') and @FechaRegistro  is not null
begin
SELECT [id]
  ,[NombreArchivo]
  ,[TimeString]
  ,[Estado]
  ,[TipoArchivo]
  ,convert(varchar(10),[FechaRegistro],103)FechaRegistro
  FROM [ArchivosTareas]
  where (convert(date,FechaRegistro,103)=   CONVERT(date,@FechaRegistro,103))
  AND TipoArchivo=@TipoArchivo
  ORDER BY [TimeString]asc
         end
  else if   (@NombreArchivo is not null) and (@FechaRegistro  is  null or @FechaRegistro ='')
         begin
SELECT [id]
  ,[NombreArchivo]
  ,[TimeString]
  ,[Estado]
  ,[TipoArchivo]
  ,convert(varchar(10),[FechaRegistro],103)FechaRegistro
  FROM [ArchivosTareas]
  where  NombreArchivo like @NombreArchivo +'%'
  AND TipoArchivo=@TipoArchivo
  ORDER BY [TimeString]asc
         end
  else
       begin
SELECT [id]
  ,[NombreArchivo]
  ,[TimeString]
  ,[Estado]
  ,[TipoArchivo]
  ,convert(varchar(10),[FechaRegistro],103)FechaRegistro
  FROM [ArchivosTareas]
  where  NombreArchivo like @NombreArchivo +'%' and convert(date,FechaRegistro,103)=   CONVERT(date,@FechaRegistro,103)
  AND TipoArchivo=@TipoArchivo
  ORDER BY [TimeString]asc
         end
       
       
      *************************************************************************


     USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_CartasCampo 'AN2T2RPP-LIM-UN2015-10-22'
ALTER PROCEDURE [dbo].[Listar_CartasCampo] 
@CodigoGestion varchar(max) 
AS 
--Sacamos todas las cuentas y deudas de los clientes por cartera (codigoGestion) 
SELECT   
U.CodigoClienteUnico AS [cod_id] 
,U.codigoCliente AS [cod_cliente] 
,U.CodigoCuenta AS [nro_cuenta] 
,U.CodigoInscripcion AS [codigo_inscripcion] 
,U.CodigoGestion AS [cartera] 
,UPPER(C.NombreMoroso) AS [nombre] 
,U.telefonoGestion AS [telefono] 
,(SELECT TOP 1 (RTRIM(LTRIM(LTRIM(RTRIM(Via))+' '+LTRIM(RTRIM(Calle))+' '+RTRIM(LTRIM(Numero))+' '+RTRIM(LTRIM(Direccion))))) FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico)  AS [direccion_bd] 
,(SELECT TOP 1 DescripcionSubLocalidad FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico) AS [distrito_bd] 
,(SELECT TOP 1 Departamento FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico) AS [departamento_bd] 
,(SELECT TOP 1 (RTRIM(LTRIM(LTRIM(RTRIM(Via))+' '+LTRIM(RTRIM(Calle))+' '+RTRIM(LTRIM(Numero))+' '+RTRIM(LTRIM(Direccion))))) FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico)  AS [direccion_envio] 
,(SELECT TOP 1 DescripcionSubLocalidad FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico) AS [distrito_envio] 
,(SELECT TOP 1 Departamento FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico) AS [departamento_envio] 
,ISNULL(UPPER(S.Usuario),'LIBRE') AS [interno] 
,CONVERT(varchar,U.FechaAltaPC,103) AS [f_alta] 
,'' AS [externo] 
,R.Calificacion AS [calificacion] 
,A.DescripcionSegmentacionSegmento AS [segmento] 
,A.FechaInicioGestion AS [inicio] 
,A.FechaFinGestion AS [fin] 
,E.CodigoTipoDocumento AS [emp] 
,E.NumeroDocumento AS [factura] 
,E.FechaEmisionDocumento AS [fec_emi] 
,E.FechaVencimientoDocumento AS [fec_ven] 
,E.MontoExigible AS MontoTotal 
,E.MontoPagado AS MontoPagado 
,E.Signo AS [signo] 
,ISNULL(sum(cast(MontoExigible as money) )-sum(cast(montopagado as money)),0.00) AS [SALDO] 
,'' AS [flag] 
,'' AS [moneda] 
,C.CodigoTipoDocumento AS [tipo_documento] 
,C.numeroDocumento AS [num_documento] 
,(CASE   
 WHEN (datediff(day,A.FechaFinGestion,getdate()))<0 THEN 0   
 ELSE (datediff(day,A.FechaFinGestion,getdate())) 
  END 
  ) AS [tiempo_morosidad] 
,ISNULL(C.fechaUltimoContactoEfectivo,'1900-01-01 00:00:00') AS [ult_fec_contacto_efectivo] 
,ISNULL(C.fechaUltimoContactoNoEfectivo,'1900-01-01 00:00:00') AS [ult_fec_contacto_no_efectivo] 
,ISNULL(C.fechaUltimoVisitaCampo,'1900-01-01 00:00:00') AS [ult_fec_visita_campo] 
,ISNULL((SELECT Codigo FROM catalogoRespuesta WHERE VerGestionExterna='S' AND id=C.idCatalogoRespuesta),'') AS [cod_gestion_ultima_visita_campo] 
INTO #temporal 
FROM cuentas U   
LEFT JOIN Contactos C ON C.CodigoCliente=U.codigoCliente 
INNER JOIN Direccion D ON U.codigoClienteUnico=D.CodigoClienteUnico 
LEFT JOIN Usuario S ON C.idUsuarioAsignado=S.id 
INNER JOIN Deudas E ON E.CodigoInscripcion=U.CodigoInscripcion 
INNER JOIN CatalogoRespuesta R ON C.idCatalogoRespuesta=R.Codigo 
INNER JOIN Carteras A ON U.CodigoGestion=A.CodigoGestion 
WHERE 
1=1
AND U.CodigoGestion IN (SELECT SplitData FROM fnSplitString(@CodigoGestion,',')) 
AND getdate()<=A.FechaFinGestion 
GROUP BY   
U.CodigoClienteUnico 
,U.codigoCliente 
,U.CodigoCuenta 
,U.CodigoInscripcion 
,U.CodigoGestion 
,U.telefonoGestion 
,C.NombreMoroso 
,S.Usuario 
,U.FechaAltaPC 
,R.Calificacion 
,A.DescripcionSegmentacionSegmento   
,A.FechaInicioGestion 
,A.FechaFinGestion 
,E.CodigoTipoDocumento 
,E.NumeroDocumento 
,E.FechaEmisionDocumento 
,E.FechaVencimientoDocumento 
,E.MontoExigible 
,E.Signo 
,E.MontoPagado 
,C.CodigoTipoDocumento 
,C.numeroDocumento 
,C.fechaUltimoContactoEfectivo 
,C.fechaUltimoContactoNoEfectivo 
,C.fechaUltimoVisitaCampo 
,C.idCatalogoRespuesta 
ORDER BY E.NumeroDocumento; 
 
-- sacamos las facturas que tienen saldo > 0 
select 
factura 
,sum(cast(montototal as money))- sum(cast(montopagado as money)) saldo2 
into #temporal2 
from #temporal   
group by   
factura 
having (sum(cast(montototal as money))- sum(cast(montopagado as money)))>0; 
 
-- creamos tabla temporal3 en donde estarán solo las cuentas que tienen un saldo>0 
CREATE TABLE #temporal3( 
cod_id varchar(50), 
cod_cliente varchar(50), 
nro_cuenta varchar(50), 
cartera varchar(50), 
telefono varchar(15), 
nombre varchar(100), 
direccion_bd varchar(150), 
distrito_bd varchar(50), 
departamento_bd varchar(50), 
direccion_envio varchar(150), 
distrito_envio varchar(50), 
departamento_envio varchar(50), 
interno varchar(150), 
f_alta varchar(10), 
saldo_act money, 
externo varchar(50), 
calificacion varchar(255), 
segmento varchar(50), 
inicio datetime, 
fin datetime, 
emp varchar(50), 
factura varchar(50), 
fec_emi datetime, 
fec_ven datetime, 
importe money, 
signo varchar(5), 
flag varchar(5), 
moneda varchar(5), 
tiempo_morosidad int, 
ult_fec_contacto_efectivo datetime, 
ult_fec_contacto_no_efectivo datetime, 
ult_fec_visita_campo datetime, 
cod_gestion varchar(53) 
); 
--creamos indices para acelerar la consultas 
CREATE NONCLUSTERED INDEX [INDX_temporal_Cod_id] ON [dbo].[#temporal3]   

 [cod_id] ASC 
); 
CREATE NONCLUSTERED INDEX [INDX_temporal_Factura] ON [dbo].[#temporal3]   

 [factura] ASC 
); 
 
--llenamos tabla temporal3 con las cuentas que tienen un saldo>0 
insert into #temporal3 
select   
--T1.*   
T1.cod_id 
,T1.cod_cliente 
,T1.nro_cuenta 
--,T1.codigo_inscripcion 
,T1.cartera 
,T1.telefono 
,T1.nombre 
,T1.direccion_bd 
,T1.distrito_bd 
,T1.departamento_bd 
,T1.direccion_envio 
,T1.distrito_envio 
,T1.departamento_envio 
,T1.interno 
,T1.f_alta 
,T2.saldo2 sdo_act 
,T1.externo 
,T1.calificacion 
,T1.segmento 
,T1.inicio 
,T1.fin 
,T1.emp -- 
,T1.factura 
,T1.fec_emi -- 
,T1.fec_ven -- 
,T1.montototal importe-- 
--,T1.montopagado -- 
,T1.signo 
,T1.flag 
,T1.moneda 
,T1.tiempo_morosidad 
,T1.ult_fec_contacto_efectivo 
,T1.ult_fec_contacto_no_efectivo 
,T1.ult_fec_visita_campo 
,T1.cod_gestion_ultima_visita_campo 
--into #temporal3 
from #temporal T1 inner join #temporal2 T2 ON T1.factura=T2.Factura 
where emp is NOT NULL AND fec_emi IS NOT NULL AND fec_ven IS NOT NULL 
group by 
T1.cod_id 
,T1.cod_cliente 
,T1.nro_cuenta 
--,T1.codigo_inscripcion 
,T1.cartera 
,T1.telefono 
,T1.nombre 
,T1.direccion_bd 
,T1.distrito_bd 
,T1.departamento_bd 
,T1.direccion_envio 
,T1.distrito_envio 
,T1.departamento_envio 
,T1.interno 
,T1.f_alta 
,T2.saldo2 
,T1.externo 
,T1.calificacion 
,T1.segmento 
,T1.inicio 
,T1.fin 
,T1.emp -- 
,T1.factura 
,T1.fec_emi -- 
,T1.fec_ven -- 
,T1.montototal -- 
--,T1.montopagado -- 
,T1.signo 
,T1.flag 
,T1.moneda 
,T1.tiempo_morosidad 
,T1.ult_fec_contacto_efectivo 
,T1.ult_fec_contacto_no_efectivo 
,T1.ult_fec_visita_campo 
,T1.cod_gestion_ultima_visita_campo 
order by T1.cod_id; 
 
--borramos tablas temporales 1 y 2 
drop table #temporal; 
drop table #temporal2; 
 
--creamos tabla temporalFinal que sera la que se exporte con el formato recibido 
CREATE TABLE #temporalFinal( 
cod_id varchar(50), 
cod_cliente varchar(50), 
nro_cuenta varchar(50), 
cartera varchar(50), 
telefono varchar(15), 
nombre varchar(100), 
direccion_bd varchar(150), 
distrito_bd varchar(50), 
departamento_bd varchar(50), 
direccion_envio varchar(150), 
distrito_envio varchar(50), 
departamento_envio varchar(50), 
interno varchar(150), 
f_alta varchar(10), 
saldo_act money, 
externo varchar(50), 
calificacion varchar(255), 
segmento varchar(50), 
inicio datetime, 
fin datetime, 
emp_1 varchar(50), 
factura_1 varchar(50), 
fec_emi_1 datetime, 
fec_ven_1 datetime, 
importe_1 money, 
signo_1 varchar(5), 
flag_1 varchar(5), 
moneda_1 varchar(5), 
-- 
emp_2 varchar(50), 
factura_2 varchar(50), 
fec_emi_2 datetime, 
fec_ven_2 datetime, 
importe_2 money, 
signo_2 varchar(5), 
flag_2 varchar(5), 
moneda_2 varchar(5), 
-- 
emp_3 varchar(50), 
factura_3 varchar(50), 
fec_emi_3 datetime, 
fec_ven_3 datetime, 
importe_3 money, 
signo_3 varchar(5), 
flag_3 varchar(5), 
moneda_3 varchar(5), 
-- 
emp_4 varchar(50), 
factura_4 varchar(50), 
fec_emi_4 datetime, 
fec_ven_4 datetime, 
importe_4 money, 
signo_4 varchar(5), 
flag_4 varchar(5), 
moneda_4 varchar(5), 
-- 
emp_5 varchar(50), 
factura_5 varchar(50), 
fec_emi_5 datetime, 
fec_ven_5 datetime, 
importe_5 money, 
signo_5 varchar(5), 
flag_5 varchar(5), 
moneda_5 varchar(5), 
-- 
emp_6 varchar(50), 
factura_6 varchar(50), 
fec_emi_6 datetime, 
fec_ven_6 datetime, 
importe_6 money, 
signo_6 varchar(5), 
flag_6 varchar(5), 
moneda_6 varchar(5), 
-- 
emp_7 varchar(50), 
factura_7 varchar(50), 
fec_emi_7 datetime, 
fec_ven_7 datetime, 
importe_7 money, 
signo_7 varchar(5), 
flag_7 varchar(5), 
moneda_7 varchar(5), 
-- 
emp_8 varchar(50), 
factura_8 varchar(50), 
fec_emi_8 datetime, 
fec_ven_8 datetime, 
importe_8 money, 
signo_8 varchar(5), 
flag_8 varchar(5), 
moneda_8 varchar(5), 
-- 
emp_9 varchar(50), 
factura_9 varchar(50), 
fec_emi_9 datetime, 
fec_ven_9 datetime, 
importe_9 money, 
signo_9 varchar(5), 
flag_9 varchar(5), 
moneda_9 varchar(5), 
-- 
tiempo_morosidad int, 
ult_fec_contacto_efectivo datetime, 
ult_fec_contacto_no_efectivo datetime, 
ult_fec_visita_campo datetime, 
codigo varchar(53) 
); 
--creamos indice en la tabla temporalFinal 
CREATE NONCLUSTERED INDEX [INDX_temporal_Cod_id] ON [dbo].[#temporalFinal]   

 [cod_id] ASC 
); 
 
--1 Llenamos tablaTemporalFinal solo con las cuentas   
insert into #temporalFinal 
(cod_id 
,cod_cliente 
,nro_cuenta 
,cartera 
,telefono 
,nombre 
,direccion_bd 
,distrito_bd 
,departamento_bd 
,direccion_envio 
,distrito_envio 
,departamento_envio 
,interno 
,f_alta 
,saldo_act 
,externo 
,calificacion 
,segmento 
,inicio 
,fin 
,tiempo_morosidad 
,ult_fec_contacto_efectivo 
,ult_fec_contacto_no_efectivo 
,ult_fec_visita_campo 
,codigo 

 
SELECT 
cod_id 
,cod_cliente 
,nro_cuenta 
,cartera 
,telefono 
,nombre 
,direccion_bd 
,distrito_bd 
,departamento_bd 
,direccion_envio 
,distrito_envio 
,departamento_envio 
,interno 
,f_alta 
,sum(saldo_act) saldo_act 
,externo 
,calificacion 
,segmento 
,inicio 
,fin   
,tiempo_morosidad 
,ult_fec_contacto_efectivo 
,ult_fec_contacto_no_efectivo 
,ult_fec_visita_campo 
,cod_gestion 
FROM #temporal3   
--WHERE cod_cliente IN ('100108000','939112531') 
GROUP BY   
cod_id 
,cod_cliente 
,nro_cuenta 
,cartera 
,telefono 
,nombre 
,direccion_bd 
,distrito_bd 
,departamento_bd 
,direccion_envio 
,distrito_envio 
,departamento_envio 
,interno 
,f_alta 
--,saldo_act 
,externo 
,calificacion 
,segmento 
,inicio 
,fin   
,tiempo_morosidad 
,ult_fec_contacto_efectivo 
,ult_fec_contacto_no_efectivo 
,ult_fec_visita_campo 
,cod_gestion   
order by cod_id; 

--2 Actualizamos las facturas (deudas) de cada cuenta   
DECLARE @cod_id varchar(50); 
DECLARE @cod_id_temp varchar(50); 
DECLARE @emp varchar(50); 
DECLARE @factura varchar(50); 
DECLARE @fec_emi datetime; 
DECLARE @fec_ven datetime; 
DECLARE @importe money; 
DECLARE @signo varchar(5); 
DECLARE @flag varchar(5); 
DECLARE @moneda varchar(5); 
DECLARE @_SQL varchar(max); 
declare @RowNumberField varchar(2); 
declare @intRowCount INT; 
SET @intRowCount=1; 
SET @cod_id_temp=''; 
DECLARE cod_id_cursor CURSOR FOR   
select cod_id,emp,factura,fec_emi,fec_ven,importe,signo,flag,moneda from #temporal3 order by cod_id,importe --WHERE cod_cliente IN ('100108000','939112531');   
OPEN cod_id_cursor; 
 
FETCH NEXT FROM cod_id_cursor INTO @cod_id,@emp,@factura,@fec_emi,@fec_ven,@importe,@signo,@flag,@moneda 
WHILE @@FETCH_STATUS = 0 
BEGIN 
 IF(@cod_id_temp<>@cod_id) 
 BEGIN   
  SET @intRowCount=1; 
 END
 IF  (@intRowCount<10)
 BEGIN
SET @cod_id_temp=@cod_id;   
SET @RowNumberField = CAST(@intRowCount AS varchar) 
SET @_SQL = 'update #temporalFinal set emp_'+@RowNumberField+'='''+@emp+''' ' 
SET @_SQL = @_SQL + ',factura_'+@RowNumberField+'='''+@factura+''' ' 
SET @_SQL = @_SQL + ',fec_emi_'+@RowNumberField+'=CAST('''+ CONVERT(VARCHAR(19),@fec_emi,121)+''' AS date) ' 
SET @_SQL = @_SQL + ',fec_ven_'+@RowNumberField+'=CAST('' '+ CONVERT(VARCHAR(19),@fec_ven,121)+''' AS date) ' 
SET @_SQL = @_SQL + ',importe_'+@RowNumberField+'='''+CAST(@importe AS VARCHAR)+''' ' 
SET @_SQL = @_SQL + ',signo_'+@RowNumberField+'='''+@signo+''' ' 
SET @_SQL = @_SQL + ',flag_'+@RowNumberField+'='''+@flag+''' ' 
SET @_SQL = @_SQL + ',moneda_'+@RowNumberField+'='''+@moneda+''' ' 
SET @_SQL = @_SQL + ' WHERE cod_id='''+@cod_id+''' ' 
SET @intRowCount = @intRowCount + 1;   
EXEC (@_SQL)   
 END

 FETCH NEXT FROM cod_id_cursor   
    INTO @cod_id,@emp,@factura,@fec_emi,@fec_ven,@importe,@signo,@flag,@moneda 
END 
CLOSE cod_id_cursor; 
DEALLOCATE cod_id_cursor; 
 
select
cod_id, 
cod_cliente, 
nro_cuenta, 
cartera, 
telefono, 
nombre, 
direccion_bd, 
distrito_bd, 
departamento_bd, 
direccion_envio, 
distrito_envio, 
departamento_envio, 
interno, 
f_alta, 
saldo_act, 
externo, 
calificacion, 
segmento, 
inicio, 
fin, 
emp_1, 
factura_1, 
fec_emi_1, 
fec_ven_1, 
importe_1, 
signo_1, 
flag_1, 
moneda_1,     
emp_2, 
factura_2, 
fec_emi_2, 
fec_ven_2, 
importe_2, 
signo_2, 
flag_2, 
moneda_2,     
emp_3, 
factura_3, 
fec_emi_3, 
fec_ven_3, 
importe_3, 
signo_3, 
flag_3, 
moneda_3,   
emp_4, 
factura_4, 
fec_emi_4, 
fec_ven_4, 
importe_4, 
signo_4, 
flag_4, 
moneda_4, 
emp_5, 
factura_5, 
fec_emi_5, 
fec_ven_5, 
importe_5, 
signo_5, 
flag_5, 
moneda_5, 
emp_6, 
factura_6, 
fec_emi_6, 
fec_ven_6, 
importe_6, 
signo_6, 
flag_6, 
moneda_6, 
emp_7, 
factura_7, 
fec_emi_7, 
fec_ven_7, 
importe_7, 
signo_7, 
flag_7, 
moneda_7, 
emp_8, 
factura_8, 
fec_emi_8, 
fec_ven_8, 
importe_8, 
signo_8, 
flag_8, 
moneda_8, 
emp_9, 
factura_9, 
fec_emi_9, 
fec_ven_9, 
importe_9, 
signo_9, 
flag_9, 
moneda_9, 
(case when(tiempo_morosidad)=0 then '' else cast(tiempo_morosidad as varchar(1)) end) as tiempo_morosidad,
--tiempo_morosidad, 
(case when(convert(varchar(10),ult_fec_contacto_efectivo,120))='1900-01-01' then '' else replace(convert(varchar,ult_fec_contacto_efectivo,104),'.','/') end) as ult_fec_contacto_efectivo,
--ult_fec_contacto_efectivo, 
(case when(convert(varchar(10),ult_fec_contacto_no_efectivo,120))='1900-01-01' then '' else (replace(convert(varchar,ult_fec_contacto_no_efectivo,104),'.','/')) end) as ult_fec_contacto_no_efectivo,
--ult_fec_contacto_no_efectivo, 
(case when(convert(varchar(10),ult_fec_visita_campo,120))='1900-01-01' then '' else (replace(convert(varchar,ult_fec_visita_campo,104),'.','/')) end) as ult_fec_visita_campo,
--ult_fec_visita_campo, 
codigo
 from #temporalFinal; 
drop table #temporal3; 
drop table #temporalFinal;

****************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_CarterasxSegmentoTramoClusterTipoNegocio '','T1','',''
ALTER procedure [dbo].[Listar_CarterasxSegmentoTramoClusterTipoNegocio]  
@descripcionSegmentacionSegmento varchar(50),  
@DescripcionEventoTramo varchar(50),  
@DescripcionGestionCluster varchar(50),  
@tipoNegocio varchar(50)  
as  
declare @sql nvarchar(max);  
declare @where nvarchar(max);  
set @sql='';  
set @where='';  
  
set @sql='select distinct codigoGestion as Id,codigoGestion as etiqueta  from TmpCuentasCarterasClientes where 1=1';   
if(@descripcionSegmentacionSegmento<>'')  
begin   
 set @where=@where+' '+'and descripcionSegmentacionSegmento='''+@descripcionSegmentacionSegmento+''''  
end  
if(@DescripcionEventoTramo<>'')  
begin   
 set @where=@where+' '+'and DescripcionEventoTramo='''+@DescripcionEventoTramo+''''  
end  
if(@DescripcionGestionCluster<>'')  
begin   
 set @where=@where+' '+'and DescripcionGestionCluster='''+@DescripcionGestionCluster+''''  
end  
if(@tipoNegocio<>'')  
begin   
 set @where=@where+' '+'and tipoNegocio='''+@tipoNegocio+''''  
end  
  
set @sql=@sql+@where;  
--print @sql  
exec sp_executesql @sql

**************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_clientesIvr 'NART1TUP-NAC-UN2015-09-22'
ALTER procedure [dbo].[Listar_clientesIvr]
@Codigo_Gestion varchar(max)
as
--creamos temporal con campos necesarios
--drop table #temp_ivr;
select 
d.CodigoClienteUnico CodigoClienteUnico
,c.TelefonoGestion telefonoGestion
,o.NumeroDocumento
,d.MontoExigible deudaDocumento
,d.MontoPagado MontoPagado
,c.TipoNegocio negocio
,d.Codigo_Gestion nombreCartera
,a.DescripcionGestionCluster segmento
,d.FechaVencimientoDocumento
,o.FechaGestion
,o.FechaEnvioIvr
,g.comentario
,datediff(dd,d.FechaVencimientoDocumento,getdate()) as cant_dias
,o.FechaUltimoContactoEfectivo
,o.FechaUltimoContactoNoEfectivo
,c.CodigoCuenta
,d.CodigoInscripcion
,o.CodigoTipoDocumento
into #temp_ivr
from deudas d
 inner join carteras a
 on d.Codigo_Gestion=a.CodigoGestion
 inner join cuentas c
 on c.CodigoInscripcion=d.CodigoInscripcion
 left join Contactos o 
 on o.CodigoCliente=c.CodigoCliente 
 left join agenda g 
 on o.idCatalogoRespuesta=g.IdCatalogoRespuesta
 where a.FechaFinGestion>getdate()
 and d.Codigo_Gestion IN (SELECT SplitData FROM fnSplitString(@Codigo_Gestion,','));

--creamos temporal eliminando duplicados
select distinct * into #temp_ivr2 FROM #temp_ivr;

--creamos listado para ivr
select 
MAX(LTRIM(RTRIM(CodigoClienteUnico))) as cod_id
,MAX(LTRIM(RTRIM(TelefonoGestion))) as tlf_ges
,COUNT(*) as recibos
,SUM((CASE WHEN LEN(LTRIM(RTRIM(CAST(ISNULL(DeudaDocumento,'') AS VARCHAR))))>0 THEN CAST(LTRIM(RTRIM(CAST(DeudaDocumento AS VARCHAR))) AS DECIMAL(10,2)) ELSE 0.00 END))-SUM((CASE WHEN LEN(LTRIM(RTRIM(CAST(ISNULL(MontoPagado,'') AS VARCHAR))))>0 THEN CAST(LTRIM(RTRIM(CAST(MontoPagado AS VARCHAR))) AS DECIMAL(10,2)) ELSE 0.00 END)) as imp_doc
,MAX(LTRIM(RTRIM(nombreCartera))) as cartera
,MAX(LTRIM(RTRIM(segmento))) as negocio
,MAX(LTRIM(RTRIM(negocio))) as segmento
,MAX(LTRIM(RTRIM(convert(varchar(10),FechaVencimientoDocumento,103)))) as fec_vnc
,MAX(LTRIM(RTRIM(convert(varchar(10),FechaGestion,103)))) as ul_flla
,MAX(LTRIM(RTRIM(comentario))) as ul_dlla
,MAX(LTRIM(RTRIM(convert(varchar(10),FechaEnvioIvr,103)))) as fechaivr
,MAX(cant_dias) as cant_dias
,MAX(LTRIM(RTRIM(convert(varchar(10),FechaUltimoContactoEfectivo,103)))) as fce
,MAX(LTRIM(RTRIM(convert(varchar(10),FechaUltimoContactoNoEfectivo,103)))) as fcne
,MAX(LTRIM(RTRIM(CodigoCuenta))) as cod_cli
,MAX(LTRIM(RTRIM(CodigoInscripcion))) as cod_ins
,MAX(LTRIM(RTRIM(CodigoTipoDocumento))) as CodigoTipoDocumento
,MAX(LTRIM(RTRIM(NumeroDocumento))) as NumeroDocumento
from #temp_ivr2
group by 
CodigoInscripcion
HAVING
SUM((CASE WHEN LEN(LTRIM(RTRIM(CAST(ISNULL(DeudaDocumento,'') AS VARCHAR))))>0 THEN CAST(LTRIM(RTRIM(CAST(DeudaDocumento AS VARCHAR))) AS DECIMAL(10,5)) ELSE 0.00000 END))-SUM((CASE WHEN LEN(LTRIM(RTRIM(CAST(ISNULL(MontoPagado,'') AS VARCHAR))))>0 THEN CAST(LTRIM(RTRIM(CAST(MontoPagado AS VARCHAR))) AS DECIMAL(10,5)) ELSE 0.00000 END))>0

--eliminamos tablas temporales para liberar memoria
drop table #temp_ivr;
drop table #temp_ivr2;

*****************************************************************************


USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_ClientesMarcadorPredictivo 'NART1TUP-NAC-UN2015-09-22'
ALTER PROCEDURE [dbo].[Listar_ClientesMarcadorPredictivo_old]    
@CodigoGestion varchar(max)    
AS
--1 seleccionamos todas las deudas    
SELECT     
replace(convert(varchar,getdate(),4),'.','')+right(convert(varchar,getdate(),8),2) nombreListado
,U.telefonoGestion AS [telefono]    
,UPPER(C.NombreMoroso) AS [nombre]    
,(SELECT TOP 1 (RTRIM(LTRIM(LTRIM(RTRIM(Via))+' '+LTRIM(RTRIM(Calle))+' '+RTRIM(LTRIM(Numero))+' '+RTRIM(LTRIM(Direccion))))) FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico)  AS [direccion]      
,(SELECT TOP 1 DescripcionSubLocalidad FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico) AS [distrito]
,(SELECT TOP 1 Departamento FROM Direccion WHERE CodigoClienteUnico=U.CodigoClienteUnico) AS [departamento] 
,U.CodigoClienteUnico AS [cod_id]    
,U.CodigoInscripcion AS [codigo_inscripcion]    
,E.NumeroDocumento AS [factura]  
,E.FechaEmisionDocumento AS [fec_emi]    
,E.FechaVencimientoDocumento AS [fec_ven]   
,E.MontoExigible AS MontoTotal    
,E.MontoPagado AS MontoPagado    
,E.Signo AS [signo]    
,E.CodigoTipoDocumento AS [tipo_documento]    
--,A.DescripcionSegmentacionSegmento AS [segmento]    
,U.TipoNegocio AS [segmento]    
,U.CodigoGestion AS [cartera]    
,'' as fec_ges
,A.FechaInicioGestion AS [inicio]    
,A.FechaFinGestion AS [fin]
,ISNULL(C.fechaUltimoContactoEfectivo,'1900-01-01 00:00:00') AS [ult_fec_contacto_efectivo]    
,ISNULL(C.fechaUltimoContactoNoEfectivo,'1900-01-01 00:00:00') AS [ult_fec_contacto_no_efectivo]    
,R.Calificacion AS [calificacion]    
INTO #temporal    
FROM cuentas U     
LEFT JOIN Contactos C ON C.CodigoCliente=U.codigoCliente    
INNER JOIN Direccion D ON U.codigoClienteUnico=D.CodigoClienteUnico    
LEFT JOIN Usuario S ON C.idUsuarioAsignado=S.id    
INNER JOIN Deudas E ON E.CodigoInscripcion=U.CodigoInscripcion    
INNER JOIN CatalogoRespuesta R ON C.idCatalogoRespuesta=R.Codigo    
INNER JOIN Carteras A ON U.CodigoGestion=A.CodigoGestion    
WHERE    
getdate()<=A.FechaFinGestion
and U.CodigoGestion IN (SELECT SplitData FROM fnSplitString(@CodigoGestion,','))       
GROUP BY     
U.telefonoGestion    
,C.NombreMoroso    
,U.CodigoClienteUnico    
,U.CodigoInscripcion    
,E.NumeroDocumento
,E.FechaEmisionDocumento    
,E.FechaVencimientoDocumento    
,E.MontoExigible    
,E.MontoPagado    
,E.Signo    
,E.CodigoTipoDocumento    
--,A.DescripcionSegmentacionSegmento     
,U.TipoNegocio     
,U.CodigoGestion
,A.FechaInicioGestion  
,A.FechaFinGestion
,C.fechaUltimoContactoEfectivo    
,C.fechaUltimoContactoNoEfectivo    
,R.Calificacion
ORDER BY E.NumeroDocumento;    

--select * from #temporal
--drop table #temporal
--2 sacamos las facturas que tienen saldo > 0    
select    
factura    
,sum(cast(montototal as money))- sum(cast(montopagado as money)) saldo2    
into #temporal2    
from #temporal     
group by     
factura    
having (sum(cast(montototal as money))- sum(cast(montopagado as money)))>0;    

--3 creamos tabla temporal3 en donde estarán solo las cuentas que tienen un saldo>0    
CREATE TABLE #temporal3(    
nombreListado varchar(15),  
telefono varchar(15),    
nombre varchar(100),    
direccion_bd varchar(150),    
distrito_bd varchar(50),    
departamento_bd varchar(50),    
cod_id varchar(50),    
codigo_inscripcion varchar(50),
factura varchar(50),
fec_emi datetime, 
fec_ven datetime,    
saldo_act money,
montototal money, 
montopagado money,
signo varchar(5),    
tipo_documento varchar(50), 
segmento varchar(50), 
cartera varchar(50),    
fec_ges datetime, 
fec_ini_ges datetime, 
fec_fin_ges datetime,   
ult_fec_contacto_efectivo datetime,    
ult_fec_contacto_no_efectivo datetime,    
calificacion varchar(255)
);    
CREATE NONCLUSTERED INDEX [INDX_temporal_Cod_id] ON [dbo].[#temporal3]     
( [cod_id] ASC);    
CREATE NONCLUSTERED INDEX [INDX_temporal_Factura] ON [dbo].[#temporal3]     
(  [factura] ASC); 
insert into #temporal3    
select distinct    
T1.nombreListado
,T1.telefono    
,T1.nombre    
,T1.direccion
,T1.distrito
,T1.departamento
,T1.cod_id    
,T1.codigo_inscripcion
,T1.factura  
,T1.fec_emi  
,T1.fec_ven 
,T2.saldo2 sdo_act
,T1.montototal    
,T1.montopagado
,T1.signo
,T1.tipo_documento    
,T1.segmento      
,T1.cartera    
,T1.fec_ges    
,T1.inicio
,T1.fin
,T1.ult_fec_contacto_efectivo    
,T1.ult_fec_contacto_no_efectivo 
,T1.calificacion       
from #temporal T1 inner join #temporal2 T2 ON T1.factura=T2.Factura    
where fec_ven IS NOT NULL    
order by T1.cod_id;    

--4 borramos tablas temporales 1 y 2    
drop table #temporal;    
drop table #temporal2;    

--5 creamos tabla temporalFinal que sera la que se exporte con el formato recibido    
CREATE TABLE #temporalFinal( 
nombreListado varchar(15), 
telefono varchar(15),
nombre varchar(100),
direccion_bd varchar(150),    
distrito_bd varchar(50),    
departamento_bd varchar(50), 
cod_id varchar(50),
codigo_inscripcion varchar(50),     
saldo_act money, 
cartera varchar(50), 
segmento varchar(50), 
fec_ges datetime,
fec_ini_ges datetime, 
fec_fin_ges datetime,
ult_fec_contacto_efectivo datetime,    
ult_fec_contacto_no_efectivo datetime, 
calificacion varchar(255),    

tipo_documento_1 varchar(50),
codigo_tipo_documento_1 varchar(50),    
factura_1 varchar(50),    
fec_emi_1 datetime,    
fec_ven_1 datetime,    
montototal_1 money,    
signo_1 varchar(5),    
  
--    
tipo_documento_2 varchar(50),    
codigo_tipo_documento_2 varchar(50),
factura_2 varchar(50),    
fec_emi_2 datetime,    
fec_ven_2 datetime,    
montototal_2 money,    
signo_2 varchar(5),    
   
--    
tipo_documento_3 varchar(50),    
codigo_tipo_documento_3 varchar(50),
factura_3 varchar(50),    
fec_emi_3 datetime,    
fec_ven_3 datetime,    
montototal_3 money,    
signo_3 varchar(5),    
    
--    
tipo_documento_4 varchar(50),    
codigo_tipo_documento_4 varchar(50),
factura_4 varchar(50),    
fec_emi_4 datetime,    
fec_ven_4 datetime,    
montototal_4 money,    
signo_4 varchar(5),    
   
--    
tipo_documento_5 varchar(50),    
codigo_tipo_documento_5 varchar(50),
factura_5 varchar(50),    
fec_emi_5 datetime,    
fec_ven_5 datetime,    
montototal_5 money,    
signo_5 varchar(5),    
  
--    
tipo_documento_6 varchar(50),    
codigo_tipo_documento_6 varchar(50),
factura_6 varchar(50),    
fec_emi_6 datetime,    
fec_ven_6 datetime,    
montototal_6 money,    
signo_6 varchar(5),    
   
--    
tipo_documento_7 varchar(50),    
codigo_tipo_documento_7 varchar(50),
factura_7 varchar(50),    
fec_emi_7 datetime,    
fec_ven_7 datetime,    
montototal_7 money,    
signo_7 varchar(5),    
    
--    
tipo_documento_8 varchar(50),    
codigo_tipo_documento_8 varchar(50),
factura_8 varchar(50),    
fec_emi_8 datetime,    
fec_ven_8 datetime,    
montototal_8 money,    
signo_8 varchar(5),    
   
--    
tipo_documento_9 varchar(50),    
codigo_tipo_documento_9 varchar(50),
factura_9 varchar(50),    
fec_emi_9 datetime,    
fec_ven_9 datetime,    
montototal_9 money,    
signo_9 varchar(5)   
       
);    
--6 creamos indice en la tabla temporalFinal    
CREATE NONCLUSTERED INDEX [INDX_temporal_Cod_id] ON [dbo].[#temporalFinal]     
(    
 [cod_id] ASC    
);    

--7 Llenamos tablaTemporalFinal solo con las cuentas     
insert into #temporalFinal    
(
nombreListado, 
telefono,
nombre,
direccion_bd,    
distrito_bd,    
departamento_bd, 
cod_id,
codigo_inscripcion,     
saldo_act, 
cartera, 
segmento, 
fec_ges,
fec_ini_ges, 
fec_fin_ges,
ult_fec_contacto_efectivo,    
ult_fec_contacto_no_efectivo, 
calificacion
)    
    
SELECT
nombreListado
,telefono 
,nombre
,direccion_bd    
,distrito_bd    
,departamento_bd      
,cod_id    
,codigo_inscripcion
,sum(saldo_act) saldo_act       
,cartera    
,segmento    
,fec_ges
,fec_ini_ges 
,fec_fin_ges
,ult_fec_contacto_efectivo    
,ult_fec_contacto_no_efectivo  
,calificacion      
FROM #temporal3     
--WHERE cod_cliente IN ('100108000','939112531')    
GROUP BY
nombreListado
,telefono
,nombre
,direccion_bd    
,distrito_bd    
,departamento_bd         
,cod_id    
,codigo_inscripcion       
,cartera    
,segmento   
,fec_ges
,fec_ini_ges 
,fec_fin_ges
,ult_fec_contacto_efectivo    
,ult_fec_contacto_no_efectivo
,calificacion   
order by cod_id;   

--8 Actualizamos las facturas (deudas) de cada codigo Cliente Unico     
DECLARE @cod_id varchar(50);    
DECLARE @cod_id_temp varchar(50);       
DECLARE @factura varchar(50);    
DECLARE @tipo_documento varchar(50); 
DECLARE @fec_emi datetime;    
DECLARE @fec_ven datetime;    
DECLARE @montototal money;    
DECLARE @signo varchar(5);    
DECLARE @_SQL varchar(max);    
declare @RowNumberField varchar(2);    
declare @intRowCount INT;    
SET @intRowCount=1;    
SET @cod_id_temp='';    
DECLARE cod_id_cursor CURSOR FOR     
select cod_id,tipo_documento,factura,fec_emi,fec_ven,montototal,signo from #temporal3 order by cod_id,montototal --WHERE cod_cliente IN ('100108000','939112531');     
OPEN cod_id_cursor;    
    
FETCH NEXT FROM cod_id_cursor INTO @cod_id,@tipo_documento,@factura,@fec_emi,@fec_ven,@montototal,@signo    
WHILE @@FETCH_STATUS = 0    
BEGIN    
 IF(@cod_id_temp<>@cod_id)    
 BEGIN     
  SET @intRowCount=1;    
 END
 IF  (@intRowCount<10)
 BEGIN
SET @cod_id_temp=@cod_id;     
SET @RowNumberField = CAST(@intRowCount AS varchar)    
SET @_SQL = ' '    
SET @_SQL = @_SQL + 'update #temporalFinal set factura_'+@RowNumberField+'='''+@factura+''' '    
SET @_SQL = @_SQL + ',tipo_documento_'+@RowNumberField+'='''+@tipo_documento+''' ' 
SET @_SQL = @_SQL + ',fec_emi_'+@RowNumberField+'=CAST('''+ CONVERT(VARCHAR(19),@fec_emi,121)+''' AS date) '    
SET @_SQL = @_SQL + ',fec_ven_'+@RowNumberField+'=CAST('' '+ CONVERT(VARCHAR(19),@fec_ven,121)+''' AS date) '    
SET @_SQL = @_SQL + ',montototal_'+@RowNumberField+'='''+CAST(@montototal AS VARCHAR)+''' '    
SET @_SQL = @_SQL + ',signo_'+@RowNumberField+'='''+@signo+''' '    
SET @_SQL = @_SQL + ' WHERE cod_id='''+@cod_id+''' '    
SET @intRowCount = @intRowCount + 1;     
EXEC (@_SQL)     
 END 

 FETCH NEXT FROM cod_id_cursor     
    INTO @cod_id,@tipo_documento,@factura,@fec_emi,@fec_ven,@montototal,@signo    
END    
CLOSE cod_id_cursor;    
DEALLOCATE cod_id_cursor; 
--9 seleccionamos tabla final
select 
ltrim(rtrim(nombreListado)) nombreListado
,ltrim(rtrim(telefono)) telefono
,ltrim(rtrim(nombre)) as cliente
,ltrim(rtrim(direccion_bd)) as direccion
,ltrim(rtrim(distrito_bd)) as distrito
,ltrim(rtrim(departamento_bd)) as departamento
,ltrim(rtrim(cod_id)) cod_id
,ltrim(rtrim(codigo_inscripcion)) codigo_inscripcion
,(ltrim(rtrim(tipo_documento_1))+'-'+ltrim(rtrim(factura_1))) as numero_documento_1
,convert(varchar(10),fec_emi_1,120)+' --- '+convert(varchar(10),fec_ven_1,120) as fecha_vencimiento_1
,cast(montototal_1 as decimal(10,2)) as deuda_1
,(ltrim(rtrim(tipo_documento_2))+'-'+ltrim(rtrim(factura_2))) as numero_documento_2
,convert(varchar(10),fec_emi_2,120)+' --- '+convert(varchar(10),fec_ven_2,120) as fecha_vencimiento_2
,cast(montototal_2 as decimal(10,2)) as deuda_2
,(ltrim(rtrim(tipo_documento_3))+'-'+ltrim(rtrim(factura_3))) as numero_documento_3
,convert(varchar(10),fec_emi_3,120)+' --- '+convert(varchar(10),fec_ven_3,120) as fecha_vencimiento_3
,cast(montototal_3 as decimal(10,2)) as deuda_3
,(ltrim(rtrim(tipo_documento_4))+'-'+ltrim(rtrim(factura_4))) as numero_documento_4
,convert(varchar(10),fec_emi_4,120)+' --- '+convert(varchar(10),fec_ven_4,120) as fecha_vencimiento_4
,cast(montototal_5 as decimal(10,2)) as deuda_4
,(ltrim(rtrim(tipo_documento_5))+'-'+ltrim(rtrim(factura_5))) as numero_documento_5
,convert(varchar(10),fec_emi_5,120)+' --- '+convert(varchar(10),fec_ven_5,120) as fecha_vencimiento_5
,cast(montototal_5 as decimal(10,2)) as deuda_5
,ltrim(rtrim(segmento)) segmento
,ltrim(rtrim(cartera)) cartera 
,convert(varchar(10),fec_ini_ges,120)+' --- '+convert(varchar(10),fec_fin_ges,120) as fecha_de_gestion
,ult_fec_contacto_efectivo as fecha_contacto_efectivo 
,ult_fec_contacto_no_efectivo as fecha_contacto_no_efectivo
,calificacion as ultima_respuesta  
from #temporalFinal;    

--10 borramos temporales
drop table #temporal3;    
drop table #temporalFinal;  

*************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Listar_ContactabilidadxGestiones]
@fecha varchar(10)
as
--declare @fecha datetime;
--set @fecha='20150525';
select 
'FIJA' [negocio]
,convert(varchar(10),@fecha,103) [fecha]
,substring(a.codigoclienteunico,CHARINDEX('-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) [codigoGestion]
,'CONTACT' [agencia]
,r.gestion [gestion]
,COUNT(*) [cantidad] from agenda a 
inner join catalogoRespuesta r on r.codigo=a.idCatalogoRespuesta
--inner join contactos c on a.codigoClienteUnico=c.codigoClienteUnico
where cast(a.fechaModificacion as date) =cast(@fecha as date)
group by 
substring(a.codigoclienteunico,CHARINDEX('-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico))
,r.gestion


******************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--Listar_Contactos_Campo '','','','' 
ALTER PROC [dbo].[Listar_Contactos_Campo]    
(                 
 @IdUsuarioAsignado char(10),                  
 @NombreContacto varchar(50),                  
 @TelefonoContacto varchar(50),                  
 @DniContacto varchar(50)                
 )                  
AS
create table #temporal(
Id varchar(50),
Cliente varchar(100),
CodigoCliente varchar(50),
NumeroDocumento varchar(50),
telefono varchar(50),
gestor varchar(50),
calificacion varchar(255),
idUsuarioAsignado int,
saldo decimal(10,2),
FechaPrometida datetime,
FechaGestion datetime
);
begin
 declare @sql nvarchar(max),@where nvarchar(max),@groupby nvarchar(max),@order nvarchar(max);
 set @sql = '';
 set @where = '';
 set @sql = '
INSERT INTO #temporal
SELECT 
UPPER(Contactos.CodigoClienteUnico) AS Id,
UPPER(Contactos.NombreMoroso) AS Cliente,
Contactos.CodigoCliente AS CodigoCliente,
UPPER(Contactos.NumeroDocumento) AS NumeroDocumento,
UPPER(VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO.TelefonoContacto) AS Telefono,
UPPER(ISNULL(Usuario.Usuario,''LIBRE'')) AS Gestor,
UPPER(Contactos.Calificacion) AS Calificacion,
Contactos.idUsuarioAsignado AS idUsuarioAsignado,
CAST(Contactos.DeudaTotal AS DECIMAL(10,2)) AS Saldo,
Contactos.FechaPrometida,
Contactos.FechaGestion 
FROM Contactos
LEFT JOIN CatalogoRespuesta ON Contactos.idCatalogoRespuesta=CatalogoRespuesta.Id
LEFT JOIN Usuario ON Contactos.idUsuarioAsignado=Usuario.Id
  LEFT JOIN VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO ON Contactos.CodigoClienteUnico=VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO.CodigoClienteUnico';
 
set @where = ' WHERE 1=1 AND CAST(getdate() AS DATE)<= CAST(Contactos.FechaFinGestion AS DATE) AND contactos.EstadoBloqueo=0 
AND (Contactos.FechaGestion IS NULL OR DATEADD(hour, 2, Contactos.FechaGestion)<getdate())
AND (Contactos.FechaPrometida IS NULL OR getdate()>=Contactos.FechaPrometida)
AND (Contactos.EstadoGestion = 1)
AND (Contactos.IdCatalogoRespuesta<>100)
AND (Contactos.Calificacion<>''PAGO'')
AND (Contactos.DeudaTotal>0)  
';
 set @groupby=' ';
 set @order=' ';     
if @idUsuarioAsignado<>''
begin
set @where = @where+' '+'AND (Contactos.idUsuarioAsignado= '''+rtrim(ltrim(@idUsuarioAsignado))+''' OR Contactos.idUsuarioAsignado=0)';
end
if @NombreContacto<>''
begin
set @where = @where+' '+'AND Contactos.NombreMoroso LIKE ''%'+rtrim(ltrim(@NombreContacto))+'%'' ';
end
if @TelefonoContacto<>''
begin
set @where = @where+' '+'AND VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO.TelefonoContacto LIKE ''%'+rtrim(ltrim(@TelefonoContacto))+'%'' ';
end
if @DniContacto<>''
begin
set @where = @where+' '+'AND Contactos.NumeroDocumento LIKE ''%'+rtrim(ltrim(@DniContacto))+'%'' ';
end
set @sql =@sql+@where+@groupby+@order;
--print @sql 
exec sp_executesql @sql

set @sql = 'SELECT MAX(Id) AS Id, Cliente, CodigoCliente, NumeroDocumento, Telefono, Gestor, Calificacion, idUsuarioAsignado, Saldo, ISNULL(CONVERT(VARCHAR(10),FechaPrometida,120),''S/FechaPro'')FechaPrometida,ISNULL(CONVERT(VARCHAR(10),FechaGestion,120),''S/FechaGes'')FechaGestion FROM #temporal GROUP BY Cliente, CodigoCliente, NumeroDocumento, Telefono, Gestor, Calificacion, idUsuarioAsignado, Saldo, CONVERT(VARCHAR(10),FechaPrometida,120),CONVERT(VARCHAR(10),FechaGestion,120) ORDER BY Saldo DESC, FechaPrometida ASC,FechaGestion DESC';
--print @sql 
exec sp_executesql @sql

set @sql = 'DROP TABLE #temporal';
--print @sql 
exec sp_executesql @sql
end


***************************************************************************

USE [CobraBasica]
GO

--Listar_ContactosAllSinFiltro 'QUIMDIA','142','2054'
ALTER PROC [dbo].[Listar_ContactosAllSinFiltro]
(
@NombreContacto varchar(50),
@TelefonoContacto varchar(50),
@DniContacto varchar(50)
)
AS
create table #temporal(
Id varchar(50),
Cliente varchar(100),
CodigoCliente varchar(50),
NumeroDocumento varchar(50),
telefono varchar(50),
gestor varchar(50),
calificacion varchar(255),
idUsuarioAsignado int,
saldo decimal(10,2),
FechaPrometida datetime,
FechaGestion datetime
);
begin
 declare @sql nvarchar(max),@where nvarchar(max),@groupby nvarchar(max),@order nvarchar(max);
 set @sql = '';
 set @where = '';
 set @sql = '
INSERT INTO #temporal
SELECT 
UPPER(Contactos.CodigoClienteUnico) AS Id,
UPPER(Contactos.NombreMoroso) AS Cliente,
Contactos.CodigoCliente AS CodigoCliente,
UPPER(Contactos.NumeroDocumento) AS NumeroDocumento,
UPPER(VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO.TelefonoContacto) AS Telefono,
UPPER(ISNULL(Usuario.Usuario,''LIBRE'')) AS Gestor,
UPPER(Contactos.Calificacion) AS Calificacion,
Contactos.idUsuarioAsignado AS idUsuarioAsignado,
Contactos.DeudaTotal AS Saldo,
Contactos.FechaPrometida,
Contactos.FechaGestion 
FROM Contactos
LEFT JOIN CatalogoRespuesta ON Contactos.idCatalogoRespuesta=CatalogoRespuesta.Id
LEFT JOIN Usuario ON Contactos.idUsuarioAsignado=Usuario.Id
  LEFT JOIN VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO ON Contactos.CodigoClienteUnico=VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO.CodigoClienteUnico';
 
set @where = ' WHERE 1=1 ';
set @groupby=' ';
set @order=' ';     
if @NombreContacto<>''
begin
set @where = @where+' '+'AND Contactos.NombreMoroso LIKE ''%'+rtrim(ltrim(@NombreContacto))+'%'' ';
end
if @TelefonoContacto<>''
begin
set @where = @where+' '+'AND VIST_TELEFONOS_LISTAR_CONTACTOS_SIN_FILTRO.TelefonoContacto LIKE ''%'+rtrim(ltrim(@TelefonoContacto))+'%'' ';
end
if @DniContacto<>''
begin
set @where = @where+' '+'AND Contactos.NumeroDocumento LIKE ''%'+rtrim(ltrim(@DniContacto))+'%'' ';
end
set @sql =@sql+@where+@groupby+@order;
--print @sql 
exec sp_executesql @sql

set @sql = 'SELECT MAX(Id) AS Id, Cliente, CodigoCliente, NumeroDocumento, Telefono, Gestor, Calificacion, idUsuarioAsignado, Saldo, ISNULL(CONVERT(VARCHAR(10),FechaPrometida,120),''S/FechaPro'')FechaPrometida,ISNULL(CONVERT(VARCHAR(10),FechaGestion,120),''S/FechaGes'')FechaGestion FROM #temporal GROUP BY Cliente, CodigoCliente, NumeroDocumento, Telefono, Gestor, Calificacion, idUsuarioAsignado, Saldo,CONVERT(VARCHAR(10),FechaPrometida,120),CONVERT(VARCHAR(10),FechaGestion,120)  ORDER BY Saldo DESC, FechaPrometida ASC,FechaGestion DESC';
--print @sql 
exec sp_executesql @sql

set @sql = 'DROP TABLE #temporal';
--print @sql 
exec sp_executesql @sql
end


*************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Listar_DeudaxCodigoCuenta]
@CodigoCuenta varchar(50)
as

SELECT   Id
  ,[CodigoClienteUnico]  
      ,[CodigoCuenta]
      ,[TelefonoGestion]
      ,[CodigoTipoDocumento]
      ,[NumeroDocumento]
      ,[FechaCiclo]
      ,CONVERT(VARCHAR(10),[FechaEmisionDocumento],103)FechaEmisionDocumento
      ,CONVERT(VARCHAR(10),[FechaVencimientoDocumento],103)[FechaVencimientoDocumento]
      ,CAST(CAST (ISNULL([MontoExigible],0) AS MONEY)AS VARCHAR)MontoExigible
      ,CAST(CAST (ISNULL([MontoPagado],0)AS MONEY)AS VARCHAR)[MontoPagado]
      ,CAST(CAST (ISNULL([MontoExigible],0)AS MONEY)AS VARCHAR)[MontoTotal]
      ,[MontoAjustado]
      ,[MontoFinanciado]
      ,[MontoDisputa]
      ,[FechaActualizacionDeuda]
      ,[EstadoDeuda]
      ,[UsuarioLogin]
      ,[ArchivoSubido]
      ,[Codigo_Cliente]
      ,[Codigo_Gestion]
      ,[Signo]
      ,'S/.' Moneda
      ,case when MontoExigible IS NULL   then CAST(CAST (ISNULL([MontoPagado],0)AS MONEY)AS VARCHAR) else CAST(CAST (ISNULL([MontoExigible],0) AS MONEY)AS VARCHAR)   end MontoP
      --,CAST(CAST (ISNULL([MontoExigible],0) AS MONEY)AS VARCHAR) MontoP
      ,DescripcionTransaccion
      ,(select Codigo from CatalogoEstadoGestion where CatalogoEstadoGestion.id=deudas.EstadoDeuda ) Estado
  FROM [Deudas]
  where CodigoCuenta= RTRIM(LTRIM(@CodigoCuenta))
  
 order by NumeroDocumento , CodigoTipoDocumento asc

****************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--Listar_MetricasDataGestion '2015-08-04','2015-08-06'
ALTER procedure [dbo].[Listar_MetricasDataGestion]
@fechaIni varchar(10),
@fechaFin varchar(10)
AS

set @fechaIni=replace(@fechaIni,'-','')
set @fechaFin=replace(@fechaFin,'-','')

declare @_fechaIni datetime;
declare @_fechaFin datetime;
declare @fecIni datetime;
declare @fecFin datetime;

set @_fechaIni =cast(@fechaIni+' '+'00:00:00' as datetime);
set @_fechaFin =cast(@fechaFin+' '+'23:59:59' as datetime);
set @fecIni=dateadd(day,-2,cast(@fechaIni+' '+'00:00:00' as datetime));
set @fecFin=cast(@fechaFin+' '+'23:59:59' as datetime);

select 
'FIJA' [NEGOCIO] 
,convert(varchar(10),getdate(),103) [FECHA]
,substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) [CARTERA]
,'CONTACT' [AGENCIA]
,count(*) [INTENTOS_CO]
,(select count(*) from agenda inner join catalogoRespuesta on catalogoRespuesta.codigo=agenda.idCatalogoRespuesta where catalogoRespuesta.gestion='NO CONTACTO' and substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and agenda.fechaModificacion between @_fechaIni and @_fechaFin) [NOC_CO]
,(select count(*) from agenda inner join catalogoRespuesta on catalogoRespuesta.codigo=agenda.idCatalogoRespuesta where catalogoRespuesta.gestion IN('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO') and substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and agenda.fechaModificacion between @_fechaIni and @_fechaFin) [CONTACTOS_CO]
,(select count(*) from agenda inner join catalogoRespuesta on catalogoRespuesta.codigo=agenda.idCatalogoRespuesta where catalogoRespuesta.gestion = 'CONTACTO EFECTIVO' and substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and agenda.fechaModificacion between @_fechaIni and @_fechaFin) [CPC_CO]
,(select count(*) from agenda inner join catalogoRespuesta on catalogoRespuesta.codigo=agenda.idCatalogoRespuesta where catalogoRespuesta.CodigoCliente IN ('A09') and substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and agenda.fechaModificacion between @_fechaIni and @_fechaFin ) [PROMESAS_CO]
,(select count(*) from VIST_DEUDAS_LISTAR_METRICASDATAGESTION where Codigo_Gestion=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and FechaActualizacionDeuda between @fecIni and @fecFin and CodigoClienteUnico in (select CodigoClienteUnico from agenda inner join catalogoRespuesta on catalogoRespuesta.codigo=agenda.idCatalogoRespuesta where catalogoRespuesta.CodigoCliente IN ('A09') and substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and agenda.fechaModificacion between @_fechaIni and @_fechaFin )) [PROMESAS_CUMPLIDAS_CO]
,(select sum(Total) from [CallCenter].[dbo].[Recepcion] where cast(FechaLLamada as date) between @_fechaIni and @_fechaFin and Tramo=substring(substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)),4,2)) [LLAMADAS_RECIBIDAS]
,(select sum(NoContacto) from [CallCenter].[dbo].[Recepcion] where cast(FechaLLamada as date) between @_fechaIni and @_fechaFin and Tramo=substring(substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)),4,2)) [LLAMADAS_ABAND]
,(select sum(Intentos) from [CallCenter].[dbo].[IVR] where cast(FechaLLamada as datetime) between @_fechaIni and @_fechaFin and Cartera=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico))) [INTENTOS_IVR]
,(select sum(Contacto) from [CallCenter].[dbo].[IVR] where cast(FechaLLamada as datetime) between @_fechaIni and @_fechaFin and Cartera=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico))) [CONTACTOS_IVR]
,(select count(*) from contactos where substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))=substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico)) and EstadoActualizacionCartas='1' and fechaActualizacionCartas between @_fechaIni and @_fechaFin) [CARTAS_ENVIADAS]
from 
agenda a 
inner join catalogoRespuesta r on r.codigo=a.idCatalogoRespuesta
where a.fechaModificacion between @_fechaIni and @_fechaFin
group by 
substring(a.codigoclienteunico,CHARINDEX ( '-',a.codigoclienteunico,0 )+1,len(a.codigoclienteunico))


*******************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_GestionesxHora '2015-12-01','2016-01-31','','','','',''
--Listar_GestionesxHora '2015-12-01','2015-12-15','','','','GESTION',''
--Listar_GestionesxHora '2015-12-01','2015-12-15','','','','CONTACTOS',''
--Listar_GestionesxHora '2015-12-01','2016-01-31','','','','PORCENTAJE DE CONTACTABILIDAD',''
ALTER procedure [dbo].[Listar_GestionesxHora]    
@FechaIni varchar(19),
@FechaFin varchar(19),    
@Servicio varchar(50),    
@Tramo varchar(50),    
@Cartera varchar(50),    
@TipoReporte varchar(255),    
@objetivo varchar(50)    
AS    

create table #temporal_inicial
( usuario varchar(100),
  nombreusuario varchar(100),
  hora varchar(2),
  cantidad int
);
create table #temporal_final
( usuario varchar(100),
  nombreusuario varchar(100),
  hora varchar(2),
  cantidad int
);
if(@TipoReporte='GESTION' OR @TipoReporte='')
begin
insert #temporal_inicial (usuario,nombreusuario,hora,cantidad)
select     
upper(u.Usuario) as [usuario]    
,upper((Nombres+' '+ ApellidoPaterno)) as [nombreUsuario]    
,datepart(hh,a.fechaModificacion) as [hora]    
,count(*) as [cantidad]     
--into #temporal
from agenda a   
inner join usuario u on a.UsuarioGestion=u.Usuario    
inner join persona p on u.IdPersona=p.Id    
inner join carteras c on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))    
inner join catalogoRespuesta r on r.codigo=a.idcatalogorespuesta   
where    
c.estadocartera='1'    
and    
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)    
and    
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)    
-- and    
-- (@TipoReporte is null or @TipoReporte='' or r.gestion=@TipoReporte)                          
and    
(                             
  (@FechaIni is null or @FechaIni='' or a.fechaModificacion >= CAST (REPLACE(RTRIM(LTRIM(@FechaIni)),'-','') AS DATETIME))                           
  and                           
  (@FechaFin is null or @FechaFin='' or a.fechaModificacion <= CAST(REPLACE(RTRIM(LTRIM(@FechaFin)),'-','') AS DATETIME))                           
)       
group by u.Usuario,Nombres+' '+ ApellidoPaterno,datepart(hh,a.fechaModificacion);    
end
else
begin 
if(@TipoReporte='CONTACTOS')
begin
insert #temporal_inicial (usuario,nombreusuario,hora,cantidad)
select     
upper(u.Usuario) as [usuario]    
,upper((Nombres+' '+ ApellidoPaterno)) as [nombreUsuario]    
,datepart(hh,a.fechaModificacion) as [hora]    
,count(*) as [cantidad]     
from agenda a   
inner join usuario u on a.UsuarioGestion=u.Usuario    
inner join persona p on u.IdPersona=p.Id    
inner join carteras c on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))    
inner join catalogoRespuesta r on r.codigo=a.idcatalogorespuesta   
where    
c.estadocartera='1'    
and    
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)    
and    
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)    
and    
--(@TipoReporte is null or @TipoReporte='' or r.gestion=@TipoReporte)                          
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')                          
and    
(                             
  (@FechaIni is null or @FechaIni='' or a.fechaModificacion >= CAST (REPLACE(RTRIM(LTRIM(@FechaIni)),'-','') AS DATETIME))                           
  and                           
  (@FechaFin is null or @FechaFin='' or a.fechaModificacion <= CAST(REPLACE(RTRIM(LTRIM(@FechaFin)),'-','') AS DATETIME))                           
)       
group by u.Usuario,Nombres+' '+ ApellidoPaterno,datepart(hh,a.fechaModificacion)    
end
else
begin
if(@TipoReporte='NO CONTACTO')
begin
insert #temporal_inicial (usuario,nombreusuario,hora,cantidad)
select     
upper(u.Usuario) as [usuario]    
,upper((Nombres+' '+ ApellidoPaterno)) as [nombreUsuario]    
,datepart(hh,a.fechaModificacion) as [hora]    
,count(*) as [cantidad]     
from agenda a   
inner join usuario u on a.UsuarioGestion=u.Usuario    
inner join persona p on u.IdPersona=p.Id    
inner join carteras c on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))    
inner join catalogoRespuesta r on r.codigo=a.idcatalogorespuesta   
where    
c.estadocartera='1'    
and    
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)    
and    
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)    
and    
--(@TipoReporte is null or @TipoReporte='' or r.gestion=@TipoReporte)                          
r.gestion IN ('NO CONTACTO')                          
and    
(                             
  (@FechaIni is null or @FechaIni='' or a.fechaModificacion >= CAST (REPLACE(RTRIM(LTRIM(@FechaIni)),'-','') AS DATETIME))                           
  and                           
  (@FechaFin is null or @FechaFin='' or a.fechaModificacion <= CAST(REPLACE(RTRIM(LTRIM(@FechaFin)),'-','') AS DATETIME))                           
)       
group by u.Usuario,Nombres+' '+ ApellidoPaterno,datepart(hh,a.fechaModificacion);   
end
else
begin
if(@TipoReporte='PORCENTAJE DE CONTACTABILIDAD')
begin
insert #temporal_inicial (usuario,nombreusuario,hora,cantidad)
select     
upper(u.Usuario) as [usuario]    
,upper((Nombres+' '+ ApellidoPaterno)) as [nombreUsuario]    
,datepart(hh,a.fechaModificacion) as [hora]    
,count(*) as [cantidad]     
from agenda a   
inner join usuario u on a.UsuarioGestion=u.Usuario    
inner join persona p on u.IdPersona=p.Id    
inner join carteras c on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))    
inner join catalogoRespuesta r on r.codigo=a.idcatalogorespuesta   
where    
c.estadocartera='1'    
and    
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)    
and    
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)    
and    
(                             
  (@FechaIni is null or @FechaIni='' or a.fechaModificacion >= CAST (REPLACE(RTRIM(LTRIM(@FechaIni)),'-','') AS DATETIME))                           
  and                           
  (@FechaFin is null or @FechaFin='' or a.fechaModificacion <= CAST(REPLACE(RTRIM(LTRIM(@FechaFin)),'-','') AS DATETIME))                           
)       
group by u.Usuario,Nombres+' '+ ApellidoPaterno,datepart(hh,a.fechaModificacion);
insert #temporal_final(usuario,nombreusuario,hora,cantidad)
select     
upper(u.Usuario) as [usuario]    
,upper((Nombres+' '+ ApellidoPaterno)) as [nombreUsuario]    
,datepart(hh,a.fechaModificacion) as [hora]    
,count(*) as [cantidad]     
from agenda a   
inner join usuario u on a.UsuarioGestion=u.Usuario    
inner join persona p on u.IdPersona=p.Id    
inner join carteras c on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))    
inner join catalogoRespuesta r on r.codigo=a.idcatalogorespuesta   
where    
c.estadocartera='1'    
and    
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)    
and    
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)    
and    
--(@TipoReporte is null or @TipoReporte='' or r.gestion=@TipoReporte)                          
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')                          
and    
(                             
  (@FechaIni is null or @FechaIni='' or a.fechaModificacion >= CAST (REPLACE(RTRIM(LTRIM(@FechaIni)),'-','') AS DATETIME))                           
  and                           
  (@FechaFin is null or @FechaFin='' or a.fechaModificacion <= CAST(REPLACE(RTRIM(LTRIM(@FechaFin)),'-','') AS DATETIME))                           
)       
group by u.Usuario,Nombres+' '+ ApellidoPaterno,datepart(hh,a.fechaModificacion)
   end
else
begin
insert #temporal_inicial (usuario,nombreusuario,hora,cantidad)
select     
upper(u.Usuario) as [usuario]    
,upper((Nombres+' '+ ApellidoPaterno)) as [nombreUsuario]    
,datepart(hh,a.fechaModificacion) as [hora]    
,count(*) as [cantidad]     
from agenda a   
inner join usuario u on a.UsuarioGestion=u.Usuario    
inner join persona p on u.IdPersona=p.Id    
inner join carteras c on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))    
inner join catalogoRespuesta r on r.codigo=a.idcatalogorespuesta   
where    
c.estadocartera='1'    
and    
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)    
and    
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)    
and    
(                             
  (@FechaIni is null or @FechaIni='' or a.fechaModificacion >= CAST (REPLACE(RTRIM(LTRIM(@FechaIni)),'-','') AS DATETIME))                           
  and                           
  (@FechaFin is null or @FechaFin='' or a.fechaModificacion <= CAST(REPLACE(RTRIM(LTRIM(@FechaFin)),'-','') AS DATETIME))                           
)       
group by u.Usuario,Nombres+' '+ ApellidoPaterno,datepart(hh,a.fechaModificacion);   
end
end
end
end 
if(@TipoReporte='PORCENTAJE DE CONTACTABILIDAD')
begin
select     
[usuario] as usuario    
,[nombreUsuario] as nombreUsuario    
,[07] as 'H07'    
,[08] as 'H08'    
,[09] as 'H09'    
,[10] as 'H10'    
,[11] as 'H11'    
,[12] as 'H12'    
,[13] as 'H13'    
,[14] as 'H14'    
,[15] as 'H15'    
,[16] as 'H16'    
,[17] as 'H17'    
,[18] as 'H18'    
,[19] as 'H19'    
,[20] as 'H20'    
into #temporal_total_1
from     
#temporal_inicial
put    
PIVOT (SUM(cantidad) FOR [hora] IN ([07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20])) AS Child; 
select     
[usuario] as usuario    
,[nombreUsuario] as nombreUsuario    
,[07] as 'H07'    
,[08] as 'H08'    
,[09] as 'H09'    
,[10] as 'H10'    
,[11] as 'H11'    
,[12] as 'H12'    
,[13] as 'H13'    
,[14] as 'H14'    
,[15] as 'H15'    
,[16] as 'H16'    
,[17] as 'H17'    
,[18] as 'H18'    
,[19] as 'H19'    
,[20] as 'H20'    
into #temporal_total_2
from     
#temporal_final
put    
PIVOT (SUM(cantidad) FOR [hora] IN ([07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20])) AS Child; 
select 
t1.[usuario] as [usuario]
,t1.[nombreUsuario]
,cast((cast(t2.H07 as decimal(10,2))/cast(t1.H07 as decimal(10,2))) as decimal(10,2)) as H07 
,cast((cast(t2.H08 as decimal(10,2))/cast(t1.H08 as decimal(10,2))) as decimal(10,2)) as H08 
,cast((cast(t2.H09 as decimal(10,2))/cast(t1.H09 as decimal(10,2))) as decimal(10,2)) as H09 
,cast((cast(t2.H10 as decimal(10,2))/cast(t1.H10 as decimal(10,2))) as decimal(10,2)) as H10 
,cast((cast(t2.H11 as decimal(10,2))/cast(t1.H11 as decimal(10,2))) as decimal(10,2)) as H11 
,cast((cast(t2.H12 as decimal(10,2))/cast(t1.H12 as decimal(10,2))) as decimal(10,2)) as H12 
,cast((cast(t2.H13 as decimal(10,2))/cast(t1.H13 as decimal(10,2))) as decimal(10,2)) as H13  
,cast((cast(t2.H14 as decimal(10,2))/cast(t1.H14 as decimal(10,2))) as decimal(10,2)) as H14  
,cast((cast(t2.H15 as decimal(10,2))/cast(t1.H15 as decimal(10,2))) as decimal(10,2)) as H15
,cast((cast(t2.H16 as decimal(10,2))/cast(t1.H16 as decimal(10,2))) as decimal(10,2)) as H16 
,cast((cast(t2.H17 as decimal(10,2))/cast(t1.H17 as decimal(10,2))) as decimal(10,2)) as H17
,cast((cast(t2.H18 as decimal(10,2))/cast(t1.H18 as decimal(10,2))) as decimal(10,2)) as H18
,cast((cast(t2.H19 as decimal(10,2))/cast(t1.H19 as decimal(10,2))) as decimal(10,2)) as H19
,cast((cast(t2.H20 as decimal(10,2))/cast(t1.H20 as decimal(10,2))) as decimal(10,2)) as H20
from #temporal_total_1 t1 inner join #temporal_total_2 t2 on t1.nombreUsuario=t2.nombreUsuario and t1.usuario=t2.usuario
where (isnull(t1.H07,0)+isnull(t1.H08,0)+isnull(t1.H09,0)+isnull(t1.H10,0)+isnull(t1.H11,0)+isnull(t1.H12,0)+isnull(t1.H13,0)+isnull(t1.H14,0)+isnull(t1.H15,0)+isnull(t1.H16,0)+isnull(t1.H17,0)+isnull(t1.H18,0)+isnull(t1.H19,0)+isnull(t1.H20,0))>0; 
--select * from #temporal_total_2;
drop table #temporal_total_1;
drop table #temporal_total_2;
--select * from #temporal_total;
end
else
begin
select     
[usuario] as usuario    
,[nombreUsuario] as nombreUsuario    
,[07] as 'H07'    
,[08] as 'H08'    
,[09] as 'H09'    
,[10] as 'H10'    
,[11] as 'H11'    
,[12] as 'H12'    
,[13] as 'H13'    
,[14] as 'H14'    
,[15] as 'H15'    
,[16] as 'H16'    
,[17] as 'H17'    
,[18] as 'H18'    
,[19] as 'H19'    
,[20] as 'H20'    
into #temporal_total_3
from     
    #temporal_inicial 
 put    
PIVOT (SUM(cantidad) FOR [hora] IN ([07],[08],[09],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20])) AS Child; 
select * from #temporal_total_3 where (ISNULL(H07,0)+ISNULL(H08,0)+ISNULL(H09,0)+ISNULL(H10,0)+ISNULL(H11,0)+ISNULL(H12,0)+ISNULL(H13,0)+ISNULL(H14,0)+ISNULL(H15,0)+ISNULL(H16,0)+ISNULL(H17,0)+ISNULL(H18,0)+ISNULL(H19,0)+ISNULL(H20,0))>0 --H07 IS NOT NULL --AND H08 IS NOT NULL AND H09 IS NOT NULL AND H10 IS NOT NULL AND H11 IS NOT NULL AND H12 IS NOT NULL AND H13 IS NOT NULL AND H14 IS NOT NULL AND H15 IS NOT NULL AND H16 IS NOT NULL AND H17 IS NOT NULL AND H18 IS NOT NULL AND H19 IS NOT NULL AND H20 IS NOT NULL;
drop table #temporal_total_3;
end
--drop table #temporal_total;

/*
create table #temporal_final
(
[usuario] varchar(50),
[nombreUsuario] varchar(50),
[07] varchar(6), 
[08] varchar(6),
[09] varchar(6),
[10] varchar(6),
[11] varchar(6),
[12] varchar(6),
[13] varchar(6),
[14] varchar(6),
[15] varchar(6),
[16] varchar(6),
[17] varchar(6),
[18] varchar(6),
[19] varchar(6),
[20] varchar(6)
);*/
drop table #temporal_inicial;
drop table #temporal_final;


*****************************************************************************

USE [CobraBasica]
GO
/****** Object:  StoredProcedure [dbo].[Listar_Gestionesxdia_2]    Script Date: 11/19/2018 17:28:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--EXEC Listar_Gestionesxdia_2 '201511','','',''
ALTER procedure [dbo].[Listar_Gestionesxdia_2]
@P_periodo varchar(6),
@Tramo varchar(50),
@Cartera varchar(50),
@TipoReporte varchar(255)
as
declare @periodo int;
declare @PrimerDiaMes smalldatetime;
declare @UltimoDiaMes smalldatetime;
declare @intDaysCount int;
declare @ColumnaSemana varchar(max);
declare @Semana int
declare @Numerodias int;
declare @PrimerDiaSemana smalldatetime;
declare @UltimoDiaSemana smalldatetime;
declare @p_day smalldatetime;
declare @p_nrodia int;
declare @p_nrosemana int;
declare @p_semana int;
declare @p_dia int;
set @p_dia=1;
set @p_nrosemana=1;
set @p_nrodia=1;
set @intDaysCount=0;
set @periodo = cast (@P_periodo as integer);
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dias]') AND type in (N'U'))
begin
create table dias(
columnasemana varchar(255),
semana int,
fecha smalldatetime,
nrodia varchar(200),
nrosemana varchar(200)
)
end;

set @PrimerDiaMes=(select min(PrimerDiaSemana) as PrimerDiaSemana from semanas where periodo=@periodo);
set @UltimoDiaMes=(select max(UltimoDiaSemana) as UltimoDiaSemana from semanas where periodo=@periodo);
delete from dias;
DECLARE CursorGestionesDia CURSOR FAST_FORWARD  
FOR
select
ColumnaSemana
,Semana 
,PrimerDiaSemana
,UltimoDiaSemana
,datediff(day,PrimerDiaSemana,UltimoDiaSemana)+1 as Numerodias
From semanas where periodo=@periodo
OPEN CursorGestionesDia 
FETCH NEXT FROM CursorGestionesDia INTO @ColumnaSemana,@Semana,@PrimerDiaSemana,@UltimoDiaSemana,@Numerodias
set @p_semana=@Semana;
set @p_semana=@Semana;
 WHILE (@@FETCH_STATUS <> -1) 
 BEGIN
IF (@@FETCH_STATUS <> -2) 
BEGIN
if(@Semana>@p_semana)
begin
set @p_nrosemana=@p_nrosemana+1;
set @p_nrodia=1;
end
set @p_day= @PrimerDiaSemana;
WHILE(@p_day <= @UltimoDiaSemana)
BEGIN     
set @p_day = dateadd(day,@intDaysCount,@PrimerDiaSemana);
insert into dias (columnasemana,semana,fecha,nrosemana,nrodia) values(@ColumnaSemana,@Semana,@p_day,'Semana '+cast(@p_nrosemana as varchar),'Dia '+cast(@p_nrodia as varchar));
SET @intDaysCount= @intDaysCount + 1;
set @p_day = dateadd(day,@intDaysCount,@PrimerDiaSemana);
set @p_nrodia=@p_nrodia+1;
END
SET @intDaysCount=0;
set @p_semana= @Semana;
FETCH NEXT FROM CursorGestionesDia INTO @ColumnaSemana,@Semana,@PrimerDiaSemana,@UltimoDiaSemana,@Numerodias
END
 END
CLOSE CursorGestionesDia 
DEALLOCATE CursorGestionesDia;

select d.nrosemana as columnasemana,d.semana,d.nrodia as fecha,g.usuario ,g.cantidad from  dias d left join ( 

select 
usuarioGestion as usuario
,cast(convert(nvarchar(10),fechamodificacion,120) as date) as fecha
,count(*) as cantidad 
from agenda a inner join carteras c 
on c.codigoGestion=substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico))
inner join catalogoRespuesta r 
on r.codigo=a.idcatalogorespuesta
where
c.estadocartera='1'
and a.fechamodificacion between @PrimerDiaMes and @UltimoDiaMes
and
(@Tramo is null  or @Tramo='' or c.DescripcionEventoTramo=@Tramo)
and
(@Cartera is null  or @Cartera='' or c.CodigoGestion=@Cartera)
and
(@TipoReporte is null or @TipoReporte='' or r.gestion=@TipoReporte)
group by usuarioGestion,cast(convert(nvarchar(10),fechamodificacion,120) as date)


) g on d.fecha=g.fecha order by d.fecha asc

**************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_RankingDeRecupero '','','','','','','','',''
ALTER procedure [dbo].[Listar_RankingDeRecupero]    
@FechaIni varchar(19),
@FechaFin varchar(19),    
@Servicio varchar(50),    
@Tramo varchar(50),    
@Cartera varchar(50),    
@TipoReporte varchar(255),    
@objetivo varchar(50), 
@TipoGestionCallCampo varchar(50),
@TipoDistribucion varchar(50)
AS 

create table #ranking(
usuario varchar(150),
total decimal(20,6),
tipo varchar(100),
tipo2 varchar(100)
);

create table #ranking2(
usuario varchar(150),
total decimal(20,6),
tipo varchar(100),
tipo2 varchar(100)
);

create table #rankingFinal(
usuario varchar(150),
total decimal(20,6),
tipo varchar(100),
tipo2 varchar(100)
);
--
if(@TipoReporte='CONTACTOS')
begin
--monto asignado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total 
,'monto' as tipo
,'Asignado' as tipo2
from contactos c 
LEFT join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))  
left join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta   
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera)
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo) 
group by usuario,idUsuarioAsignado;

--monto recuperado 
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total
,'monto' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico)) 
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo) 
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
group by usuario,idUsuarioAsignado;

--cliente asignado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total 
,'cliente' as tipo
,'Asignado' as tipo2  
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
inner join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo) 

and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
group by usuario,idUsuarioAsignado;

--cliente recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total
,'cliente' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo) 
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
group by usuario,idUsuarioAsignado;

end
else
begin
if(@TipoReporte='NO CONTACTO')
begin
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total 
,'monto' as tipo
,'Asignado' as tipo2
from contactos c 
LEFT join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))  
left join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta   
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera)
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo) 
and
r.gestion IN ('NO CONTACTO') 
group by usuario,idUsuarioAsignado;
--monto recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total
,'monto' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico)) 
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('NO CONTACTO')
group by usuario,idUsuarioAsignado;

--cliente asignado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total 
,'cliente' as tipo
,'Asignado' as tipo2  
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
inner join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('NO CONTACTO')
group by usuario,idUsuarioAsignado;
--cliente recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total
,'cliente' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('NO CONTACTO')
group by usuario,idUsuarioAsignado;
end
else
begin
if(@TipoReporte='PORCENTAJE DE CONTACTABILIDAD')
begin
--monto asignado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total 
,'monto' as tipo
,'Asignado' as tipo2 
from contactos c 
LEFT join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))  
left join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta   
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera)
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;

--monto asignado
insert into #ranking2 (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total 
,'monto' as tipo
,'Asignado' as tipo2 
from contactos c 
LEFT join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))  
left join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta   
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera)
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO') 
group by usuario,idUsuarioAsignado;
--monto recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total
,'monto' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico)) 
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;

insert into #ranking2 (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total
,'monto' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico)) 
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
group by usuario,idUsuarioAsignado;
--cliente asignado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total 
,'cliente' as tipo
,'Asignado' as tipo2  
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
inner join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;

insert into #ranking2 (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total 
,'cliente' as tipo
,'Asignado' as tipo2  
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
inner join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
group by usuario,idUsuarioAsignado;
--cliente recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total
,'cliente' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;

insert into #ranking2 (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total
,'cliente' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
and
r.gestion IN ('CONTACTO EFECTIVO','CONTACTO NO EFECTIVO')
group by usuario,idUsuarioAsignado;
end
else
begin
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal)  as total 
,'monto' as tipo
,'Asignado' as tipo2 
from contactos c 
LEFT join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))  
left join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta   
where 1=1
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera)
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;
--monto recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,sum(deudatotal) as total
,'monto' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico)) 
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;
--cliente asignado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total 
,'cliente' as tipo
,'Asignado' as tipo2  
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
inner join catalogoRespuesta r 
on r.codigo=c.idCatalogoRespuesta
where 1=1 
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;
--cliente recuperado
insert into #ranking (usuario,total,tipo,tipo2)
select 
isnull(usuario,'Sin Asignar') usuario
,count(*) as total
,'cliente' as tipo
,'recuperado' as tipo2
from contactos c left join usuario u 
on c.idUsuarioAsignado=u.id
inner join Autorizaciones au
on au.idUsuario=u.Id
inner join Rol ro
on au.IdRol=ro.Id
inner join CatalogoRespuesta r on r.Codigo=c.idCatalogoRespuesta
inner join carteras a 
on a.codigoGestion=substring(c.codigoClienteUnico,CHARINDEX ('-',c.codigoClienteUnico,0 )+1,len(c.codigoClienteUnico))
where r.codigo=100
and(
(@FechaIni is null or @FechaIni='' or c.fechaGestion >= cast(replace(@FechaIni,'-','') as datetime))
and 
(@FechaFin is null or @FechaFin='' or c.fechaGestion <= cast(replace(@FechaFin,'-','') as datetime))
)
and    
(@Tramo is null  or @Tramo='' or a.DescripcionEventoTramo=@Tramo)  
and    
(@Cartera is null  or @Cartera='' or a.CodigoGestion=@Cartera) 
and
(@TipoGestionCallCampo is null or @TipoGestionCallCampo='' or ro.Id=@TipoGestionCallCampo)
group by usuario,idUsuarioAsignado;
end
end
end
if(@TipoReporte='PORCENTAJE DE CONTACTABILIDAD')
begin
insert into #rankingFinal (usuario,tipo,tipo2,total)
select r.usuario,r.tipo,r.tipo2,(r2.total/r.total) as total from #ranking r inner join #ranking2 r2
on r.usuario=r2.usuario and r.tipo=r2.tipo and r.tipo2=r2.tipo2
order by r.tipo,r.tipo2
--select * from #ranking;
--select * from #ranking2;
end
else
begin
insert into #rankingFinal (usuario,tipo,tipo2,total)
select usuario,tipo,tipo2,total from #ranking
TAB order by tab.tipo,tab.tipo2
end

if(@TipoDistribucion='')
begin
select * from #rankingFinal;
end
else
begin
if(@TipoDistribucion='1')
begin
select * from #rankingFinal where usuario<>'Libre';
end
else
begin
select * from #rankingFinal where usuario='Libre';
end
end


drop table #ranking;
drop table #ranking2;
drop table #rankingFinal;


****************************************************************************

USE [CobraBasica]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Listar_SigsBasica]
@fechaInicio varchar(20),
@fechaFin varchar(20)
AS
declare @_fechaIni datetime
declare @_fechaFin datetime

set @_fechaIni=cast( replace(@fechaInicio,'-','')+' '+'00:00:00' as datetime)
set @_fechaFin=cast( replace(@fechaFin,'-','')+' '+'23:59:59' as datetime)
SELECT 
'FIJA'+'|'+
LTRIM(RTRIM(C.CodigoCliente))+'|'+
MAX(LTRIM(RTRIM(C.TelefonoGestion)))+'|'+
MAX(LTRIM(RTRIM(C.CodigoGestion)))+'|'+
'CONTACT'+'|'+
MAX(LTRIM(RTRIM(A.DescripcionGestionCluster)))+'|'+
MAX(LTRIM(RTRIM(A.DescripcionEventoTramo)))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,A.FechaInicioGestion,103))))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,A.FechaFinGestion,103))))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,G.FechaModificacion,103))))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,G.FechaModificacion,108))))+'|'+
'CALL'+'|'+
MAX(LTRIM(RTRIM(ISNULL(D.DescripcionZonal,''))))+'|'+
LTRIM(RTRIM((select top 1 x.CodigoCliente from Agenda a inner join CatalogoRespuesta x
on a.IdCatalogoRespuesta=x.codigo
 where a.codigocliente = C.CodigoCliente
 order by Prioridad desc)))+'|'+
MAX(LTRIM(RTRIM(UPPER(U.UsuarioAdicional))))+'|'+
MAX(LTRIM(RTRIM(G.Comentario)))
FROM Cuentas C 
inner join Carteras A on C.CodigoGestion = A.CodigoGestion
inner join Agenda G on C.CodigoClienteUnico = G.CodigoClienteUnico
inner join CatalogoRespuesta R on R.Codigo = G.IdCatalogoRespuesta
inner join Direccion D on C.CodigoClienteUnico = D.CodigoClienteUnico
inner join Usuario U on U.Usuario=G.UsuarioGestion
--inner join Persona P on P.Id=U.IdPersona
WHERE 1=1 
 and(
(@fechaInicio is null or @fechaInicio='' or G.FechaModificacion >= @_fechaIni)
and 
(@fechaFin is null or @FechaFin='' or G.FechaModificacion <= @_fechaFin)
)
GROUP BY C.CodigoCliente
UNION ALL
SELECT 
'FIJA'+'|'+
LTRIM(RTRIM(C.CodigoCliente))+'|'+
MAX(LTRIM(RTRIM(C.TelefonoGestion)))+'|'+
MAX(LTRIM(RTRIM(C.CodigoGestion)))+'|'+
'CONTACT'+'|'+
MAX(LTRIM(RTRIM(A.DescripcionGestionCluster)))+'|'+
MAX(LTRIM(RTRIM(A.DescripcionEventoTramo)))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,A.FechaInicioGestion,103))))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,A.FechaFinGestion,103))))+'|'+
MAX(LTRIM(RTRIM(CONVERT(VARCHAR,@fechaInicio,103))))+'|'+
'|'+
'|'+
MAX(LTRIM(RTRIM(ISNULL(D.DescripcionZonal,''))))+'|'+
'A39'+
'|'+
'|'+
'Sin gestión'
FROM Cuentas C 
left join Carteras A on C.CodigoGestion = A.CodigoGestion
left join Agenda G on C.CodigoClienteUnico = G.CodigoClienteUnico
inner join Direccion D on C.CodigoClienteUnico = D.CodigoClienteUnico
WHERE 1=1 
 and G.FechaModificacion is null
GROUP BY C.CodigoCliente
ORDER BY 1 DESC


****************************************************************************

USE [CobraBasica]
GO
/****** Object:  StoredProcedure [dbo].[Listar_MetricasCuartiles]    Script Date: 11/19/2018 17:34:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Listar_MetricasCuartiles '2015-08-01','2015-08-06'
ALTER procedure [dbo].[Listar_MetricasCuartiles]
@fechaIni varchar(10),
@fechaFin varchar(10)
as

--1 creacion tabla #temporal
select 
'CONTACT' AGENCIA
,R.CodigoUsuario GESTOR
,'Fija' NEGOCIO
,convert(varchar,cast(@fechaIni as date),111) FECHA
,'Cuartil de Intentos' METRICA
,ISNULL((SELECT (P.ApellidoPaterno + ' '+P.ApellidoMaterno + ' '+P.Nombres) NombreCompleto FROM  [CobraBasica].[dbo].[Usuario] U LEFT JOIN [CobraBasica].[dbo].[Persona] P ON U.IdPersona=P.Id where U.UsuarioAdicional=R.CodigoUsuario),'Sin Nombre Registrado Cobra') NOMBRE
,(case when rtrim(ltrim(R.Tramo))='T1' then '1' else (case when ltrim(rtrim(R.Tramo))='T2' then '2' else 'X' end) end) TRAMO
,R.LlamadasXHora PUNTAJE 
into #temporal
from [CallCenter].[dbo].[promesa] R
where 
1=2;

--2 llenar cuartil de intentos
insert into #temporal
select 
'CONTACT' AGENCIA
,R.CodigoUsuario GESTOR
,'Fija' NEGOCIO
,convert(varchar,cast(FechaLlamada as date),111) FECHA
,'Cuartil de Intentos' METRICA
,ISNULL((SELECT (P.ApellidoPaterno + ' '+P.ApellidoMaterno + ' '+P.Nombres) NombreCompleto FROM  [CobraBasica].[dbo].[Usuario] U LEFT JOIN [CobraBasica].[dbo].[Persona] P ON U.IdPersona=P.Id where U.UsuarioAdicional=R.CodigoUsuario),'Sin Nombre Registrado Cobra') NOMBRE
,(case when rtrim(ltrim(R.Tramo))='T1' then '1' else (case when ltrim(rtrim(R.Tramo))='T2' then '2' else 'X' end) end) TRAMO
,R.LlamadasXHora PUNTAJE 
from [CallCenter].[dbo].[promesa] R
where 
cast(FechaLlamada as date) between cast(@fechaIni as date) and cast(@fechaFin as date);

--select * from [CallCenter].[dbo].[promesa]
--3 llenar cuartil de Promesas
insert into #temporal
select 
'CONTACT' AGENCIA
,U.UsuarioAdicional GESTOR
,'Fija' NEGOCIO
,convert(varchar,cast(A.fechaModificacion as date),111) FECHA
,'Cuartil de Promesas' METRICA
,ISNULL((SELECT (P.ApellidoPaterno + ' '+P.ApellidoMaterno + ' '+P.Nombres)),'Sin Nombre Registrado Cobra') NOMBRE
,(case when (substring(substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico)),4,2)='T1') then '1' else (case when(substring(substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico)),4,2)='T2') then '2' else 'X' end) end) TRAMO
,count(*) PUNTAJE
from  [CobraBasica].[dbo].[agenda] A 
inner join [CobraBasica].[dbo].[catalogoRespuesta] C on C.codigo=A.idCatalogoRespuesta
inner join [CobraBasica].[dbo].[Usuario] U on U.Usuario=a.UsuarioGestion
inner join [CobraBasica].[dbo].[Persona] P on U.IdPersona=P.Id
where 
cast(A.fechaModificacion as date) between cast(@fechaIni as date) and cast(@fechaFin as date)
and C.CodigoCliente IN ('A09')
group by 
U.UsuarioAdicional
,A.fechaModificacion
,P.ApellidoPaterno + ' '+P.ApellidoMaterno + ' '+P.Nombres
,substring(substring(codigoclienteunico,CHARINDEX ( '-',codigoclienteunico,0 )+1,len(codigoclienteunico)),4,2);

--4 llenar cuartil de TME
insert into #temporal
select 
'CONTACT' AGENCIA
,R.CodigoUsuario GESTOR
,'Fija' NEGOCIO
,convert(varchar,cast(FechaLlamada as date),111) FECHA
,'Cuartil de TME' METRICA
,ISNULL((SELECT (P.ApellidoPaterno + ' '+P.ApellidoMaterno + ' '+P.Nombres) NombreCompleto FROM  [CobraBasica].[dbo].[Usuario] U LEFT JOIN [CobraBasica].[dbo].[Persona] P ON U.IdPersona=P.Id where U.UsuarioAdicional=R.CodigoUsuario),'Sin Nombre Registrado Cobra') NOMBRE
,(case when rtrim(ltrim(R.Tramo))='T1' then '1' else (case when ltrim(rtrim(R.Tramo))='T2' then '2' else 'X' end) end) TRAMO
,R.TME PUNTAJE 
from [CallCenter].[dbo].[promesa] R
where 
cast(FechaLlamada as date) between cast(@fechaIni as date) and CAST(@fechaFin as date);

--5 llenar cuartil de TMO
insert into #temporal
select 
'CONTACT' AGENCIA
,R.CodigoUsuario GESTOR
,'Fija' NEGOCIO
,convert(varchar,cast(FechaLlamada as date),111) FECHA
,'Cuartil de TMO' METRICA
,ISNULL((SELECT (P.ApellidoPaterno + ' '+P.ApellidoMaterno + ' '+P.Nombres) NombreCompleto FROM  [CobraBasica].[dbo].[Usuario] U LEFT JOIN [CobraBasica].[dbo].[Persona] P ON U.IdPersona=P.Id where U.UsuarioAdicional=R.CodigoUsuario),'Sin Nombre Registrado Cobra') NOMBRE
,(case when rtrim(ltrim(R.Tramo))='T1' then '1' else (case when ltrim(rtrim(R.Tramo))='T2' then '2' else 'X' end) end) TRAMO
,R.TMO PUNTAJE 
from [CallCenter].[dbo].[promesa] R
where 
cast(FechaLlamada as date) between cast(@fechaIni as date) and cast(@fechaFin as date);

--listar cuartiles #temporal
select * from #temporal ORDER BY metrica;

--Eliminar cuartiles #temporal
drop table #temporal;

Comentarios

Entradas populares de este blog

Para que sirve la N en SQL Server

MYSQL : CURSORES

SQL SERVER : EJECUTAR UN PAQUETE SSIS