Reportes — Clientes y Asociados
Catálogo de los stored procedures de reportería del módulo Clientes / Asociados de Plenario v14. Cada entrada documenta el SP tal como existe en el fuente (VPNET_Database\Stored Procedures\Clientes\), sus parámetros, los módulos/tablas que cruza y el SQL completo. Varios SP arman el SELECT dinámicamente con SQL concatenado (Exec(@SQLString)) para soportar filtros opcionales.
Listado de Aportes (impagos / pendientes)
- SP/archivo:
Clientes_Aportes_Listado.proc.sql - Tipo: Reporte
- Parámetros:
@FechaDesde(datetime, def. 01/01/1900),@FechaHasta(datetime, def. 01/01/2900) - Relación con módulos: Clientes (
Clientes) + Aportes de asociados (Clientes_Aportes)
Lista los asociados con aporte impago (ImportePago < ImporteTotal) cuya fecha de vencimiento de aporte cae en el rango indicado. Devuelve nro. de asociado, nombre, importe pagado/total y fechas de vencimiento y último aporte.
Create Proc [dbo].[Clientes_Aportes_Listado]
@FechaDesde datetime = '01/01/1900',
@FechaHasta datetime = '01/01/2900'
As
Select Clientes.Id_Asociado, Clientes.Nombre, Clientes_Aportes.ImportePago, Clientes_Aportes.ImporteTotal, Clientes.FechaVencimientoAporte, Clientes_Aportes.FechaUltimoAporte
From clientes inner join clientes_aportes on Clientes_Aportes.Id_Cliente=Clientes.Id
Where ImportePago < ImporteTotal and FechaVencimientoAporte Between @FechaDesde and @FechaHasta
Informe Diario de Asociados (altas / bajas / reingresos)
- SP/archivo:
Clientes_Asociados_InformeDiario.proc.sql - Tipo: Reporte
- Parámetros:
@intId_Operacion(int, def. 3 — 1=Alta, 2=Baja, 3=Reingreso),@Fecha_Desde(date),@Fecha_Hasta(date),@intId_Organismo(int — medio de cobro/entidad),@intId_Filiales(int — sucursal),@intId_Comercializador(int),@intId_Motivos(int) - Relación con módulos: Clientes; Motivos de cliente (
Clientes_Motivos,Clientes_Motivos_Relacion); Comercializadores (Prestamos_Comercializadores); Sucursales/Filiales (Sucursales); Medios de cobro (Gestion_MediosDeCobro,Prestamos_Entidades) + funcióndbo.ObtenerDatosAdicionales_MediosDeCobro
Reporte dinámico de movimientos de altas, bajas y reingresos de asociados en un período. Arma el SELECT con SQL concatenado según los filtros provistos y resuelve para cada socio su último estado, motivo, comercializador, filial y medio de cobro. La operación (Id_Utilidad) determina si se filtran altas (1), bajas (2) o reingresos (3).
--================================================================================================================================================================
--================================================================================================================================================================
--================================================================================================================================================================
/*
IMPORTANTE: NO MODIFICAR ESTE CÓDIGO YA QUE FUE GENERADO AUTOMÁTICAMENTE.
<CompoundXmlDocument>
<User Name="PLENARIO\frocha" />
</CompoundXmlDocument>
*/
CREATE Procedure [dbo].[Clientes_Asociados_InformeDiario]
@intId_Operacion int = 3,
@Fecha_Desde date = '25/08/2011',
@Fecha_Hasta date = '31/08/2011',
@intId_Organismo int = 0,
@intId_Filiales int = 0,
@intId_Comercializador int = 0,
@intId_Motivos int = 0
As
Set NoCount On
Declare @Where VarChar(4000),
@Columns VarChar(4000),
@SQLString VarChar(4000),
@Inner VarChar(4000)
Set @Where = ''
Set @Columns = 'CodCliente = Clientes.Id, NroAsociado = Id_Asociado,NombreCliente = Clientes.nombre,TipoDoc,NroDoc,
UltimoEstadoSocio = (Case When Fecha_Baja IS Null Then ''Activo'' Else ''Baja'' End),
TipoEstado = (Case When Clientes_Motivos.Id_Utilidad = 1 Then ''Alta''
When Clientes_Motivos.Id_Utilidad = 3 Then ''Reingreso''
Else ''baja'' End),
Motivo = Clientes_Motivos.Descripcion,
FechaOperacion = Clientes_Motivos_Relacion.Fecha,
UltimaFechaBaja = (select MAX(Fecha) from Clientes_Motivos_Relacion
Inner Join Clientes_Motivos ON Clientes_Motivos_Relacion.Id_Clientes_Motivos = Clientes_Motivos.Id
where Id_Entidad = Clientes.id and Clientes_Motivos.Id_Utilidad = 2),
UltimaFechaAlta = (select MAX(Fecha) from Clientes_Motivos_Relacion
Inner Join Clientes_Motivos ON Clientes_Motivos_Relacion.Id_Clientes_Motivos = Clientes_Motivos.Id
where Id_Entidad = Clientes.id and (Clientes_Motivos.Id_Utilidad = 1 Or Clientes_Motivos.Id_Utilidad = 3)),
Comercializador = Prestamos_Comercializadores.Nombre,
Filial = Sucursales.Descripcion,
MediosDeCobro = Prestamos_Entidades.Nombre,
MedioCobroValores = dbo.ObtenerDatosAdicionales_MediosDeCobro (Clientes.Id_MediosDeCobro)'
Set @Inner = 'Left Join Prestamos_Comercializadores ON Clientes.Id_Comercializador = Prestamos_Comercializadores.Id
Left Join Sucursales ON Clientes.Id_Sucursal = Sucursales.Id
Inner Join Clientes_Motivos_Relacion ON Clientes.id = Clientes_Motivos_Relacion.Id_Entidad
Left Join Clientes_Motivos ON Clientes_Motivos_Relacion.Id_Clientes_Motivos = Clientes_Motivos.Id
Left Join Gestion_MediosDeCobro ON Clientes.Id_MediosDeCobro = Gestion_MediosDeCobro.Id
Left Join Prestamos_Entidades ON Gestion_MediosDeCobro.Id_Entidad = Prestamos_Entidades.Id '
If @intId_Operacion <> 0
Begin
If @intId_Operacion = 1
If @Where <> ''
Set @Where = @Where + ' And Clientes_Motivos.Id_Utilidad = 1'
Else
Set @Where = @Where + ' Clientes_Motivos.Id_Utilidad = 1'
If @intId_Operacion = 2
If @Where <> ''
Set @Where = @Where + ' And Clientes_Motivos.Id_Utilidad = 2'
Else
Set @Where = @Where + ' Clientes_Motivos.Id_Utilidad = 2'
If @intId_Operacion = 3
If @Where <> ''
Set @Where = @Where + ' And Clientes_Motivos.Id_Utilidad = 3'
Else
Set @Where = @Where + ' Clientes_Motivos.Id_Utilidad = 3'
End
If @Fecha_Desde <> '01/01/1900' And @Fecha_Hasta <> '01/01/1900'
Begin
If @Where <> ''
Set @Where = @Where + ' And Clientes_Motivos_Relacion.Fecha Between ''' + RTrim(Convert(Char,@Fecha_Desde,103)) + ''' And ''' + RTrim(Convert(Char,@Fecha_Hasta,103)) + ''''
Else
Set @Where = @Where + ' Clientes_Motivos_Relacion.Fecha Between ''' + RTrim(Convert(Char,@Fecha_Desde,103)) + ''' And ''' + RTrim(Convert(Char,@Fecha_Hasta,103)) + ''''
End
If @intId_Organismo <> 0
If @Where <> ''
Set @Where = @Where + ' And Prestamos_Entidades.Id = ' + RTrim(Convert(Char,@intId_Organismo))
Else
Set @Where = @Where + ' Prestamos_Entidades.Id = ' + RTrim(Convert(Char,@intId_Organismo))
If @intId_Filiales <> 0
If @Where <> ''
Set @Where = @Where + ' And Sucursales.Id = ' + RTrim(Convert(Char,@intId_Filiales))
Else
Set @Where = @Where + ' Sucursales.Id = ' + RTrim(Convert(Char,@intId_Filiales))
If @intId_Comercializador <> 0
If @Where <> ''
Set @Where = @Where + ' And Prestamos_Comercializadores.Id = ' + RTrim(Convert(Char,@intId_Comercializador))
Else
Set @Where = @Where + ' Prestamos_Comercializadores.Id = ' + RTrim(Convert(Char,@intId_Comercializador))
If @intId_Motivos <> 0
If @Where <> ''
Set @Where = @Where + ' And Clientes.Id_Motivo = ' + RTrim(Convert(Char,@intId_Motivos))
Else
Set @Where = @Where + ' Clientes.Id_Motivo = ' + RTrim(Convert(Char,@intId_Motivos))
If @Where <> ''
Set @SQLString = 'Select ' + @Columns + ' From Clientes ' + @Inner + ' Where ' + @Where
Else
Set @SQLString = 'Select ' + @Columns + ' From Clientes ' + @Inner
Exec(@SQLString)
Print @SQLString
Listado de Asociados (padrón / nómina con domicilio)
- SP/archivo:
Clientes_Listado_Asociados.proc.sql - Tipo: Reporte
- Parámetros:
@Id_Asociado_Desde(int),@Id_Asociado_Hasta(int),@NombreDesde(varchar 80),@NombreHasta(varchar 80),@Orden(varchar 80 — cláusula ORDER BY a concatenar),@Fecha_Asociado_Desde(varchar 20),@Fecha_Asociado_Hasta(varchar 20),@Dado_de_Baja(int) - Relación con módulos: Clientes; Condición IVA (
TiposIva); Sucursales/Sedes (Sucursales)
Padrón de asociados con datos de contacto y domicilio armado (dirección + nro + piso + dpto). Filtra por rango de nro. de asociado, nombre, fecha de alta y opcionalmente solo activos/suspendidos (@Dado_de_Baja=1). Permite ordenamiento variable mediante @Orden.
Nota del fuente: el
SELECTdinámico se ejecuta únicamente cuando@Where <> ''; si no se aplica ningún filtro,@SQLStringqueda sin asignar.
CREATE PROCEDURE [dbo].[Clientes_Listado_Asociados]
@Id_Asociado_Desde Int = 0,
@Id_Asociado_Hasta Int = 0,
@NombreDesde Varchar(80) = '',
@NombreHasta Varchar(80) = '',
@Orden Varchar(80) = '',
@Fecha_Asociado_Desde varchar(20) = '',
@Fecha_Asociado_Hasta varchar(20) = '',
@Dado_de_Baja int =0
AS
Begin
Declare
@Where VarChar(1000),
@Columns VarChar(1000),
@SQLString VarChar(1000)
Set @Where = ''
Set @Columns = 'Clientes.Id,
Clientes.Id_Asociado,
Clientes.Nombre,
Fecha_Cliente = Clientes.Fecha_Alta,
Fecha_Alta = Clientes.Fecha_Asociado,
Clientes.Fecha_Nacimiento,
TiposIva.abrev as Condicion,
Direccion=Clientes.direccion + SPACE(2) + Clientes.Domicilio_nro + SPACE(2) + Clientes.Domicilio_Piso + SPACE(2) + Clientes.Domicilio_Dpto,
Clientes.Telefono,
Clientes.CodPos,
Clientes.Localidad,
Clientes.Cuit,
Sede=ISNULL(Sucursales.Descripcion,'''')
from Clientes Inner Join TiposIva on TiposIva.Id = Clientes.Condicion Left Join Sucursales on Sucursales.ID=Clientes.Id_Sucursal '
If @Id_Asociado_Desde <> 0 And @Id_Asociado_Hasta <> 0
If @Where <> ''
Set @Where = @Where + ' And Clientes.Id_Asociado between ' + RTrim(Convert(Char,@Id_Asociado_Desde))+ ' and ' + RTrim(Convert(Char,@Id_Asociado_Hasta))
Else
Set @Where = @Where + ' Clientes.Id_Asociado between ' + RTrim(Convert(Char,@Id_Asociado_Desde))+ ' and ' + RTrim(Convert(Char,@Id_Asociado_Hasta))
If @NombreDesde <> '' And @NombreHasta <> ''
If @Where <> ''
Set @Where = @Where + ' And Clientes.nombre >= ' + RTrim(Convert(Char,@NombreDesde)) + ' and Clientes.nombre <= ' + RTrim(Convert(Char,@NombreHasta))
Else
Set @Where = @Where + ' Clientes.nombre >= ' + RTrim(Convert(Char,@NombreDesde)) + ' and Clientes.nombre <= ' + RTrim(Convert(Char,@NombreHasta))
If @Fecha_Asociado_Desde <> '' And @Fecha_Asociado_Hasta <> ''
If @Where <> ''
Set @Where = @Where + ' And Clientes.fecha_alta >= ''' + RTrim(Convert(Char,@Fecha_Asociado_Desde)) + ''' and Clientes.fecha_alta <= ''' + RTrim(Convert(Char,@Fecha_Asociado_Hasta)) + ''''
Else
Set @Where = @Where + ' Clientes.fecha_alta >= ''' + RTrim(Convert(Char,@Fecha_Asociado_Desde)) + ''' and Clientes.fecha_alta <= ''' + RTrim(Convert(Char,@Fecha_Asociado_Hasta)) + ''''
if @Dado_de_Baja=1
begin
If @Where <> ''
set @where=@where+' and '
set @where=@where +' (Fecha_Baja is null or Fecha_Baja_Suspendida is not null) '
end
If @Where <> ''
Set @SQLString = 'Select ' + @Columns + ' Where ' + @Where
Set @SQLString = @SQLString + @Orden
Exec(@SQLString)
Print @SQLString
END
Listado de Clientes por Línea de Crédito
- SP/archivo:
Clientes_Listado_Lineas.proc.sql - Tipo: Reporte
- Parámetros:
@intIdProvinciaDesde(int, 0),@intIdProvinciaHasta(int, 100),@intIdLineaDesde(int, 0),@intIdLineaHasta(int, 100),@intIdClienteDesde(int, 0),@intIdClienteHasta(int, 10000) - Relación con módulos: Clientes; Condición IVA (
TiposIva); Créditos/Líneas (Prestamos_Creditos,Prestamos_Lineas); Provincias (Provincias)
Lista clientes según la última línea de crédito operada (la del crédito más reciente por fecha_operacion), con datos de domicilio y provincia. Filtra por rango de provincia, línea y cliente. Usa tabla temporal #tmpListado y devuelve distinct.
Create PROCEDURE [dbo].[Clientes_Listado_Lineas]
@intIdProvinciaDesde int =0,
@intIdProvinciaHasta int =100,
@intIdLineaDesde int =0,
@intIdLineaHasta int =100,
@intIdClienteDesde int =0,
@intIdClienteHasta int =10000
AS
Select
Clientes.Id,
Clientes.Nombre,
Clientes.Fecha_Alta,
Clientes.Dni1,
Condicion = TiposIva.abrev,
Linea = (Select Descripcion From Prestamos_lineas Where Id=Prestamos_Creditos.Id_Linea),
Direccion = Clientes.Direccion + ' ' + Clientes.Domicilio_Nro + ' ' + Clientes.Domicilio_Piso + ' ' + Clientes.Domicilio_Dpto,
Clientes.Telefono,
Clientes.CodPos,
Clientes.Localidad,
Provincia = (Select Nombre From Provincias Where Id=Clientes.Provincia)
Into #tmpListado
From Clientes
Inner Join TiposIva on TiposIva.Id = Clientes.Condicion
Inner Join Prestamos_Creditos On Id_Cliente=Clientes.Id
Where Clientes.id Between @intIdClienteDesde and @intIdClienteHasta And
Clientes.Provincia Between @intIdProvinciaDesde and @intIdProvinciaHasta And
Prestamos_Creditos.Id_Linea Between @intIdLineaDesde and @intIdLineaHasta And
Prestamos_Creditos.Id_linea = (Select Top 1
id_linea
From prestamos_creditos
Where id_cliente=Clientes.id Order by fecha_operacion DESC
) And Prestamos_Creditos.Id_Linea <> 0
Select distinct * From #tmpListado
Drop Table #tmpListado
Listado de Netos Contables por Cliente
- SP/archivo:
Clientes_Listado_NetosContables.proc.sql - Tipo: Reporte
- Parámetros:
@Id_Cliente_desde(int, 0),@Id_Cliente_Hasta(int, 9999) - Relación con módulos: Clientes; Liquidaciones (
Liquidaciones,Liquidaciones_Detalle); Documentos/Cheques (Documentos); Cuenta corriente del cliente (Clientes_CtaCte)
Calcula el neto contable por cliente sumando: (1) netos de documentos no acreditados de liquidaciones de gestión (Dto_Gestion = 2), (2) netos de documentos acreditados pero sin fecha de pago de gestión, y (3) saldo (Ingreso − Egreso) de cuenta corriente en especie 1. Devuelve solo clientes con neto distinto de cero.
CREATE procedure [dbo].[Clientes_Listado_NetosContables]
@Id_Cliente_desde int = 0,
@Id_Cliente_Hasta int = 9999
as
Select Id, Nombre, CUIT, Neto_Contable = IsNull((Select Sum(Liquidaciones_Detalle.Neto)
From Liquidaciones_Detalle
Inner Join Documentos On Documentos.Id = Liquidaciones_Detalle.Id_Documento
Inner Join Liquidaciones On Liquidaciones.Id = Liquidaciones_Detalle.Id_Liquidacion
Where Documentos.Fecha_Acreditado is Null And
Anulado = 0 And Documentos.Id_Cliente = clientes.id And
Liquidaciones.Dto_Gestion = 2),0) + IsNull((Select Sum(Liquidaciones_Detalle.Neto) From Liquidaciones_Detalle
Inner Join Documentos On Documentos.Id = Liquidaciones_Detalle.Id_Documento
Inner Join Liquidaciones On Liquidaciones.Id = Liquidaciones_Detalle.Id_Liquidacion
Where Documentos.Fecha_Acreditado is Not Null And
Anulado = 0 And
Documentos.Id_Cliente = clientes.id And
Documentos.Fecha_pago_gestion is null And
Liquidaciones.Dto_Gestion = 2),0) + IsNull((Select Sum(Ingreso - Egreso) From Clientes_CtaCte
Where Id_Cliente = clientes.id And Id_Especie = 1),0) into #TMP from clientes where id between @id_cliente_desde and @Id_Cliente_Hasta
select * from #TMP where Neto_Contable <> 0
drop table #TMP
Medios de Cobro del Cliente (listado + valores)
- SP/archivo:
Clientes_MediosDeCobro_GetMediosDeCobro_Listado.proc.sql - Tipo: Reporte
- Parámetros:
@Id_Cliente(int, 0),@TipoOperacion(int, -1 = Todos / 0 = Sin utilización / 1 = Solicitudes / 2 = Créditos / 3 = Servicios),@Id_Operacion(int, 0) - Relación con módulos: Medios de cobro del cliente (
Clientes_MediosDeCobro,Clientes_MediosDeCobro_Valores); Entidades (Prestamos_Entidades,Clientes_Entidades, campos adicionales); Bancos/CBU (Bancos); Tarjetas (Gestion_TarjetasDeCredito); Especies (Especies); Cobradores (Gestion_Cobradores); Servicios (Gestion_Servicios,Gestion_Servicios_Clientes); Créditos y Solicitudes (Prestamos_Creditos,Prestamos_Solicitudes)
Devuelve dos resultsets: (1) los medios de cobro activos del cliente con su entidad/banco/tarjeta/especie/cobrador y la operación asociada (servicio, crédito o solicitud), y (2) el detalle de valores (CBU, BCRA, sucursal, cuenta, tarjeta, vencimiento, titular, etc.) de esos medios. Resuelve la entidad concreta según el Id_MedioDeCobro mediante CASE.
Create Procedure [dbo].[Clientes_MediosDeCobro_GetMediosDeCobro_Listado]
@Id_Cliente Int = 0,
@TipoOperacion Int = -1, -- -1 Todos / 0 Sin utilizacion / 1 Solicitudes / 2 Creditos / 3 Servicios
@Id_Operacion Int = 0
As
Select Id = Clientes_MediosDeCobro.Id,
Id_Entidad = (Case When Clientes_MediosDeCobro.Id_MedioDeCobro = 2 Then (RTrim('ENT ' + Convert(Char, Prestamos_Entidades.Id)))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 3 Then RTrim('BCRA ' + IsNull(Convert(Char, Bancos.CodigoBCRA), ''))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 11 Then RTrim('BCRA ' + IsNull(Convert(Char, Bancos02.CodigoBCRA), ''))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 10 Then RTrim('TARJ ' + Convert(Char, Gestion_TarjetasDeCredito.Id))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 1 Then RTrim('ESP ' + Convert(Char, Especies.Id))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 7 Then RTrim('COB ' + Convert(Char, Gestion_Cobradores.Id))
Else '' End),
Clientes_MediosDeCobro.Id_MedioDeCobro,
Nombre_Entidad = (Case When Clientes_MediosDeCobro.Id_MedioDeCobro = 2 Then Prestamos_Entidades.Nombre
When Clientes_MediosDeCobro.Id_MedioDeCobro = 3 Then ('CBU ' + IsNull(Bancos.Nombre, ''))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 11 Then ('Cuenta ' + IsNull(Bancos02.Nombre, ''))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 10 Then RTrim('Tarjeta ' + Convert(Char, Gestion_TarjetasDeCredito.Descripcion))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 1 Then RTrim('Especie ' + Convert(Char, Especies.Descripcion))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 7 Then RTrim('Cobrador ' + Convert(Char, Gestion_Cobradores.Nombre))
When Clientes_MediosDeCobro.Id_MedioDeCobro = 5 Then RTrim('Pago Facil')
When Clientes_MediosDeCobro.Id_MedioDeCobro = 6 Then RTrim('Rapi Pago')
When Clientes_MediosDeCobro.Id_MedioDeCobro = 8 Then RTrim('Varios')
Else '' End),
TipoOperacion = (Case When Clientes_MediosDeCobro.Id_TipoOperacion = 3 Then 'Servicios'
When Clientes_MediosDeCobro.Id_TipoOperacion = 2 Then 'Creditos'
When Clientes_MediosDeCobro.Id_TipoOperacion = 1 Then 'Solicitudes'
Else 'No utilizado a?n' End),
Operacion = (Case When Gestion_Servicios.Descripcion Is Not Null Then Gestion_Servicios.Descripcion
When Prestamos_Creditos.Id Is Not Null Then ('Nro. ' + Convert(Char, Prestamos_Creditos.Id))
When Prestamos_Solicitudes.Id Is Not Null Then ('Nro. ' + Convert(Char, Prestamos_Solicitudes.Id))
Else '-' End),
Importe = Clientes_MediosDeCobro.Importe
From Clientes_MediosDeCobro
Left Outer Join Clientes_Entidades On Clientes_Entidades.Id = Clientes_MediosDeCobro.Id_Clientes_Entidades
Left Outer Join Prestamos_Entidades On Prestamos_Entidades.Id = Clientes_Entidades.Id_Entidad
Left Outer Join Gestion_Servicios_Clientes On Gestion_Servicios_Clientes.Id = Clientes_MediosDeCobro.Id_Operacion And Clientes_MediosDeCobro.Id_TipoOperacion = 3
Left Outer Join Gestion_Servicios On Gestion_Servicios.Id = Gestion_Servicios_Clientes.Id_Servicio
Left Outer Join Prestamos_Creditos On Prestamos_Creditos.Id = Clientes_MediosDeCobro.Id_Operacion And Clientes_MediosDeCobro.Id_TipoOperacion = 2
Left Outer Join Prestamos_Solicitudes On Prestamos_Solicitudes.Id = Clientes_MediosDeCobro.Id_Operacion And Clientes_MediosDeCobro.Id_TipoOperacion = 1
Left Outer Join Bancos On Bancos.CodigoBCRA = (Select Top 1 Substring(Valor, 1 ,3) From Clientes_MediosDeCobro_Valores Where Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro = Clientes_MediosDeCobro.Id And Id_TipoDato = 1) And Clientes_MediosDeCobro.Id_MedioDeCobro = 3
Left Outer Join Bancos As Bancos02 On Bancos02.CodigoBCRA = (Select Top 1 Valor From Clientes_MediosDeCobro_Valores Where Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro = Clientes_MediosDeCobro.Id And Id_TipoDato = 2) And Clientes_MediosDeCobro.Id_MedioDeCobro = 11
Left Outer Join Especies On Especies.Id = (Select Top 1 Valor From Clientes_MediosDeCobro_Valores Where Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro = Clientes_MediosDeCobro.Id And Id_TipoDato = 5) And Clientes_MediosDeCobro.Id_MedioDeCobro = 1
Left Outer Join Gestion_Cobradores On Gestion_Cobradores.Id = (Select Top 1 Valor From Clientes_MediosDeCobro_Valores Where Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro = Clientes_MediosDeCobro.Id And Id_TipoDato = 7) And Clientes_MediosDeCobro.Id_MedioDeCobro = 7
Left Outer Join Gestion_TarjetasDeCredito On Gestion_TarjetasDeCredito.Id = (Select Top 1 Valor From Clientes_MediosDeCobro_Valores Where Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro = Clientes_MediosDeCobro.Id And Id_TipoDato = 13) And Clientes_MediosDeCobro.Id_MedioDeCobro = 10
Where Clientes_MediosDeCobro.Id_Cliente = @Id_Cliente
And Clientes_MediosDeCobro.Id_TipoOperacion = (Case When @TipoOperacion <> - 1 Then @TipoOperacion Else Clientes_MediosDeCobro.Id_TipoOperacion End)
And Clientes_MediosDeCobro.Id_Operacion = (Case When @Id_Operacion <> 0 Then @Id_Operacion Else Clientes_MediosDeCobro.Id_Operacion End)
And Clientes_MediosDeCobro.Fecha_Baja Is Null
Select Id_Clientes_MediosDeCobro = Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro,
CodCampo = (Case When Clientes_MediosDeCobro_Valores.Id_TipoDato = 18 Then 'Cod Desc'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 1 Then 'CBU'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 2 Then 'BCRA'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 3 Then 'Suc'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 4 Then 'Cuenta'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 6 Then 'Tipo Cta'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 13 Then 'Tarjeta'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 14 Then 'Numero'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 15 Then 'Vto'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 16 Then 'Titular'
When Clientes_MediosDeCobro_Valores.Id_TipoDato = 8 Then 'Obs'
Else IsNull((Select CodCampo From Prestamos_Entidades_CamposAdicionales Where Id = Clientes_MediosDeCobro_Valores.Id_CampoAdicional), '')
End),
Valor = Case when Clientes_MediosDeCobro_Valores.Valor IS Null then ' ' else Clientes_MediosDeCobro_Valores.Valor End
From Clientes_MediosDeCobro_Valores
Inner Join Clientes_MediosDeCobro On Clientes_MediosDeCobro.Id = Clientes_MediosDeCobro_Valores.Id_Clientes_MediosDeCobro
Left Outer Join Clientes_Entidades On Clientes_Entidades.Id = Clientes_MediosDeCobro.Id_Clientes_Entidades
Left Outer Join Prestamos_Entidades_Entidades_CamposAdicionales On Prestamos_Entidades_Entidades_CamposAdicionales.Id_CampoAdicional = Clientes_MediosDeCobro_Valores.Id_CampoAdicional And Prestamos_Entidades_Entidades_CamposAdicionales.Id_Entidad = Clientes_Entidades.Id_Entidad
Where Id_Clientes_MediosDeCobro In (
Select Clientes_MediosDeCobro.Id
From Clientes_MediosDeCobro
Left Outer Join Clientes_Entidades On Clientes_Entidades.Id = Clientes_MediosDeCobro.Id_Clientes_Entidades
Left Outer Join Prestamos_Entidades On Prestamos_Entidades.Id = Clientes_Entidades.Id_Entidad
Left Outer Join Gestion_Servicios_Clientes On Gestion_Servicios_Clientes.Id = Clientes_MediosDeCobro.Id_Operacion And Clientes_MediosDeCobro.Id_TipoOperacion = 3
Left Outer Join Prestamos_Creditos On Prestamos_Creditos.Id = Clientes_MediosDeCobro.Id_Operacion And Clientes_MediosDeCobro.Id_TipoOperacion = 2
Left Outer Join Prestamos_Solicitudes On Prestamos_Solicitudes.Id = Clientes_MediosDeCobro.Id_Operacion And Clientes_MediosDeCobro.Id_TipoOperacion = 1
Where Clientes_MediosDeCobro.Id_Cliente = @Id_Cliente
And Clientes_MediosDeCobro.Id_TipoOperacion = (Case When @TipoOperacion <> - 1 Then @TipoOperacion Else Clientes_MediosDeCobro.Id_TipoOperacion End)
And Clientes_MediosDeCobro.Id_Operacion = (Case When @Id_Operacion <> 0 Then @Id_Operacion Else Clientes_MediosDeCobro.Id_Operacion End)
And Clientes_MediosDeCobro.Fecha_Baja Is Null
)
Informe de Notas de Clientes
- SP/archivo:
Clientes_Notas_Informe.proc.sql - Tipo: Reporte
- Parámetros:
@Cliente_Desde(int, 0),@Cliente_Hasta(int, 9999),@Fecha_Desde(datetime, 01/01/1900),@Fecha_Hasta(datetime, 01/01/2020),@Concepto_Desde(int, 0),@Concepto_Hasta(int, 999999) - Relación con módulos: Notas de cliente (
Clientes_Notas,Clientes_Notas_Tipos,Clientes_Notas_Sectores); Clientes; Seguridad/Usuarios (Seguridad_Usuarios)
Lista las notas registradas sobre clientes en un rango de fecha, cliente y concepto (tipo de nota). Muestra concepto (código + descripción), nombre del cliente, fecha, descripción, usuario que la cargó y sector. Normaliza las fechas de entrada a dd/mm/yyyy antes de filtrar. Ordena por tipo de nota y cliente.
CREATE Procedure [dbo].[Clientes_Notas_Informe]
@Cliente_Desde Int = 0,
@Cliente_Hasta Int = 9999,
@Fecha_Desde Datetime = '01/01/1900',
@Fecha_Hasta Datetime = '01/01/2020',
@Concepto_Desde Int=0,
@Concepto_Hasta Int=999999
As
Declare @Fecha_Desde_Formateada Datetime
Declare @Fecha_Hasta_Formateada Datetime
Set @Fecha_Desde_Formateada = Convert(Datetime, Rtrim(Convert(Char,Day(@Fecha_Desde))) + Convert(Char,'/') + Rtrim(Convert(Char,Month(@Fecha_Desde))) + '/' + Rtrim(Convert(Char,Year(@Fecha_Desde))))
Set @Fecha_Hasta_Formateada = Convert(Datetime, Rtrim(Convert(Char,Day(@Fecha_Hasta))) + Convert(Char,'/') + Rtrim(Convert(Char,Month(@Fecha_Hasta))) + '/' + Rtrim(Convert(Char,Year(@Fecha_Hasta))))
Select Concepto = Right('0000' + Rtrim(Convert(Char,Clientes_Notas_Tipos.Id)),3) + ' - ' + Rtrim(Convert(Char,Clientes_Notas_Tipos.Descripcion)),
Cliente_Nombre = Rtrim(Clientes.Nombre),
Fecha = Clientes_Notas.Fecha,
Descripcion = Clientes_Notas.Descripcion,
UserAdd = Seguridad_Usuarios.Nombre,
Sector = Clientes_Notas_Sectores.Descripcion
From Clientes_Notas
Inner Join Clientes_Notas_Tipos On Clientes_Notas_Tipos.Id = Clientes_Notas.Id_TipoNota
Inner Join Clientes_Notas_Sectores On Clientes_Notas_Sectores.Id = Clientes_Notas.Id_Sector
Inner Join Clientes On Clientes.Id = Clientes_Notas.Id_Cliente
Inner Join Seguridad_Usuarios On Seguridad_Usuarios.Id = Clientes_Notas.Id_Usuario_Add
Where Fecha Between @Fecha_Desde_Formateada And @Fecha_Hasta_Formateada And
Id_Cliente Between @Cliente_Desde And @Cliente_Hasta
And Clientes_Notas_Tipos.Id Between @Concepto_Desde And @Concepto_Hasta
Order By Id_TipoNota, Id_Cliente
Nómina de Asociados UIF / INAES (informe regulatorio)
- SP/archivo:
UIF_INAES_Informes_NominaAsociados.proc.sql - Tipo: Reporte
- Parámetros:
@Fecha_Desde(datetime, 19000101),@Fecha_Hasta(datetime, 20300101) - Relación con módulos: Clientes; Registro de asociados (
Clientes_RegistrodeAsociados,Clientes_RegistrodeAsociados_Movimientos); Provincias (Provincias, conId_UIF); Localidades UIF/INAES (Localidades_UIF_INAES)
Genera la nómina de asociados con altas, bajas y modificaciones en el período, en el formato de columnas posicionales (C00–C25) exigido por INAES/UIF. Mapea tipo de persona, tipo y nro. de documento, CUIT sin guiones, domicilio, provincia y localidad codificadas según tablas UIF, capital suscripto/integrado, fechas de ingreso/resolución/egreso y el tipo de cambio del registro (A=Alta, B=Baja, M=Modificación). Toma para cada asociado el movimiento más reciente dentro del rango.
CREATE PROCEDURE [dbo].[UIF_INAES_Informes_NominaAsociados]
@Fecha_Desde DATETIME = '19000101',
@Fecha_Hasta DATETIME = '20300101'
As
SELECT
/* TIPOPERSONA */ C00 = CASE WHEN C.Id_TipoPersona = 1 THEN 'F' ELSE 'J' END,
/* CATEGORIA */ C01 = '', --0,
/* NRO ASOC */ C02 = C.Id_Asociado,
/* APELLIDO */ C03 = CASE C.Id_TipoPersona WHEN 1 THEN LEFT(C.ApellidoFisico,60) ELSE '' END,
/* NOMBRE */ C04 = CASE C.Id_TipoPersona WHEN 1 THEN LEFT(C.NombreFisico,60) ELSE '' END,
/* DENOMIN */ C05 = CASE C.Id_TipoPersona WHEN 2 THEN LEFT(C.Nombre,255) ELSE '' END,
/* TIPO DOC */ C06 = CASE C.Id_TipoPersona
WHEN 1 THEN
CASE C.TipoDoc
WHEN 'CI' THEN convert(varchar(1),1)
WHEN 'DNI' THEN convert(varchar(1),2)
WHEN 'LC' THEN convert(varchar(1),3)
WHEN 'LE' THEN convert(varchar(1),4)
ELSE ''
END
ELSE ''
END,
/* NRO DOC */ C07 = CASE C.Id_TipoPersona WHEN 1 THEN CONVERT(VARCHAR(8),C.NroDoc) ELSE '' END,
/* CUIT */ C08 = REPLACE (C.CUIT,'-', ''),
/* CALLE */ C09 = LEFT(C.direccion,100),
/* NUMERO */ C10 = LEFT(C.Domicilio_Nro,100),
/* PISO */ C11 = LEFT(C.Domicilio_Piso,10),
/* DEPTO */ C12 = LEFT(C.Domicilio_Dpto,100),
/* PROVINCIA */ C13 = P.Id_UIF,
/* LOCALIDAD */ C14 = CASE C.Provincia
WHEN 0 THEN 0
ELSE ISNULL(LOC.ID_LOC_UIF, SIN_LOC.ID_SINLOC)
END,
/* COD POST */ C15 = LEFT(C.codpos,8),
/* F. INGRESO */ C16 = ISNULL(REPLACE(CONVERT(VARCHAR, A.FechaAdd, 111),'/','-'),''),
/* F. RESOLUC */ C17 = ISNULL(REPLACE(CONVERT(VARCHAR, A.Fecha_Resolucion, 111),'/','-'),''),
/* ORGANO EM */ C18 = 'CONSEJO ADM',
/* F. EGRESO */ C19 = ISNULL(REPLACE(CONVERT(VARCHAR, A.Baja_Fecha, 111),'/','-'),''),
/* CAUSA */ C20 = ISNULL(A.Baja_Motivo,''),
/* MEDIDA */ C21 = '',
/* CS SUSCR */ C22 = ISNULL(CONVERT(INT,A.Suscripto_Cantidad),0),
/* CS INTEGR */ C23 = ISNULL(CONVERT(INT,A.Integrado_Cantidad),0),
/* OBSERVAC */ C24 = '',
/* TIPOCAMBIO */ C25 = CASE WHEN A.Fecha_Resolucion BETWEEN @Fecha_Desde and @Fecha_Hasta THEN 'A'
WHEN A.Baja_Fecha BETWEEN @Fecha_Desde and @Fecha_Hasta THEN 'B'
WHEN AM.Fecha BETWEEN @Fecha_Desde and @Fecha_Hasta THEN 'M' ELSE 'OTRO' END
FROM Clientes C
INNER JOIN Clientes_RegistrodeAsociados A on A.Id_Cliente = C.Id
INNER JOIN (SELECT
Id_Clientes_RegistrodeAsociados,
Fecha = MAX(Fecha)
FROM Clientes_RegistrodeAsociados_Movimientos
WHERE Fecha BETWEEN @Fecha_Desde and @Fecha_Hasta
GROUP BY Id_Clientes_RegistrodeAsociados) AM on AM.Id_Clientes_RegistrodeAsociados = A.Id
LEFT JOIN Provincias P ON P.id = C.provincia
LEFT JOIN ( SELECT -- ESTE JOIN SIRVE PARA LOS C.P. INFORMADOS UNA SOLA VEX EN LOCALIDADES_UIF_INAES
CODIGO_POSTAL = ISNULL(Codigo_Postal,0),
L.Id_Provincia_UIF,
ID_LOC_UIF = MIN(L.Id)
FROM Localidades_UIF_INAES L
GROUP BY ISNULL(CODIGO_POSTAL,0), L.ID_PROVINCIA_UIF
HAVING COUNT(1) = 1
) LOC ON LOC.CODIGO_POSTAL = C.CODPOS AND LOC.Id_Provincia_UIF = P.Id_UIF
LEFT JOIN ( SELECT -- ESTE JOIN ES PARA MOSTRAR "SIN LOCALIDAD" EN LOS CASOS QUE NO EXISTA EL CODIGO POSTAL PARA ESA PROVINCIA, O BIEN ESTE REPETIDO
ID_PROV = Id_Provincia_UIF,
ID_SINLOC = ID
FROM Localidades_UIF_INAES
WHERE NOMBRE LIKE 'SIN LOCALIDAD%'
) SIN_LOC ON SIN_LOC.ID_PROV = P.Id_UIF
WHERE C.Eliminado = 0
AND (A.Fecha_Resolucion BETWEEN @Fecha_Desde AND @Fecha_Hasta -- ALTAS
OR A.Baja_Fecha BETWEEN @Fecha_Desde AND @Fecha_Hasta -- BAJAS
OR AM.Fecha BETWEEN @Fecha_Desde AND @Fecha_Hasta) -- MODIFICACIONES
ORDER BY Id_Asociado