ALTER    PROCEDURE  [dbo].[sp_conComprobante_Detalle_Apertura]
(
@Periodo int, 
@ctaAjuste int,
@clasificacion int
)
AS

--DECLARE @COMPROBANTES TABLE(numlin VARCHAR(50), cuenta VARCHAR(10), descripcion VARCHAR(70), ctacte INT, item INT, tipo_docto INT, num_docto BIGINT,
--							vencimiento DATETIME, analisis INT, uni_negocio INT, moneda INT, periodo INT, mes INT, debe DECIMAL(18,4), haber DECIMAL(18,4))
--DECLARE @A TABLE(numlin VARCHAR(50), cuenta VARCHAR(10), descripcion VARCHAR(70), ctacte INT, item INT, tipo_docto INT, num_docto BIGINT,
--				 analisis INT, uni_negocio INT, moneda INT, debe DECIMAL(18,4), haber DECIMAL(18,4))
--DECLARE @B TABLE(numlin VARCHAR(50), cuenta VARCHAR(10), descripcion VARCHAR(70), ctacte INT, item INT, tipo_docto INT, num_docto BIGINT,
--							vencimiento DATETIME, analisis INT, uni_negocio INT, moneda INT, debe DECIMAL(18,4), haber DECIMAL(18,4))

--INSERT INTO @COMPROBANTES
--SELECT  '0' AS numlin, conPlanCuentas.cuenta, conPlanCuentas.descripcion, conComprobantes.ctacte, 
--		conComprobantes.item,
--CASE WHEN conPlanCuentas.marcaDocumento=1 THEN conComprobantes.tipo_docto ELSE 0 END AS tipo_docto,
--CASE WHEN conPlanCuentas.marcaDocumento=1 THEN conComprobantes.num_docto ELSE 0 END AS  num_docto,
--CASE WHEN conPlanCuentas.marcaDocumento=1 THEN max(conComprobantes.vencimiento) ELSE '1900-01-01' END AS vencimiento,
--CASE WHEN conPlanCuentas.marcaAnalisis=1 THEN conComprobantes.analisis ELSE 0 END as analisis,
--CASE WHEN conPlanCuentas.marcaNegocio=1 THEN conComprobantes.uni_negocio ELSE 0 END as uni_negocio,
--CASE WHEN conPlanCuentas.marcaMONEDA=1 THEN conComprobantes.moneda ELSE 0 END AS moneda
-- ,conComprobantes.PERIODO,conComprobantes.MES,sum(debe) as debe,sum(haber) as haber
--FROM            conComprobantes INNER JOIN
--                         conPlanCuentas ON conComprobantes.cuenta = conPlanCuentas.cuenta AND conComprobantes.periodo = conPlanCuentas.periodo
--WHERE (conComprobantes.periodo = @Periodo)
--AND		(conPlanCuentas.Naturaleza = 1 OR conPlanCuentas.Naturaleza = 2)
--AND     (conComprobantes.clasificacion=@clasificacion)
--GROUP BY conPlanCuentas.cuenta, conPlanCuentas.descripcion, conComprobantes.ctacte, conComprobantes.item, conComprobantes.tipo_docto, 
--		 conComprobantes.num_docto, conPlanCuentas.tipoAnalisis, conComprobantes.analisis, conComprobantes.uni_negocio, 
--		 conComprobantes.moneda
--,marcaNegocio,marcaDocumento,marcaCtacte,marcaAnalisis,conComprobantes.periodo,conComprobantes.mes
--,moneda,marcamoneda

--INSERT INTO @A
--SELECT  '0' AS numlin, cuenta, descripcion, conComprobantes.ctacte, 
--		conComprobantes.item,tipo_docto, num_docto,analisis,uni_negocio,
-- conComprobantes.moneda,
--		CASE WHEN SUM(debe) > SUM(haber) THEN CAST(SUM(debe) - SUM(haber) AS BIGINT) ELSE 0 END AS Debe,
--		CASE WHEN SUM(debe) < SUM(haber) THEN CAST(SUM(haber) - SUM(debe) AS BIGINT) ELSE 0 END AS Haber
--FROM      @COMPROBANTES conComprobantes 
--GROUP BY cuenta, descripcion, conComprobantes.ctacte, conComprobantes.item, conComprobantes.tipo_docto, 
--		 conComprobantes.num_docto, conComprobantes.analisis, conComprobantes.uni_negocio,moneda
--HAVING SUM(debe) <> SUM(haber)

--INSERT INTO @B

--SELECT A.numlin, A.cuenta, A.descripcion, A.ctacte, A.item, A.tipo_docto, A.num_docto,
--	   MAX(C.vencimiento) AS vencimiento, A.analisis, A.uni_negocio, A.moneda, A.debe, A.haber
--FROM @A A INNER JOIN conComprobantes C ON A.cuenta = C.cuenta
--AND A.ctacte = C.ctacte
--AND A.num_docto = C.num_docto
--AND A.tipo_docto = C.tipo_docto
--GROUP BY A.numlin, A.cuenta, A.descripcion, A.ctacte, A.item,
--		 A.tipo_docto, A.num_docto, A.analisis, A.uni_negocio,
--		 A.moneda, A.Debe, A.Haber



--SELECT * FROM @B

--UNION ALL

--SELECT 'AJUSTE',@ctaAjuste,'AJUSTE', 0, 0, 0, 0, '01-01-1900', 0, 0, 0,
--		CASE WHEN SUM(debe) < SUM(haber) THEN CAST(SUM(haber) - SUM(debe) AS BIGINT) ELSE 0 END,
--		CASE WHEN SUM(debe) > SUM(haber) THEN CAST(SUM(debe) - SUM(haber) AS BIGINT) ELSE 0 END
--FROM        @B


DECLARE @COMPROBANTES TABLE(cuenta varchar(10), ctacte int, debe decimal(18,4), haber decimal(18,4), saldo decimal(18,4),
							tipo_docto int, num_docto bigint, vencimiento date, analisis int, uni_negocio int, moneda int, item int)	
DECLARE @A TABLE(cuenta varchar(10), descripcion varchar(500), ctacte int, item int, tipo_docto int, num_docto bigint,
				 vencimiento date, analisis int, uni_negocio int, moneda int, debe decimal(18,4), haber decimal(18,4))
DECLARE @B TABLE(numlin VARCHAR(50), cuenta VARCHAR(10), descripcion VARCHAR(70), ctacte INT, item INT, tipo_docto INT, num_docto BIGINT,
				 vencimiento DATETIME, analisis INT, uni_negocio INT, moneda INT, debe DECIMAL(18,4), haber DECIMAL(18,4))


INSERT INTO @COMPROBANTES
select   cuenta
		, ctacte
  --      ,CASE WHEN SUM(debe) > SUM(haber) THEN CAST(SUM(debe) - SUM(haber) AS BIGINT) ELSE 0 END AS Debe
		--,CASE WHEN SUM(debe) < SUM(haber) THEN CAST(SUM(haber) - SUM(debe) AS BIGINT) ELSE 0 END AS Haber
		,CASE WHEN SUM(debe) > SUM(haber) THEN SUM(debe) - SUM(haber) ELSE 0 END AS Debe
		,CASE WHEN SUM(debe) < SUM(haber) THEN SUM(haber) - SUM(debe) ELSE 0 END AS Haber
        ,sum(debe)-Sum(haber) as saldoDOC
        ,tipo_docto
        ,num_docto
        ,max(convert(date, vencimiento)) as vencimiento
		, analisis
		, uni_negocio
		, moneda
		, item
from conComprobantes
where periodo = @Periodo
and clasificacion = @clasificacion
AND (SUBSTRING(cuenta,1,1) = 1 OR SUBSTRING(cuenta,1,1) = 2)
group by cuenta, ctacte, tipo_docto, num_docto, analisis, uni_negocio, moneda, item
HAVING sum(debe)-Sum(haber)<>0



INSERT INTO @A
SELECT cc.cuenta, cp.descripcion,
	   cc.ctacte,
	   CASE WHEN cp.marcaItem=1 THEN cc.item ELSE 0 END as item, 
	   CASE WHEN cp.marcaDocumento=1 THEN cc.tipo_docto ELSE 0 END AS tipo_docto,
	   CASE WHEN cp.marcaDocumento=1 THEN cc.num_docto ELSE 0 END AS  num_docto,
	   CASE WHEN cp.marcaDocumento=1 THEN cc.vencimiento ELSE '1900-01-01' END AS vencimiento,
	   CASE WHEN cp.marcaAnalisis=1 THEN cc.analisis ELSE 0 END as analisis,
	   CASE WHEN cp.marcaNegocio=1 THEN cc.uni_negocio ELSE 0 END as uni_negocio,
	   CASE WHEN cp.marcaMONEDA=1 THEN cc.moneda ELSE 0 END AS moneda,
	   cc.debe, cc.haber
FROM @COMPROBANTES cc INNER JOIN
       conPlanCuentas cp ON cc.cuenta = cp.cuenta AND cp.periodo = @Periodo

INSERT INTO @B
SELECT ROW_NUMBER() OVER (order by cuenta, ctacte, tipo_docto, num_docto) as numlin,
	   cuenta, descripcion, ctacte, item, tipo_docto, num_docto,  MAX(vencimiento) AS vencimiento, analisis,
	   uni_negocio, moneda,
	   --CASE WHEN SUM(debe) > SUM(haber) THEN CAST(SUM(debe) - SUM(haber) AS BIGINT) ELSE 0 END AS Debe
	   --,CASE WHEN SUM(debe) < SUM(haber) THEN CAST(SUM(haber) - SUM(debe) AS BIGINT) ELSE 0 END AS Haber
	   CASE WHEN SUM(debe) > SUM(haber) THEN SUM(debe) - SUM(haber) ELSE 0 END AS Debe
	   ,CASE WHEN SUM(debe) < SUM(haber) THEN SUM(haber) - SUM(debe) ELSE 0 END AS Haber
FROM @A
GROUP BY cuenta, descripcion, ctacte, item, tipo_docto, num_docto, analisis,
	     uni_negocio, moneda
HAVING sum(debe)-Sum(haber)<>0


SELECT CONVERT(VARCHAR(50), numlin) as numlin, cuenta, descripcion, ctacte, item, tipo_docto
       , num_docto, vencimiento, analisis, uni_negocio, moneda, debe, haber 
FROM @B

UNION all

select  'AJUSTE',
        @ctaAjuste,
        'AJUSTE',
        0,
		0,
		0,
		0,
		'01-01-1900',
		0,
		0,
		0,
  --      CASE WHEN SUM(debe) < SUM(haber) THEN CAST(SUM(haber) - SUM(debe) AS BIGINT) ELSE 0 END,
		--CASE WHEN SUM(debe) > SUM(haber) THEN CAST(SUM(debe) - SUM(haber) AS BIGINT) ELSE 0 END
		CASE WHEN SUM(debe) < SUM(haber) THEN SUM(haber) - SUM(debe) ELSE 0 END,
		CASE WHEN SUM(debe) > SUM(haber) THEN SUM(debe) - SUM(haber) ELSE 0 END
from @B