ALTER  PROCEDURE [dbo].[sp_proEntrada_PorProcesarNP]
(
	  @etapa int = 0
	, @id_op int = 0
	, @maquina int =0
	, @codbus varchar(50) = ''
	, @ocultasaldo int = 0
	, @np int = 0
    , @codsuc int
	, @tipoOP int
	, @solicitud int = 0
)
AS

IF @ocultasaldo = 0 --Muestra todo

SELECT  proOPEtapas.idOp 
		,proOPEtapas.idsubOP 
		,proOPEtapas.linea 
		,proOPEtapas.lineapre   
		,proOPEtapas.etapa  
		,proOPEtapas.tipo 
		,proOPEtapas.inicio    
		,proOPEtapas.termino   
		,proOPEtapas.maquina   
		,proOPEtapas.cantTotal    
		,proOPEtapas.cantProceso as cantProceso   
		,proOPEtapas.formula    
		,invArticulos.nomart  
		,invArticulos.codbus    
		,proOP.tipoOP          
		,proMaquinas.nomMaquina    
		,0 as estado            
		--,SUM(isnull(proProcesos.cantidad,0)) AS cantproc
		,SUM(isnull(proLiberacion.cantidadBase,0)) AS cantproc
		,SUM(isnull(proLiberacion.cantidadprocesada_alt,0)) AS cantprocalt
		--,SUM(dbo.CantidadPredecesora(proOPEtapas.idOp,proOPEtapas.etapa,invArticulos.codbus ,proOPEtapas.tipo ,proOPEtapas.lineapre)) as cantpred
		,SUM(dbo.CantidadPredecesora(proOPEtapas.idOp, proOPEtapas.lineapre, invArticulos.codbus, proOPEtapas.tipo, proOPEtapas.lineapre)) AS cantpred
		--,(proOPEtapas.cantAlt - sum(isnull(proProcesos.cantidad,0))) as saldo
		,(proOPEtapas.cantProceso - sum(isnull(proLiberacion.cantidadBase,0))) as saldo
		,(proOPEtapas.cantalt - sum(isnull(proLiberacion.cantidadprocesada_alt,0))) as saldosalt
		, dbo.proNotasPedidoPorOP(proOPEtapas.idOp) as notasPedido
		, '0' as solicitudes
        ,proOPEtapas.periodo
        ,0 as cantProd
		,proOPEtapas.cantalt as cantAlt
		,prorecetaEtapas.factor
FROM   proOPEtapas
		INNER JOIN proOP on proOPEtapas.idOp = proOP.idOP AND proop.codsuc=@codsuc  AND  proOPEtapas.periodo= YEAR(proOP.Fecing)
		INNER JOIN invArticulos on invArticulos.codbus = proOP.codbus
		LEFT OUTER JOIN	 proLiberacion on proOPEtapas.idOp = proLiberacion.idOP and proOPEtapas.linea = proLiberacion.linea and proLiberacion.etapa = proOPEtapas.etapa
		INNER JOIN proMaquinas on proOPEtapas.maquina = proMaquinas.codMaquina AND proOPEtapas.periodo = proMaquinas.periodo
		LEFT OUTER JOIN proOPDetalleNP on proOPEtapas.idOp = proOPDetalleNP.idOP
		LEFT OUTER JOIN proRecetaEtapas ON proOPEtapas.etapa = proRecetaEtapas.codEtapa AND proOP.codbus = proRecetaEtapas.codArticulo
		
		

--invArticulos 
--		INNER JOIN	proOP ON invArticulos.codbus = proOP.codbus
--		INNER JOIN	proOPEtapas ON proOP.idOP = proOPEtapas.idOp
--		--LEFT OUTER JOIN	proProcesos ON proOPEtapas.idOp = proProcesos.idOP AND proOPEtapas.linea = proProcesos.lineaEtapa
--		--NUEVO
--		LEFT OUTER JOIN	 proLiberacion on proOPEtapas.idOp = proLiberacion.idOP and proOPEtapas.linea = proLiberacion.linea and proLiberacion.etapa = proOPEtapas.etapa
--		INNER JOIN proMaquinas on proOPEtapas.maquina = proMaquinas.codMaquina 
		
WHERE	(proOP.nulo = 0)
		AND (proOPEtapas.etapa = @etapa ) 
		AND (proOPEtapas.idOP = @id_op OR @id_op = 0)
		AND (proOPEtapas.maquina = @maquina OR @maquina= 0)	
		AND (proOP.codbus = @codbus OR @codbus = '')
		AND (proOPDetalleNP.NP = @np or @np= 0)
		AND (proOP.tipoOP = @tipoOP or @tipoOP= 0)
		

GROUP BY proOPEtapas.idOp
		,proOP.tipoOP
		,proOPEtapas.idsubOP
		,proOPEtapas.linea
		,proOPEtapas.lineapre
		,proOPEtapas.etapa
		,proOPEtapas.tipo
		,proOPEtapas.inicio
		,proOPEtapas.termino
		,proOPEtapas.maquina
		,proOPEtapas.cantTotal
		,proOPEtapas.cantProceso
		,proOPEtapas.formula
		,invArticulos.nomart
		,invArticulos.codbus
		,proMaquinas.nomMaquina
        ,proOpetapas.periodo
		,proOPEtapas.cantalt
		,prorecetaEtapas.factor
HAVING (proOPEtapas.cantAlt - sum(isnull(proLiberacion.cantidadBase,0))) >= 0

	ELSE --Muestra Solo saldo mayor a 0

SELECT   proOPEtapas.idOp
		,proOPEtapas.idsubOP
		,proOPEtapas.linea
		,proOPEtapas.lineapre
		,proOPEtapas.etapa
		,proOPEtapas.tipo
		,proOPEtapas.inicio
		,proOPEtapas.termino
		,proOPEtapas.maquina
		,proOPEtapas.cantTotal
		,proOPEtapas.cantProceso as cantProceso
		,proOPEtapas.formula
		,invArticulos.nomart
		,invArticulos.codbus
		,proOP.tipoOP
		,proMaquinas.nomMaquina
		,0 as estado
		--,SUM(isnull(proProcesos.cantidad,0)) AS cantproc
		,SUM(isnull(proLiberacion.cantidadBase,0)) AS cantproc
		,SUM(isnull(proLiberacion.cantidadprocesada_alt,0)) AS cantprocalt
		--,SUM(dbo.CantidadPredecesora(proOPEtapas.idOp,proOPEtapas.etapa,invArticulos.codbus ,proOPEtapas.tipo ,proOPEtapas.lineapre)) as cantpred
		,SUM(dbo.CantidadPredecesora(proOPEtapas.idOp, proOPEtapas.lineapre, invArticulos.codbus, proOPEtapas.tipo, proOPEtapas.lineapre)) AS cantpred
		--,(proOPEtapas.cantAlt - sum(isnull(proProcesos.cantidad,0))) as saldo
		,(proOPEtapas.cantProceso - sum(isnull(proLiberacion.cantidadBase,0))) as saldo
		,(proOPEtapas.cantalt - sum(isnull(proLiberacion.cantidadprocesada_alt,0))) as saldosalt
		,dbo.proNotasPedidoPorOP(proOPEtapas.idOp) as notasPedido
		,'0' as solicitudes
	    ,proOPetapas.periodo
        ,0 as cantProd
		,proOPEtapas.cantalt as cantAlt
		,prorecetaEtapas.factor
FROM   proOPEtapas
		INNER JOIN proOP on proOPEtapas.idOp = proOP.idOP  AND proop.codsuc=@codsuc   AND  proOPEtapas.periodo= YEAR(proOP.Fecing)
		INNER JOIN invArticulos on invArticulos.codbus = proOP.codbus
		LEFT OUTER JOIN	 proLiberacion on proOPEtapas.idOp = proLiberacion.idOP and proOPEtapas.linea = proLiberacion.linea and proLiberacion.etapa = proOPEtapas.etapa
		INNER JOIN proMaquinas on proOPEtapas.maquina = proMaquinas.codMaquina AND proOPEtapas.periodo = proMaquinas.periodo
		LEFT OUTER JOIN proOPDetalleNP on proOPEtapas.idOp = proOPDetalleNP.idOP
		LEFT OUTER JOIN proRecetaEtapas ON proOPEtapas.etapa = proRecetaEtapas.codEtapa AND proOP.codbus = proRecetaEtapas.codArticulo		
WHERE	(proOP.nulo = 0)
		AND (proOPEtapas.etapa = @etapa ) 
		AND (proOPEtapas.idOP = @id_op OR @id_op = 0)
		AND (proOPEtapas.maquina = @maquina OR @maquina= 0)			
		AND (proOP.codbus = @codbus OR @codbus = '')
		AND (proOPDetalleNP.NP = @np or @np= 0)
		AND (proOP.tipoOP = @tipoOP or @tipoOP= 0)
					
GROUP BY proOPEtapas.idOp
		,proOP.tipoOP
		,proOPEtapas.idsubOP
		,proOPEtapas.linea
		,proOPEtapas.lineapre
		,proOPEtapas.etapa
		,proOPEtapas.tipo
		,proOPEtapas.inicio
		,proOPEtapas.termino
		,proOPEtapas.maquina
		,proOPEtapas.cantTotal
		,proOPEtapas.cantProceso
		,proOPEtapas.formula
		,invArticulos.nomart
		,invArticulos.codbus
		,proMaquinas.nomMaquina
        ,proOpetapas.periodo
		,proOPEtapas.cantalt
		,prorecetaEtapas.factor
HAVING (proOPEtapas.cantProceso - sum(isnull(proLiberacion.cantidadBase,0))) > 0