--Hash:E9C0BC0B3C0579BFABBE9EC22770FD2E
SET XACT_ABORT ON
BEGIN TRANSACTION;

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 < 965
)
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'Creating Table [dbo].[DocElectronicos]...';


GO
CREATE TABLE [dbo].[DocElectronicos] (
    [IdDoc]       INT                        IDENTITY (1, 1) NOT NULL,
    [RowGuid]     UNIQUEIDENTIFIER           ROWGUIDCOL NOT NULL,
    [FechaRecep]  DATE                       NOT NULL,
    [Fecha]       DATE                       NOT NULL,
    [Prefijo]     NVARCHAR (10)              NOT NULL,
    [NroDoc]      NVARCHAR (20)              NOT NULL,
    [TipoDoc]     NVARCHAR (40)              NOT NULL,
    [NitEmisor]   NVARCHAR (100)             NOT NULL,
    [Emisor]      NVARCHAR (50)              NOT NULL,
    [Resultado]   NVARCHAR (50)              NOT NULL,
    [EstRadian]   NVARCHAR (50)              NOT NULL,
    [Total]       DECIMAL (28, 6)            NOT NULL,
    [FileName]    NVARCHAR (255)             NOT NULL,
    [FileData]    VARBINARY (MAX) FILESTREAM NOT NULL,
    [CreatedDate] DATETIME                   NOT NULL,
    CONSTRAINT [PK_Documentos_Electronicos] PRIMARY KEY CLUSTERED ([IdDoc] ASC),
    UNIQUE NONCLUSTERED ([RowGuid] ASC)
) FILESTREAM_ON [FILESTREAMZ];


GO
PRINT N'Creating Default Constraint unnamed constraint on [dbo].[DocElectronicos]...';


GO
ALTER TABLE [dbo].[DocElectronicos]
    ADD DEFAULT (newid()) FOR [RowGuid];


GO
PRINT N'Creating Default Constraint unnamed constraint on [dbo].[DocElectronicos]...';


GO
ALTER TABLE [dbo].[DocElectronicos]
    ADD DEFAULT GETDATE() FOR [CreatedDate];


GO
PRINT N'Altering Procedure [dbo].[ClientesDeleteALL]...';


GO




ALTER PROCEDURE ClientesDeleteALL
	@IdCliente INT = 0,
	@InfoUsuario NVARCHAR(100),
	@Exito INT = 0 output
As
BEGIN 

BEGIN TRAN

	BEGIN TRY
		
	exec CrearContextoUsuario @InfoUsuario

	DELETE FROM Clientes_Contactos WHERE IdCliente = @IdCliente
    DELETE FROM Clientes_Asociacion WHERE IdCliente = @IdCliente
    DELETE FROM Clientes_Direcciones WHERE IdCliente = @IdCliente
    DELETE FROM Clientes_Archivos WHERE IdCliente = @IdCliente
    DELETE FROM dbo.Clientes_Empleados WHERE IdCliente = @IdCliente
    DELETE FROM Clientes_Especial WHERE IdCliente = @IdCliente
    DELETE FROM Clientes_ResponFiscal where IdCliente = @IdCliente
    DELETE FROM Clientes_Tributos where IdCliente = @IdCliente
    --Quitar el cliente asociado al prospecto
    update dbo.Clientes_Prospectos
    set IdClienteConv=null
    where IdClienteConv=@IdCliente

    DELETE FROM Clientes WHERE IdCliente = @IdCliente

    SET @Exito = 1
	
	COMMIT TRAN
	
    RETURN
    END TRY 
			 
    BEGIN CATCH 
	IF @@error =547 SET @Exito = 0
	ROLLBACK TRAN
    END CATCH
       
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)]					
	--------------------------------------------------------------------------------------
	*/
GO

GO
PRINT N'Update complete.';


GO

--Actualizar datos de la version
INSERT INTO ZiurVersiones (IdVersion, NumVersion, Descripcion)
VALUES (375,965,'Scrappy docs Dian y correcciones')
GO

COMMIT
GO
