ALTER  PROCEDURE [dbo].[sp_invCostoPendiente]
(
 @agno int,
 @codbusi	 varchar(10)='0',
 @codbusf	 varchar(10)='ZZZZZZZZZ',
 @famini     varchar(10)='0',
 @famfin     varchar(10)='ZZZ',
 @subini     varchar(10)='0',
 @subfin     varchar(10)='ZZZ'
)	
AS 
    	
IF @codbusi='*'
BEGIN
SET @codbusi='0'
SET @codbusf= (SELECT REPLICATE('Z',COALESCE((SELECT top 1 (larfam + larsub + larart) FROM invParametros),0)))
SET @codbusf= (SELECT REPLICATE('Z',COALESCE((SELECT top 1 (larfam + larsub + larart) FROM invParametros),0)))
END


IF @famini='*'
BEGIN
SET @famini='0'
SET @famfin= (SELECT REPLICATE('Z',COALESCE((SELECT top 1 larfam FROM invParametros),0)))
END


IF @subfin='*'
BEGIN
SET @subini='0'
SET @subfin= (SELECT REPLICATE('Z',COALESCE((SELECT top 1 larsub FROM invParametros),0)))
END



SELECT        invArticulos.codbus, fechacosto,procesarcosto
into #TABLAARTICULOS
FROM            invArticulos INNER JOIN
                         invSubFamilia ON invArticulos.codfam = invSubFamilia.codfam AND invArticulos.codsub = invSubFamilia.codsub INNER JOIN
                         invFamilia ON invArticulos.codfam = invFamilia.codfam AND invSubFamilia.codfam = invFamilia.codfam INNER JOIN
                         invUnidadMedida ON invArticulos.coduni = invUnidadMedida.coduni
WHERE	invarticulos.codfam BETWEEN  rtrim(@famini) AND rtrim(@famfin)
AND		invarticulos.codsub BETWEEN  rtrim(@subini)  AND rtrim(@subfin) 
AND 	invarticulos.codbus BETWEEN rtrim(@codbusi) AND rtrim(@codbusf)
AND     invfamilia.controlstock=1

SELECT        ENC.codsii, ENC.numinv,
			  VenReferencias.codsiiref AS tipref1,
			  VenReferencias.numinvref AS docref1
INTO #REFRENCIAS
FROM            venEncabezado AS ENC INNER JOIN
venDetalle ON ENC.coddoc = venDetalle.coddoc AND ENC.grudoc = venDetalle.grudoc AND ENC.numinv = venDetalle.numinv INNER JOIN
invArticulos ON venDetalle.codbus = invArticulos.codbus INNER JOIN
VenReferencias ON ENC.numinv = VenReferencias.numinv AND ENC.codsii = VenReferencias.codsii
WHERE ENC.grudoc <> 50 
AND VenReferencias.codsiiref IN(50,51,52)
AND (YEAR(ENC.fecdoc) = @agno)
GROUP BY ENC.codsii, ENC.numinv, VenReferencias.codsiiref, VenReferencias.numinvref


UNION ALL

SELECT codsii,ENC.numinv,tipref1,docref1 

FROM    venEncabezado ENC INNER JOIN
		venDetalle ON ENC.coddoc = venDetalle.coddoc AND ENC.grudoc = venDetalle.grudoc AND 
		ENC.numinv = venDetalle.numinv INNER JOIN
		#TABLAARTICULOS invArticulos ON venDetalle.codbus = invArticulos.codbus
WHERE ENC.grudoc <> 50 
AND ENC.tipref1 IN(50,51,52)
AND ENC.tipref1 <> 0
group by codsii,ENC.numinv,tipref1,docref1



SELECT invEncabezado.CODSII,invEncabezado.numinv, invArticulos.codbus   ---INVENTARIO
INTO #ARTICULOSCOSTOPENDIENTES
FROM            invEncabezado INNER JOIN
                        invDetalle ON invEncabezado.coddoc = invDetalle.coddoc AND invEncabezado.numinv = invDetalle.numinv INNER JOIN
                        #TABLAARTICULOS invArticulos ON invDetalle.codbus = invArticulos.codbus
WHERE (YEAR(invEncabezado.fecdoc) = @agno)
AND invDetalle.fechacosto <  invArticulos.fechacosto
AND invEncabezado.coddoc <> 6 AND invEncabezado.coddoc <> 8
GROUP BY invEncabezado.CODSII,invEncabezado.numinv, invArticulos.codbus

	
UNION ALL

SELECT venEncabezado.CODSII,venEncabezado.numinv,invArticulos.codbus ---FACTURAS
FROM            venEncabezado INNER JOIN
                        venDetalle ON venEncabezado.coddoc = venDetalle.coddoc AND venEncabezado.grudoc = venDetalle.grudoc AND 
                        venEncabezado.numinv = venDetalle.numinv INNER JOIN
                        #TABLAARTICULOS invArticulos ON venDetalle.codbus = invArticulos.codbus AND venDetalle.fechacosto < invArticulos.fechacosto
WHERE YEAR(venEncabezado.fecdoc) = @agno
AND venDetalle.fechacosto <  invArticulos.fechacosto
AND venEncabezado.grudoc=10
AND (venEncabezado.codsii NOT IN (55,56,60,61) OR (venEncabezado.codsii IN (55,56,60,61) AND motivo IN (1,4)))   
AND venEncabezado.estado <> 9
	

GROUP BY  venEncabezado.CODSII,venEncabezado.numinv, invArticulos.codbus

UNION ALL

SELECT venEncabezado.CODSII,venEncabezado.numinv, invArticulos.codbus ---GUIAS
FROM            venEncabezado INNER JOIN
                        venDetalle ON venEncabezado.coddoc = venDetalle.coddoc AND venEncabezado.grudoc = venDetalle.grudoc AND 
                        venEncabezado.numinv = venDetalle.numinv INNER JOIN
                        #TABLAARTICULOS invArticulos ON venDetalle.codbus = invArticulos.codbus AND venDetalle.fechacosto < invArticulos.fechacosto
WHERE YEAR(venEncabezado.fecdoc) = @agno
AND venDetalle.fechacosto <  invArticulos.fechacosto
AND venEncabezado.grudoc=50
AND NOT EXISTS(SELECT numinv FROM #REFRENCIAS ER where ER.tipref1=venEncabezado.codsii  AND ER.docref1 = CONVERT(VARCHAR,venEncabezado.numinv))
AND venEncabezado.estado <> 9
GROUP BY  venEncabezado.CODSII,venEncabezado.numinv, invArticulos.codbus
	
UNION ALL


SELECT 0,0,codbus FROM 
#TABLAARTICULOS where 
procesarcosto=1 
AND (codbus IN (SELECT codbus FROM invdetalle where (YEAR(invdetalle.fecdoc) = @agno))
OR  codbus IN (SELECT codbus FROM vendetalle where (YEAR(vendetalle.fecdoc) = @agno)))
	

--SELECT * FROM #ARTICULOSCOSTOPENDIENTES 

SELECT codbus 
FROM #ARTICULOSCOSTOPENDIENTES GROUP BY codbus


SELECT * FROM #ARTICULOSCOSTOPENDIENTES