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].[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;
****************************************************************************
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
Publicar un comentario