ALTER PROCEDURE [dbo].[sp_proOpCargaOrigenSolicitud]
(
	@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 invEncabezado.numinv AS numdoc, 
                    invdetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					invEncabezado.glosa,
                    invdetalle.cantidad, 
                    0.00 AS producir, 
                    0 AS linea, 
                    0 AS checked, 
                    invEncabezado.fecdoc, 
                    invEncabezado.fecven AS fecha_entrega, 
                    dbo.CantidadProducidaSol(invEncabezado.numinv, invArticulos.codbus) AS cant_pro, 
                    0 AS rut,
                    @periodo as periodo
             INTO #A
             FROM invEncabezado
                  INNER JOIN invDetalle ON invEncabezado.coddoc = invDetalle.coddoc
                                           AND invEncabezado.numinv = invDetalle.numinv
                  INNER JOIN invUnidadMedida
                  INNER JOIN invArticulos ON invUnidadMedida.coduni = invArticulos.coduni ON invDetalle.codbus = invArticulos.codbus
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
													 AND proReceta.periodo = @periodo
             WHERE invEncabezado.coddoc   = 8
                   AND invEncabezado.tipo = 3
                   AND (invArticulos.codbus = @codbus OR @codbus = '')
                   AND invEncabezado.fecven <= @fecha_entrega
                   AND invEncabezado.coddoc = 8
                   AND invEncabezado.codsuc = @codsuc
				   AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					   )
             UNION
             SELECT invEncabezado.numinv AS numdoc, 
                    invDetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					invEncabezado.glosa, 
                    invDetalle.cantidad, 
                    proOPDetalleSolicitud.cantidad AS producir, 
                    0 AS linea, 
                    1 AS checked, 
                    invEncabezado.fecdoc, 
                    invEncabezado.fecven AS fecha_entrega, 
                    dbo.CantidadProducidaSol(invEncabezado.numinv, invArticulos.codbus) AS cant_pro, 
                    0 AS rut,
                    @periodoOP AS periodo
             FROM invEncabezado
                  INNER JOIN invDetalle ON invEncabezado.coddoc = invDetalle.coddoc
                                           AND invEncabezado.numinv = invDetalle.numinv
                  INNER JOIN invUnidadMedida
                  INNER JOIN invArticulos ON invUnidadMedida.coduni = invArticulos.coduni ON invDetalle.codbus = invArticulos.codbus
                  INNER JOIN proOPDetalleSolicitud ON invDetalle.numinv = proOPDetalleSolicitud.numdoc
                                                      AND invDetalle.codbus = proOPDetalleSolicitud.codbus
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
													 AND proReceta.periodo = @periodo
             WHERE invEncabezado.coddoc = 8
                   AND invEncabezado.tipo = 3
                   AND proOPDetalleSolicitud.idop = @idop
                   AND invEncabezado.codsuc = @codsuc
				   AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					   )
             SELECT *, 
                    cantidad - cant_pro AS saldo
             FROM #A
			 WHERE (cantidad - cant_pro) >= 0
             ORDER BY checked;
     END;
     IF @tipo = 1
         BEGIN
             SELECT invEncabezado.numinv AS numdoc, 
                    invdetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					invEncabezado.glosa, 
                    invdetalle.cantidad, 
                    0.00 AS producir, 
                    0 AS linea, 
                    0 AS checked, 
                    invEncabezado.fecdoc, 
                    invEncabezado.fecven AS fecha_entrega, 
                    dbo.CantidadProducidaSol(invEncabezado.numinv, invArticulos.codbus) AS cant_pro, 
                    0 AS rut,
                    @periodo as periodo
             INTO #B
             FROM invEncabezado
                  INNER JOIN invDetalle ON invEncabezado.coddoc = invDetalle.coddoc
                                           AND invEncabezado.numinv = invDetalle.numinv
                  INNER JOIN invUnidadMedida
                  INNER JOIN invArticulos ON invUnidadMedida.coduni = invArticulos.coduni ON invDetalle.codbus = invArticulos.codbus
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
													 AND proReceta.periodo = @periodo
             WHERE invEncabezado.coddoc = 8
                   AND invEncabezado.tipo = 3
                   AND (invArticulos.codbus = @codbus OR @codbus = '')
                   AND invEncabezado.fecven <= @fecha_entrega
                   AND invEncabezado.coddoc = 8
                   AND invEncabezado.codsuc = @codsuc
				   AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					   )
             UNION
             SELECT invEncabezado.numinv AS numdoc, 
                    invDetalle.numlin, 
                    invArticulos.codbus, 
                    invArticulos.nomart, 
					invEncabezado.glosa, 
                    invDetalle.cantidad, 
                    proOPDetalleSolicitud.cantidad AS producir, 
                    0 AS linea, 
                    1 AS checked, 
                    invEncabezado.fecdoc, 
                    invEncabezado.fecven AS fecha_entrega, 
                    dbo.CantidadProducidaSol(invEncabezado.numinv, invArticulos.codbus) AS cant_pro, 
                    0 AS rut,
                    @periodoOP AS periodo
             FROM invEncabezado
                  INNER JOIN invDetalle ON invEncabezado.coddoc = invDetalle.coddoc
                                           AND invEncabezado.numinv = invDetalle.numinv
                  INNER JOIN invUnidadMedida
                  INNER JOIN invArticulos ON invUnidadMedida.coduni = invArticulos.coduni ON invDetalle.codbus = invArticulos.codbus
                  INNER JOIN proOPDetalleSolicitud ON invDetalle.numinv = proOPDetalleSolicitud.numdoc
                                                      AND invDetalle.codbus = proOPDetalleSolicitud.codbus
				  LEFT JOIN proReceta ON invArticulos.codbus = proreceta.codArticulo 
													 AND proReceta.periodo = @periodo
             WHERE invEncabezado.coddoc = 8
                   AND invEncabezado.tipo = 3
                   AND proOPDetalleSolicitud.idop = @idop
                   AND invEncabezado.codsuc = @codsuc
				   AND (
						  @receta = 0
						  OR (@receta = 1 AND ISNULL(proReceta.codReceta,0) = 0)
						  OR (@receta = 2 AND ISNULL(proReceta.codReceta,0) > 0)
					   )
             SELECT *, 
                    cantidad - cant_pro AS saldo
             FROM #B
             WHERE cantidad - cant_pro > 0
             ORDER BY checked;
     END;

     --OLD
     --SELECT    invEncabezado.numinv as numdoc,
     --invdetalle.numlin, 
     --invArticulos.codbus, 
     --invArticulos.nomart,
     --invdetalle.cantidad,
     -- 0.00 AS producir,
     -- 0 AS linea,
     -- 0 AS checked,
     -- invEncabezado.fecdoc,
     -- invEncabezado.fecven as fecha_entrega
     --,dbo.CantidadProducidaSol(invEncabezado.numinv,invArticulos.codbus) AS cant_pro
     --,0 as rut
     --INTO #A
     --FROM         invEncabezado INNER JOIN
     --invDetalle ON invEncabezado.coddoc = invDetalle.coddoc AND invEncabezado.numinv = invDetalle.numinv INNER JOIN
     --invUnidadMedida INNER JOIN
     --invArticulos ON invUnidadMedida.coduni = invArticulos.coduni ON invDetalle.codbus = invArticulos.codbus
     --WHERE invEncabezado.coddoc = 8
     --AND invEncabezado.tipref1=1
     --AND (invArticulos.codbus = @codbus or @codbus='') 
     --AND  invEncabezado.fecven <= @fecha_entrega
     --AND invEncabezado.coddoc = 8
     --UNION
     --SELECT     invEncabezado.numinv AS numdoc, 
     --invDetalle.numlin,
     --invArticulos.codbus,
     --invArticulos.nomart,
     --invDetalle.cantidad,
     --proOPDetalleSolicitud.cantidad AS producir,
     --0 AS linea, 1 AS checked, 
     --invEncabezado.fecdoc, 
     --invEncabezado.fecven AS fecha_entrega,
     --dbo.CantidadProducidaSol(invEncabezado.numinv, invArticulos.codbus) AS cant_pro,
     --0 AS rut
     --FROM         invEncabezado INNER JOIN
     --                      invDetalle ON invEncabezado.coddoc = invDetalle.coddoc AND invEncabezado.numinv = invDetalle.numinv INNER JOIN
     --                      invUnidadMedida INNER JOIN
     --                      invArticulos ON invUnidadMedida.coduni = invArticulos.coduni ON invDetalle.codbus = invArticulos.codbus INNER JOIN
     --                      proOPDetalleSolicitud ON invDetalle.numinv = proOPDetalleSolicitud.numdoc AND invDetalle.codbus = proOPDetalleSolicitud.codbus
     --WHERE invEncabezado.coddoc = 8
     --AND invEncabezado.tipref1=1
     --AND  proOPDetalleSolicitud.idop=@idop
     --SELECT * ,cantidad - cant_pro as saldo FROM #A
     --ORDER BY checked
     --SELECT     cotNotaPedidoDetalle.numdoc, cotNotaPedidoDetalle.numlin, invArticulos.codbus, 
     --                      invArticulos.nomart, conCtacte.rutcte, conCtacte.digcte, 
     --                      cast(conCtacte.rutcte as varchar) + '-' + conCtacte.digcte as rut,conCtacte.nomcte, cotNotaPedidoDetalle.fecha_entrega, 
     --                      cotNotaPedidoDetalle.cantidad, cotNotaPedidoDetalle.cant_pro , cotNotaPedidoDetalle.cantidad -cotNotaPedidoDetalle.cant_pro AS saldo
     --,0 as cantpro,0.00 as producir,0 as linea,0 as checked
     --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
     --WHERE (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
     --UNION 
     --SELECT     cotNotaPedidoDetalle.numdoc, cotNotaPedidoDetalle.numlin, invArticulos.codbus, invArticulos.nomart, conCtacte.rutcte, conCtacte.digcte, 
     --CAST(conCtacte.rutcte AS varchar) + '-' + conCtacte.digcte AS rut, conCtacte.nomcte, cotNotaPedidoDetalle.fecha_entrega, cotNotaPedidoDetalle.cantidad, 
     --cotNotaPedidoDetalle.cant_pro, cotNotaPedidoDetalle.cantidad -cotNotaPedidoDetalle.cant_pro AS saldo, 0 AS cantpro, proOPDetalleNP.cantidad AS producir, 0 AS linea
     --,1 as checked
     --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.coddoc = 2)
     --AND proOPDetalleNP.IDOP = @idop
     --ORDER BY cotNotaPedidoDetalle.numdoc desc,invArticulos.codbus desc