CREATE PROCEDURE [dbo].[sp_invListadoDocumentos_Entradas]
(
@coddoc int=1,
@fecini date,
@fecfin date,
@diferencia int = 0,
@codbod int=0,
@item int = 0,
@contabilizado int = 0,
@tipref int = -1,
@numref int = 0
)

AS

IF @contabilizado = 0 --TODOS
	BEGIN
	SELECT     invEncabezado.coddoc, invEncabezado.numinv, invEncabezado.fecdoc, invEncabezado.fecven, invEncabezado.rutcte, COALESCE (conCtacte.nomcte, '') AS nomcte, 
						  invEncabezado.subtotal, invEncabezado.exento, invEncabezado.descuentos, invEncabezado.neto, invEncabezado.iva, invEncabezado.total, 
						  invEncabezado.cantidad_total, invEncabezado.tipref1, invEncabezado.docref1, invEncabezado.tipref2,
						  CASE invEncabezado.tipref2
						  WHEN 0 THEN 'FACTURA'
						  WHEN 1 THEN 'GUÍA DE DESPACHO'
						  WHEN 2 THEN 'PRODUCCIÓN INTERNA'
						  WHEN 3 THEN 'KIT'
						  WHEN 4 THEN 'IMPORTACIÓN'
						  END AS tipref2desc,
						  invEncabezado.docref2, invEncabezado.tipref3, 
						  invEncabezado.docref3, venDocumentos.alias_doc AS nomdoc, venDocumentos.grudoc, venDocumentos.alias_doc, invEncabezado.glosa, CONVERT(VARCHAR, conCtacte.rutcte) 
						  + '-' + conCtacte.digcte AS RutCliente, invEncabezado.codbod AS bodega, invEncabezado.boddes AS bodegaDes, invEncabezado.codcen, 
						  conUnidadNegocio.idUniNeg, conUnidadNegocio.descripcion AS unidadnegocio
	,invEncabezado.tipcom,invEncabezado.numcom,
	CASE invEncabezado.tipcom WHEN 1 THEN 'INGRESO' WHEN 2 THEN 'EGRESO' WHEN 3 THEN 'TRASPASO' ELSE '' END as tipocomprobante
	, CASE WHEN @coddoc=1 AND invEncabezado.tipref1=6  
			THEN
			COALESCE(
			 (SELECT sum(CYV1.monto_afecto) - ISNULL((SELECT sum(CYV2.monto_afecto) FROM cyvEncabezado CYV2 WHERE CYV1.tipo_documento = CYV2.doc_ref AND CYV1.num_documento = CYV2.num_doc_ref),0) FROM cyvEncabezado CYV1
			WHERE (tipo_ingreso = 1) AND (tipo_documento = 33) AND (num_documento = docref2) AND (rut = invEncabezado.rutcte)
			GROUP BY CYV1.tipo_documento, CYV1.num_documento)
			,0)
		
			 ELSE 0 END AS totalfactura,
	 CASE WHEN @coddoc=1 AND invEncabezado.tipref1=6 THEN docref2 ELSE '' END AS numfactura,
	 ISNULL(conItem.descripcion, 'NO POSEE ITEM DE GASTO') AS itemGasto
	INTO #A
	FROM         conUnidadNegocio RIGHT OUTER JOIN
						  invEncabezado INNER JOIN
						  venDocumentos ON invEncabezado.coddoc = venDocumentos.coddoc ON conUnidadNegocio.idUniNeg = invEncabezado.codcen RIGHT OUTER JOIN
						  invBodega AS Bodega ON invEncabezado.codbod = Bodega.codbod LEFT OUTER JOIN
						  invBodega AS BodegaDestino ON invEncabezado.boddes = BodegaDestino.codbod LEFT OUTER JOIN
						  conCtacte ON invEncabezado.rutcte = conCtacte.rutcte LEFT OUTER JOIN
						  conItem ON invEncabezado.item = conItem.codigo
	WHERE     (venDocumentos.grudoc = 1)
	AND		(invEncabezado.coddoc = @coddoc or @coddoc=0)
	AND  invEncabezado.coddoc IN (1,2,3,4)
	AND invEncabezado.fecdoc BETWEEN @fecini AND @fecfin
	AND	(@codbod=0 OR invEncabezado.codbod = @codbod)
	AND	(@item=0 OR invEncabezado.item = @item)
	AND (invEncabezado.tipref2 = @tipref or @tipref = -1)
	AND (invEncabezado.docref2 = @numref or @numref = 0)
	--AND	    (invEncabezado.estado <> 9) 
	ORDER BY fecdoc DESC, hordoc DESC



	IF @coddoc=1
	BEGIN

    
		 if @diferencia=0
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #A
		 end

		 if @diferencia=1
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #A
			WHERE 
			NOT(totalfactura - total) = 0
		 end

		 if @diferencia=2
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #A
			WHERE 
			(totalfactura - total) = 0
		 end

	 
	END
END

IF @contabilizado = 1 --CONTABLIZADOS
	BEGIN


	SELECT     invEncabezado.coddoc, invEncabezado.numinv, invEncabezado.fecdoc, invEncabezado.fecven, invEncabezado.rutcte, COALESCE (conCtacte.nomcte, '') AS nomcte, 
						  invEncabezado.subtotal, invEncabezado.exento, invEncabezado.descuentos, invEncabezado.neto, invEncabezado.iva, invEncabezado.total, 
						  invEncabezado.cantidad_total, invEncabezado.tipref1, invEncabezado.docref1, invEncabezado.tipref2,
						  CASE invEncabezado.tipref2
						  WHEN 0 THEN 'FACTURA'
						  WHEN 1 THEN 'GUÍA DE DESPACHO'
						  WHEN 2 THEN 'PRODUCCIÓN INTERNA'
						  WHEN 3 THEN 'KIT'
						  WHEN 4 THEN 'IMPORTACIÓN'
						  END AS tipref2desc,
						  invEncabezado.docref2, invEncabezado.tipref3, 
						  invEncabezado.docref3, venDocumentos.alias_doc AS nomdoc, venDocumentos.grudoc, venDocumentos.alias_doc, invEncabezado.glosa, CONVERT(VARCHAR, conCtacte.rutcte) 
						  + '-' + conCtacte.digcte AS RutCliente, invEncabezado.boddes, BodegaDestino.nombod AS nomboddes, Bodega.nombod, invEncabezado.codcen, 
						  conUnidadNegocio.idUniNeg, conUnidadNegocio.descripcion AS unidadnegocio
	,invEncabezado.tipcom,invEncabezado.numcom,
	CASE invEncabezado.tipcom WHEN 1 THEN 'INGRESO' WHEN 2 THEN 'EGRESO' WHEN 3 THEN 'TRASPASO' ELSE '' END as tipocomprobante
	, CASE WHEN @coddoc=1 AND invEncabezado.tipref1=6  
			THEN
			COALESCE(
			 (SELECT sum(CYV1.monto_afecto) - ISNULL((SELECT sum(CYV2.monto_afecto) FROM cyvEncabezado CYV2 WHERE CYV1.tipo_documento = CYV2.doc_ref AND CYV1.num_documento = CYV2.num_doc_ref),0) FROM cyvEncabezado CYV1
			WHERE (tipo_ingreso = 1) AND (tipo_documento = 33) AND (num_documento = docref2) AND (rut = invEncabezado.rutcte)
			GROUP BY CYV1.tipo_documento, CYV1.num_documento)
			,0)
		
			 ELSE 0 END AS totalfactura
	,

	 CASE WHEN @coddoc=1 AND invEncabezado.tipref1=6 THEN docref2 ELSE '' END AS numfactura,
	 ISNULL(conItem.descripcion, 'NO POSEE ITEM DE GASTO') AS itemGasto
	INTO #B
	FROM         conUnidadNegocio RIGHT OUTER JOIN
						  invEncabezado INNER JOIN
						  venDocumentos ON invEncabezado.coddoc = venDocumentos.coddoc ON conUnidadNegocio.idUniNeg = invEncabezado.codcen RIGHT OUTER JOIN
						  invBodega AS Bodega ON invEncabezado.codbod = Bodega.codbod LEFT OUTER JOIN
						  invBodega AS BodegaDestino ON invEncabezado.boddes = BodegaDestino.codbod LEFT OUTER JOIN
						  conCtacte ON invEncabezado.rutcte = conCtacte.rutcte LEFT OUTER JOIN
						  conItem ON invEncabezado.item = conItem.codigo
	WHERE     (venDocumentos.grudoc = 1)
	AND		(invEncabezado.coddoc = @coddoc or @coddoc=0)
	AND  invEncabezado.coddoc IN (1,2,3,4)
	AND invEncabezado.fecdoc BETWEEN @fecini AND @fecfin
	AND	(@codbod=0 OR invEncabezado.codbod = @codbod)
	AND	(@item=0 OR invEncabezado.item = @item)
	AND invEncabezado.numcom > 0
	AND (invEncabezado.tipref2 = @tipref or @tipref = -1)
	AND (invEncabezado.docref2 = @numref or @numref = 0)
	--AND	    (invEncabezado.estado <> 9) 
	ORDER BY fecdoc DESC, hordoc DESC



	IF @coddoc=1
	BEGIN

    
		 if @diferencia=0
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #B
		 end

		 if @diferencia=1
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #B
			WHERE 
			NOT(totalfactura - total) = 0
		 end

		 if @diferencia=2
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #B
			WHERE 
			(totalfactura - total) = 0
		 end

	 
	END
END


IF @contabilizado = 2 --NO CONTABLIZADOS
	BEGIN


	SELECT     invEncabezado.coddoc, invEncabezado.numinv, invEncabezado.fecdoc, invEncabezado.fecven, invEncabezado.rutcte, COALESCE (conCtacte.nomcte, '') AS nomcte, 
						  invEncabezado.subtotal, invEncabezado.exento, invEncabezado.descuentos, invEncabezado.neto, invEncabezado.iva, invEncabezado.total, 
						  invEncabezado.cantidad_total, invEncabezado.tipref1, invEncabezado.docref1, invEncabezado.tipref2,
						  CASE invEncabezado.tipref2
						  WHEN 0 THEN 'FACTURA'
						  WHEN 1 THEN 'GUÍA DE DESPACHO'
						  WHEN 2 THEN 'PRODUCCIÓN INTERNA'
						  WHEN 3 THEN 'KIT'
						  WHEN 4 THEN 'IMPORTACIÓN'
						  END AS tipref2desc,
						  invEncabezado.docref2, invEncabezado.tipref3, 
						  invEncabezado.docref3, venDocumentos.alias_doc AS nomdoc, venDocumentos.grudoc, venDocumentos.alias_doc, invEncabezado.glosa, CONVERT(VARCHAR, conCtacte.rutcte) 
						  + '-' + conCtacte.digcte AS RutCliente, invEncabezado.boddes, BodegaDestino.nombod AS nomboddes, Bodega.nombod, invEncabezado.codcen, 
						  conUnidadNegocio.idUniNeg, conUnidadNegocio.descripcion AS unidadnegocio
	,invEncabezado.tipcom,invEncabezado.numcom,
	CASE invEncabezado.tipcom WHEN 1 THEN 'INGRESO' WHEN 2 THEN 'EGRESO' WHEN 3 THEN 'TRASPASO' ELSE '' END as tipocomprobante
	, CASE WHEN @coddoc=1 AND invEncabezado.tipref1=6  
			THEN
			COALESCE(
			 (SELECT sum(CYV1.monto_afecto) - ISNULL((SELECT sum(CYV2.monto_afecto) FROM cyvEncabezado CYV2 WHERE CYV1.tipo_documento = CYV2.doc_ref AND CYV1.num_documento = CYV2.num_doc_ref),0) FROM cyvEncabezado CYV1
			WHERE (tipo_ingreso = 1) AND (tipo_documento = 33) AND (num_documento = docref2) AND (rut = invEncabezado.rutcte)
			GROUP BY CYV1.tipo_documento, CYV1.num_documento)
			,0)
		
			 ELSE 0 END AS totalfactura
	,

	 CASE WHEN @coddoc=1 AND invEncabezado.tipref1=6 THEN docref2 ELSE '' END AS numfactura,
	 ISNULL(conItem.descripcion, 'NO POSEE ITEM DE GASTO') AS itemGasto
	INTO #C
	FROM         conUnidadNegocio RIGHT OUTER JOIN
						  invEncabezado INNER JOIN
						  venDocumentos ON invEncabezado.coddoc = venDocumentos.coddoc ON conUnidadNegocio.idUniNeg = invEncabezado.codcen RIGHT OUTER JOIN
						  invBodega AS Bodega ON invEncabezado.codbod = Bodega.codbod LEFT OUTER JOIN
						  invBodega AS BodegaDestino ON invEncabezado.boddes = BodegaDestino.codbod LEFT OUTER JOIN
						  conCtacte ON invEncabezado.rutcte = conCtacte.rutcte LEFT OUTER JOIN
						  conItem ON invEncabezado.item = conItem.codigo
	WHERE     (venDocumentos.grudoc = 1)
	AND		(invEncabezado.coddoc = @coddoc or @coddoc=0)
	AND  invEncabezado.coddoc IN (1,2,3,4)
	AND invEncabezado.fecdoc BETWEEN @fecini AND @fecfin
	AND	(@codbod=0 OR invEncabezado.codbod = @codbod)
	AND	(@item=0 OR invEncabezado.item = @item)
	AND invEncabezado.numcom = 0
	AND (invEncabezado.tipref2 = @tipref or @tipref = -1)
	AND (invEncabezado.docref2 = @numref or @numref = 0)
	--AND	    (invEncabezado.estado <> 9) 
	ORDER BY fecdoc DESC, hordoc DESC



	IF @coddoc=1
	BEGIN

    
		 if @diferencia=0
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #C
		 end

		 if @diferencia=1
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #C
			WHERE 
			NOT(totalfactura - total) = 0
		 end

		 if @diferencia=2
		 begin
			SELECT *,(totalfactura - total) AS DIFERENCIA  from #C
			WHERE 
			(totalfactura - total) = 0
		 end

	 
	END
END