189 lines
6.6 KiB
Transact-SQL
189 lines
6.6 KiB
Transact-SQL
USE [Levelcode-LevelOS]
|
|
GO
|
|
|
|
-- ============================================================
|
|
-- MIGRAÇÃO DA TABELA [dbo].[Boletos]
|
|
-- Gerado em: 20/04/2026
|
|
-- Descrição: Melhoria de tipos, rastreabilidade,
|
|
-- suporte a arquivo (XML/PDF) e baixa bancária
|
|
-- ============================================================
|
|
|
|
-- ── PASSO 1: Corrigir tipos das colunas existentes ──────────
|
|
|
|
-- Datas
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ALTER COLUMN [EMITIDO] DATE NULL;
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ALTER COLUMN [VENCE] DATE NULL;
|
|
GO
|
|
|
|
-- Valor
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ALTER COLUMN [VALOR] DECIMAL(10,2) NULL;
|
|
GO
|
|
|
|
-- Flags booleanas (S/N → BIT)
|
|
-- Precisa converter os dados antes de mudar o tipo
|
|
UPDATE [dbo].[Boletos] SET [PG] = CASE WHEN [PG] = 'S' THEN '1' ELSE '0' END;
|
|
UPDATE [dbo].[Boletos] SET [ACEITE] = CASE WHEN [ACEITE] = 'S' THEN '1' ELSE '0' END;
|
|
UPDATE [dbo].[Boletos] SET [IMPRESSO] = CASE WHEN [IMPRESSO] = 'S' THEN '1' ELSE '0' END;
|
|
UPDATE [dbo].[Boletos] SET [IMPORTACAO]= CASE WHEN [IMPORTACAO]= 'S' THEN '1' ELSE '0' END;
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [PG] BIT NOT NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [ACEITE] BIT NOT NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [IMPRESSO] BIT NOT NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [IMPORTACAO] BIT NOT NULL;
|
|
GO
|
|
|
|
-- Campos de texto: limitar tamanho adequado
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [CODIGO] VARCHAR(50) NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [NUMERO] VARCHAR(50) NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [NOSSO_NUMERO] VARCHAR(50) NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [SACADO] VARCHAR(200) NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [CONTA] VARCHAR(100) NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [COD_CONTA] VARCHAR(30) NULL;
|
|
ALTER TABLE [dbo].[Boletos] ALTER COLUMN [OBSERVACAO] VARCHAR(500) NULL;
|
|
GO
|
|
|
|
-- ── PASSO 2: Adicionar colunas novas ────────────────────────
|
|
|
|
-- Baixa bancária / integração
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [CHAVE_BOLETO] VARCHAR(100) NULL; -- Chave única para baixa/integração bancária
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [LINHA_DIGITAVEL] VARCHAR(60) NULL; -- Código de barras / linha digitável
|
|
GO
|
|
|
|
-- Pagamento
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [DT_PAGAMENTO] DATE NULL; -- Data efetiva do pagamento
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [VL_PAGO] DECIMAL(10,2) NULL; -- Valor pago (pode ter multa/desconto)
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [VL_MULTA] DECIMAL(10,2) NULL; -- Multa por atraso
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [VL_DESCONTO] DECIMAL(10,2) NULL; -- Desconto concedido
|
|
GO
|
|
|
|
-- Arquivo (XML ou PDF) — caminho em disco
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [ARQUIVO_NOME] VARCHAR(255) NULL; -- Nome original do arquivo
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [ARQUIVO_TIPO] VARCHAR(10) NULL; -- 'XML' ou 'PDF'
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [ARQUIVO_CAMINHO] VARCHAR(500) NULL; -- Caminho completo em disco
|
|
GO
|
|
|
|
-- Arquivo — binário no banco
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [ARQUIVO_DADOS] VARBINARY(MAX) NULL; -- Conteúdo binário do arquivo
|
|
GO
|
|
|
|
-- Rastreabilidade
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [DT_CADASTRO] DATETIME NOT NULL DEFAULT GETDATE(); -- Data de criação
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [DT_ALTERACAO] DATETIME NULL; -- Última alteração
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [ID_USUARIO] INT NULL; -- Usuário responsável
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD [STATUS] VARCHAR(20) NOT NULL DEFAULT 'ABERTO';
|
|
-- Valores possíveis: 'ABERTO', 'PAGO', 'VENCIDO', 'CANCELADO', 'BAIXADO'
|
|
GO
|
|
|
|
-- ── PASSO 3: Índices para performance ───────────────────────
|
|
|
|
-- Busca por número do boleto
|
|
CREATE NONCLUSTERED INDEX [IX_Boletos_Numero]
|
|
ON [dbo].[Boletos] ([NUMERO] ASC)
|
|
WHERE [NUMERO] IS NOT NULL;
|
|
GO
|
|
|
|
-- Busca por chave bancária
|
|
CREATE NONCLUSTERED INDEX [IX_Boletos_Chave]
|
|
ON [dbo].[Boletos] ([CHAVE_BOLETO] ASC)
|
|
WHERE [CHAVE_BOLETO] IS NOT NULL;
|
|
GO
|
|
|
|
-- Busca por vencimento (relatórios de inadimplência)
|
|
CREATE NONCLUSTERED INDEX [IX_Boletos_Vence]
|
|
ON [dbo].[Boletos] ([VENCE] ASC);
|
|
GO
|
|
|
|
-- Busca por status
|
|
CREATE NONCLUSTERED INDEX [IX_Boletos_Status]
|
|
ON [dbo].[Boletos] ([STATUS] ASC);
|
|
GO
|
|
|
|
-- ── PASSO 4: Constraint de validação de status ──────────────
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD CONSTRAINT [CK_Boletos_Status]
|
|
CHECK ([STATUS] IN ('ABERTO', 'PAGO', 'VENCIDO', 'CANCELADO', 'BAIXADO'));
|
|
GO
|
|
|
|
ALTER TABLE [dbo].[Boletos]
|
|
ADD CONSTRAINT [CK_Boletos_ArquivoTipo]
|
|
CHECK ([ARQUIVO_TIPO] IN ('XML', 'PDF') OR [ARQUIVO_TIPO] IS NULL);
|
|
GO
|
|
|
|
-- ── PASSO 5: FK para usuário (se a tabela existir) ──────────
|
|
-- Descomente quando a tabela de usuários estiver criada:
|
|
-- ALTER TABLE [dbo].[Boletos]
|
|
-- ADD CONSTRAINT [FK_Boletos_Usuario]
|
|
-- FOREIGN KEY ([ID_USUARIO]) REFERENCES [dbo].[Usuarios]([ID_USUARIO]);
|
|
-- GO
|
|
|
|
-- ── RESULTADO FINAL ──────────────────────────────────────────
|
|
-- Tabela com a estrutura completa após migração:
|
|
--
|
|
-- ID_BOLETO INT IDENTITY PK
|
|
-- CODIGO VARCHAR(50)
|
|
-- NUMERO VARCHAR(50)
|
|
-- NOSSO_NUMERO VARCHAR(50)
|
|
-- CHAVE_BOLETO VARCHAR(100) ← novo
|
|
-- LINHA_DIGITAVEL VARCHAR(60) ← novo
|
|
-- EMITIDO DATE ← tipo corrigido
|
|
-- VENCE DATE ← tipo corrigido
|
|
-- DT_PAGAMENTO DATE ← novo
|
|
-- VALOR DECIMAL(10,2) ← tipo corrigido
|
|
-- VL_PAGO DECIMAL(10,2) ← novo
|
|
-- VL_MULTA DECIMAL(10,2) ← novo
|
|
-- VL_DESCONTO DECIMAL(10,2) ← novo
|
|
-- STATUS VARCHAR(20) ← novo
|
|
-- PG BIT ← tipo corrigido
|
|
-- SACADO VARCHAR(200) ← tipo corrigido
|
|
-- CONTA VARCHAR(100) ← tipo corrigido
|
|
-- COD_CONTA VARCHAR(30) ← tipo corrigido
|
|
-- ACEITE BIT ← tipo corrigido
|
|
-- IMPRESSO BIT ← tipo corrigido
|
|
-- IMPORTACAO BIT ← tipo corrigido
|
|
-- ARQUIVO_NOME VARCHAR(255) ← novo
|
|
-- ARQUIVO_TIPO VARCHAR(10) ← novo
|
|
-- ARQUIVO_CAMINHO VARCHAR(500) ← novo
|
|
-- ARQUIVO_DADOS VARBINARY(MAX) ← novo
|
|
-- OBSERVACAO VARCHAR(500) ← tipo corrigido
|
|
-- DT_CADASTRO DATETIME ← novo
|
|
-- DT_ALTERACAO DATETIME ← novo
|
|
-- ID_USUARIO INT ← novo |