ALTER      PROCEDURE [dbo].[sp_invCentralizacionProduccion]
(
     @fecini DATE,
     @fecfin DATE,
     @coddoc INT = 0,
	 @tipoctaproduccion INT = 1,
	 @tipoctaexistencia INT = 0,
	 @codbod INT = 0
)
AS
declare @ctaexistenciaparametro int
select @ctaexistenciaparametro = ctaexistencia from invParametros

declare @ctaproproductoprocesos int
select @ctaproproductoprocesos = ctaproductosproceso from proParametros


IF  @coddoc = 2 or @coddoc = 4
BEGIN
	SELECT  CASE @tipoctaproduccion WHEN 1 THEN proEtapas.ctaproductosproceso 
									WHEN 2 THEN @ctaproproductoprocesos END AS cuenta, 
				CAST(CASE invEncabezado.coddoc WHEN 2 THEN ROUND(SUM(invDetalle.cantidad * invDetalle.costo),0) ELSE 0 END AS INT) AS debe, 
				CAST(CASE invEncabezado.coddoc WHEN 4 THEN ROUND(SUM(invDetalle.cantidad * invDetalle.costo),0) ELSE 0 END AS INT) AS haber,
				invEncabezado.codcen AS uni_negocio,
				invEncabezado.item
	FROM			  invArticulos LEFT OUTER JOIN
                      invFamilia ON invArticulos.codfam = invFamilia.codfam RIGHT OUTER JOIN
                      invEncabezado INNER JOIN
                      invDetalle ON invEncabezado.coddoc = invDetalle.coddoc AND invEncabezado.numinv = invDetalle.numinv ON 
                      invArticulos.codbus = invDetalle.codbus LEFT OUTER JOIN
                      conCtacte ON conCtacte.rutcte = invEncabezado.rutcte  LEFT OUTER JOIN
                      conUnidadNegocio ON invEncabezado.codcen = conUnidadNegocio.idUniNeg LEFT OUTER JOIN
					  proEtapas on proEtapas.codEtapa = invEncabezado.docref3  AND proEtapas.periodo = invEncabezado.periodo

	WHERE invEncabezado.coddoc = @coddoc 
	AND (invEncabezado.fecdoc BETWEEN @fecini AND @fecfin)
	AND (invEncabezado.tipcom = 0 AND invEncabezado.numcom = 0)
	AND invEncabezado.tipref2 = 2
	AND (invEncabezado.codbod = @codbod OR @codbod = 0)
	GROUP BY invEncabezado.coddoc, invEncabezado.codcen, invEncabezado.item
	,proEtapas.ctaproductosproceso 
UNION

	--SELECT      invFamilia.ctaexistencias AS cuenta, 
	SELECT  CASE @tipoctaexistencia WHEN 0 THEN invFamilia.ctaexistencias -- ELSE invSubFamilia.ctaexistencias END AS cuenta, 
									WHEN 1 THEN invSubFamilia.ctaexistencias
									WHEN 2 THEN @ctaexistenciaparametro END AS cuenta,
				CAST(CASE invEncabezado.coddoc WHEN 4 THEN ROUND(SUM(invDetalle.cantidad * invDetalle.costo),0) ELSE 0 END AS INT) AS debe, 
				CAST(CASE invEncabezado.coddoc WHEN 2 THEN ROUND(SUM(invDetalle.cantidad * invDetalle.costo),0) ELSE 0 END AS INT) AS haber,
				invEncabezado.codcen AS uni_negocio,
				invEncabezado.item
	FROM			  invArticulos LEFT OUTER JOIN
                      invFamilia ON invArticulos.codfam = invFamilia.codfam RIGHT OUTER JOIN
                      invEncabezado INNER JOIN
                      invDetalle ON invEncabezado.coddoc = invDetalle.coddoc AND invEncabezado.numinv = invDetalle.numinv ON 
                      invArticulos.codbus = invDetalle.codbus LEFT OUTER JOIN
                      conCtacte ON conCtacte.rutcte = invEncabezado.rutcte LEFT OUTER JOIN
					  --nuevo
					invSubFamilia on invArticulos.codfam = invSubFamilia.codfam AND invArticulos.codsub = invSubFamilia.codsub
					--
	WHERE invEncabezado.coddoc = @coddoc 
	AND (invEncabezado.fecdoc BETWEEN @fecini AND @fecfin)
	AND (invEncabezado.tipcom = 0 AND invEncabezado.numcom = 0)
	--nuevo 
	AND (invEncabezado.tipref2 = 2)
	AND (invEncabezado.codbod = @codbod OR @codbod = 0)
	--
	GROUP BY invEncabezado.coddoc, invFamilia.ctaexistencias, invEncabezado.codcen, invEncabezado.item ,invSubFamilia.ctaexistencias
	ORDER BY invEncabezado.codcen, invEncabezado.item, haber

END