ALTER      PROCEDURE [dbo].[sp_invCentralizacionParteEntradaProd]
(
     @fecini DATE,
     @fecfin DATE,
     @coddoc INT = 0,
	 @tipoctaproduccion INT = 0,
	 @codbod INT = 0
)
AS
declare @ctaproductoterminadoparametro int
select @ctaproductoterminadoparametro = ctaproductosterminados from proParametros


	SELECT
	CASE @tipoctaproduccion
		WHEN 1 THEN ISNULL(invFamilia.ctaproductoterminado, 0) -- ELSE invSubFamilia.ctaexistencias END AS cuenta, 
		WHEN 2 THEN ISNULL(invSubFamilia.ctaproductoterminado, 0)
		WHEN 3 THEN ISNULL(@ctaproductoterminadoparametro, 0)
	END AS cuenta
   ,CONVERT(DECIMAL(18,4), ROUND(SUM(invDetalle.cantidad * invDetalle.preuni), 0)) AS debe
   ,0 AS haber
   ,invEncabezado.codcen AS uni_negocio
   ,invEncabezado.item
   ,invDetalle.nomart + ' - OP ' + CAST(invEncabezado.docref2 AS VARCHAR) AS glosa
   ,invEncabezado.coddoc
   ,invEncabezado.numinv

FROM invEncabezado
INNER JOIN invDetalle
	ON invDetalle.numinv = invEncabezado.numinv
		AND invDetalle.coddoc = invEncabezado.coddoc
INNER JOIN invFamilia
	ON invDetalle.codfam = invFamilia.codfam
INNER JOIN invSubFamilia
	ON invDetalle.codfam = invSubFamilia.codfam
		AND invDetalle.codsub = invSubFamilia.codsub
INNER JOIN proOPEtapas
	ON invEncabezado.docref2 = proOPEtapas.idOP
INNER JOIN proEtapas
	ON proOPEtapas.etapa = proEtapas.codEtapa   AND proOPEtapas.periodo = proEtapas.periodo
WHERE proOPEtapas.ultetapa = 1
AND (invEncabezado.tipcom = 0
AND invEncabezado.numcom = 0)
AND invDetalle.costo > 0
AND invDetalle.coddoc = 1
AND invEncabezado.fecdoc BETWEEN @fecini AND @fecfin
AND (invEncabezado.codbod = @codbod OR @codbod = 0)


GROUP BY invEncabezado.coddoc
		,invFamilia.ctaproductoterminado
		,invEncabezado.codcen
		,invEncabezado.item
		,invSubFamilia.ctaproductoterminado
		,invEncabezado.numinv
		,invDetalle.nomart	
		,invEncabezado.docref2
UNION ALL


SELECT
	ISNULL(proEtapas.ctaproductosproceso, 0) AS cuenta
   ,0 AS haber
   ,CONVERT(DECIMAL(18,4), ROUND(SUM(invDetalle.cantidad * invDetalle.preuni), 0)) AS haber
   ,invEncabezado.codcen AS uni_negocio
   ,invEncabezado.item
   ,invDetalle.nomart + ' - OP ' + CAST(invEncabezado.docref2 AS VARCHAR) AS glosa
   ,invEncabezado.coddoc
   ,invEncabezado.numinv
FROM invEncabezado
INNER JOIN invDetalle
	ON invDetalle.numinv = invEncabezado.numinv
		AND invDetalle.coddoc = invEncabezado.coddoc
INNER JOIN invFamilia
	ON invDetalle.codfam = invFamilia.codfam
INNER JOIN invSubFamilia
	ON invDetalle.codfam = invSubFamilia.codfam
		AND invDetalle.codsub = invSubFamilia.codsub


INNER JOIN proOPEtapas
	ON invEncabezado.docref2 = proOPEtapas.idOP
INNER JOIN proEtapas
	ON proOPEtapas.etapa = proEtapas.codEtapa   AND proOPEtapas.periodo = proEtapas.periodo
WHERE proOPEtapas.ultetapa = 1
AND (invEncabezado.tipcom = 0
AND invEncabezado.numcom = 0)
AND invDetalle.costo > 0
AND invDetalle.coddoc = 1
AND invEncabezado.fecdoc BETWEEN @fecini AND @fecfin	
AND (invEncabezado.codbod = @codbod OR @codbod = 0)

GROUP BY invEncabezado.coddoc
		,invEncabezado.codcen
		,invEncabezado.item
		,proEtapas.ctaproductosproceso
		,invEncabezado.numinv
		,invDetalle.nomart
		,invEncabezado.docref2
ORDER BY invEncabezado.codcen, invEncabezado.item, haber