IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END
IF EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_ENVIA_VERSAO')
	BEGIN
		DELETE PARAMETROS WHERE PARAMETRO = 'ETL_ENVIA_VERSAO'
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF EXISTS (SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_UPDATE_INDIVIDUAL')
	BEGIN
		DELETE PARAMETROS WHERE PARAMETRO = 'ETL_UPDATE_INDIVIDUAL'
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_UPDATE_DIRETORIO')
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,APLICACAO
		) 
		VALUES (
		'ETL_UPDATE_DIRETORIO'
		,getdate()
		,getdate()
		,''		
		,'Informa o diretorio de update por empresa ex: nomeDaEmpresa'
		,'C'
		,getdate()
		,1
		,'ETL'
		)
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_PAGINACAO_TAKE')
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,APLICACAO
		) 
		VALUES (
		'ETL_PAGINACAO_TAKE'
		,getdate()
		,getdate()
		,'100'		
		,'Define o tamanho do select TOP feito na repositorio valor maximo= 32mil'
		,'C'
		,getdate()
		,0
		,'ETL'
		)
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'URL_ETL_PRINCIPAL')
BEGIN
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,APLICACAO
		) 
		VALUES (
		'URL_ETL_PRINCIPAL'
		,getdate()
		,getdate()
		,''		
		,'Url principal do barramento de servi o'
		,'C'
		,getdate()
		,1
		,'ETL'
		)
	END
END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'URL_ETL_CONTIGENCIA')
BEGIN
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,APLICACAO
		) 
		VALUES (
		'URL_ETL_CONTIGENCIA'
		,getdate()
		,getdate()
		,''		
		,'Url do barramento de servi o para contig ncia'
		,'C'
		,getdate()
		,1
		,'ETL'
		)
	END
END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'URL_ETL_LOJA')
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,PERMITE_POR_LOJA
		,APLICACAO
		) 
		VALUES (
		'URL_ETL_LOJA'
		,getdate()
		,getdate()
		,''		
		,'Url do servidor da loja onde est  instalado o servi o'
		,'C'
		,getdate()
		,1
		,1
		,'ETL'
		)
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF EXISTS(SELECT TOP 1 1  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'LCF_LX_PAIS' AND COLUMN_NAME = 'LX_STATUS_REGISTRO')
	BEGIN
	IF EXISTS(SELECT TOP 1 1  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'LCF_LX_PAIS' AND COLUMN_NAME = 'LX_STATUS_REGISTRO' and COLUMN_DEFAULT is null)
		BEGIN
			EXEC('ALTER TABLE [dbo].[LCF_LX_PAIS] ADD  CONSTRAINT [DF_LX_STATUS_REGISTRO]  DEFAULT ((1)) FOR [LX_STATUS_REGISTRO]')
		END
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF EXISTS(SELECT *  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SERIES_NF' AND COLUMN_NAME = 'SEQUENCIAL' and CHARACTER_MAXIMUM_LENGTH <15)
	BEGIN
		EXEC('ALTER TABLE [dbo].[SERIES_NF] ALTER COLUMN [SEQUENCIAL] [varchar](15) NULL')
	END
	
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF EXISTS(SELECT *  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SERIES_NF' AND COLUMN_NAME = 'COD_SERIE_SINTEGRA' and CHARACTER_MAXIMUM_LENGTH <6)
	BEGIN
		EXEC('ALTER TABLE [dbo].[SERIES_NF] ALTER COLUMN [COD_SERIE_SINTEGRA] [varchar](6) NULL')
	END
	
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF EXISTS(SELECT TOP 1 1  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'LCF_LX_UF' AND COLUMN_NAME = 'LX_STATUS_REGISTRO')
	BEGIN
	IF EXISTS(SELECT TOP 1 1  FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'LCF_LX_UF' AND COLUMN_NAME = 'LX_STATUS_REGISTRO' and COLUMN_DEFAULT is null)
		BEGIN
			EXEC('ALTER TABLE [dbo].[LCF_LX_UF] ADD  CONSTRAINT [DF_UF_LX_STATUS_REGISTRO]  DEFAULT ((1)) FOR [LX_STATUS_REGISTRO]')
		END
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM sys.tables A INNER JOIN sys.columns B ON A.Object_ID = B.Object_ID AND A.Name = 'TABELA_ALIQUOTA_IMPOSTO_ITEM' AND COLUMNPROPERTY(A.Object_ID, B.Name, 'IsIdentity') = 1)
BEGIN
begin try 

	BEGIN TRANSACTION
	CREATE TABLE dbo.Tmp_TABELA_ALIQUOTA_IMPOSTO_ITEM
					(
					ID_IMPOSTO_ITEM int NOT NULL IDENTITY (1, 1),
					UF char(2) NOT NULL,
					NCM_NBS char(10) NOT NULL,
					EXCESSAO_FISCAL_TABELA smallint NOT NULL,
					TABELA smallint NOT NULL,
					ALIQNAC_FEDERAL numeric(5, 2) NOT NULL,
					ALIQIMP_FEDERAL numeric(5, 2) NOT NULL,
					ALIQ_MUNICIPAL numeric(5, 2) NOT NULL,
					ALIQ_ESTADUAL numeric(5, 2) NOT NULL,
					INICIO_VIGENCIA smalldatetime NULL,
					FIM_VIGENCIA smalldatetime NULL,
					CHAVE varchar(6) NULL,
					VERSAO varchar(6) NOT NULL,
					FONTE varchar(34) NULL,
					DATA_PARA_TRANSFERENCIA datetime NULL,
					CONSTRAINT XPKTmp_TABELA_ALIQUOTA_IMPOSTO_ITEM PRIMARY KEY NONCLUSTERED (NCM_NBS, UF,VERSAO,EXCESSAO_FISCAL_TABELA),
					CONSTRAINT XAKTmp_TABELA_ALIQUOTA_IMPOSTO_ITEM UNIQUE CLUSTERED (ID_IMPOSTO_ITEM))  


	SET IDENTITY_INSERT dbo.Tmp_TABELA_ALIQUOTA_IMPOSTO_ITEM ON
	IF EXISTS(SELECT * FROM dbo.TABELA_ALIQUOTA_IMPOSTO_ITEM)
		EXEC('	INSERT INTO dbo.Tmp_TABELA_ALIQUOTA_IMPOSTO_ITEM (ID_IMPOSTO_ITEM, UF, NCM_NBS, EXCESSAO_FISCAL_TABELA, TABELA, ALIQNAC_FEDERAL, ALIQIMP_FEDERAL, ALIQ_MUNICIPAL, ALIQ_ESTADUAL, INICIO_VIGENCIA, FIM_VIGENCIA, CHAVE, VERSAO, FONTE, DATA_PARA_TRANSFERENCIA)
				SELECT ID_IMPOSTO_ITEM, UF, NCM_NBS, EXCESSAO_FISCAL_TABELA, TABELA, ALIQNAC_FEDERAL, ALIQIMP_FEDERAL, ALIQ_MUNICIPAL, ALIQ_ESTADUAL, INICIO_VIGENCIA, FIM_VIGENCIA, CHAVE, VERSAO, FONTE, DATA_PARA_TRANSFERENCIA FROM dbo.TABELA_ALIQUOTA_IMPOSTO_ITEM WITH (HOLDLOCK TABLOCKX)')
	SET IDENTITY_INSERT dbo.Tmp_TABELA_ALIQUOTA_IMPOSTO_ITEM OFF


	DROP TABLE dbo.TABELA_ALIQUOTA_IMPOSTO_ITEM

	EXECUTE sp_rename N'dbo.Tmp_TABELA_ALIQUOTA_IMPOSTO_ITEM', N'TABELA_ALIQUOTA_IMPOSTO_ITEM', 'OBJECT'
	EXECUTE sp_rename N'XPKTmp_TABELA_ALIQUOTA_IMPOSTO_ITEM', N'XPKTABELA_ALIQUOTA_IMPOSTO_ITEM', 'OBJECT'
	EXECUTE sp_rename N'dbo.XAKTmp_TABELA_ALIQUOTA_IMPOSTO_ITEM', N'XAKTABELA_ALIQUOTA_IMPOSTO_ITEM', 'OBJECT'

	commit tran

end try
begin catch

	declare @ErrorMessage  nvarchar(4000), @ErrorSeverity int, @ErrorState int

	select	@ErrorMessage = error_message(), @ErrorSeverity = error_severity(),	@ErrorState = error_state()
		
	if @@trancount > 0 rollback tran
		
	raiserror (@ErrorMessage, @ErrorSeverity, @ErrorState)

end catch

END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_CONTEUDO_ARQUIVO')
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,APLICACAO
		) 
		VALUES (
		'ETL_CONTEUDO_ARQUIVO'
		,getdate()
		,getdate()
		,'.F.'		
		,'Habilita o etl de loja baixar o conteudo de todos os arquivos em umma unica vez'
		,'L'
		,getdate()
		,0
		,'ETL'
		)
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_VALIDA_LJ_VENDA_PGTO')
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,PERMITE_POR_LOJA
		,APLICACAO
		) 
		VALUES (
		'ETL_VALIDA_LJ_VENDA_PGTO'
		,getdate()
		,getdate()
		,'.T.'		
		,'Habilita as valida  es na loja Venda PGTO'
		,'L'
		,getdate()
		,1
		,1
		,'ETL'
		)
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_GERA_AUDITORIA')
	BEGIN
		INSERT INTO PARAMETROS (
		PARAMETRO
		,PENULT_ATUALIZACAO
		,ULT_ATUALIZACAO
		,VALOR_ATUAL
		,DESC_PARAMETRO
		,TIPO_DADO
		,DATA_PARA_TRANSFERENCIA
		,ENVIA_PARA_LOJA
		,PERMITE_POR_LOJA
		,APLICACAO
		) 
		VALUES (
		'ETL_GERA_AUDITORIA'
		,getdate()
		,getdate()
		,'.F.'		
		,'Habilita as valida  es na loja Venda PGTO'
		,'L'
		,getdate()
		,1
		,1
		,'ETL'
		)
	END
GO
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_ON_CLIENTES_VAREJO')
BEGIN
	INSERT INTO PARAMETROS (PARAMETRO, DESC_PARAMETRO, TIPO_DADO, GLOBAL, POR_USUARIO_OK, PERMITE_POR_EMPRESA, ENVIA_PARA_LOJA, PERMITE_POR_LOJA, 
	PERMITE_POR_TERMINAL, PERMITE_ALTERAR_NA_LOJA, PERMITE_ALTERAR_NO_TERMINAL, ENVIA_PARA_REPRESENTANTE, PERMITE_POR_REPRESENTANTE, 
	PERMITE_ALTERAR_NO_REPRESENTANTE, PENULT_ATUALIZACAO, ULT_ATUALIZACAO, VALOR_DEFAULT, VALOR_ATUAL,NOTA_PROGRAMADOR, APLICACAO) 
	VALUES ('ETL_ON_CLIENTES_VAREJO','Habilita o recurso on demand para clientes_varejo','L', 0 , 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 
	GETDATE(), GETDATE(), '.F.', '.F.','Este parametro habilita o Linx POS para consumir o recurso de consulta online do cadastro de clientes via ETL. 
	Este parametro   habilitado automaticamente pelo Linx ETL.', 'ETL')
END
go
--===================================================================================================================================
IF EXISTS ( SELECT 1 FROM sys.tables t
            JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name IN ('Faturamento', 'Empresa') AND s.name = 'dbo'
)
BEGIN
    RAISERROR('ERRO: Estrutura incompatível com o banco do LinxPOS.', 16, 1)
    RETURN
END

IF NOT EXISTS(SELECT TOP 1 1 FROM PARAMETROS WHERE PARAMETRO = 'ETL_ATUALIZA_PROD_MOV')
BEGIN

	Insert into PARAMETROS(PARAMETRO , PENULT_ATUALIZACAO ,VALOR_DEFAULT, ULT_ATUALIZACAO ,VALOR_ATUAL, DESC_PARAMETRO ,TIPO_DADO, RANGE_VALOR_ATUAL, GLOBAL, NOTA_PROGRAMADOR ,ESCOPO ,POR_USUARIO_OK, 	PERMITE_POR_EMPRESA ,ENVIA_PARA_LOJA, PERMITE_POR_LOJA, PERMITE_POR_TERMINAL, PERMITE_ALTERAR_NA_LOJA, PERMITE_ALTERAR_NO_TERMINAL, ENVIA_PARA_REPRESENTANTE, PERMITE_POR_REPRESENTANTE, PERMITE_ALTERAR_NO_REPRESENTANTE, 	DATA_PARA_TRANSFERENCIA)
	values ('ETL_ATUALIZA_PROD_MOV','2026-03-03', '.T.' ,'20260303','.T.' 
	,N'Altera saldo de produtos já movimentados na data corrente.', 
	'L' ,'', 0 ,N'ETL vai usar esse parâmetro para atualizar ou não o saldo de um produto que teve movimentação na data'  , 0  ,0  , 0 ,1 ,1,0 , 0 ,0, 0 ,0,0,  '20260303')

END 
go

