ALTER PROCEDURE [dbo].[sp_cotCotizacionArticulos]
(
--@numcot int,
--@fechini date,
--@fechfin date,
@numdoci   INT, 
@numdocf   INT, 
@cliente   INT, 
@codsuc    INT, 
@entregai  DATE, --varchar(10),
@entregaf  DATE, --varchar(10),
@codven    INT, 
@codana    INT, 
@coduni    INT, 
@tipo      INT, 
@codfam    VARCHAR(50) = '', 
@codsub    VARCHAR(50) = '', 
@codbusini VARCHAR(50) = '0', 
@codbusfin VARCHAR(50) = 'ZZZZZZZZZZ'
)
AS
     IF @tipo = 1 --CERRADAS
         BEGIN																							            --SE AGREGA venVendedores.codven
             SELECT cotNotaPedidoDetalle.numdoc AS N_Cotizacion, 
                    cotNotaPedido.orden_compra AS Orden_de_Compra, 
                    venVendedores.codven, 
                    venVendedores.nomven AS Vendedor, 
                    RTRIM(conCtacte.rutcte) + '-' + RTRIM(conCtacte.digcte) AS RutDVCliente, 
                    conCtacte.nomcte AS Cliente, 
                    cotNotaPedidoDetalle.cod_articulo AS Articulo, 
                    invArticulos.codfam AS CodFamilia, 
                    invFamilia.nomfam AS NombreFamilia, 
                    invSubFamilia.nomsub AS NombreSubFamilia, 
                    invArticulos.codsub AS CodsubFamilia, 
                    cotNotaPedidoDetalle.nomart AS Descripcion_Articulo, 
                    cotNotaPedidoDetalle.fecha_entrega AS Fecha_Entrega, 
                    cotNotaPedido.fecha_ingreso, 
                    cotNotaPedido.fecha_validez AS Fecha_Vencimiento, 
                    cotNotaPedido.analisis, 
                    cotNotaPedido.costo AS UNegocio, 
                    cotNotaPedidoDetalle.cantidad AS Cantidad_Solicitada, 
                    --cotNotaPedidoDetalle.cant_des AS Cantidad_Despachada, 
                    --cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des AS Saldo, 
                    cotNotaPedidoDetalle.precio, 
                    cotNotaPedidoDetalle.total, 
                    cotNotaPedido.estado, 
                    conUnidadNegocio.idUniNeg, 
                    conUnidadNegocio.descripcion
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN venVendedores ON cotNotaPedido.vendedor = venVendedores.codven
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN invFamilia ON invArticulos.codfam = invFamilia.codfam
                  INNER JOIN invSubFamilia ON invArticulos.codfam = invSubFamilia.codfam
                                              AND invArticulos.codsub = invSubFamilia.codsub
                  INNER JOIN conUnidadNegocio ON cotNotaPedidoDetalle.codcen = conUnidadNegocio.idUniNeg
             WHERE(cotNotaPedido.coddoc = 1)--COTIZACION
                  AND (cotNotaPedido.estado IN(1, 2))--TODAS
                  AND (cotNotaPedido.cliente = @cliente
                       OR @cliente = 0)
                  AND (cotNotaPedido.vendedor = @codven
                       OR @codven = 0)
                  AND ((cotNotaPedido.numdoc >= @numdoci
                        AND cotNotaPedido.numdoc <= @numdocf)
                       OR @numdoci = 0)
                  AND (cotNotaPedido.fecha_ingreso BETWEEN @entregai AND @entregaf)
                  AND (cotNotaPedidoDetalle.codana = @codana
                       OR @codana = 0)
                  AND (cotNotaPedidoDetalle.codcen = @coduni
                       OR @coduni = 0)
                  AND (invArticulos.codfam = @codfam
                       OR @codfam = '')
                  AND (invArticulos.codsub = @codsub
                       OR @codsub = '')
                  AND (invArticulos.codbus BETWEEN @codbusini AND @codbusfin)
                  AND (cotNotaPedido.codloc = @codsuc
                       OR @codsuc = 0)

             --AND (cotNotaPedido.numdoc = @numcot OR @numcot=0)
             --AND (cotNotaPedidoDetalle.fecha_entrega BETWEEN @fechini AND @fechfin)	
             --AND (cotNotaPedido.estado = @estado OR @estado=1)

             ORDER BY cotNotaPedido.numdoc;
     END;
     IF @tipo = 2 --PENDIENTES
         BEGIN																									--SE AGREGA venVendedores.codven
             SELECT cotNotaPedidoDetalle.numdoc AS N_Cotizacion, 
                    cotNotaPedido.orden_compra AS Orden_de_Compra, 
                    venVendedores.codven, 
                    venVendedores.nomven AS Vendedor, 
                    RTRIM(conCtacte.rutcte) + '-' + RTRIM(conCtacte.digcte) AS RutDVCliente, 
                    conCtacte.nomcte AS Cliente, 
                    cotNotaPedidoDetalle.cod_articulo AS Articulo, 
                    invArticulos.codfam AS CodFamilia, 
                    invFamilia.nomfam AS NombreFamilia, 
                    invSubFamilia.nomsub AS NombreSubFamilia, 
                    invArticulos.codsub AS CodsubFamilia, 
                    cotNotaPedidoDetalle.nomart AS Descripcion_Articulo, 
                    cotNotaPedidoDetalle.fecha_entrega AS Fecha_Entrega, 
                    cotNotaPedido.fecha_ingreso, 
                    cotNotaPedido.fecha_validez AS Fecha_Vencimiento, 
                    cotNotaPedido.analisis, 
                    cotNotaPedido.costo AS UNegocio, 
                    cotNotaPedidoDetalle.cantidad AS Cantidad_Solicitada, 
                    --cotNotaPedidoDetalle.cant_des AS Cantidad_Despachada, 
                    --cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des AS Saldo, 
                    cotNotaPedidoDetalle.precio, 
                    cotNotaPedidoDetalle.total, 
                    cotNotaPedido.estado, 
                    conUnidadNegocio.idUniNeg, 
                    conUnidadNegocio.descripcion
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN venVendedores ON cotNotaPedido.vendedor = venVendedores.codven
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN invFamilia ON invArticulos.codfam = invFamilia.codfam
                  INNER JOIN invSubFamilia ON invArticulos.codfam = invSubFamilia.codfam
                                              AND invArticulos.codsub = invSubFamilia.codsub
                  INNER JOIN conUnidadNegocio ON cotNotaPedidoDetalle.codcen = conUnidadNegocio.idUniNeg
             WHERE(cotNotaPedido.coddoc = 1)--COTIZACION
                  AND (cotNotaPedido.estado = 2)--CERRADAS
                  AND (cotNotaPedido.cliente = @cliente
                       OR @cliente = 0)
                  AND (cotNotaPedido.vendedor = @codven
                       OR @codven = 0)
                  AND ((cotNotaPedido.numdoc >= @numdoci
                        AND cotNotaPedido.numdoc <= @numdocf)
                       OR @numdoci = 0)
                  AND (cotNotaPedido.fecha_ingreso BETWEEN @entregai AND @entregaf)
                  AND (cotNotaPedidoDetalle.codana = @codana
                       OR @codana = 0)
                  AND (cotNotaPedidoDetalle.codcen = @coduni
                       OR @coduni = 0)
                  AND (invArticulos.codfam = @codfam
                       OR @codfam = '')
                  AND (invArticulos.codsub = @codsub
                       OR @codsub = '')
                  AND (invArticulos.codbus BETWEEN @codbusini AND @codbusfin)
                  AND (cotNotaPedido.codloc = @codsuc
                       OR @codsuc = 0)

             --AND (cotNotaPedido.numdoc = @numcot OR @numcot=0)
             --AND (cotNotaPedidoDetalle.fecha_entrega BETWEEN @fechini AND @fechfin)	
             --AND (cotNotaPedido.estado = @estado OR @estado=1)
             ORDER BY cotNotaPedido.numdoc;
     END;
	 IF @tipo = 3 --ABIERTAS
         BEGIN																							            --SE AGREGA venVendedores.codven
             SELECT cotNotaPedidoDetalle.numdoc AS N_Cotizacion, 
                    cotNotaPedido.orden_compra AS Orden_de_Compra, 
                    venVendedores.codven, 
                    venVendedores.nomven AS Vendedor, 
                    RTRIM(conCtacte.rutcte) + '-' + RTRIM(conCtacte.digcte) AS RutDVCliente, 
                    conCtacte.nomcte AS Cliente, 
                    cotNotaPedidoDetalle.cod_articulo AS Articulo, 
                    invArticulos.codfam AS CodFamilia, 
                    invFamilia.nomfam AS NombreFamilia, 
                    invSubFamilia.nomsub AS NombreSubFamilia, 
                    invArticulos.codsub AS CodsubFamilia, 
                    cotNotaPedidoDetalle.nomart AS Descripcion_Articulo, 
                    cotNotaPedidoDetalle.fecha_entrega AS Fecha_Entrega, 
                    cotNotaPedido.fecha_ingreso, 
                    cotNotaPedido.fecha_validez AS Fecha_Vencimiento, 
                    cotNotaPedido.analisis, 
                    cotNotaPedido.costo AS UNegocio, 
                    cotNotaPedidoDetalle.cantidad AS Cantidad_Solicitada, 
                    --cotNotaPedidoDetalle.cant_des AS Cantidad_Despachada, 
                    --cotNotaPedidoDetalle.cantidad - cotNotaPedidoDetalle.cant_des AS Saldo, 
                    cotNotaPedidoDetalle.precio, 
                    cotNotaPedidoDetalle.total, 
                    cotNotaPedido.estado, 
                    conUnidadNegocio.idUniNeg, 
                    conUnidadNegocio.descripcion
             FROM cotNotaPedido
                  INNER JOIN cotNotaPedidoDetalle ON cotNotaPedido.coddoc = cotNotaPedidoDetalle.coddoc
                                                     AND cotNotaPedido.numdoc = cotNotaPedidoDetalle.numdoc
                  INNER JOIN conCtacte ON cotNotaPedido.cliente = conCtacte.rutcte
                  INNER JOIN venVendedores ON cotNotaPedido.vendedor = venVendedores.codven
                  INNER JOIN invArticulos ON cotNotaPedidoDetalle.cod_articulo = invArticulos.codbus
                  INNER JOIN invFamilia ON invArticulos.codfam = invFamilia.codfam
                  INNER JOIN invSubFamilia ON invArticulos.codfam = invSubFamilia.codfam
                                              AND invArticulos.codsub = invSubFamilia.codsub
                  INNER JOIN conUnidadNegocio ON cotNotaPedidoDetalle.codcen = conUnidadNegocio.idUniNeg
             WHERE(cotNotaPedido.coddoc = 1)--COTIZACION
                  AND (cotNotaPedido.estado = 1)
                  AND (cotNotaPedido.cliente = @cliente
                       OR @cliente = 0)
                  AND (cotNotaPedido.vendedor = @codven
                       OR @codven = 0)
                  AND ((cotNotaPedido.numdoc >= @numdoci
                        AND cotNotaPedido.numdoc <= @numdocf)
                       OR @numdoci = 0)
                  AND (cotNotaPedido.fecha_ingreso BETWEEN @entregai AND @entregaf)
                  AND (cotNotaPedidoDetalle.codana = @codana
                       OR @codana = 0)
                  AND (cotNotaPedidoDetalle.codcen = @coduni
                       OR @coduni = 0)
                  AND (invArticulos.codfam = @codfam
                       OR @codfam = '')
                  AND (invArticulos.codsub = @codsub
                       OR @codsub = '')
                  AND (invArticulos.codbus BETWEEN @codbusini AND @codbusfin)
                  AND (cotNotaPedido.codloc = @codsuc
                       OR @codsuc = 0)

             --AND (cotNotaPedido.numdoc = @numcot OR @numcot=0)
             --AND (cotNotaPedidoDetalle.fecha_entrega BETWEEN @fechini AND @fechfin)	
             --AND (cotNotaPedido.estado = @estado OR @estado=1)

             ORDER BY cotNotaPedido.numdoc;
     END;