Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2011, 16:02
jhors_g
 
Fecha de Ingreso: marzo-2011
Ubicación: colombia
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
cursor para obtener cartera de credito

Buenas tardes Amigos del foro.

tengo una pequeña dificulta con esta consulta.

resulta que tengo que sacar un reporte de cartera, el cual me vinculan las siguientes tablas.

tblfactura,tbldetalle,tblcliente.

este reporte lo tengo que sacar por clientes el total de la deuda osea sumando todas las facturas.

lo que tengo es que identificar los clientes que tienen facturas en rango de fechas de vencimientos:

fechavencimiento>0 and fechavencimiento<=30,

fechavencimiento>31 and fechavencimiento<=60,

fechavencimiento>61 and fechavencimiento<=90,

fechavencimiento>91 and fechavencimiento<=180,

fechavencimiento>181 and fechavencimiento<=360,

fechavencimiento>361

entoces estoy tratando de hace un cursor para hacer esto, el me trae todo, pero lo que no he logrado resolver es que como hago para sumar todas las facturas de un cliente,

este es el cursor

ALTER PROCEDURE [dbo].[rpt_Informe_TotalizadoxCooperativa]
@Nit_EMPR varchar(20)

AS
DECLARE @TotalFactura decimal(14,1)
DECLARE @TotalFacturaxRango decimal(14,1)
DECLARE @Nombre_Cliente varchar(20)
DECLARE @Valor_Bruto decimal(14,1)
DECLARE @Fecha_Vence varchar(14)

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
SET @TotalFactura=(SELECT SUM(D.dcmBruto_DETA) FROM tblFACTura F INNER JOIN tblDetalle D ON F.intCodigo_FACT=D.intCodigo_FACT
WHERE F.strNitEmpresa=@Nit_EMPR )

SELECT C.strNombre_CLIE [ENTIDAD],SUM(D.dcmBruto_DETA) [VALOR FACTURA RANGO],(@TotalFactura)[TOTAL CARTERA],
'RANGO DE FECHAS' = CASE
WHEN (DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,10 3),CAST(GETDATE() AS DATETIME))>0 AND DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))<=30) THEN 'FACTURAS VENCIDAS ENTRE 0 Y 30 DIAS'
WHEN DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))>31 AND DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))<=60 THEN 'FACTURAS VENCIDAS ENTRE 31 Y 60 DIAS '
WHEN DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))>61 AND DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))<=90 THEN 'FACTURAS VENCIDAS ENTRE 61 Y 90 DIAS'
WHEN DATEDIFF(DAY,CONVERT(Varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE()AS DATETIME))>91 AND DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))<=180 THEN 'FACTURAS VENCIDAS ENTRE 91 Y 180 DIAS'
WHEN DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))>181 AND DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))<=360 THEN 'FACTURAS VENCIDAS ENTRE 181 Y 360 DIAS'
WHEN DATEDIFF(DAY,CONVERT(varchar,dtmFechaVenc_FACT,103 ),CAST(GETDATE() AS DATETIME))>361 THEN 'FACTURAS VENCIDAS MAYORES DE 360 DIAS' ELSE 'FACTURAS PROXIMAS A VENCER' END

FROM tblFACTura F INNER JOIN tblCLIEnte C ON F.intCodigo_CLIE=C.intCodigo_CLIE INNER JOIN tblDetalle D ON
F.intCodigo_FACT=D.intCodigo_FACT
WHERE F.strNitEmpresa=@Nit_EMPR
GROUP BY C.strNombre_CLIE,dtmFechaVenc_FACT
DECLARE TOTALCARTERA CURSOR FOR
SELECT C.strNombre_CLIE [ENTIDAD],SUM(D.dcmBruto_DETA) [VALOR FACTURA],(@TotalFactura)[TOTAL CARTERA]
FROM tblFACTura F INNER JOIN tblCLIEnte C ON F.intCodigo_CLIE=C.intCodigo_CLIE INNER JOIN tblDetalle D ON
F.intCodigo_FACT=D.intCodigo_FACT
WHERE F.strNitEmpresa=@Nit_EMPR
GROUP BY C.strNombre_CLIE,dtmFechaVenc_FACT

OPEN TOTALCARTERA

FETCH TOTALCARTERA INTO @Nombre_Cliente,@Valor_Bruto,@TotalFactura

WHILE (@@FETCH_STATUS=0)
BEGIN

FETCH TOTALCARTERA INTO @Nombre_Cliente,@Valor_Bruto,@TotalFactura
END

CLOSE TOTALCARTERA
DEALLOCATE TOTALCARTERA

END

y me arroja los siguientes resultados

ENTIDAD VALOR FACTURA RANGO TOTAL CARTERA RANGO DE FECHAS

CLIENTE1 2000000 450000000 FACTURAS PROXIMA EN VENCER

CLIENTE1 140000 450000000 FACTURAS PROXIMAS EN VENCER

CLIENTE2 450000 450000000 FACTURAS PROXIMAS EN VENCER

SOLO POR CITAR UN EJEMPLO, LO QUE YO PRETENDO ES QUE SOLO ME MUESTRE UN REGISTRO POR CADA CLIENTE CON LA SUMA TOTAL DE LAS FACTURAS

ESPERO ME PUEDAN AYUDAR MUCHAS GRACIAS