--Hash:8B1D32B93C10721C813A83B37E73BFEE

-- 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 = 962)
BEGIN
    PRINT N'Scripts_962.sql: la version 962 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 < 962
)
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].[CopiarDocumentos]...';
IF OBJECT_ID(N'dbo.CopiarDocumentos', N'P') IS NULL
    EXEC(N'CREATE PROCEDURE [dbo].[CopiarDocumentos] AS BEGIN SET NOCOUNT ON; RETURN 0; END');

GO
ALTER PROCEDURE CopiarDocumentos
	@IdEncabBasado INT,
	@IdMoneda INT,
	@Nota NVARCHAR(max)= null,
	@Fecha datetime,
	@FechaVence datetime,
	@IdDocumento INT,
	@IdCliente1 INT,
	@IdCliente2 INT,
	@EsVisible BIT=NULL,
	@IdEncabPago INT=0,
	@InfoUsuario NVARCHAR(100)='0,--BASEDATOS--',
	@Exito INT = 0 output,
	@IdEncabNuevo INT = 0 output,
	@IdEncabMov_string nvarchar(max) = '',
	@IdClienteVend INT=NULL,
	@EsCont BIT = 0
As

DECLARE

 @CopiarEspc BIT= NULL

BEGIN
	--Información Usuario
	exec CrearContextoUsuario @InfoUsuario
	
	SET @CopiarEspc=(SELECT ValParametro FROM Parametros WHERE CodParametro=55)
	INSERT INTO Encabezados(IdEmpresa, IdDocumento, IdPrefijo, NumDocumento, NumDocumentoExt, Fecha, Vence, IdCliente1, IdCliente1_IdDir, IdCliente2, IdClienteVend, IdMoneda, Nota, IdFormaPago, NomPc, EsAnulado, EsBloqueado, EsRevisado, EsImpreso, IdAutomotor, IdContacto, IdTipo, FechaIni, FechaFin, IdEstado, IdClienteProp, IdInmueble, IdSucursal, IdMesa, ValorTRM, ValorNegoc, CantMin, ValorPago)
	SELECT IdEmpresa, @IdDocumento, IdPrefijo, 0, NumDocumentoExt, @Fecha, @FechaVence, @IdCliente1, IdCliente1_IdDir, @IdCliente2, IdClienteVend, @IdMoneda, @Nota, IdFormaPago, NomPc, 0, 0, EsRevisado, EsImpreso, IdAutomotor, IdContacto, IdTipo, FechaIni, FechaFin, IdEstado, IdClienteProp, IdInmueble, IdSucursal, IdMesa, ValorTRM, ValorNegoc, CantMin, ValorPago
	FROM encabezados
	WHERE IdEncab=@IdEncabBasado

	SET @IdEncabNuevo = IDENT_CURRENT('Encabezados')
	
	IF @IdDocumento=2 and @IdClienteVend is null
	UPDATE Encabezados
	SET IdClienteVend=(SELECT IdCliVendedor FROM dbo.Clientes WHERE IdCliente=@IdCliente1)
	WHERE IdEncab=@IdEncabNuevo
	
	IF @EsCont=0
	INSERT INTO Encabezados_Mov (IdEncab, IdInventario, IdBodega, IdLote, Cantidad, CantidadFisica, IdUnidad, FactorCantidad, FactorMovim, ValorUnitario, ValorUnitarioExt, ValorIva, ValorImptoConsumo, TotalMov, IdCliente, Nota, Vence, IdCentroCosto, Dcto, EsIvaAlCosto, EsVisible, EsImpreso, EsRevisado, EsExcluirCruce,CantDim4,IdEncabMov2,IdUnidad1,Cantidad1, ValorTRM, IdMoneda, IdEncabMov3, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio)
    SELECT @IdEncabNuevo,IdInventario, IdBodega, IdLote, Cantidad, CantidadFisica, IdUnidad, FactorCantidad, FactorMovim, ValorUnitario, ValorUnitarioExt, ValorIva, ValorImptoConsumo, TotalMov, IdCliente, Nota, Vence, IdCentroCosto, Dcto, EsIvaAlCosto,coalesce(@EsVisible,EsVisible), EsImpreso, EsRevisado, EsExcluirCruce, CantDim4,
    CASE WHEN @IdEncabPago>0 then IdEncabMov else NULL end as IdEncabMov2,IdUnidad1,Cantidad1, ValorTRM, IdMoneda, IdEncabMov, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
    FROM Encabezados_Mov
    WHERE
    IdEncabMov IN(select number from dbo.iter$simple_intlist_to_tbl(@IdEncabMov_string))
    
    IF @EsCont=1
    INSERT INTO dbo.Encabezados_Cont (IdEncab, IdCuenta, Debito, Credito, Nota, IdCliente, IdClienteBanco, IdInventario, DocReferencia, RetencionBase, RetencionPorc, Vence, IdCentroCosto, IdAbonaDoc, IdAbonaDif, IdAbonaCheque, EsRevisado, EsDeducible, IdEmpleado, IdEncabMov, IdEncabContAgrup, DebitoExt, CreditoExt)
    SELECT @IdEncabNuevo, IdCuenta, Debito, Credito, Nota, IdCliente, IdClienteBanco, IdInventario, DocReferencia, RetencionBase, RetencionPorc, Vence, IdCentroCosto, IdAbonaDoc, IdAbonaDif, IdAbonaCheque, EsRevisado, EsDeducible, IdEmpleado, IdEncabMov, IdEncabContAgrup, DebitoExt, CreditoExt
    FROM Encabezados_Cont
    WHERE
    IdEncabCont IN(select number from dbo.iter$simple_intlist_to_tbl(@IdEncabMov_string))
   
    IF @CopiarEspc IS NOT NULL
	BEGIN
		INSERT INTO dbo.EncabezadosEspecial (IdEncab, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05, Especial_06, Especial_07, Especial_08, Especial_09, Especial_10,Especial_11, Especial_12, Especial_13, Especial_14, Especial_15, Especial_16, Especial_17, Especial_18, Especial_19, Especial_20, Especial_21, Especial_22, Especial_23, Especial_24, Especial_25, Especial_26, Especial_27, Especial_28, Especial_29, Especial_30, Especial_31, Especial_32, Especial_33, Especial_34, Especial_35, Especial_36, Especial_37, Especial_38, Especial_39, Especial_40)
		SELECT @IdEncabNuevo, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05, Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, Especial_11, Especial_12, Especial_13, Especial_14, Especial_15, Especial_16, Especial_17, Especial_18, Especial_19, Especial_20, Especial_21, Especial_22, Especial_23, Especial_24, Especial_25, Especial_26, Especial_27, Especial_28, Especial_29, Especial_30, Especial_31, Especial_32, Especial_33, Especial_34, Especial_35, Especial_36, Especial_37, Especial_38, Especial_39, Especial_40   
		FROM EncabezadosEspecial
		WHERE IdEncab =(select max(IdEncab) from Encabezados_Mov where IdEncabMov IN(select number from dbo.iter$simple_intlist_to_tbl(@IdEncabMov_string)))
	
		-- Inventarios Especiales
		INSERT INTO Encabezados_MovEspecial(IdEncabMov, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05, Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, Especial_11, Especial_12, Especial_13, Especial_14, Especial_15, Especial_16, Especial_17, Especial_18, Especial_19, Especial_20)
		SELECT  IdEncabMovNuevo, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05, Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, Especial_11, Especial_12, Especial_13, Especial_14, Especial_15, Especial_16, Especial_17, Especial_18, Especial_19, Especial_20
		FROM 
		(
			SELECT mov.IdEncabMov as IdEncabMovNuevo, esp.IdEncabMov, mov.IdEncab, esp.Especial_01, esp.Especial_02, esp.Especial_03, esp.Especial_04, esp.Especial_05, esp.Especial_06, esp.Especial_07, esp.Especial_08, esp.Especial_09, esp.Especial_10, esp.Especial_11, esp.Especial_12, esp.Especial_13, esp.Especial_14, esp.Especial_15, esp.Especial_16,esp. Especial_17, esp.Especial_18, esp.Especial_19, esp.Especial_20  
			FROM 
				Encabezados_Mov mov INNER JOIN Encabezados_MovEspecial esp ON esp.IdEncabMov = mov.IdEncabMov3
			WHERE IdEncab = @IdEncabNuevo
		)temp	
	END

	UPDATE Encabezados_Mov
	SET IdEncabMov3 = NULL
	WHERE IdEncab = @IdEncabNuevo

    IF @@error <> 0 GOTO ERR_HANDLER
    
    SET @Exito = 1
    RETURN
    
ERR_HANDLER:
  SET @Exito = 0
       
END
GO
PRINT N'Altering Procedure [dbo].[CopiarDocumentosBasados]...';
IF OBJECT_ID(N'dbo.CopiarDocumentosBasados', N'P') IS NULL
    EXEC(N'CREATE PROCEDURE [dbo].[CopiarDocumentosBasados] AS BEGIN SET NOCOUNT ON; RETURN 0; END');

GO
ALTER PROCEDURE [dbo].[CopiarDocumentosBasados]

@IdEncabStr NVARCHAR(1000),
@IdCliente INT,
@IdElaboro INT,
@IdPrefijo NVARCHAR(50),
@Fecha NVARCHAR(20) = NULL,
@IdDocumento INT=NULL,
@FechaVence NVARCHAR(20) = NULL,
@Nota NVARCHAR(1000),
@InfoUsuario NVARCHAR(100)='0,--BASEDATOS--',
@Exito INT output

AS
BEGIN

 /*	OPERACION DE COPIAR ARCHIVOS */
  
 IF @IdEncabStr LIKE '%,'
	SET @IdEncabStr = SUBSTRING(@IdEncabStr,0,LEN(@IdEncabStr))
 
 DECLARE @InsertedIdEncabs	   TABLE (id INT, idPas INT)
 DECLARE @InsertedIdEncabMovs  TABLE (id INT, idE INT, idPas INT, idPasE INT)
 DECLARE @IdPas INT
 DECLARE @FechaT DATETIME, @esMov bit=null,@Escont bit=null
 DECLARE @FechaVenceT DATETIME
		 
 IF (@Fecha IS NOT NULL)
	SET @FechaT = CAST(CONVERT(DATETIME, @Fecha, 103) + ' 00:00:00' AS DATETIME)

IF (@FechaVence IS NOT NULL)
	SET @FechaVenceT = CAST(CONVERT(DATETIME, @FechaVence, 103) + ' 23:59:59' AS DATETIME)
	--Procedimiento para Usuario Auditoria
    exec CrearContextoUsuario @InfoUsuario

	IF(@IdDocumento is not null)
	BEGIN
		select @esMov=EsMov from Documentos where IdDocumento=@IdDocumento
		select @Escont=EsCont from Documentos where IdDocumento=@IdDocumento
	END 



ALTER INDEX XI_NumeracionUnica ON [dbo].[Encabezados]
DISABLE;	
 
 --Insertar los Nuevos Encabezados
 --//
 INSERT INTO Encabezados
  (IdEmpresa, IdDocumento, 
   IdPrefijo, 
   NumDocumento, NumDocumentoExt, 
   Fecha, Vence, 
   IdCliente1, 
   IdCliente1_IdDir, 
   IdCliente2, 
   IdClienteVend, IdMoneda, Nota, IdFormaPago, NomPc,EsBloqueado, EsRevisado, EsImpreso, IdAutomotor, IdContacto, IdTipo, FechaIni, FechaFin, IdSucursal, IdMesa, ValorTRM)
	OUTPUT inserted.IdEncab, 1
	INTO @InsertedIdEncabs
 SELECT 
  IdEmpresa, COALESCE(@IdDocumento,IdDocumento), 
  CASE WHEN COALESCE(@IdPrefijo, '-1') = '-1' THEN IdPrefijo ELSE @IdPrefijo END, 
  0, NumDocumentoExt, 
  CASE WHEN @Fecha IS NULL THEN Fecha ELSE @FechaT END AS Fecha, 
  CASE WHEN @FechaVence IS NULL THEN Vence ELSE @FechaVenceT END AS Vence, 
  CASE WHEN COALESCE(@IdCliente, -1) = -1 THEN IdCliente1 ELSE @IdCliente END, 
  IdCliente1_IdDir,
  CASE WHEN COALESCE(@IdElaboro, -1) = -1 THEN IdCliente2 ELSE @IdElaboro END,
  IdClienteVend, IdMoneda,
  CASE WHEN @Nota IS NULL THEN Nota ELSE @Nota END, 
  IdFormaPago, NomPc, EsBloqueado, EsRevisado, EsImpreso, IdAutomotor, IdContacto, IdTipo, FechaIni, FechaFin, IdSucursal, IdMesa, ValorTRM
 FROM Encabezados
 WHERE IdEncab IN (select  number from iter$simple_intlist_to_tbl(@IdEncabStr))
 ORDER BY Encabezados.IdEncab
 --// 

 ALTER INDEX XI_NumeracionUnica ON [dbo].[Encabezados]
REBUILD;
 
 --Relaciona IdEncab Nuevos con IdEncab Bases
 --//
 UPDATE @InsertedIdEncabs
 SET idPas = q.idPas
 FROM @InsertedIdEncabs ins INNER JOIN
	(SELECT q1.id, q2.number as idPas, q1.x, q2.x as xPas
	 FROM	
	 (SELECT id, ROW_NUMBER() over(order by id) as x
	  FROM @InsertedIdEncabs) q1 INNER JOIN
	 (SELECT number, ROW_NUMBER() over(order by number) as x 
	  FROM iter$simple_intlist_to_tbl(@IdEncabStr)) as q2
 	  ON q1.x = q2.x) as q ON q.id = ins.id
 --//
 
 --	Setea la Direccion con el IdClienteDir del Nuevo IdCliente
 --//
 IF COALESCE(@IdCliente, -1) <> -1
 BEGIN
  
  UPDATE Encabezados 
  SET [IdCliente1_IdDir] = 
  (SELECT MIN(cliDir.IdClienteDir)
   FROM Encabezados enc INNER JOIN @InsertedIdEncabs ins ON enc.IdEncab = ins.id 
						INNER JOIN VClientesDir cliDir ON Encabezados.IdCliente1 = cliDir.IdCliente)
  WHERE	IdEncab IN (select id from @InsertedIdEncabs)
    
 END
 --//
 


 -- Insertar Los Nuevos Encabezados_Mov
 --//
 IF COALESCE(@esMov,1)=1
 BEGIN
 
	 -- Inserta Los Encabezados_Mov que no son Hijos
	 --//
	 INSERT INTO Encabezados_Mov
	 (IdEncab, 
	 IdInventario, IdBodega, IdLote, Cantidad, CantidadFisica, IdUnidad, FactorCantidad, FactorMovim, ValorUnitario, ValorUnitarioExt, ValorIva, ValorImptoConsumo, TotalMov, 
	 IdCliente, 
	 Nota, Vence, IdCentroCosto, Dcto, EsIvaAlCosto, EsVisible, EsImpreso, EsRevisado, EsExcluirCruce, CostoPromValor, CostoPromCosto, CostoPromCant, NumSerial, IdEncabMov2,
	 CantDim4, ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
	 )
		OUTPUT inserted.IdEncabMov, inserted.IdEncab, 1, 1
		INTO @InsertedIdEncabMovs
	 SELECT 
	 ins.id, 
	 IdInventario, IdBodega, IdLote, Cantidad, CantidadFisica, IdUnidad, FactorCantidad, FactorMovim, ValorUnitario, ValorUnitarioExt, ValorIva, ValorImptoConsumo, TotalMov, 
	 CASE WHEN COALESCE(@IdCliente, -1) = -1 THEN IdCliente ELSE @IdCliente END, 
	 Nota, CASE WHEN @FechaVenceT IS NULL THEN Vence ELSE @FechaVenceT END AS Vence, 
	 IdCentroCosto, Dcto, EsIvaAlCosto, EsVisible, EsImpreso, EsRevisado, EsExcluirCruce, CostoPromValor, CostoPromCosto, CostoPromCant, NumSerial, IdEncabMov2,
	 CantDim4, ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
	 FROM Encabezados_Mov encMov INNER JOIN @InsertedIdEncabs ins
	 ON	  encMov.IdEncab = ins.idPas AND encMov.IdEncabMov2 IS NULL
	 ORDER BY encMov.IdEncabMov
	 --//
	 
	 -- Relaciona IdEncabMov Nuevos con IdEncabMov Base Incluyendo IdEncab
	 --// 
	 UPDATE @InsertedIdEncabMovs
	 SET idPas = q.idPas,
		 idPasE = q.idPasE
	 FROM @InsertedIdEncabMovs ins INNER JOIN
	 (SELECT q1.id,q1.idE,q2.IdEncabMov as idPas, q2.IdEncab as idPasE
	  FROM
	  (SELECT id, idE, ROW_NUMBER() over(order by id) as x
	   FROM @InsertedIdEncabMovs) AS q1 INNER JOIN 
	  (SELECT encMov.IdEncabMov, encMov.IdEncab, ROW_NUMBER() over(order by encMov.IdEncabMov)as x
	   FROM Encabezados_Mov encMov INNER JOIN @InsertedIdEncabs ins
	   ON encMov.IdEncab = ins.idPas AND encMov.IdEncabMov2 IS NULL) q2
	  ON q1.x = q2.x) q ON q.id = ins.id
	 --//
	 
	 -- Inserta Los Encabezados_Mov que son Hijos
	 --//
	 INSERT INTO Encabezados_Mov
	 (IdEncab, 
	 IdInventario, IdBodega, IdLote, Cantidad, CantidadFisica, IdUnidad, FactorCantidad, FactorMovim, ValorUnitario, ValorUnitarioExt, ValorIva, ValorImptoConsumo, TotalMov, 
	 IdCliente, 
	 Nota, Vence, IdCentroCosto, Dcto, EsIvaAlCosto, EsVisible, EsImpreso, EsRevisado, EsExcluirCruce, CostoPromValor, CostoPromCosto, CostoPromCant, NumSerial, 
	 IdEncabMov2)
	 SELECT 
	 ins.idE, 
	 IdInventario, IdBodega, IdLote, Cantidad, CantidadFisica, IdUnidad, FactorCantidad, FactorMovim, ValorUnitario, ValorUnitarioExt, ValorIva, ValorImptoConsumo, TotalMov, 
	 CASE WHEN COALESCE(@IdCliente, -1) = -1 THEN IdCliente ELSE @IdCliente END, 
	 Nota,  CASE WHEN @FechaVenceT IS NULL THEN Vence ELSE @FechaVenceT END AS Vence, 
	 IdCentroCosto, Dcto, EsIvaAlCosto, EsVisible, EsImpreso, EsRevisado, EsExcluirCruce, CostoPromValor, CostoPromCosto, CostoPromCant, NumSerial, 
	 ins.id
	 FROM Encabezados_Mov encMov INNER JOIN @InsertedIdEncabMovs ins
	 ON	  encMov.IdEncab = ins.idPasE AND encMov.IdEncabMov2 = ins.idPas
	 ORDER BY encMov.IdEncabMov
	 --//
 END	
 --//
 
 -- Insertar Los Nuevos Encabezados_Cont
 --//
  IF COALESCE(@Escont,1)=1
 BEGIN
	 INSERT INTO Encabezados_Cont
	 (IdEncab, 
	  IdCuenta, Debito, Credito, Nota, 
	  IdCliente, 
	  IdClienteBanco, IdInventario, DocReferencia, RetencionBase, RetencionPorc, Vence, IdCentroCosto, IdAbonaDif, IdAbonaCheque, EsRevisado, EsDeducible, IdEmpleado,
	  DebitoExt, CreditoExt)
	 SELECT 
	  ins.id, 
	  IdCuenta, Debito, Credito, Nota, 
	  CASE WHEN COALESCE(@IdCliente, -1) = -1 THEN IdCliente ELSE @IdCliente END, 
	  IdClienteBanco, IdInventario, DocReferencia, RetencionBase, RetencionPorc, 
	  CASE WHEN @FechaVenceT IS NULL THEN Vence ELSE @FechaVenceT END AS Vence,
	  IdCentroCosto, IdAbonaDif, IdAbonaCheque, EsRevisado, EsDeducible, IdEmpleado,
	  DebitoExt, CreditoExt
	 FROM Encabezados_Cont encCont INNER JOIN @InsertedIdEncabs ins
	 ON	  encCont.IdEncab = ins.idPas
	 --//
	 END

		INSERT INTO EncabezadosEspecial
		(IdEncab, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05,
		Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, 
		Especial_11, Especial_12, Especial_13, Especial_14, Especial_15,
		Especial_16, Especial_17, Especial_18, Especial_19, Especial_20,
		Especial_21, Especial_22, Especial_23, Especial_24, Especial_25,
		Especial_26, Especial_27, Especial_28, Especial_29, Especial_30, 
		Especial_31, Especial_32, Especial_33, Especial_34, Especial_35,
		Especial_36, Especial_37, Especial_38, Especial_39, Especial_40)
		SELECT id, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05,
		Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, 
		Especial_11, Especial_12, Especial_13, Especial_14, Especial_15,
		Especial_16, Especial_17, Especial_18, Especial_19, Especial_20,
		Especial_21, Especial_22, Especial_23, Especial_24, Especial_25,
		Especial_26, Especial_27, Especial_28, Especial_29, Especial_30, 
		Especial_31, Especial_32, Especial_33, Especial_34, Especial_35,
		Especial_36, Especial_37, Especial_38, Especial_39, Especial_40
		FROM EncabezadosEspecial enew INNER JOIN @InsertedIdEncabs ins
		ON ins.idPas=enew.IdEncab

	 /*	OPERACION EJECUTADA EXITOSAMENTE */
	 SET @Exito = 1 
	 Select IdEncab, IdDocumento From 
	 @InsertedIdEncabs ins INNER JOIN Encabezados enc
	 ON ins.id = enc.IdEncab


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

GO
ALTER PROCEDURE [dbo].[CrucesDocumentosInsertar]

    @IdEncabBasado INT,
	@IdMoneda INT,
	@Fecha datetime,
	@FechaVence datetime,
	@IdDocumento INT,
	@IdCliente1 INT,
	@IdCliente2 INT,
	@IdClienteVend INT=NULL, 
	@IdEncab nvarchar(100) = '',
	@Nota NVARCHAR(max)=NULL,
	@IdEncabMov nvarchar(100) = '',
	@SumCantidad numeric(24,8)= 0,
	@IdUnidad int= 0,
	@FactorCantidad numeric(28,6)= 0,
	@FactorMovim INT,
	@NotaMov NVARCHAR(600)=NULL,
	@IdBodegaTras INT,
	@InfoUsuario NVARCHAR(100),
	@IdServicio INT=Null,
	@CantidadSer numeric(24,8)= 0,
	@FactorCantidad1 numeric(24,8)= 0,
	@FactorCantidad2 numeric(24,8)= 0,
	@ValorUnit numeric(24,8)= 0,
	@EsVisible BIT = NULL,
	@Exito INT = 0 OUTPUT,
	@IdEncabNuevo INT = 0 OUTPUT,
	@IdMovNuevo INT = 0 OUTPUT
	
AS
BEGIN

	DECLARE 
	@Ident nvarchar(500),
	@IdCliente int,
	@IdInv int,
	@factMov int=null,
	@IdDocOrigen int=0,
	@IdDocCruc int=0,
    @CopiarEspc BIT= NULL,
    @ChildReg int=0,
	@EsInsertSubProductos INT = 0
	
    
    exec CrearContextoUsuario @InfoUsuario
	
	SET @CopiarEspc=(SELECT ValParametro FROM Parametros WHERE CodParametro=55)
	
	IF @IdEncab=''
	BEGIN
	INSERT INTO Encabezados(IdEmpresa, IdDocumento, IdPrefijo, NumDocumento, NumDocumentoExt, Fecha, Vence, IdCliente1, IdCliente1_IdDir, IdCliente2, IdClienteVend, IdMoneda, Nota, IdFormaPago, NomPc, EsAnulado, EsBloqueado, EsRevisado, EsImpreso, IdAutomotor, IdContacto, IdTipo, FechaIni, FechaFin, FinanNumCuotas, FinanInteres, FinanFechaIni, FinanDebe, IdEstado, IdClienteProp, IdInmueble, IdSucursal, IdMesa, ValorTRM, ValorNegoc, CantMin, ValorPago)
	SELECT IdEmpresa, @IdDocumento, IdPrefijo, 0, NumDocumentoExt, @Fecha, @FechaVence, @IdCliente1, IdCliente1_IdDir, @IdCliente2, IdClienteVend, @IdMoneda, @Nota, IdFormaPago, NomPc, 0, 0, EsRevisado, EsImpreso, IdAutomotor, IdContacto, IdTipo, FechaIni, FechaFin, FinanNumCuotas, FinanInteres, FinanFechaIni, FinanDebe, IdEstado, IdClienteProp, IdInmueble, IdSucursal, IdMesa, ValorTRM, ValorNegoc, CantMin, ValorPago
	FROM encabezados
	WHERE IdEncab=@IdEncabBasado
	SET @IdEncab = IDENT_CURRENT('Encabezados') 
	SET @IdEncabNuevo= @IdEncab
	SET @IdDocCruc=@IdDocumento 
	
	IF @IdDocumento=2 AND @IdClienteVend IS NULL
	UPDATE Encabezados
	SET IdClienteVend=(SELECT IdCliVendedor FROM dbo.Clientes WHERE IdCliente=@IdCliente1)
	WHERE IdEncab=@IdEncabNuevo
	
	IF @CopiarEspc IS NOT NULL
    INSERT INTO dbo.EncabezadosEspecial (IdEncab, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05, Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, Especial_11, Especial_12, Especial_13, Especial_14, Especial_15, Especial_16, Especial_17, Especial_18, Especial_19, Especial_20, Especial_21, Especial_22, Especial_23, Especial_24, Especial_25, Especial_26, Especial_27, Especial_28, Especial_29, Especial_30, Especial_31, Especial_32, Especial_33, Especial_34, Especial_35, Especial_36, Especial_37, Especial_38, Especial_39, Especial_40)
    SELECT @IdEncabNuevo, Especial_01, Especial_02, Especial_03, Especial_04, Especial_05, Especial_06, Especial_07, Especial_08, Especial_09, Especial_10, Especial_11, Especial_12, Especial_13, Especial_14, Especial_15, Especial_16, Especial_17, Especial_18, Especial_19, Especial_20, Especial_21, Especial_22, Especial_23, Especial_24, Especial_25, Especial_26, Especial_27, Especial_28, Especial_29, Especial_30, Especial_31, Especial_32, Especial_33, Especial_34, Especial_35, Especial_36, Especial_37, Especial_38, Especial_39, Especial_40   
	FROM EncabezadosEspecial
	WHERE IdEncab =(SELECT MAX(IdEncab) FROM Encabezados_Mov WHERE IdEncabMov=@IdEncabMov)
	END

	IF @IdEncab<>''
	BEGIN
	SET @IdDocCruc=(SELECT IdDocumento FROM Encabezados WHERE IdEncab=@IdEncab)
	END
	
	SELECT @IdCliente=IdCliente1 FROM Encabezados WHERE IdEncab=@IdEncab
	
	IF @FactorMovim<>0
	 SET @FactorMovim = (SELECT MIN(FactorMovim) FROM Encabezados_Mov WHERE IdEncabMov=@IdEncabMov)
	
	SET @IdInv=(SELECT IdInventario FROM  Encabezados_Mov WHERE IdEncabMov=@IdEncabMov)
	
	SET @IdDocOrigen=(SELECT IdDocumento FROM Encabezados_Mov mov INNER JOIN Encabezados enc ON mov.IdEncab=enc.IdEncab 
					  WHERE IdEncabMov=@IdEncabMov)
	
	SET @ChildReg=(SELECT COUNT(*) FROM dbo.Encabezados_Mov WHERE IdEncabMov2=@IdEncabMov AND IdInventario=@IdInv)
	
    IF @IdDocCruc=2 AND @IdDocOrigen=9
		SET @factMov=@FactorMovim
		
	IF @IdDocCruc=46 AND @IdDocOrigen=9
		SET @factMov=@FactorMovim

	IF @IdDocCruc=2 AND @IdDocOrigen=39
		SET @factMov=@FactorMovim
		
		
	IF @IdDocCruc=15 AND @IdDocOrigen=2 AND @ChildReg=0 
		 SET @FactorMovim=1
	 
	IF @IdDocCruc=15 AND @IdDocOrigen=2
		 SET @factMov=1
		 
		 
	-- Condiciones para orden de taller	 
	IF (@IdDocCruc=9 OR @IdDocCruc=2) AND @IdDocOrigen=43 AND @ChildReg=0 
		 SET @FactorMovim=1
		 
	IF (@IdDocCruc=9 OR @IdDocCruc=2)AND  @IdDocOrigen=43
		 SET @factMov=1
		 
	-- Condiciones para orden de produccion
	IF @IdDocCruc=45
		 SET @FactorMovim=-1
		 
	-- Parametro para insertar o no lo registros hijos (SUBPRODUCTOS)
	SELECT @EsInsertSubProductos = EsInsertSubProductos
	FROM Documentos
	WHERE IdDocumento = @IdDocCruc;

	BEGIN TRANSACTION CrearCruc;
	
		INSERT INTO Encabezados_Mov (IdEncab,IdInventario,IdBodega,IdLote,Cantidad,CantidadFisica,IdUnidad,FactorCantidad,FactorMovim,ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,IdCliente,Nota,Vence,IdCentroCosto,Dcto,EsIvaAlCosto,CantDim4,EsVisible,NumSerial,IdUnidad1,Cantidad1,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio)
		SELECT @IdEncab,IdInventario,IdBodega,IdLote,@SumCantidad,CantidadFisica,@IdUnidad,@FactorCantidad,@FactorMovim,@ValorUnit,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,@IdCliente,COALESCE(@NotaMov,Nota),Vence,IdCentroCosto,Dcto,EsIvaAlCosto,CantDim4,
		case when @IdDocOrigen=24 then 1 else ISNULL(@EsVisible,EsVisible) end, NumSerial,IdUnidad1,Cantidad1,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
		FROM  Encabezados_Mov Enc_Mov
		WHERE Enc_Mov.IdEncabMov=@IdEncabMov
	    
		SET @Ident= IDENT_CURRENT('Encabezados_Mov')
		SET @IdMovNuevo=@Ident
		-- Validacion para relizar el cruce especial entre factura de venta y remision 
		--IF @IdDocCruc=9 and @IdDocOrigen=2
		--EXEC dbo.DocsCrucesInsertar @IdEncabMov,@Ident,-1
		--ELSE
		EXEC dbo.DocsCrucesInsertar @Ident,@IdEncabMov,-1
		
		--Genera registros hijos (SUBPRODUCTOS) a documentos diferentes de ingreso producto terminado
		IF @IdDocCruc<>22 AND @EsInsertSubProductos = 1
			INSERT INTO Encabezados_Mov (IdEncab,IdInventario,IdBodega,IdLote,Cantidad,CantidadFisica,IdUnidad,FactorCantidad,FactorMovim,ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,IdCliente,Nota,Vence,IdCentroCosto,Dcto,EsIvaAlCosto,EsVisible,NumSerial,IdEncabMov2,IdUnidad1,Cantidad1,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio)
			SELECT @IdEncab,IdInventario,IdBodega,IdLote,Cantidad,CantidadFisica,IdUnidad,FactorCantidad,COALESCE(@factMov,FactorMovim),ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,@IdCliente,COALESCE(@NotaMov,Nota),Vence,IdCentroCosto,Dcto,EsIvaAlCosto,EsVisible,NumSerial,@Ident,IdUnidad1,Cantidad1,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
			FROM  Encabezados_Mov Enc_Mov
			WHERE Enc_Mov.IdEncabMov2=@IdEncabMov

		--Insertar registros en traslado interno
		IF @IdDocCruc=45
		INSERT INTO Encabezados_Mov (IdEncab,IdInventario,IdBodega,IdLote,Cantidad,CantidadFisica,IdUnidad,FactorCantidad,FactorMovim,ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,IdCliente,Nota,Vence,IdCentroCosto,Dcto,EsIvaAlCosto,EsVisible,NumSerial,IdUnidad1,Cantidad1,IdEncabMov3,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio)
		SELECT IdEncab,IdInventario,coalesce(@IdBodegaTras,IdBodega),IdLote,Cantidad,CantidadFisica,IdUnidad,FactorCantidad,1,ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,IdCliente,Nota,Vence,IdCentroCosto,Dcto,EsIvaAlCosto,EsVisible,NumSerial,IdUnidad1,Cantidad1,@Ident,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
		FROM  Encabezados_Mov Enc_Mov
		WHERE Enc_Mov.IdEncabMov=@Ident

		-- Insertar registro de servicio asociado al cruce con factores cantidad
		if @IdServicio IS NOT NULL
		INSERT INTO Encabezados_Mov (IdEncab,IdInventario,IdBodega,IdLote,Cantidad,CantidadFisica,IdUnidad,FactorCantidad,FactorMovim,ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,IdCliente,Nota,Vence,IdCentroCosto,Dcto,EsIvaAlCosto,EsVisible,CantDim1,CantDim2,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio)
		SELECT IdEncab,@IdServicio,IdBodega,IdLote,@CantidadSer,CantidadFisica,IdUnidad,FactorCantidad,FactorMovim,ValorUnitario,ValorUnitarioExt,ValorIva,ValorImptoConsumo,TotalMov,IdCliente,Nota,Vence,IdCentroCosto,Dcto,EsIvaAlCosto,EsVisible,@FactorCantidad1,@FactorCantidad2,ValorTRM, IdMoneda, TipoImptoConsumo, IdTipoReg, ImptoSaludableValor, ImptoSaludableTipo, FeRNCD_Es, FeRNCD_Radicado, FeRNCD_Consecutivo, FeRNCD_Valor, FeRNCD_Unidad, FeRNCD_Cantidad, IdEmpleado, NumOrdenServicio
		FROM  Encabezados_Mov Enc_Mov
		WHERE Enc_Mov.IdEncabMov=@Ident
	
	COMMIT TRAN CrearCruc;
	
    IF @@error <> 0 GOTO ERR_HANDLER
    
    SET @Exito = 1
    RETURN
    
ERR_HANDLER:
  SET @Exito = 0
       
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)]					
	--------------------------------------------------------------------------------------
	*/

	--incluir campos de num orden de servicio
	--//
	IF NOT EXISTS(SELECT * FROM Documentos WHERE MovCamposDisp like '%NumOrdenServicio%' and EsMov=1 and EsCont=0)
	   UPDATE Documentos SET MovCamposDisp = MovCamposDisp + ',NumOrdenServicio' WHERE EsMov=1 and EsCont=0
	GO
	--//

	UPDATE Documentos SET MovCamposDisp = MovCamposDisp + ',IdEmpleado' WHERE IdDocumento=14 and MovCamposDisp not like '%IdEmpleado%'

	--Nuevo control para Numero Orden de Servicio (ya se creo en script anterior)
	IF NOT EXISTS (SELECT * FROM Permisos_Controles WHERE IdControl = 1032)
		INSERT INTO Permisos_Controles
		(IdControl, NomControl)
		VALUES (1032, 'NumOrdenServicio')

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856990)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856990,3, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856991)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856991,4, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856992)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856992,6, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856993)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856993,7, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856994)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856994,9, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856995)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856995,14, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856996)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856996,23, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856997)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856997,24, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856998)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856998,25, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =856999)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (856999,29, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857000)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857000,39, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857001)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857001,43, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857002)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857002,45, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857003)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857003,5, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857004)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857004,8, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857005)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857005,10, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857006)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857006,11, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857007)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857007,12, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857008)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857008,13, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857009)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857009,20, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857010)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857010,27, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857011)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857011,28, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857012)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857012,36, 1032)

	IF NOT EXISTS (SELECT * FROM Permisos_ControlesPorInterface WHERE IdControlInt =857013)
		INSERT INTO Permisos_ControlesPorInterface 
		(IdControlInt, IdInterface, IdControl)
		VALUES (857013,49, 1032)

GO
PRINT N'Update complete.';


GO


--Actualizar datos de la version
IF NOT EXISTS (SELECT 1 FROM dbo.ZiurVersiones WHERE NumVersion = 962)
BEGIN
    INSERT INTO dbo.ZiurVersiones (IdVersion, NumVersion, Descripcion)
    VALUES (372, 962, 'Copia de docs nuevos campos OS');
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
