ALTER PROCEDURE [dbo].[sp_invListadoDocumentos_Todos]
(
@coddoc int=0,
@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
						  --RECEPCIÓN DE COMPRA
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 1 THEN 'FACTURA'
						  WHEN invEncabezado.tipref2 = 1 AND invEncabezado.coddoc = 1 THEN 'GUÍA DE DESPACHO'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 1 THEN 'PRODUCCIÓN INTERNA'
						  WHEN invEncabezado.tipref2 = 3 AND invEncabezado.coddoc = 1 THEN 'KIT'
						  WHEN invEncabezado.tipref2 = 4 AND invEncabezado.coddoc = 1 THEN 'IMPORTACIÓN'
						   --RECEPCIÓN INTERNA
						  WHEN invEncabezado.tipref1 = 0 AND invEncabezado.coddoc = 4 THEN 'SIN REFERENCIA'
						  WHEN invEncabezado.tipref1 = 11 AND invEncabezado.coddoc = 4 THEN 'ORDEN DE PRODUCCIÓN'
						  WHEN invEncabezado.tipref1 = 2 AND invEncabezado.coddoc = 4 THEN 'G.DESPACHO'
						  WHEN invEncabezado.tipref1 = 3 AND invEncabezado.coddoc = 4 THEN 'G.DESPACHO ELEC.'
						  --CONSUMO
						  WHEN invEncabezado.tipref1 = 0 AND invEncabezado.coddoc = 2 THEN 'SOLICITUD'
						  WHEN invEncabezado.tipref1 = 1 AND invEncabezado.coddoc = 2 THEN 'MERMA'
						  WHEN invEncabezado.tipref1 = 2 AND invEncabezado.coddoc = 2 THEN 'SIN REFERENCIA'
						  WHEN invEncabezado.tipref1 = 4 AND invEncabezado.coddoc = 2 THEN 'KIT'
						  WHEN invEncabezado.tipref1 = 5 AND invEncabezado.coddoc = 2 THEN 'ORDEN DE TRABAJO'
						  WHEN invEncabezado.tipref1 = 6 AND invEncabezado.coddoc = 2 THEN 'ORDEN DE PRODUCCION'
						  ELSE 'SIN REFERENCIA'
						  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 AND CYV1.rut = CYV2.rut),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, CYV1.rut)
			,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.docref1 = @numref or invEncabezado.docref2 = @numref or @numref = 0)
	--AND	    (invEncabezado.estado <> 9) 
	ORDER BY fecdoc DESC, hordoc DESC

	-- Para @contabilizado = 0 (TODOS)
	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
	ELSE
		BEGIN
			SELECT *, 0 AS DIFERENCIA FROM #A
		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
						  --RECEPCIÓN DE COMPRA
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 1 THEN 'FACTURA'
						  WHEN invEncabezado.tipref2 = 1 AND invEncabezado.coddoc = 1 THEN 'GUÍA DE DESPACHO'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 1 THEN 'PRODUCCIÓN INTERNA'
						  WHEN invEncabezado.tipref2 = 3 AND invEncabezado.coddoc = 1 THEN 'KIT'
						  WHEN invEncabezado.tipref2 = 4 AND invEncabezado.coddoc = 1 THEN 'IMPORTACIÓN'
						   --RECEPCIÓN INTERNA
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 4 THEN 'SIN REFERENCIA'
						  WHEN invEncabezado.tipref2 = 11 AND invEncabezado.coddoc = 4 THEN 'ORDEN DE PRODUCCIÓN'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 4 THEN 'G.DESPACHO'
						  WHEN invEncabezado.tipref2 = 3 AND invEncabezado.coddoc = 4 THEN 'G.DESPACHO ELEC.'
						  --CONSUMO
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 2 THEN 'SOLICITUD'
						  WHEN invEncabezado.tipref2 = 1 AND invEncabezado.coddoc = 2 THEN 'MERMA'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 2 THEN 'SIN REFERENCIA'
						  WHEN invEncabezado.tipref2 = 4 AND invEncabezado.coddoc = 2 THEN 'KIT'
						  WHEN invEncabezado.tipref2 = 5 AND invEncabezado.coddoc = 2 THEN 'ORDEN DE TRABAJO'
						  WHEN invEncabezado.tipref2 = 6 AND invEncabezado.coddoc = 2 THEN 'ORDEN DE PRODUCCION'
						  ELSE 'SIN REFERENCIA'
						  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 AND CYV1.rut = CYV2.rut),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, CYV1.rut)
			,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.docref1 = @numref or invEncabezado.docref2 = @numref or @numref = 0)
	--AND	    (invEncabezado.estado <> 9) 
	ORDER BY fecdoc DESC, hordoc DESC

	-- Para @contabilizado = 1 (CONTABLIZADOS)
	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
	ELSE
		BEGIN
			SELECT *, 0 AS DIFERENCIA FROM #B
		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
						  --RECEPCIÓN DE COMPRA
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 1 THEN 'FACTURA'
						  WHEN invEncabezado.tipref2 = 1 AND invEncabezado.coddoc = 1 THEN 'GUÍA DE DESPACHO'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 1 THEN 'PRODUCCIÓN INTERNA'
						  WHEN invEncabezado.tipref2 = 3 AND invEncabezado.coddoc = 1 THEN 'KIT'
						  WHEN invEncabezado.tipref2 = 4 AND invEncabezado.coddoc = 1 THEN 'IMPORTACIÓN'
						   --RECEPCIÓN INTERNA
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 4 THEN 'SIN REFERENCIA'
						  WHEN invEncabezado.tipref2 = 11 AND invEncabezado.coddoc = 4 THEN 'ORDEN DE PRODUCCIÓN'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 4 THEN 'G.DESPACHO'
						  WHEN invEncabezado.tipref2 = 3 AND invEncabezado.coddoc = 4 THEN 'G.DESPACHO ELEC.'
						  --CONSUMO
						  WHEN invEncabezado.tipref2 = 0 AND invEncabezado.coddoc = 2 THEN 'SOLICITUD'
						  WHEN invEncabezado.tipref2 = 1 AND invEncabezado.coddoc = 2 THEN 'MERMA'
						  WHEN invEncabezado.tipref2 = 2 AND invEncabezado.coddoc = 2 THEN 'SIN REFERENCIA'
						  WHEN invEncabezado.tipref2 = 4 AND invEncabezado.coddoc = 2 THEN 'KIT'
						  WHEN invEncabezado.tipref2 = 5 AND invEncabezado.coddoc = 2 THEN 'ORDEN DE TRABAJO'
						  WHEN invEncabezado.tipref2 = 6 AND invEncabezado.coddoc = 2 THEN 'ORDEN DE PRODUCCION'
						  ELSE 'SIN REFERENCIA'
						  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 AND CYV1.rut = CYV2.rut),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, CYV1.rut)
			,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.docref1 = @numref or invEncabezado.docref2 = @numref or @numref = 0)
	--AND	    (invEncabezado.estado <> 9) 
	ORDER BY fecdoc DESC, hordoc DESC

	-- Para @contabilizado = 2 (NO CONTABLIZADOS)
	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
	ELSE
		BEGIN
			SELECT *, 0 AS DIFERENCIA FROM #C
		END
END