EXEC ('
SET NOCOUNT ON;
SET XACT_ABORT ON;

BEGIN TRY

    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);
    END;

    BEGIN TRAN;

    DECLARE @SQL VARCHAR(MAX);

    IF EXISTS (
        SELECT 1
        FROM INFORMATION_SCHEMA.VIEWS
        WHERE TABLE_NAME = ''W_ETL_LOJA''
    )
    BEGIN
        DROP VIEW dbo.W_ETL_LOJA;
    END;

    SET @SQL = ''
        CREATE VIEW dbo.W_ETL_LOJA
        AS
        SELECT CODIGO_FILIAL AS CODIGO_LOJA,
               A.FILIAL AS NOME_LOJA
        FROM LOJAS_VAREJO A
        INNER JOIN FILIAIS B
            ON A.FILIAL = B.FILIAL
    '';
    EXEC(@SQL);

    IF OBJECT_ID(''dbo.W_ETL_LOJA_VENDEDORES'', ''V'') IS NOT NULL
    BEGIN
        DROP VIEW dbo.W_ETL_LOJA_VENDEDORES;
    END;

    SET @SQL = ''
        CREATE VIEW dbo.W_ETL_LOJA_VENDEDORES
        AS
        SELECT
            VENDEDOR,
            CODIGO_FILIAL,
            VENDEDOR_APELIDO,
            NOME_VENDEDOR,
            OPERA_CAIXA,
            COMISSAO,
            RG,
            ENDERECO,
            COMPLEMENTO,
            CIDADE,
            UF,
            CEP,
            TELEFONE,
            CPF,
            GERENTE,
            UPPER(sys.fn_varbintohexstr(CONVERT(VARBINARY(256), SENHA))) AS SENHA,
            DATA_DESATIVACAO,
            DATA_ATIVACAO,
            DATA_PARA_TRANSFERENCIA,
            DESC_CARGO,
            ACESSO_GERENCIAL,
            CHECKSUM,
            COMISSAO_CLIENTE_AUSENTE,
            ID_PERFIL,
            LX_STATUS_VENDEDOR,
            EMAIL,
            ID_VENDEDOR
        FROM LOJA_VENDEDORES
    '';
    EXEC(@SQL);

    IF EXISTS (
        SELECT 1
        FROM INFORMATION_SCHEMA.VIEWS
        WHERE TABLE_NAME = ''W_LJ_ETL_PRODUTOS_FILIAL''
    )
    BEGIN
        DROP VIEW dbo.W_LJ_ETL_PRODUTOS_FILIAL;
    END;

    SET @SQL = ''
        CREATE VIEW dbo.W_LJ_ETL_PRODUTOS_FILIAL
        AS
        SELECT DISTINCT
            SPACE(0) AS PRODUTO,
            TP.CODIGO_TAB_PRECO,
            LEFT(F.FILIAL + SPACE(25), 25) AS FILIAL
        FROM TABELAS_PRECO TP, FILIAIS F
    '';
    EXEC(@SQL);

    IF EXISTS (
        SELECT 1
        FROM INFORMATION_SCHEMA.VIEWS
        WHERE TABLE_NAME = ''W_ETL_LOG_OMS_HISTORICO_CONSULTA''
    )
    BEGIN
        DROP VIEW dbo.W_ETL_LOG_OMS_HISTORICO_CONSULTA;
    END;

    SET @SQL = ''
        CREATE VIEW dbo.W_ETL_LOG_OMS_HISTORICO_CONSULTA
        AS
        SELECT
            CONVERT(CHAR(19), DATA_VENDA, 120) AS DT_PESQUISA,
            CODIGO_FILIAL,
            TERMINAL,
            VENDEDOR,
            PRODUTO,
            COR_PRODUTO,
            CODIGO_BARRA,
            TICKET,
            LANCAMENTO_CAIXA,
            CEP,
            RETORNO_CONSULTA,
            DATA_VENDA
        FROM LOG_OMS_HISTORICO_CONSULTA
    '';
    EXEC(@SQL);

    PRINT ''COMMIT'';
    COMMIT TRAN;

END TRY
BEGIN CATCH

    PRINT ''ROLLBACK'';

    IF @@TRANCOUNT > 0
        ROLLBACK TRAN;

    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_MESSAGE() AS ErrorMessage;

    RETURN;
END CATCH
');