CREATE PROCEDURE [dbo].[sp_conEstadoResultadoDetallado_Excel]
(
 @mes        INT =12, 
 @periodo    INT =2021, 
 @unegocio   INT =0,
 @acumulado  BIT =0
)

AS

DECLARE @tablaAcumulado TABLE ( cuenta varchar(50), EERR varchar(50), descripcionEERR varchar(300), saldoAcumulado decimal(18,4))

INSERT INTO @tablaAcumulado
SELECT ISNULL(C2.cuenta,'') AS cuenta, 
		ISNULL(ConPlanEstadoResultados.cuenta,'') AS EERR,
		ISNULL(ConPlanEstadoResultados.descripcion,'') AS descripcion,
		(sum(ISNULL(haber,0))-sum(ISNULL(debe,0))) as saldoAcumulado 
FROM conComprobantes AS C2
		INNER JOIN conPlanCuentas on C2.periodo=conPlanCuentas.periodo
											AND C2.cuenta=conPlanCuentas.cuenta
		INNER JOIN ConPlanEstadoResultados ON conPlanCuentas.periodo=ConPlanEstadoResultados.periodo 
									AND conPlanCuentas.estadoResul=ConPlanEstadoResultados.cuenta
WHERE C2.periodo= @periodo
		AND (mes BETWEEN 1 AND @mes OR @mes = 0)
		AND (uni_negocio=@unegocio OR @unegocio=-1)
GROUP BY 	C2.cuenta,
			ConPlanEstadoResultados.cuenta,
			ConPlanEstadoResultados.descripcion

DECLARE @tablaMes TABLE ( cuenta varchar(50), EERR varchar(50), descripcion varchar(300), saldoMes decimal(18,4))

INSERT INTO @tablaMes
SELECT C2.cuenta, 
		ConPlanEstadoResultados.cuenta AS EERR,
		ConPlanEstadoResultados.descripcion,
		(sum(ISNULL(haber,0))-sum(ISNULL(debe,0))) as saldoMES
FROM conComprobantes AS C2
		INNER JOIN conPlanCuentas on C2.periodo=conPlanCuentas.periodo
											AND C2.cuenta=conPlanCuentas.cuenta
		INNER JOIN ConPlanEstadoResultados ON conPlanCuentas.periodo=ConPlanEstadoResultados.periodo 
									AND conPlanCuentas.estadoResul=ConPlanEstadoResultados.cuenta
WHERE C2.periodo= @periodo
		AND (mes = @mes )
		AND (uni_negocio=@unegocio OR @unegocio=-1)
GROUP BY 	C2.cuenta,
			ConPlanEstadoResultados.cuenta,
			ConPlanEstadoResultados.descripcion

SELECT  ISNULL(A.cuenta,'') AS cuenta,
		ISNULL(conplancuentas.descripcion,'') AS descripcion,
		A.EERR,
		A.descripcionEERR,
		ISNULL(M.saldoMes,0) AS saldoMes,
		ISNULL(A.saldoAcumulado,0) AS saldoAcumulado
into #A
FROM @tablaAcumulado AS A
		LEFT OUTER JOIN @tablaMes AS M ON A.cuenta = M.cuenta
		INNER JOIN conPlanCuentas ON A.cuenta=conPlanCuentas.cuenta AND conPlanCuentas.periodo= @periodo


IF @acumulado = 1
	BEGIN
		SELECT  ISNULL(#A.cuenta + ' - ' + #A.descripcion,'') AS cuenta,
				ISNULL(ConPlanEstadoResultados.cuenta + ' - ' + ConPlanEstadoResultados.descripcion,'') AS cuentaER,
				--#A.EERR + ' - ' + #A.descripcionEERR as EERR,
				CONVERT(VARCHAR(50), conTotalesEERR.codigo) + ' - ' + conTotalesEERR.descripcion AS codTipoTotal,
				ISNULL(#A.saldoMes,0) AS saldoMes,
				ISNULL(#A.saldoAcumulado,0) AS saldoAcumulado
		FROM ConPlanEstadoResultados
		LEFT JOIN #A ON ConPlanEstadoResultados.cuenta = #A.EERR	
		LEFT JOIN conTotalesEERR on ConPlanEstadoResultados.tipoTotal = conTotalesEERR.codigo
		WHERE periodo = @periodo
		AND ConPlanEstadoResultados.subclase > 0
	END
ELSE
	BEGIN
		SELECT  ISNULL(#A.cuenta + ' - ' + #A.descripcion,'') AS cuenta,
				ISNULL(ConPlanEstadoResultados.cuenta + ' - ' + ConPlanEstadoResultados.descripcion,'') AS cuentaER,
				--#A.EERR + ' - ' + #A.descripcionEERR as EERR,
				CONVERT(VARCHAR(50), conTotalesEERR.codigo) + ' - ' + conTotalesEERR.descripcion AS codTipoTotal,
				ISNULL(#A.saldoMes,0) AS saldoMes
		FROM ConPlanEstadoResultados
		LEFT JOIN #A ON ConPlanEstadoResultados.cuenta = #A.EERR	
		LEFT JOIN conTotalesEERR on ConPlanEstadoResultados.tipoTotal = conTotalesEERR.codigo
		WHERE periodo = @periodo
		AND ConPlanEstadoResultados.subclase > 0
END