IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.[CP_ResumenCta_por_Cliente]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.[CP_ResumenCta_por_Cliente]
END
GO

CREATE PROCEDURE [dbo].[CP_ResumenCta_por_Cliente]
	@pFecha_Desde			DATETIME,
	@pFecha_Hasta			DATETIME,
	@pId_Unid_Negocio       varchar(10)
AS
SET NOCOUNT ON

/*Declaracion Variables Locales*/

DECLARE @Mensaje			VARCHAR(100)
		,@UltError			INT
		,@Id_Trans			INT
		,@Id_Cliente		INT
		,@Importe			DECIMAL(16,2)
		,@Email_Cob			VARCHAR(256)
		,@Id_Trans_Rec		INT
		,@CursorOpen        INT
		,@Flag_Cbte_Tipo	SMALLINT
		,@Periodo           DATE 
		,@Id_sucursal	    SMALLINT
		,@Existe      	    SMALLINT
		,@Venta_Total       DECIMAL(16,2)

					
BEGIN 
     

		select c.Id_Cliente, c.Razon_Social, CAST(sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Factura,0)) - sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Recibos,0)) AS DECIMAL(14,2)) AS Saldo
		into #Resumen_Cta
		 from Cbtes_Tipos T, clientes c, cbtes F
		 where c.id_cliente = f.id_cliente
		and f.id_tipo_cbte = t.id_tipo_cbte
		and (f.Id_Cond_Pago <> 1 and t.Compromete_Factura in (1,-1) 
			  or t.Compromete_recibos in (1,-1))
		and f.id_estado_cbte not in (0,3)
		AND F.FECHA < dateadd(dd,1,@pFecha_Hasta)
		group by c.id_cliente, c.razon_social 


		alter table #Resumen_Cta add Sdo_Ant decimal(16,2),Debe decimal(16,2), Haber decimal(16,2)

		update #Resumen_Cta set Debe=0,Haber=0,Sdo_Ant=0

		select c.Id_Cliente, CAST(sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Factura,0)) - sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Recibos,0)) AS DECIMAL(14,2)) AS Sdo_Ant
		into #Resumen_Sdo_Ant
		 from Cbtes_Tipos T, clientes c, cbtes F
		 where c.id_cliente = f.id_cliente
		and f.id_tipo_cbte = t.id_tipo_cbte
		and (f.Id_Cond_Pago <> 1 and t.Compromete_Factura in (1,-1) 
			  or t.Compromete_recibos in (1,-1))
		and f.id_estado_cbte not in (0,3)
		AND F.FECHA < @pFecha_Desde 
		group by c.id_cliente 


		select f.id_cliente,(sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Factura,0))) as debe
		 into #Resumen_Debe
		 from Cbtes_Tipos T, cbtes F, #Resumen_Cta R
		 where r.id_cliente = f.id_cliente
		and f.id_tipo_cbte = t.id_tipo_cbte
		and f.Id_Cond_Pago <> 1 and t.Compromete_Factura in (1) 
		and f.id_estado_cbte not in (0,3)
	    AND F.FECHA >= @pFecha_Desde 
		AND F.FECHA < dateadd(dd,1,@pFecha_Hasta)
		group by f.id_cliente

		select f.id_cliente,(sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Factura,0))) as Haber
		 into #Resumen_Haber
		 from Cbtes_Tipos T, cbtes F, #Resumen_Cta R
		 where r.id_cliente = f.id_cliente
		and f.id_tipo_cbte = t.id_tipo_cbte
		and f.Id_Cond_Pago <> 1 and t.Compromete_Factura in (-1) 
		and f.id_estado_cbte not in (0,3)
		AND F.FECHA >= @pFecha_Desde 
		AND F.FECHA < dateadd(dd,1,@pFecha_Hasta)
		group by f.id_cliente
 
		Select F.Id_Cliente, sum(isnull(f.Imp_Total,0) * f.cotizacion * isnull(T.Compromete_Recibos,0)) as Recibos
		 into #Resumen_Rec
		 from Cbtes_Tipos T, cbtes F, #Resumen_Cta R
		 where r.id_cliente = f.id_cliente
		and f.id_tipo_cbte = t.id_tipo_cbte
		and t.Compromete_Recibos in (1,-1) 
		and f.id_estado_cbte not in (0,3)
		AND F.FECHA >= @pFecha_Desde 
		AND F.FECHA < dateadd(dd,1,@pFecha_Hasta)
		group by f.id_cliente

		update #Resumen_Cta set Debe = D.Debe
		from #Resumen_Cta C,#Resumen_Debe D 
		Where C.Id_Cliente = D.Id_Cliente

		update #Resumen_Cta set  Haber = (H.Haber*-1) 
		from #Resumen_Cta C, #Resumen_Haber H
		Where C.Id_Cliente = H.Id_Cliente

		update #Resumen_Cta set  Haber = Haber + R.Recibos
		from #Resumen_Cta C, #Resumen_Rec R
		Where C.Id_Cliente = R.Id_Cliente

		update #Resumen_Cta set  Sdo_Ant = S.Sdo_Ant
		from #Resumen_Cta C, #Resumen_Sdo_Ant S
		Where C.Id_Cliente = S.Id_Cliente


		select * from #Resumen_Cta

		drop table #Resumen_Cta

		drop table #Resumen_DEBE

        drop table #Resumen_HABER

        drop table #Resumen_REC

END

---[CP_ResumenCta_por_Cliente] '20200801','20210930',''