ALTER PROCEDURE [dbo].[sp_proOpCargaOrigenNP]
(
	@codbus        VARCHAR(200) = '', 
	@cliente       INT          = 0, 
	@fecha_entrega DATETIME, 
	@idop          INT          = 0, 
	@tipo          INT          = 0, 
	@codSuc        INT          = 0,
	@receta		INT			 = 0
)
AS

DECLARE @periodo INT = (SELECT periodo FROM ProParametros)
DECLARE @periodoOP INT =  (SELECT TOP(1) YEAR(fecing) FROM proOP WHERE idOP = @IDOP)

     IF @tipo = 0
         BEGIN
             SELECT cotNotaPedidoDetalle.numdoc, 
                    cotNotaPedidoDetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					cotNotaPedidoDetalle.glosa,
                    conCtacte.rutcte, 
                    conCtacte.digcte, 
                    CAST(conCtacte.rutcte AS VARCHAR) + '-' + conCtacte.digcte AS rut, 
                    conCtacte.nomcte, 
                    cotNotaPedidoDetalle.fecha_entrega, 
					invArticulos.stogen stogen,
                    cotNotaPedidoDetalle.cantidad, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) AS cant_pro, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) - cotNotaPedidoDetalle.cant_pro AS saldo, 
                    0 AS cantpro, 
                    0.00 AS producir, 
                    0 AS linea, 
                    0 AS checked, 
                    @periodo AS periodo,
					cotNotaPedidoDetalle.idlinea,
					cotNotaPedidoDetalle.canalt
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN invUnidadMedida ON invArticulos.coduni = invUnidadMedida.coduni
                  INNER JOIN invFamilia ON invArticulos.codfam = invFamilia.codfam
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
													 AND proReceta.periodo = @periodo
             WHERE(invFamilia.productoterminado = 1)
                  AND (invArticulos.codbus = @codbus
                       OR @codbus = '')
                  AND (conCtacte.rutcte = @cliente
                       OR @cliente = 0)
                  --AND (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_pro) >= 0
                  AND (cotNotaPedidoDetalle.coddoc = 2)
                  AND (cotNotaPedidoDetalle.fecha_entrega <= @fecha_entrega)
                  AND ((cotNotaPedido.estado <> 2) AND (cotNotaPedido.estado <> 4))
                  AND (cotNotaPedido.tipoVenta = 1)
                  AND (cotNotaPedido.codloc = @codSuc)
				  AND ((cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) > 0)
				  AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					  )
             --     AND EXISTS
            -- (
             --    SELECT TOP (1) proRecetaMaquina.codMaquina
            --     FROM proRecetaMaquina
           --      WHERE(proRecetaMaquina.codarticulo = invArticulos.codbus AND proRecetaMaquina.periodo = @periodo) 
			--)
             UNION
             SELECT cotNotaPedidoDetalle.numdoc, 
                    cotNotaPedidoDetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					cotNotaPedidoDetalle.glosa,
                    conCtacte.rutcte, 
                    conCtacte.digcte, 
                    CAST(conCtacte.rutcte AS VARCHAR) + '-' + conCtacte.digcte AS rut, 
                    conCtacte.nomcte, 
                    cotNotaPedidoDetalle.fecha_entrega, 
					invArticulos.stogen stogen,
                    cotNotaPedidoDetalle.cantidad, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) AS cant_pro, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) - cotNotaPedidoDetalle.cant_pro AS saldo,
                    0 AS cantpro, 
                    proOPDetalleNP.cantidad AS producir, 
                    0 AS linea, 
                    1 AS checked, 
                    @periodoOP AS periodo,
					cotNotaPedidoDetalle.idlinea,
					cotNotaPedidoDetalle.canalt
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN invUnidadMedida ON invArticulos.coduni = invUnidadMedida.coduni
                  INNER JOIN proOPDetalleNP ON invArticulos.codbus = proOPDetalleNP.codbus
                                               AND cotNotaPedido.numdoc = proOPDetalleNP.NP
											   AND cotNotaPedidoDetalle.idlinea = proOPDetalleNP.idlinea
                                               AND (cotNotaPedidoDetalle.coddoc = 2)
                                               AND (proOPDetalleNP.IDOP  =  @idop)
                                               AND (cotNotaPedido.codloc =  @codSuc)
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
											   AND proReceta.periodo = @periodo
			 WHERE ((cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) > 0)
				  AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					  )
             ORDER BY checked, 
                      cotNotaPedidoDetalle.numdoc DESC, 
                      invArticulos.codbus DESC;
     END;
     IF @tipo = 1
         BEGIN
             SELECT cotNotaPedidoDetalle.numdoc, 
                    cotNotaPedidoDetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					cotNotaPedidoDetalle.glosa,
                    conCtacte.rutcte, 
                    conCtacte.digcte, 
                    CAST(conCtacte.rutcte AS VARCHAR) + '-' + conCtacte.digcte AS rut, 
                    conCtacte.nomcte, 
                    cotNotaPedidoDetalle.fecha_entrega, 
					invArticulos.stogen stogen,
                    cotNotaPedidoDetalle.cantidad, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) AS cant_pro, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) - cotNotaPedidoDetalle.cant_pro AS saldo,
                    0 AS cantpro, 
                    0.00 AS producir, 
                    0 AS linea, 
                    0 AS checked, 
                    @periodo AS periodo,
					cotNotaPedidoDetalle.idlinea,
					cotNotaPedidoDetalle.canalt
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN invUnidadMedida ON invArticulos.coduni = invUnidadMedida.coduni
                  INNER JOIN invFamilia ON invArticulos.codfam = invFamilia.codfam
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
													 AND proReceta.periodo = @periodo
             WHERE(invFamilia.productoterminado = 1)
                  AND (invArticulos.codbus = @codbus
                       OR @codbus = '')
                  AND (conCtacte.rutcte = @cliente
                       OR @cliente = 0)
                  --AND (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_pro) <> 0
				  AND ((cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) - cotNotaPedidoDetalle.cant_pro) > 0
                  AND (cotNotaPedidoDetalle.coddoc = 2)
                  AND (cotNotaPedidoDetalle.fecha_entrega <= @fecha_entrega)
                  AND (cotNotaPedido.estado <> 2)
				  AND (cotNotaPedido.estado <> 4)
                  AND (cotNotaPedido.tipoVenta = 1)
                  AND (cotNotaPedido.codloc = @codSuc)
				  AND ((cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) > 0)
				  AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					  )
                 -- AND EXISTS
              -- (
             --    SELECT TOP (1) proRecetaMaquina.codMaquina
            --     FROM proRecetaMaquina
           --      WHERE(proRecetaMaquina.codarticulo = invArticulos.codbus AND proRecetaMaquina.periodo = @periodo) 
			--)
             UNION
             SELECT cotNotaPedidoDetalle.numdoc, 
                    cotNotaPedidoDetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					cotNotaPedidoDetalle.glosa,
                    conCtacte.rutcte, 
                    conCtacte.digcte, 
                    CAST(conCtacte.rutcte AS VARCHAR) + '-' + conCtacte.digcte AS rut, 
                    conCtacte.nomcte, 
                    cotNotaPedidoDetalle.fecha_entrega, 
					invArticulos.stogen stogen,
                    cotNotaPedidoDetalle.cantidad, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) AS cant_pro, 
                    (cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) - cotNotaPedidoDetalle.cant_pro AS saldo, 
                    0 AS cantpro, 
                    proOPDetalleNP.cantidad AS producir, 
                    0 AS linea, 
                    1 AS checked, 
                    @periodoOP AS periodo,
					cotNotaPedidoDetalle.idlinea,
					cotNotaPedidoDetalle.canalt
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN invUnidadMedida ON invArticulos.coduni = invUnidadMedida.coduni
                  INNER JOIN proOPDetalleNP ON invArticulos.codbus = proOPDetalleNP.codbus
                                               AND cotNotaPedido.numdoc = proOPDetalleNP.NP
											   AND cotNotaPedidoDetalle.idlinea = proOPDetalleNP.idlinea
                                               AND (cotNotaPedidoDetalle.coddoc = 2)
                                               AND (proOPDetalleNP.IDOP = @idop)
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
											   AND proReceta.periodo = @periodo
             WHERE (cotNotaPedido.codloc = @codSuc)
				   AND ((cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des) > 0)
				   AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					   )
				   --AND cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_pro <> 0
             ORDER BY checked, cotNotaPedidoDetalle.numdoc DESC, invArticulos.codbus DESC;
     END;