IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'[dbo].[CPJ_Mayor_x_Cuenta_Rpt]') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE [dbo].[CPJ_Mayor_x_Cuenta_Rpt] 
END
GO
CREATE PROCEDURE [dbo].[CPJ_Mayor_x_Cuenta_Rpt]	@pJson VARCHAR(8000)
AS
SET NOCOUNT ON

/*Variables recibidas por parametro a traves del JSON*/
DECLARE @pModoDebug			    			TINYINT
DECLARE @pId_Usuario						SMALLINT
DECLARE @pFecha_Desde						DATETIME
DECLARE @pFecha_Hasta						DATETIME
DECLARE @pFlag_incluirSoloAsientosContGen	TINYINT
DECLARE @pFlag_FiltrarId_CC					TINYINT
DECLARE @pId_Centro_Costo					VARCHAR(10)
DECLARE @pId_Plan_Cta						INT
DECLARE @pId_Unid_Negocio					VARCHAR(10)
DECLARE @pId_Alias_Cta_Contable				INT
DECLARE @pId_Cta_Contable			    	INT
DECLARE @pFlag_Detallado					TINYINT
DECLARE @pFlag_Apertura_Chq					TINYINT
DECLARE @pTipo_Moneda						CHAR(1)
DECLARE	@pJson2                             VARCHAR(8000)

SET @pModoDebug							= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'ModoDebug')), 0)
SET @pId_Usuario						= ISNULL(CONVERT(SMALLINT, dbo.CF_JSON_VALUE(@pJson,'Id_Usuario')), 0)
SET @pFecha_Desde						= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Desde')), '19000101')
SET @pFecha_Hasta						= ISNULL(CONVERT(DATETIME, dbo.CF_JSON_VALUE(@pJson,'Fecha_Hasta')), '19000101')
SET @pFlag_incluirSoloAsientosContGen	= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'Flag_incluirSoloAsientosContGen')), 0)
SET @pFlag_FiltrarId_CC					= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'Flag_FiltrarId_CC')), 0)
SET @pId_Centro_Costo					= ISNULL(CONVERT(VARCHAR(10), dbo.CF_JSON_VALUE(@pJson,'Id_Centro_Costo')), '')
SET @pId_Plan_Cta						= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Plan_Cta')), 0)
SET @pId_Unid_Negocio					= ISNULL(CONVERT(VARCHAR(10), dbo.CF_JSON_VALUE(@pJson,'Id_Unid_Negocio')), '')
SET @pId_Alias_Cta_Contable				= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Alias_Cta_Contable')), 0)
SET @pFlag_Detallado					= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'Flag_Detallado')), 0)
SET @pFlag_Apertura_Chq					= ISNULL(CONVERT(TINYINT, dbo.CF_JSON_VALUE(@pJson,'Flag_Apertura_Chq')), 0)
SET @pTipo_Moneda						= ISNULL(CONVERT(CHAR(1), dbo.CF_JSON_VALUE(@pJson,'Tipo_Moneda')), 'C')
SET @pId_Cta_Contable			    	= ISNULL(CONVERT(INT, dbo.CF_JSON_VALUE(@pJson,'Id_Cta_Contable')), 0)

/*FIN Variables recibidas por parametro a traves del JSON*/


/*Variables Locales*/
DECLARE @SqlStr						NVARCHAR(MAX)
DECLARE @Id_Cta_Contable			INT
DECLARE @PCE_Fecha_Inicio			DATETIME
DECLARE @PCE_Fecha_Cierre			DATETIME
DECLARE @Id_Ejercicio				INT
DECLARE @Fecha						DATETIME
DECLARE @Asiento_Nro				INT
DECLARE @Concepto					VARCHAR(100)
DECLARE @Id_Tipo_Val				CHAR(3)
DECLARE @Valor_Nro					INT
DECLARE @Valor_Fecha				DATETIME
DECLARE @Importe					DECIMAL(18,2)
DECLARE @Debe						DECIMAL(18,2)
DECLARE @Haber						DECIMAL(18,2)
DECLARE @Saldo						DECIMAL(18,2)
DECLARE @Cantidad					DECIMAL(18,4)
DECLARE @Costo						DECIMAL(18,4)
DECLARE @Centro_Costo				VARCHAR(200)
DECLARE @Observaciones				VARCHAR(8000)
DECLARE @Cbte_Cur_Id_Trans			INT
DECLARE @Cbte_Cur_Debe				DECIMAL(18,2)
DECLARE @Cbte_Cur_Haber				DECIMAL(18,2)
DECLARE @Cbte_Cur_Id_Cta_Contable	INT
DECLARE @Cbte_Cur_Alias				INT
DECLARE @Cbte_Cur_Destinatario		VARCHAR(100)
DECLARE @Cbte_Cur_Nro				INT
DECLARE @Cbte_Cur_Id_Centro_Costo	CHAR(10)
DECLARE @Cbte_Cur_Observacion		VARCHAR(8000)
DECLARE @Cotizacion					DECIMAL(10,4)
DECLARE @Id_Valor					INT
DECLARE @SaldoAnterior				DECIMAL(20,2)
DECLARE @Flag_Unid_Neg				TINYINT
 
/*FIN Variables Locales*/

IF RTRIM(LTRIM(@pId_Unid_Negocio)) = ''
	SET @Flag_Unid_Neg = 0
ELSE
	SET @Flag_Unid_Neg = 1


BEGIN TRY
	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Ingreso a Stored Procedure: CPJ_Mayor_x_Cuenta_Rpt'
		PRINT 'Parametros: '
		PRINT '@pId_Usuario: ' + CONVERT(VARCHAR(10), @pId_Usuario) + '. @pFecha_Desde: ' + CONVERT(VARCHAR(10), @pFecha_Desde, 112) + '. @pFecha_Hasta: ' + CONVERT(VARCHAR(10), @pFecha_Hasta, 112) +'. @pFlag_FiltrarId_CC: ' + CONVERT(VARCHAR(10), @pFlag_FiltrarId_CC) + '. @pId_Centro_Costo: ' + CONVERT(VARCHAR(10), @pId_Centro_Costo)
		PRINT '@pFlag_incluirSoloAsientosContGen: ' + CONVERT(VARCHAR(10), @pFlag_incluirSoloAsientosContGen) + '. @pId_Plan_Cta: ' + CONVERT(VARCHAR(10), @pId_Plan_Cta) + '. @pId_Unid_Negocio: ' + @pId_Unid_Negocio 
		PRINT '@pId_Alias_Cta_Contable: ' + CONVERT(VARCHAR(10), @pId_Alias_Cta_Contable) 
	END

	/*=============================================================================================================================*/
	/*=============================================================================================================================*/

	IF(@pId_Usuario = 0)
	BEGIN
		SET @pId_Usuario = -1
	END
	
	IF(@pFecha_Desde = '19000101')								RAISERROR ('Fecha_Desde can not be blank.', 16,  1)
	IF(@pFecha_Hasta = '19000101')								RAISERROR ('Fecha_Hasta can not be blank.', 16,  1) 
	IF(@pFecha_Desde >= @pFecha_Hasta)							RAISERROR ('Fecha_Desde can not be bigger or equal than Fecha_Hasta.', 16,  1) 
	--IF(DATEDIFF(YEAR, @pFecha_Desde, @pFecha_Hasta) > 0)		RAISERROR ('Diference between Fecha_Desde and Fecha_Hasta can not be bigger than a year.', 16,  1) 		
	IF(@pId_Plan_Cta = 0)										RAISERROR ('Id_Plan_Cta can not be zero.', 16,  1) 
	IF(@pFlag_FiltrarId_CC <> 0)
	--BEGIN
	--	IF(@pId_Centro_Costo = '')									RAISERROR ('Id_Centro_Costo can not be blank.', 16,  1)
	--END
	IF(@pId_Alias_Cta_Contable = 0)								RAISERROR ('Id_Alias_Cta_Contable can not be zero.', 16,  1) 
	
	/*=============================================================================================================================*/

	SELECT 	@Id_Cta_Contable	=	ISNULL(Id_Cta_Contable, 0),
        	@pId_Cta_Contable   =	ISNULL(Id_Cta_Contable, 0)
		FROM Pla_Ctas_Cuentas_Contables 
		WHERE Alias = @pId_Alias_Cta_Contable
		AND Id_Plan_Cta	= @pId_Plan_Cta

	SELECT 	@Id_Ejercicio	= ISNULL(Id_Ejercicio, 0)
		FROM Plan_Ctas
		WHERE Id_Plan_Cta = @pId_Plan_Cta

	SELECT  @Id_Ejercicio	= ISNULL(Id_Ejercicio, 0),
	        @PCE_Fecha_Inicio = ISNULL(Fecha_Inicio, '19000101'),
			@PCE_Fecha_Cierre = ISNULL(Fecha_Cierre, '19000101')
		    FROM Plan_Ctas_Ejercicios
		    WHERE Id_Ejercicio = @Id_Ejercicio
		    
	IF	@pFlag_incluirSoloAsientosContGen = 1
        SET @pFlag_Detallado = 0	
	/*=============================================================================================================================*/
	
	CREATE TABLE #Rpt_Mayor_x_Cuenta
	(
	Fecha							DATETIME,
	Asiento_Nro						INT,
	Concepto						VARCHAR(100),
	Id_Tipo_Val						CHAR(3),
	Valor_Nro						INT,
	Valor_Fecha						DATETIME,
	Importe							DECIMAL(18,2),
	Debe							DECIMAL(18,2),
	Haber							DECIMAL(18,2),
	Saldo							DECIMAL(18,2),
	Cantidad						DECIMAL(18,4),
	Costo							DECIMAL(18,4),
	Centro_Costo					VARCHAR(200),
	Observaciones					VARCHAR(8000),
	Id								INT IDENTITY(1,1)
	)

	/*=============================================================================================================================*/
	/*=============================================================================================================================*/
 
 Select ID_CTA_CONTABLE,ID_CENTRO_COSTO into  #Cta_Saldo_Anterior FROM  Asientos_Items where 1=0
	ALTER TABLE #Cta_Saldo_Anterior ADD  SALDO_ANT DECIMAL(30,2)


	SET @pJson2 =	'{' +
							dbo.CF_Json_ParsearVariable('ModoDebug', @pModoDebug, 'TINYINT') + ',' +
							dbo.CF_Json_ParsearVariable('Flag_incluirSoloAsientos', 1, 'TINYINT') + ',' +		
							dbo.CF_Json_ParsearVariable('Flag_FiltrarId_CC', @pFlag_FiltrarId_CC, 'TINYINT') + ',' +
							dbo.CF_Json_ParsearVariable('Id_Centro_Costo', @pId_Centro_Costo, 'VARCHAR(10)') + ',' +
						    dbo.CF_Json_ParsearVariable('Id_Alias_Cta_Contable', @pId_Alias_Cta_Contable, 'INT') + ',' +
							dbo.CF_Json_ParsearVariable('Id_Plan_Cta', @pId_Plan_Cta, 'INT') + ',' +
					    	dbo.CF_Json_ParsearVariable('Fecha_Desde', @pFecha_Desde, 'DATETIME') + ',' +
							dbo.CF_Json_ParsearVariable('Id_Unid_Negocio',@pId_Unid_Negocio, 'VARCHAR(10)') +  
							'}'



    INSERT INTO #Cta_Saldo_Anterior
		     EXEC dbo.[CPJ_Cuentas_saldo_Anterior_Rpt] @pJson2
		     
	 
	
    SET @DEBE  = 0
    SET @HABER = 0
    SET @SaldoAnterior = ISNULL((select SUM(Saldo_Ant) from #Cta_Saldo_Anterior),0)
    
    IF @SaldoAnterior > 0
       BEGIN
          SET @DEBE = @SaldoAnterior
       END
      ELSE
       BEGIN
           SET @HABER = @SaldoAnterior*-1
       END
       
    
 	   INSERT #Rpt_Mayor_x_Cuenta 
			(Fecha, Asiento_Nro, Concepto, Id_Tipo_Val, Valor_Nro, Valor_Fecha, Importe, 
			Debe, Haber, Saldo, Cantidad, Costo, Centro_Costo, Observaciones)
		  VALUES
			(@pFecha_Desde, 0, 'SALDO ANTERIOR', '', '', '', 0, 
			@Debe, @Haber, @Saldo,0, 0, @Centro_Costo, '')   


	IF(@pModoDebug = 1)
	BEGIN
		PRINT ''
		PRINT '@SaldoAnterior: ' + CONVERT(VARCHAR(30), @SaldoAnterior)
	END

	/*=============================================================================================================================*/
	/*=============================================================================================================================*/

	IF(@pModoDebug = 1)
	BEGIN
		PRINT ''
		PRINT 'ASIENTOS'
	END

	CREATE TABLE #Asientos_Mayor_x_Cuenta
		(
		Id_Asiento				INT,
		Debe					DECIMAL(12,2),
		Haber					DECIMAL(12,2),
		Id_Cta_Contable			INT,
		Id_Alias_Cta_Contable	SMALLINT,
		Nota					VARCHAR(100),
		Descripcion				VARCHAR(100),
		Nro						INT,
		Cantidad				DECIMAL(12,4),
		Precio					DECIMAL(12,4),
		Id_Centro_Costo			CHAR(10),
		Fecha					DATETIME
		)

	/*=============================================================================================================================*/

	SET @SqlStr = 'INSERT INTO #Asientos_Mayor_x_Cuenta (Fecha, Debe, Haber, Id_Cta_Contable, Id_Alias_Cta_Contable, Nota, Descripcion, Id_Asiento, Nro, Cantidad, Precio, Id_Centro_Costo) '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr))												+ CHAR(13) + 
					'SELECT '															+ CHAR(13) + 
					'C.Fecha,  '														+ CHAR(13) + 					
					'ISNULL(I.Debe, 0) AS Debe, '										+ CHAR(13) + 
					'ISNULL(I.Haber, 0) AS Haber, '										+ CHAR(13) + 
					'I.Id_Cta_Contable, '												+ CHAR(13) + 
					'I.Id_Alias_Cta_Cont, '												+ CHAR(13) + 
					'ISNULL(I.Nota, '''') AS Nota, '									+ CHAR(13) + 
					'ISNULL(C.Descripcion, '''') AS Descripcion, '						+ CHAR(13) + 
					'I.Id_Asiento, '													+ CHAR(13) + 
					'C.Nro, '															+ CHAR(13) + 
					'I.Cantidad, '														+ CHAR(13) + 
					'I.Precio, '														+ CHAR(13) + 
					'ISNULL(I.Id_Centro_Costo, '''') AS Id_Centro_Costo  '				+ CHAR(13) + 					
					'FROM Asientos_Items I, Asientos C  '								+ CHAR(13) + 
					'WHERE '															+ CHAR(13) + 
					'C.Id_Asiento = I.Id_Asiento '										+ CHAR(13) + 
					'AND C.Balanceado = 1 '                                             + CHAR(13) + 
					'AND I.Id_Cta_Contable = '   + CONVERT(VARCHAR(10), @pId_Cta_Contable)

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND C.Fecha >= ''' + CONVERT(VARCHAR(10), @pFecha_Desde, 112) + ''' '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND C.Fecha < ''' + CONVERT(VARCHAR(10), DATEADD(DAY, 1, @pFecha_Hasta), 112) + ''' '

	IF(@pFlag_FiltrarId_CC <> 0)
	BEGIN
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'AND I.Id_Centro_Costo = ''' + @pId_Centro_Costo + ''' '
	END

	IF @pFlag_Detallado = 1 
	BEGIN
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'AND (C.Resumido IS NULL OR C.Resumido = 0 )'
	END
	
	

	IF(@pId_Unid_Negocio <> '')
	BEGIN
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'AND C.Id_Unid_Negocio = ''' + @pId_Unid_Negocio + ''' '
	END

	IF(@pModoDebug = 1)
	BEGIN
		PRINT ''
		PRINT '@SqlStr: '
		PRINT @SqlStr
		PRINT ''
	END

		EXECUTE sp_executesql @SqlStr

		INSERT #Rpt_Mayor_x_Cuenta 
				(Fecha, Asiento_Nro, Concepto, Id_Tipo_Val, Valor_Nro, Valor_Fecha, Importe, 
				Debe, Haber, Saldo, Cantidad, Costo, Centro_Costo, Observaciones)
		SELECT	A.Fecha, 		
				A.Nro, 
				CASE
					WHEN LEN(A.Nota) > 0 THEN Nota
					ELSE A.Descripcion
				END AS Concepto,
				'' AS Id_Tipo_Val,
				A.Nro,
				'19000101',
				0,
				A.Debe, 		A.Haber, 		0, 		A.Cantidad, 		A.Precio, 		C.Descripcion, 		''
			FROM #Asientos_Mayor_x_Cuenta A, Centro_Costos C
			WHERE ISNULL(A.Id_Centro_Costo,'')  Collate SQL_Latin1_General_CP1_CI_AS  = C.Id_Centro_Costo  Collate SQL_Latin1_General_CP1_CI_AS 

	/*=============================================================================================================================*/
	/*=============================================================================================================================*/

	IF(@pModoDebug = 1)
	BEGIN
		PRINT ''
		PRINT 'COMPROBANTES'
	END

	CREATE TABLE #Cbtes_Mayor_x_Cta
		(
		Id_Trans			INT,
		Debe				DECIMAL(12,2),
		Haber				DECIMAL(12,2),
		Id_Cta_Contable		INT,
		Alias				INT,
		Destinatario		VARCHAR(100),
		Nro					INT,
		Id_Centro_Costo		CHAR(10),
		Observacion			VARCHAR(8000)
		)

	/*=============================================================================================================================*/

	SET @SqlStr = 'INSERT INTO #Cbtes_Mayor_x_Cta (Id_Trans, Debe, Haber, Id_Cta_Contable, Alias, Destinatario, Nro, Id_Centro_Costo, Observacion) '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr))												+ CHAR(13) + 
					'SELECT '															+ CHAR(13) + 
					'C.Id_Trans, '														+ CHAR(13) + 
					'ISNULL(I.Debe,0), '												+ CHAR(13) + 
					'ISNULL(I.Haber,0), '											    + CHAR(13) + 
					'i.Id_Cta_Contable, '												+ CHAR(13) + 
					'i.Alias, '															+ CHAR(13) + 
					'C.Destinatario, '													+ CHAR(13) + 
					'A.Nro, '															+ CHAR(13) + 
					'I.Id_Centro_Costo, '												+ CHAR(13) + 
					'C.Observacion '													+ CHAR(13) + 
					'FROM Cbtes_Ctas_Contables I LEFT OUTER JOIN Asientos A ON A.Id_Asiento = I.Id_Asiento, Cbtes C, Cbtes_Tipos T '+ CHAR(13) + 
					'WHERE '															+ CHAR(13) + 
					'C.Id_Trans = I.Id_Trans '											+ CHAR(13) + 
					'AND C.Id_Tipo_Cbte = T.Id_Tipo_Cbte '								+ CHAR(13) + 
					'AND C.Id_Estado_Cbte <> 0 '										+ CHAR(13) + 
					'AND C.Id_Estado_Cbte <> 3 '										+ CHAR(13) + 
					'AND ISNULL(T.Compromete_Asientos, 0) <> 0 '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND I.Id_Cta_Contable = ' + CONVERT(VARCHAR(10), @Id_Cta_Contable, 112) + ' '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND C.Periodo_Iva >= ''' + CONVERT(VARCHAR(10), @PCE_Fecha_Inicio, 112) + ''' '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND C.Periodo_Iva < ''' + CONVERT(VARCHAR(10), DATEADD(DAY, 1, @PCE_Fecha_Cierre), 112) + ''' '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND C.Periodo_Iva >= ''' + CONVERT(VARCHAR(10), @pFecha_Desde, 112) + ''' '

	SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
					'AND C.Periodo_Iva < ''' + CONVERT(VARCHAR(10), DATEADD(DAY, 1, @pFecha_Hasta), 112) + ''' '
 
 	IF(@pFlag_FiltrarId_CC <> 0)
	BEGIN
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'AND I.Id_Centro_Costo = ''' + @pId_Centro_Costo + ''' '
	END

	IF(@pFlag_Detallado = 0 )
	BEGIN 
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'AND (I.Id_Asiento IS NULL OR I.Id_Asiento = 0 )'
	END
	
	IF(@pId_Unid_Negocio <> '')
	BEGIN
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'AND T.Id_Unid_Negocio = ''' + @pId_Unid_Negocio + ''' '
	END

	IF(@pFlag_Apertura_Chq <> '')
	BEGIN
		SET @SqlStr =	RTRIM(LTRIM(@SqlStr)) + CHAR(13) + 
						'GROUP BY C.Id_Trans,I.Id_Cta_Contable,i.Alias,C.DesTinatario,A.Nro,I.Id_Centro_Costo'
	END

	IF(@pModoDebug = 1)
	BEGIN
		PRINT ''
		PRINT '@SqlStr: '
		PRINT @SqlStr
		PRINT ''
	END

--IF @pFlag_incluirSoloAsientosContGen = 0
	EXECUTE sp_executesql @SqlStr
	
	/*=============================================================================================================================*/



	DECLARE curCbtes_Mayor_x_Cta CURSOR FOR
		SELECT 	M.Id_Trans, M.Debe, M.Haber, M.Id_Cta_Contable, M.Alias, 
				M.Destinatario, ISNULL(M.Nro, 0), 
		        M.Id_Centro_Costo, M.Observacion,
				O.Descripcion,
				ISNULL(T.Periodo_Iva, '19000101'),
				dbo.CF_Cbte_Descrip(T.Id_Trans) + ' - ' + M.Destinatario,
				ISNULL(T.Cotizacion, 1),
				ISNULL(CONVERT(VARCHAR(8000), T.Observacion), '')
		FROM #Cbtes_Mayor_x_Cta M, Centro_Costos O, Cbtes T
		WHERE O.Id_Centro_Costo  Collate SQL_Latin1_General_CP1_CI_AS = ISNULL(M.Id_Centro_Costo,'') Collate SQL_Latin1_General_CP1_CI_AS 
		AND T.Id_Trans = M.Id_Trans


	OPEN curCbtes_Mayor_x_Cta
	FETCH NEXT FROM curCbtes_Mayor_x_Cta 
		INTO	@Cbte_Cur_Id_Trans, @Cbte_Cur_Debe, @Cbte_Cur_Haber, @Cbte_Cur_Id_Cta_Contable, @Cbte_Cur_Alias, 
				@Cbte_Cur_Destinatario, @Cbte_Cur_Nro, 
				@Cbte_Cur_Id_Centro_Costo, @Cbte_Cur_Observacion,
				@Centro_Costo,
				@Fecha,@Concepto,@Cotizacion,@Observaciones
	WHILE @@FETCH_STATUS = 0
	BEGIN

		IF(ISNULL(@pTipo_Moneda,'C') = 'C' OR @pTipo_Moneda = '')
		BEGIN
			SET @Debe		= @Cbte_Cur_Debe
			SET @Haber		= @Cbte_Cur_Haber
		END

		IF(@pTipo_Moneda = 'O')
		BEGIN
			SET @Debe		= @Cbte_Cur_Debe / @Cotizacion
			SET @Haber		= @Cbte_Cur_Haber / @Cotizacion
		END

		SET @Asiento_Nro = @Cbte_Cur_Nro



		IF(@pFlag_Apertura_Chq = 1)
		BEGIN
			SELECT	@Id_Valor		= ISNULL(Id_Valor,  0),
					@Valor_Nro		= ISNULL(Valor_Nro, 0),
					@Id_Tipo_Val	= ISNULL(Id_Tipo_Val, ''),
					@Valor_Fecha	= ISNULL(Fecha_Val, '19000101'),
					@Importe		= ISNULL(Importe, 0)
				FROM Valores
				WHERE Id_Trans = @Cbte_Cur_Id_Trans
		END
		ELSE
		BEGIN
			SET @Id_Tipo_Val	= ''
			SET @Valor_Nro		= 0
			SET @Valor_Fecha	= ''
			SET @Importe		= 0
		END

		SET @Debe	= @Cbte_Cur_Debe
		SET @Haber	= @Cbte_Cur_Haber

		SET @Cantidad = 0
		SET @Costo = 0

		INSERT #Rpt_Mayor_x_Cuenta 
			(Fecha, Asiento_Nro, Concepto, Id_Tipo_Val, Valor_Nro, Valor_Fecha, Importe, 
			Debe, Haber, Saldo, Cantidad, Costo, Centro_Costo, Observaciones)
		VALUES
			(@Fecha, @Asiento_Nro, @Concepto, @Id_Tipo_Val, @Valor_Nro, @Valor_Fecha, @Importe, 
			@Debe, @Haber, @Saldo, @Cantidad, @Costo, @Centro_Costo, @Observaciones)

		FETCH NEXT FROM curCbtes_Mayor_x_Cta 
		INTO	@Cbte_Cur_Id_Trans, @Cbte_Cur_Debe, @Cbte_Cur_Haber, @Cbte_Cur_Id_Cta_Contable, @Cbte_Cur_Alias, 
				@Cbte_Cur_Destinatario, @Cbte_Cur_Nro, 
				@Cbte_Cur_Id_Centro_Costo, @Cbte_Cur_Observacion,
				@Centro_Costo,
				@Fecha,@Concepto,@Cotizacion,@Observaciones
	END
	CLOSE curCbtes_Mayor_x_Cta
	DEALLOCATE curCbtes_Mayor_x_Cta

	/*=============================================================================================================================*/
	/* Cargo el saldo */            
	DECLARE @Id INT
	DECLARE curMayor_Saldo CURSOR FOR 
		SELECT Id,Debe, Haber FROM #Rpt_Mayor_x_Cuenta 
		ORDER BY Fecha,Centro_Costo,Concepto


	OPEN curMayor_Saldo
	FETCH NEXT FROM curMayor_Saldo INTO	@Id,@Debe,@Haber
	SET @Saldo = 0	
	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @Saldo = @Saldo + (ISNULL(@Debe,0) - ISNULL(@Haber,0))
		UPDATE #Rpt_Mayor_x_Cuenta SET Saldo = @Saldo WHERE Id = @Id
		FETCH NEXT FROM curMayor_Saldo INTO	@Id,@Debe,@Haber
	END
	CLOSE curMayor_Saldo
	DEALLOCATE curMayor_Saldo

	/*=============================================================================================================================*/

	SELECT * FROM #Rpt_Mayor_x_Cuenta ORDER BY Fecha,Centro_Costo,Concepto
		

	/*=============================================================================================================================*/
	/*=============================================================================================================================*/

	IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] = '#Asientos_Mayor_x_Cuenta') 
		DROP TABLE #Asientos_Mayor_x_Cuenta

	IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] = '#Cbtes_Mayor_x_Cta') 
		DROP TABLE #Cbtes_Mayor_x_Cta

	IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] = '#Rpt_Mayor_x_Cuenta') 
		DROP TABLE #Rpt_Mayor_x_Cuenta
	
	/*=============================================================================================================================*/
	
	IF(@pModoDebug = 1)
	BEGIN
		PRINT 'Fin Stored Procedure: CPJ_Mayor_x_Cuenta_Rpt'
	END
END TRY  


BEGIN CATCH  
    EXECUTE usp_GetErrorInfo

	RETURN 9999
END CATCH

RETURN 0

/*

EXEC dbo.CPJ_Mayor_x_Cuenta_Rpt '{		"ModoDebug":"1",
										"Id_Usuario":"-1",
										"Fecha_Desde":"20250501",
                                        "Fecha_Hasta":"20250502", 
										"Flag_incluirSoloAsientosContGen":"0",
										"Flag_FiltrarId_CC":"0",
										"Id_Centro_Costo":"",
										"Id_Plan_Cta":"3",
										"Id_Unid_Negocio":"",
										"Id_Alias_Cta_Contable":"40",
										"Flag_Detallado":"0",
										"Flag_Apertura_Chq":"0"
										}'

 EXEC dbo.[CPJ_Mayor_x_Cuenta_Rpt] '{ "ModoDebug":"1",
										"Id_Usuario":"-1",
										"Fecha_Desde":"20250501",
										"Fecha_Hasta":"20250528",
										"Flag_incluirSoloAsientos":"0",
										"Flag_FiltrarId_CC":"0",
										"Id_Centro_Costo":"",
										"Id_Alias_Cta_Contable":"40",
										"Id_Cta_Contable":"",
										"Id_Plan_Cta":"3"
										, "Id_Unid_Negocio":"",
										"Flag_Desglozar_CC":"0",
										"Flag_Excluir_Asientos_Cierre":"0"}'


										EXEC CPJ_Mayor_x_Cuenta_Rpt '{ "ModoDebug":"0", "Id_Usuario":"-1", "Fecha_Desde":"20250101", "Fecha_Hasta":"20250528", "Flag_incluirSoloAsientosContGen":"0", "Flag_FiltrarId_CC":"0", "Id_Centro_Costo":"", "Id_Plan_Cta":"3", "Id_Unid_Negocio":"", "Id_Alias_Cta_Contable":"40", "Flag_Detallado":"0", "Flag_Apertura_Chq":"0" }'

*/