--Hash:B12B51BC3E157A78F7F09EC80814744A

-- Bloqueo exclusivo por base de datos
--//
SET NOCOUNT ON;

DECLARE @__ZiurDbScriptLockResource NVARCHAR(200) = N'ZiurSoft:DbScriptLock:' + CAST(DB_ID() AS NVARCHAR(20));
DECLARE @__ZiurDbScriptLockResult INT;
EXEC @__ZiurDbScriptLockResult = sp_getapplock
    @Resource = @__ZiurDbScriptLockResource,
    @LockMode = N'Exclusive',
    @LockOwner = N'Session',
    @LockTimeout = 600000; -- 10 min

IF (@__ZiurDbScriptLockResult < 0)
BEGIN
    RAISERROR(N'No se pudo obtener el bloqueo exclusivo de actualizacion para esta base de datos.', 16, 1);
    SET NOEXEC ON;
END

/* Idempotencia a nivel de script: si la version ya existe, no ejecutar nada. */
IF EXISTS (SELECT 1 FROM dbo.ZiurVersiones WHERE NumVersion = 957)
BEGIN
    PRINT N'Scripts_957.sql: la version 957 ya esta aplicada. Se omite ejecucion.';
    EXEC sp_releaseapplock @Resource = @__ZiurDbScriptLockResource, @LockOwner = N'Session';
    SET NOEXEC ON;
END

SET XACT_ABORT ON;
GO

SET DATEFORMAT mdy;

--Validar que no existan scripts que no se hayan ejecutado
--//
IF EXISTS
(
	SELECT a.NumVersion + 1 AS HuecoInicio
	FROM ZiurVersiones a
	LEFT JOIN ZiurVersiones b ON a.NumVersion + 1 = b.NumVersion
	WHERE a.NumVersion>830 AND b.NumVersion IS NULL
	AND a.NumVersion + 1 < 957
)
RAISERROR('Error : hay un script que no se ejecuto , debe ejecutarlo manualmente.', 20, -1) with log
--//

--Colocar contenido de script diferencial aqui (Ziur.Database.publish.sql)

GO
/*
 Plantilla de script anterior a la implementación							
--------------------------------------------------------------------------------------
 Este archivo contiene instrucciones de SQL que se ejecutarán antes del script de compilación	
 Use la sintaxis de SQLCMD para incluir un archivo en el script anterior a la implementación			
 Ejemplo:      :r .\miArchivo.sql								
 Use la sintaxis de SQLCMD para hacer referencia a una variable en el script anterior a la implementación		
 Ejemplo:      :setvar TableName miTabla							
               SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/


GO

GO
PRINT N'Altering Procedure [dbo].[GetListaPrecios]...';
IF OBJECT_ID(N'dbo.GetListaPrecios', N'P') IS NULL
    EXEC(N'CREATE PROCEDURE [dbo].[GetListaPrecios] AS BEGIN SET NOCOUNT ON; RETURN 0; END');

GO
ALTER PROCEDURE GetListaPrecios
	@IdAgrup1 int = 0,
	@IdAgrup2 int = 0,
	@InvTipos nvarchar(10)='1',
	@NomInventario nvarchar(500)='',
	@EsCodigo bit=0 -- parametro ya no se usa
As
BEGIN
	SET NOCOUNT ON;	

	--//
	DECLARE @busqueda nvarchar(500) = @NomInventario;
	DECLARE @Palabras TABLE (Palabra NVARCHAR(100));
    DECLARE @Pos INT;
    DECLARE @Palabra NVARCHAR(100);

    WHILE CHARINDEX(' ', @busqueda) > 0
    BEGIN
        SET @Pos = CHARINDEX(' ', @busqueda);
        SET @Palabra = SUBSTRING(@busqueda, 1, @Pos-1);
        INSERT INTO @Palabras (Palabra) VALUES (@Palabra);
        SET @busqueda = SUBSTRING(@busqueda, @Pos+1, LEN(@busqueda));
    END
    IF LEN(@busqueda) > 0
        INSERT INTO @Palabras (Palabra) VALUES (@busqueda);
    --//

	IF @NomInventario = ''
	BEGIN
		SET @NomInventario = NULL
	END
	
	select i.CodigoBarras,i.IdInventario,i.CodInventario, i.NomInventario, i.ValorIva as Iva,
	L1.Precio AS Lista_1,
	L2.Precio AS Lista_2,
	L3.Precio AS Lista_3,
	L4.Precio AS Lista_4,
	L5.Precio AS Lista_5,
	L6.Precio AS Lista_6,
	L7.Precio AS Lista_7,
	L8.Precio AS Lista_8,
	L9.Precio AS Lista_9,
	L10.Precio AS Lista_10,
	L11.Precio AS Lista_11,
	L12.Precio AS Lista_12,
	L13.Precio AS Lista_13,
	L14.Precio AS Lista_14,
	L15.Precio AS Lista_15,
	L16.Precio AS Lista_16,
	L17.Precio AS Lista_17,
	L18.Precio AS Lista_18,
	L19.Precio AS Lista_19,
	L20.Precio AS Lista_20,
	L21.Precio AS Lista_21,
	L22.Precio AS Lista_22,
	L23.Precio AS Lista_23,
	L24.Precio AS Lista_24,
	L25.Precio AS Lista_25,
	L26.Precio AS Lista_26,
	L27.Precio AS Lista_27,
	L28.Precio AS Lista_28,
	L29.Precio AS Lista_29,
	L30.Precio AS Lista_30,
	L31.Precio AS Lista_31,

	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L1.EsIvaIncluido,0) = 1 THEN L1.Precio ELSE L1.Precio + L1.Precio * i.ValorIva/100 END AS ListaIva_1,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L2.EsIvaIncluido,0) = 1 THEN L2.Precio ELSE L2.Precio + L2.Precio * i.ValorIva/100 END AS ListaIva_2,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L3.EsIvaIncluido,0) = 1 THEN L3.Precio ELSE L3.Precio + L3.Precio * i.ValorIva/100 END AS ListaIva_3,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L4.EsIvaIncluido,0) = 1 THEN L4.Precio ELSE L4.Precio + L4.Precio * i.ValorIva/100 END AS ListaIva_4,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L5.EsIvaIncluido,0) = 1 THEN L5.Precio ELSE L5.Precio + L5.Precio * i.ValorIva/100 END AS ListaIva_5,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L6.EsIvaIncluido,0) = 1 THEN L6.Precio ELSE L6.Precio + L6.Precio * i.ValorIva/100 END AS ListaIva_6,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L7.EsIvaIncluido,0) = 1 THEN L7.Precio ELSE L7.Precio + L7.Precio * i.ValorIva/100 END AS ListaIva_7,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L8.EsIvaIncluido,0) = 1 THEN L8.Precio ELSE L8.Precio + L8.Precio * i.ValorIva/100 END AS ListaIva_8,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L9.EsIvaIncluido,0) = 1 THEN L9.Precio ELSE L9.Precio + L9.Precio * i.ValorIva/100 END AS ListaIva_9,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L10.EsIvaIncluido,0) = 1 THEN L10.Precio ELSE L10.Precio + L10.Precio * i.ValorIva/100 END AS ListaIva_10,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L11.EsIvaIncluido,0) = 1 THEN L11.Precio ELSE L11.Precio + L11.Precio * i.ValorIva/100 END AS ListaIva_11,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L12.EsIvaIncluido,0) = 1 THEN L12.Precio ELSE L12.Precio + L12.Precio * i.ValorIva/100 END AS ListaIva_12,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L13.EsIvaIncluido,0) = 1 THEN L13.Precio ELSE L13.Precio + L13.Precio * i.ValorIva/100 END AS ListaIva_13,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L14.EsIvaIncluido,0) = 1 THEN L14.Precio ELSE L14.Precio + L14.Precio * i.ValorIva/100 END AS ListaIva_14,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L15.EsIvaIncluido,0) = 1 THEN L15.Precio ELSE L15.Precio + L15.Precio * i.ValorIva/100 END AS ListaIva_15,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L16.EsIvaIncluido,0) = 1 THEN L16.Precio ELSE L16.Precio + L16.Precio * i.ValorIva/100 END AS ListaIva_16,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L17.EsIvaIncluido,0) = 1 THEN L17.Precio ELSE L17.Precio + L17.Precio * i.ValorIva/100 END AS ListaIva_17,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L18.EsIvaIncluido,0) = 1 THEN L18.Precio ELSE L18.Precio + L18.Precio * i.ValorIva/100 END AS ListaIva_18,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L19.EsIvaIncluido,0) = 1 THEN L19.Precio ELSE L19.Precio + L19.Precio * i.ValorIva/100 END AS ListaIva_19,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L20.EsIvaIncluido,0) = 1 THEN L20.Precio ELSE L20.Precio + L20.Precio * i.ValorIva/100 END AS ListaIva_20,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L21.EsIvaIncluido,0) = 1 THEN L21.Precio ELSE L21.Precio + L21.Precio * i.ValorIva/100 END AS ListaIva_21,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L22.EsIvaIncluido,0) = 1 THEN L22.Precio ELSE L22.Precio + L22.Precio * i.ValorIva/100 END AS ListaIva_22,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L23.EsIvaIncluido,0) = 1 THEN L23.Precio ELSE L23.Precio + L23.Precio * i.ValorIva/100 END AS ListaIva_23,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L24.EsIvaIncluido,0) = 1 THEN L24.Precio ELSE L24.Precio + L24.Precio * i.ValorIva/100 END AS ListaIva_24,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L25.EsIvaIncluido,0) = 1 THEN L25.Precio ELSE L25.Precio + L25.Precio * i.ValorIva/100 END AS ListaIva_25,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L26.EsIvaIncluido,0) = 1 THEN L26.Precio ELSE L26.Precio + L26.Precio * i.ValorIva/100 END AS ListaIva_26,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L27.EsIvaIncluido,0) = 1 THEN L27.Precio ELSE L27.Precio + L27.Precio * i.ValorIva/100 END AS ListaIva_27,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L28.EsIvaIncluido,0) = 1 THEN L28.Precio ELSE L28.Precio + L28.Precio * i.ValorIva/100 END AS ListaIva_28,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L29.EsIvaIncluido,0) = 1 THEN L29.Precio ELSE L29.Precio + L29.Precio * i.ValorIva/100 END AS ListaIva_29,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L30.EsIvaIncluido,0) = 1 THEN L30.Precio ELSE L30.Precio + L30.Precio * i.ValorIva/100 END AS ListaIva_30,
	CASE WHEN COALESCE(cast(i.EsIvaIncluido as int)*L31.EsIvaIncluido,0) = 1 THEN L31.Precio ELSE L31.Precio + L31.Precio * i.ValorIva/100 END AS ListaIva_31,

	L1.PrecioExt AS ListaExt_1,
	L2.PrecioExt AS ListaExt_2,
	L3.PrecioExt AS ListaExt_3,
	L4.PrecioExt AS ListaExt_4,
	L5.PrecioExt AS ListaExt_5,
	L6.PrecioExt AS ListaExt_6,
	L7.PrecioExt AS ListaExt_7,
	L8.PrecioExt AS ListaExt_8,
	L9.PrecioExt AS ListaExt_9,
	L10.PrecioExt AS ListaExt_10,
	L11.PrecioExt AS ListaExt_11,
	L12.PrecioExt AS ListaExt_12,
	L13.PrecioExt AS ListaExt_13,
	L14.PrecioExt AS ListaExt_14,
	L15.PrecioExt AS ListaExt_15,
	L16.PrecioExt AS ListaExt_16,
	L17.PrecioExt AS ListaExt_17,
	L18.PrecioExt AS ListaExt_18,
	L19.PrecioExt AS ListaExt_19,
	L20.PrecioExt AS ListaExt_20,
	L21.PrecioExt AS ListaExt_21,
	L22.PrecioExt AS ListaExt_22,
	L23.PrecioExt AS ListaExt_23,
	L24.PrecioExt AS ListaExt_24,
	L25.PrecioExt AS ListaExt_25,
	L26.PrecioExt AS ListaExt_26,
	L27.PrecioExt AS ListaExt_27,
	L28.PrecioExt AS ListaExt_28,
	L29.PrecioExt AS ListaExt_29,
	L30.PrecioExt AS ListaExt_30,
	L31.PrecioExt AS ListaExt_31

	FROM 
	Inventarios i 
    LEFT OUTER JOIN dbo.Inventarios_Agrup1 agrup1 ON i.IdAgrup1 = agrup1.IdAgrup1
    LEFT OUTER JOIN dbo.Inventarios_Agrup2 agrup2 ON i.IdAgrup2 = agrup2.IdAgrup2
    LEFT OUTER JOIN dbo.Inventarios_Especial esp ON i.IdInventario = esp.IdInventario 

	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 1) L1 ON i.IdInventario = L1.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 2) L2 ON i.IdInventario = L2.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 3) L3 ON i.IdInventario = L3.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 4) L4 ON i.IdInventario = L4.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 5) L5 ON i.IdInventario = L5.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 6) L6 ON i.IdInventario = L6.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 7) L7 ON i.IdInventario = L7.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 8) L8 ON i.IdInventario = L8.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 9) L9 ON i.IdInventario = L9.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 10) L10 ON i.IdInventario = L10.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 11) L11 ON i.IdInventario = L11.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 12) L12 ON i.IdInventario = L12.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 13) L13 ON i.IdInventario = L13.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 14) L14 ON i.IdInventario = L14.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 15) L15 ON i.IdInventario = L15.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 16) L16 ON i.IdInventario = L16.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 17) L17 ON i.IdInventario = L17.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 18) L18 ON i.IdInventario = L18.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 19) L19 ON i.IdInventario = L19.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 20) L20 ON i.IdInventario = L20.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 21) L21 ON i.IdInventario = L21.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 22) L22 ON i.IdInventario = L22.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 23) L23 ON i.IdInventario = L23.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 24) L24 ON i.IdInventario = L24.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 25) L25 ON i.IdInventario = L25.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 26) L26 ON i.IdInventario = L26.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 27) L27 ON i.IdInventario = L27.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 28) L28 ON i.IdInventario = L28.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 29) L29 ON i.IdInventario = L29.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 30) L30 ON i.IdInventario = L30.IdInventario
	LEFT OUTER JOIN (SELECT p.IdInventario, cast(l.EsIvaIncluido as int) as EsIvaIncluido, p.Precio, p.PrecioExt FROM Inventarios_Precios p INNER JOIN Inventarios_Listas l ON l.IdLista = p.IdLista WHERE p.IdLista = 31) L31 ON i.IdInventario = L31.IdInventario
	WHERE
	(@IdAgrup1 = 0 OR i.IdAgrup1 = @IdAgrup1) AND
	(@IdAgrup2 = 0 OR i.IdAgrup2 = @IdAgrup2) AND
	(i.IdTipoInv IN(select number from iter$simple_intlist_to_tbl(@InvTipos))) AND 
	(
		@NomInventario IS NULL OR 
		EXISTS 
		(
			SELECT 1 FROM @Palabras
			WHERE 
			(
			   i.CodInventario LIKE '%' + Palabra + '%'
			   OR i.CodigoBarras LIKE '%' + Palabra + '%'
			   OR i.NomInventario LIKE '%' + Palabra + '%'
			   OR agrup1.NomAgrup1 LIKE '%' + Palabra + '%'
			   OR agrup2.NomAgrup2 LIKE '%' + Palabra + '%'
			   OR esp.Especial_01 LIKE '%' + Palabra + '%'
			   OR esp.Especial_02 LIKE '%' + Palabra + '%'
			   OR esp.Especial_03 LIKE '%' + Palabra + '%'
			   OR esp.Especial_04 LIKE '%' + Palabra + '%'
			   OR esp.Especial_05 LIKE '%' + Palabra + '%'
			   OR esp.Especial_06 LIKE '%' + Palabra + '%'
			   OR esp.Especial_07 LIKE '%' + Palabra + '%'
			   OR esp.Especial_08 LIKE '%' + Palabra + '%'
			   OR esp.Especial_09 LIKE '%' + Palabra + '%'
			   OR esp.Especial_10 LIKE '%' + Palabra + '%'
			   OR esp.Especial_11 LIKE '%' + Palabra + '%'
			   OR esp.Especial_12 LIKE '%' + Palabra + '%'
			   OR esp.Especial_13 LIKE '%' + Palabra + '%'
			   OR esp.Especial_14 LIKE '%' + Palabra + '%'
			   OR esp.Especial_15 LIKE '%' + Palabra + '%'
			   OR esp.Especial_16 LIKE '%' + Palabra + '%'
			   OR esp.Especial_17 LIKE '%' + Palabra + '%'
			   OR esp.Especial_18 LIKE '%' + Palabra + '%'
			   OR esp.Especial_19 LIKE '%' + Palabra + '%'
			   OR esp.Especial_20 LIKE '%' + Palabra + '%'
			)
		)
	)


END
GO
	/*
	Plantilla de script posterior a la implementación							
	--------------------------------------------------------------------------------------
	 Este archivo contiene instrucciones de SQL que se anexarán al script de compilación.		
	 Use la sintaxis de SQLCMD para incluir un archivo en el script posterior a la implementación.			
	 Ejemplo:      :r .\miArchivo.sql								
	 Use la sintaxis de SQLCMD para hacer referencia a una variable en el script posterior a la implementación.		
	 Ejemplo:      :setvar TableName miTabla							
				   SELECT * FROM [$(TableName)]					
	--------------------------------------------------------------------------------------
	*/


	IF(NOT EXISTS(SELECT CodParametro FROM Parametros WHERE CodParametro = 256))
	BEGIN
	INSERT INTO [dbo].[Parametros]
				([CodParametro],
				[NomParametro],
				[ValParametro],
				[Descripcion],
				[Grupo],
				[EsActivo],
				[IdTipoControl],
				[EsEspecial])
		VALUES
	(256,'Inventarios Detallado - Cerrar ', 1,'Coloca por defecto Cerrar para que se cierre el formulario al seleccionar un producto o servicio','Documentos',1,4,0)
	END
GO

	IF(NOT EXISTS(SELECT CodParametro FROM Parametros WHERE CodParametro = 257))
	BEGIN
	INSERT INTO [dbo].[Parametros]
				([CodParametro],
				[NomParametro],
				[ValParametro],
				[Descripcion],
				[Grupo],
				[EsActivo],
				[IdTipoControl],
				[EsEspecial])
		VALUES
	(257,'Inventarios Detallado - Agregar Nuevo ', 0,'Coloca un registro nuevo al documento, similar comportamiento en campo codigo de barras','Documentos',1,4,0)
	END
GO

GO
PRINT N'Update complete.';


GO


--Actualizar datos de la version
IF NOT EXISTS (SELECT 1 FROM dbo.ZiurVersiones WHERE NumVersion = 957)
BEGIN
    INSERT INTO dbo.ZiurVersiones (IdVersion, NumVersion, Descripcion)
    VALUES (367, 957, 'Filtros Inventarios Detallado y correcciones en DS');
END
GO
/* Liberar bloqueo exclusivo por base de datos */
DECLARE @__ZiurDbScriptLockResourceEnd NVARCHAR(200) = N'ZiurSoft:DbScriptLock:' + CAST(DB_ID() AS NVARCHAR(20));
EXEC sp_releaseapplock
    @Resource = @__ZiurDbScriptLockResourceEnd,
    @LockOwner = N'Session';
GO
