Created
December 2, 2012 18:11
-
-
Save JotaKyo/4190230 to your computer and use it in GitHub Desktop.
Projeto Banco de Dados
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Projeto Banco de Dados | |
2º Unidade | |
*/ | |
CREATE database EmpresaXYZ | |
use EmpresaXYZ | |
-- Deleta as tabelas e sua restrições, funções permanencem intactas, execute 2 vezes, obs: dropar as views primeiros | |
DECLARE @TableName NVARCHAR(MAX) | |
DECLARE @ConstraintName NVARCHAR(MAX) | |
DECLARE Constraints CURSOR FOR | |
SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE | |
OPEN Constraints | |
FETCH NEXT FROM Constraints INTO @TableName, @ConstraintName | |
WHILE @@FETCH_STATUS = 0 | |
BEGIN | |
EXEC('ALTER TABLE [' + @TableName + '] DROP CONSTRAINT [' + @ConstraintName + ']') | |
FETCH NEXT FROM Constraints INTO @TableName, @ConstraintName | |
END | |
CLOSE Constraints | |
DEALLOCATE Constraints | |
DECLARE Tables CURSOR FOR | |
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES | |
OPEN Tables | |
FETCH NEXT FROM Tables INTO @TableName | |
WHILE @@FETCH_STATUS = 0 | |
BEGIN | |
EXEC('DROP TABLE [' + @TableName + ']') | |
FETCH NEXT FROM Tables INTO @TableName | |
END | |
CLOSE Tables | |
DEALLOCATE Tables | |
-- | |
-- Tabelas e suas respectivas restrições | |
CREATE TABLE estado( | |
id int identity(1,1), | |
sigla char(2) NOT NULL, | |
nome varchar(30) NOT NULL, | |
CONSTRAINT pk_estado PRIMARY KEY (id) | |
) | |
CREATE TABLE cidade( | |
id int identity(1,1), | |
nome varchar(30) NOT NULL, | |
idEstado int NOT NULL, | |
CONSTRAINT pk_cidade PRIMARY KEY (id), | |
CONSTRAINT fk_cidade FOREIGN KEY (idEstado) REFERENCES estado(id) | |
) | |
CREATE TABLE tipologradouro( | |
idTipoLogradouro varchar(3) NOT NULL, | |
tipo varchar(30) NOT NULL, | |
CONSTRAINT pk_tipologradouro PRIMARY KEY (idTipoLogradouro) | |
) | |
CREATE TABLE endereco( | |
idEndereco int identity(1,1), | |
CEP int NOT NULL, | |
idCidade int NOT NULL, | |
idTipoLogradouro varchar(3) NOT NULL, | |
CONSTRAINT pk_endereco PRIMARY KEY (idEndereco), | |
CONSTRAINT fk_endereco FOREIGN KEY (idCidade) REFERENCES cidade(id), | |
CONSTRAINT fk2_endereco FOREIGN KEY (idTipoLogradouro) REFERENCES tipologradouro(idTipoLogradouro) | |
) | |
CREATE TABLE pessoa( | |
nome varchar(100) NOT NULL, | |
email varchar(100) NOT NULL, | |
CPF varchar(20) NOT NULL, | |
RG varchar(20) NOT NULL, | |
orgaomissorRG varchar(50) NOT NULL, | |
senha varchar(10) DEFAULT '123456', | |
idEndereco int NOT NULL, | |
CONSTRAINT pk_pessoa PRIMARY KEY(CPF), | |
CONSTRAINT fk2_pessoa FOREIGN KEY(idEndereco) REFERENCES endereco(idEndereco), | |
CHECK (email LIKE '%_@_%_.__%'), | |
CHECK (CPF LIKE '___.___.___-__') | |
) | |
create table tb_rg( | |
RG varchar(20) not null, | |
CPF varchar(20) not null, | |
CONSTRAINT fk_rg FOREIGN KEY(CPF) REFERENCES pessoa(CPF) | |
) | |
CREATE TABLE telefone( | |
numero varchar(9) NOT NULL, | |
tipo char(1) DEFAULT 'F', | |
CPF varchar(20) NOT NULL, | |
CONSTRAINT pk_telefone PRIMARY KEY(numero), | |
CONSTRAINT fk_telefone FOREIGN KEY(CPF) REFERENCES pessoa(CPF), | |
CHECK (tipo IN ('F', 'M') ) | |
) | |
CREATE TABLE empresa( | |
nome varchar(50) NOT NULL, | |
razaosocial varchar(100) NOT NULL, | |
idEndereco int NOT NULL, | |
CNPJ varchar(20) NOT NULL, | |
email varchar(50) NOT NULL, | |
idResponsavel varchar(20) NOT NULL, | |
CONSTRAINT pk_empresa PRIMARY KEY(CNPJ), | |
CONSTRAINT fk_empresa FOREIGN KEY(idEndereco) REFERENCES endereco(idEndereco), | |
CONSTRAINT fk2_empresa FOREIGN KEY(idResponsavel) REFERENCES pessoa(CPF), | |
CHECK (email LIKE '%_@_%_.__%'), | |
CHECK (CNPJ LIKE '__.___.___/____-__') | |
) | |
create table tbr_pessoa_empresa( | |
id_tbr_pessoa_empresa int identity(1,1) | |
,CPF varchar(20) NOT NULL | |
,CNPJ varchar(20) NOT NULL | |
,CONSTRAINT pk_tbr_pessoa_empresa PRIMARY KEY(id_tbr_pessoa_empresa) | |
,CONSTRAINT fk1_tbr_pessoa_empresa FOREIGN KEY(CPF) REFERENCES pessoa(CPF) | |
,CONSTRAINT fk2_tbr_pessoa_empresa FOREIGN KEY(CNPJ) REFERENCES empresa(CNPJ) | |
) | |
CREATE TABLE projeto( | |
situacao varchar(15) DEFAULT('Em cadastro'), | |
numero varchar(17) NOT NULL, | |
CNPJ varchar(20) NOT NULL, | |
CPF varchar(20) NOT NULL, | |
tipo char(2) NOT NULL, | |
inicio datetime NOT NULL, | |
fim datetime NOT NULL, | |
CONSTRAINT pk_projeto PRIMARY KEY(numero), | |
CONSTRAINT fk_projeto FOREIGN KEY(CNPJ) REFERENCES empresa(CNPJ), | |
CONSTRAINT fk2_projeto FOREIGN KEY(CPF) REFERENCES pessoa(CPF), | |
constraint ck_data_projeto check (inicio < fim), | |
constraint ck_situacao_projeto CHECK (situacao IN ('Em Cadastro', 'Ativo', 'Cancelado')) | |
) | |
create table tbr_pessoa_projeto( | |
id_tbr_pessoa_projeto int identity(1,1) | |
,CPF varchar(20) NOT NULL | |
,numero varchar(17) not null | |
,CONSTRAINT fk1_pessoa_projeto FOREIGN KEY(CPF) REFERENCES pessoa(CPF) | |
,CONSTRAINT fk2_pessoa_projeto FOREIGN KEY(numero) REFERENCES projeto(numero) | |
) | |
CREATE TABLE meta( | |
id int identity(1,1), | |
numero int NOT NULL, | |
projeto varchar(17) NOT NULL, | |
CONSTRAINT pk_meta PRIMARY KEY(id), | |
CONSTRAINT fk_meta FOREIGN KEY(projeto) REFERENCES projeto(numero), | |
) | |
CREATE TABLE etapa( | |
id int identity(1,1), | |
numero int NOT NULL, | |
meta int NOT NULL, | |
dataPrevista datetime NOT NULL, | |
unidadeControle varchar(5) DEFAULT ('%'), | |
Programado numeric(5,2) NOT NULL, | |
Executado numeric(5,2) NOT NULL, | |
CONSTRAINT pk_etapa PRIMARY KEY(id), | |
CONSTRAINT fk_etapa FOREIGN KEY(meta) REFERENCES meta(id), | |
) | |
CREATE TABLE recursoFinanceiro( | |
id int identity(1,1), | |
valorDisponivel numeric(8,2) NOT NULL, | |
qtParcelas int NOT NULL, | |
financiador varchar(20) NOT NULL, | |
tipo char(1) NOT NULL, | |
etapa int NOT NULL, | |
CHECK (tipo IN('P', 'T', 'F', 'B')), | |
CONSTRAINT pk_recursoFinanceiro PRIMARY KEY(id), | |
CONSTRAINT fk_recursoFinanceiro FOREIGN KEY(financiador) REFERENCES empresa(CNPJ), | |
CONSTRAINT fk2_recursoFinanceiro FOREIGN KEY(etapa) REFERENCES etapa(id), | |
) | |
CREATE TABLE docPagamento( | |
id int identity(1,1), | |
numero varchar(50) NOT NULL, | |
valor numeric(8,2) NOT NULL, | |
data datetime NOT NULL, | |
responsavelCPF varchar(20), | |
responsavelCNPJ varchar(20), | |
recursoFinanceiro int, | |
CONSTRAINT pk_docPagamento PRIMARY KEY(id), | |
CONSTRAINT fk_docPagamento FOREIGN KEY(recursoFinanceiro) REFERENCES recursoFinanceiro(id), | |
CONSTRAINT fk2_docPagamento FOREIGN KEY(responsavelCPF) REFERENCES pessoa(CPF), | |
CONSTRAINT fk3_docPagamento FOREIGN KEY(responsavelCNPJ) REFERENCES empresa(CNPJ), | |
) | |
CREATE TABLE tituloCredito( | |
nome varchar(15) DEFAULT ('Nota Fiscal'), | |
sigla char(3) DEFAULT ('NF'), | |
CONSTRAINT pk_tituloCredito PRIMARY KEY(sigla), | |
) | |
CREATE TABLE despesas( | |
id int identity(1,1), | |
nome varchar(50) NOT NULL, | |
identificacao int NOT NULL, | |
docPagamento int NOT NULL, | |
tituloCredito char(3) DEFAULT ('NF'), | |
numeroCredito int, | |
etapa int NOT NULL, | |
numero varchar(17) NOT NULL, | |
CONSTRAINT pk_despesas PRIMARY KEY(id), | |
CONSTRAINT fk_despesas FOREIGN KEY(docPagamento) REFERENCES docPagamento(id), | |
CONSTRAINT fk2_despesas FOREIGN KEY(tituloCredito) REFERENCES tituloCredito(sigla), | |
CONSTRAINT fk3_despesas FOREIGN KEY(etapa) REFERENCES etapa(id), | |
CONSTRAINT fk4_despesas FOREIGN KEY(numero) REFERENCES projeto(numero) | |
) | |
-- Tabelas terminam aqui | |
-- Zona de testes | |
-- | |
CREATE TRIGGER TRG_ativo_para_emcadastro on projeto | |
after update | |
as begin | |
declare | |
@situacaoAntiga varchar(15), | |
@situacaoNova varchar(15), | |
@numero varchar(17) | |
select @situacaoAntiga = deleted.situacao,@situacaoNova = projeto.situacao,@numero = projeto.numero from deleted join | |
projeto on projeto.numero = deleted.numero | |
if(@situacaoAntiga = 'Ativo' and @situacaoNova = 'Em Cadastro')begin | |
rollback transaction | |
raiserror('Projeto ativo não pode voltar para a fase em cadastro',16,1) | |
end | |
end | |
CREATE TRIGGER TRG_dataPrev_maiorQue_fim on etapa | |
after insert,update | |
as | |
begin | |
declare | |
@dataPrevista datetime | |
,@dataFimProjeto datetime | |
select @dataPrevista = dataPrevista, @dataFimProjeto = projeto.fim from Etapa join | |
Meta on etapa.meta = meta.id join Projeto on projeto.numero = meta.projeto | |
if(@dataPrevista > @dataFimProjeto )begin | |
rollback transaction | |
raiserror('Data prevista não pode ser maior que a data final do projeto',16,1) | |
end | |
end | |
CREATE procedure ativarProjeto(@numeroProjeto varchar(17)) | |
AS | |
begin | |
if (select sum(Programado) from etapa join meta | |
on etapa.meta = meta.id | |
where meta.projeto = @numeroProjeto) = 100.00 | |
begin | |
if (select count(etapa.id) | |
from etapa | |
join meta on etapa.meta = meta.id | |
join projeto on meta.projeto = projeto.numero | |
where etapa.dataPrevista > projeto.fim AND meta.projeto = @numeroProjeto) = 0 | |
begin | |
update projeto set situacao = 'Ativo' where numero = @numeroProjeto | |
return | |
end | |
raiserror('Projeto não pode ser ativado',16,1) | |
end | |
raiserror('Projeto não pode ser ativado',16,1) | |
end | |
CREATE Function gerarnumero(@CNPJ varchar(20), @CPF varchar(20), @tipo varchar(2), @data datetime) returns varchar(17) | |
AS | |
begin | |
return (SUBSTRING(@CNPJ, 1, 2) + SUBSTRING(@CNPJ, 4, 2) + '.' + SUBSTRING(@CPF, 1, 3) + SUBSTRING(@CPF, 5, 1) + '-' + @tipo +'/'+ CAST(year(@data) AS char(4))) | |
end | |
CREATE FUNCTION funcValCPF(@CPF VARCHAR(11)) | |
RETURNS VARCHAR(17) | |
AS | |
BEGIN | |
DECLARE @INDICE INT, | |
@SOMA INT, | |
@DIG1 INT, | |
@DIG2 INT, | |
@CPF_TEMP VARCHAR(11), | |
@DIGITOS_IGUAIS CHAR(1), | |
@RESULTADO CHAR(1); | |
SET @RESULTADO = 'N' | |
SET @CPF_TEMP = SUBSTRING(@CPF,1,1) | |
SET @INDICE = 1 | |
SET @DIGITOS_IGUAIS = 'S' | |
WHILE (@INDICE <= 11) BEGIN IF SUBSTRING(@CPF,@INDICE,1) <> @CPF_TEMP | |
SET @DIGITOS_IGUAIS = 'N' | |
SET @INDICE = @INDICE + 1 | |
END; | |
--Caso os digitos não sejão todos iguais Começo o calculo do digitos | |
IF @DIGITOS_IGUAIS = 'N' | |
BEGIN | |
--Cálculo do 1º dígito | |
SET @SOMA = 0 | |
SET @INDICE = 1 | |
WHILE (@INDICE <= 9) BEGIN SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CPF,@INDICE,1)) * (11 - @INDICE); SET @INDICE = @INDICE + 1 END SET @DIG1 = 11 - (@SOMA % 11) IF @DIG1 > 9 | |
SET @DIG1 = 0; | |
-- Cálculo do 2º dígito } | |
SET @SOMA = 0 | |
SET @INDICE = 1 | |
WHILE (@INDICE <= 10) BEGIN SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CPF,@INDICE,1)) * (12 - @INDICE); SET @INDICE = @INDICE + 1 END SET @DIG2 = 11 - (@SOMA % 11) IF @DIG2 > 9 | |
SET @DIG2 = 0; | |
-- Validando | |
IF (@DIG1 = SUBSTRING(@CPF,LEN(@CPF)-1,1)) AND (@DIG2 = SUBSTRING(@CPF,LEN(@CPF),1)) | |
return (substring(@CPF,1,3) + '.' + substring(@CPF,4,3) + '.' +substring(@CPF,7,3) + '-' + substring(@CPF,10,2)) | |
ELSE | |
return 0 | |
END | |
return 0 | |
END | |
CREATE FUNCTION funcValCNPJ(@CNPJ VARCHAR(14)) | |
RETURNS VARCHAR(18) | |
AS | |
BEGIN | |
DECLARE @INDICE INT, @SOMA INT, @DIG1 INT, @DIG2 INT, @VAR1 INT, @VAR2 INT, @RESULTADO CHAR(1) | |
SET @SOMA = 0 | |
SET @INDICE = 1 | |
SET @RESULTADO = 'N' | |
SET @VAR1 = 5 | |
WHILE (@INDICE <= 4) | |
BEGIN | |
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR1 | |
SET @INDICE = @INDICE + 1 | |
SET @VAR1 = @VAR1 - 1 | |
END | |
SET @VAR2 = 9 | |
WHILE (@INDICE <= 12) | |
BEGIN | |
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR2 | |
SET @INDICE = @INDICE + 1 | |
SET @VAR2 = @VAR2 - 1 | |
END | |
SET @DIG1 = (@soma % 11) | |
IF @DIG1 < 2 | |
SET @DIG1 = 0; | |
ELSE | |
SET @DIG1 = 11 - (@soma % 11); | |
SET @INDICE = 1 | |
SET @SOMA = 0 | |
SET @VAR1 = 6 | |
SET @RESULTADO = 'N' | |
WHILE (@INDICE <= 5) | |
BEGIN | |
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR1 | |
SET @INDICE = @INDICE + 1 | |
SET @VAR1 = @VAR1 - 1 | |
END | |
SET @VAR2 = 9 | |
WHILE (@INDICE <= 13) | |
BEGIN | |
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR2 | |
SET @INDICE = @INDICE + 1 | |
SET @VAR2 = @VAR2 - 1 | |
END | |
SET @DIG2 = (@soma % 11) | |
IF @DIG2 < 2 | |
SET @DIG2 = 0; | |
ELSE | |
SET @DIG2 = 11 - (@soma % 11); | |
IF (@DIG1 = SUBSTRING(@CNPJ,LEN(@CNPJ)-1,1)) AND (@DIG2 = SUBSTRING(@CNPJ,LEN(@CNPJ),1)) | |
RETURN (substring(@CNPJ,1,2) + '.' + substring(@CNPJ,3,3) + '.' +substring(@CNPJ,6,3) + '/' + substring(@CNPJ,9,4) + '-' + substring(@CNPJ,13,2)) | |
ELSE | |
SET @RESULTADO = 0 | |
RETURN @RESULTADO | |
END | |
-- Leia mais em: Validando CNPJ no SQL Server http://www.devmedia.com.br/validando-cnpj-no-sql-server/9289#ixzz2EJpXH62c | |
-- Leia mais em: Função para validar CPF no SQL Server http://www.devmedia.com.br/funcao-para-validar-cpf-no-sql-server/2723#ixzz2Dx0CyLwl | |
-- CARGAS INICIAIS | |
INSERT INTO Estado values | |
('SE', 'Sergipe'), | |
('BA', 'Bahia'), | |
('PE', 'Pernambuco'), | |
('AL', 'Alagoas'), | |
('CE', 'Ceará'), | |
('RN', 'Rio Grande do Norte') | |
INSERT INTO Cidade values | |
('Aracaju', 1), | |
('Propriá', 1), | |
('Itabaiana', 1), | |
('São Cristóvão', 1), | |
('Salvador', 2), | |
('Feira de Santana', 2) | |
INSERT INTO TituloCredito values | |
('Nota Fiscal', 'NF'), | |
('Recibo', 'REC'), | |
('Cupom Fiscal', 'CF') | |
INSERT INTO TipoLogradouro values | |
('AER', 'Aeroporto'), | |
('ROD', 'Rodovia'), | |
('PRQ', 'Parque'), | |
('BL', 'Bloco'), | |
('AV', 'Avenida') | |
INSERT INTO Endereco values | |
(49035530, 1, 'AV'), | |
(51524584, 2, 'AV'), | |
(95152943, 4, 'ROD'), | |
(58168243, 1, 'BL'), | |
(10583928, 1, 'ROD'), | |
(35812385, 2, 'AER') | |
-- responsaveis | |
INSERT INTO Pessoa(nome, email, CPF, RG, orgaomissorRG, idEndereco) values | |
('Lucas de Oliveira Machado', 'lucas_rev@hotmail.com', dbo.funcValCPF('04921441502'), '32986777', 'Secretaria de Segurança Pública', 1), | |
('Pessoa2', 'pes2@email.com', dbo.funcValCPF('78352348825'), '12345678', 'Secretaria de Segurança Pública', 2), | |
('Pessoa3', 'pes3@email.com', dbo.funcValCPF('45019835404'), '32986777', 'Secretaria de Segurança Pública', 4), | |
('Pessoa4', 'pes4@email.com', dbo.funcValCPF('01088208746'), '32986777', 'Secretaria de Segurança Pública', 3), | |
('Pessoa5', 'pes5@email.com', dbo.funcValCPF('42175150496'), '32986777', 'Secretaria de Segurança Pública', 5) | |
-- clientes | |
INSERT INTO Empresa(nome, razaosocial, idEndereco, CNPJ, email, idResponsavel) values | |
('Empresa1', 'Servir de Exemplo para o script', 1, dbo.funcValCNPJ('56137579000193'), 'emp1@email.com', '049.214.415-02'), | |
('Empresa2', 'Servir de Exemplo2 para o script', 2, dbo.funcValCNPJ('09304620000199'), 'emp1@email.com', '783.523.488-25'), | |
('Empresa3', 'Servir de Exemplo3 para o script', 3, dbo.funcValCNPJ('78300139000148'), 'emp1@email.com', '010.882.087-46') | |
-- 2 projetos ativos ,cada um com 2 metas, cada meta com 3 etapas | |
-- Primeiro cadastrar os projetos | |
-- 1º Projeto | |
declare @numero varchar(30), @CNPJ varchar(20), @CPF varchar(20), @tipo char(2), @inicio datetime, @fim datetime | |
set @CNPJ = '56.137.579/0001-93' | |
set @CPF = '049.214.415-02' | |
set @tipo = 'TE' | |
set @inicio = '01/01/2013' | |
set @fim = '01/12/2013' | |
set @numero = dbo.gerarnumero(@CNPJ, @CPF, @tipo, @inicio) | |
INSERT INTO Projeto(numero, CNPJ, CPF, tipo, inicio, fim) values | |
(@numero, @CNPJ, @CPF, @tipo, @inicio, @fim) | |
-- 2º Projeto | |
declare @numero varchar(30), @CNPJ varchar(20), @CPF varchar(20), @tipo char(2), @inicio datetime, @fim datetime | |
set @CNPJ = '09.304.620/0001-99' | |
set @CPF = '783.523.488-25' | |
set @tipo = 'ET' | |
set @inicio = '01/01/2013' | |
set @fim = '01/12/2013' | |
set @numero = dbo.gerarnumero(@CNPJ, @CPF, @tipo, @inicio) | |
INSERT INTO Projeto(numero, CNPJ, CPF, tipo, inicio, fim) values | |
(@numero, @CNPJ, @CPF, @tipo, @inicio, @fim) | |
-- 3º Projeto | |
declare @numero varchar(30), @CNPJ varchar(20), @CPF varchar(20), @tipo char(2), @inicio datetime, @fim datetime | |
set @CNPJ = '78.300.139/0001-48' | |
set @CPF = '010.882.087-46' | |
set @tipo = 'TT' | |
set @inicio = '01/01/2013' | |
set @fim = '01/12/2013' | |
set @numero = dbo.gerarnumero(@CNPJ, @CPF, @tipo, @inicio) | |
INSERT INTO Projeto(numero, CNPJ, CPF, tipo, inicio, fim) values | |
(@numero, @CNPJ, @CPF, @tipo, @inicio, @fim) | |
-- inserir metas | |
INSERT INTO Meta(numero, projeto) values | |
(1, '0930.7835-ET/2013'), | |
(2, '0930.7835-ET/2013'), | |
(1, '5613.0492-TE/2013'), | |
(2, '5613.0492-TE/2013') | |
-- inserir etapas | |
INSERT INTO Etapa(numero, meta, dataPrevista, Programado, Executado) values | |
(1, 1, '01/06/2013', 20, 20), | |
(2, 1, '01/06/2013', 20, 20), | |
(3, 1, '01/06/2013', 20, 20), | |
(1, 2, '01/06/2013', 20, 20), | |
(2, 2, '01/06/2013', 10, 10), | |
(3, 2, '01/06/2013', 10, 10), | |
(1, 3, '01/06/2013', 20, 20), | |
(2, 3, '01/06/2013', 20, 20), | |
(3, 3, '01/06/2013', 20, 20), | |
(1, 4, '01/06/2013', 20, 20), | |
(2, 4, '01/06/2013', 10, 10), | |
(3, 4, '01/06/2013', 10, 10) | |
-- ativar 2 projetos | |
select * from projeto | |
execute dbo.ativarProjeto @numeroProjeto = '0930.7835-ET/2013'; | |
execute dbo.ativarProjeto @numeroProjeto = '5613.0492-TE/2013'; | |
execute dbo.ativarProjeto @numeroProjeto = '7830.0108-TT/2013'; -- Vai gerar mensagem de erro dizendo que o projeto não pode ser ativado | |
-- inserir 5 debitos por projeto, sendo 1 parcial | |
INSERT INTO recursoFinanceiro(valorDisponivel, qtParcelas, financiador, tipo, etapa) values -- A empresa(cliente) que não teve projeto ativado vai financiar as outras | |
(500.00, 1, '78.300.139/0001-48', 'T', 1), | |
(300.00, 1, '78.300.139/0001-48', 'T', 2), | |
(450.00, 1, '78.300.139/0001-48', 'T', 3), | |
(1.00, 1, '78.300.139/0001-48', 'P', 4), | |
(50.00, 4, '78.300.139/0001-48', 'T', 5), | |
(600.00, 1, '78.300.139/0001-48', 'T', 6), | |
(20.00, 1, '78.300.139/0001-48', 'B', 7), | |
(0.50, 8, '78.300.139/0001-48', 'T', 8) | |
INSERT INTO DocPagamento(numero, valor, data, responsavelCPF, recursoFinanceiro) values | |
('5128589', 350, '05/03/2013', '421.751.504-96', 1), | |
('5235642', 200, '05/03/2013', '421.751.504-96', 2), | |
('5624623', 70, '05/03/2013', '421.751.504-96', 3), | |
('1235125', 1, '05/03/2013', '421.751.504-96', 4) | |
INSERT INTO DocPagamento(numero, valor, data, responsavelCNPJ, recursoFinanceiro) values | |
('7432462', 35, '05/03/2013', '56.137.579/0001-93', 5), | |
('6236451', 480, '05/03/2013', '56.137.579/0001-93', 6), | |
('1045683', 5, '05/03/2013', '09.304.620/0001-99', 7), | |
('2346125', 0.2, '05/03/2013', '09.304.620/0001-99', 8) | |
INSERT INTO DocPagamento(numero, valor, data, responsavelCNPJ) values -- parciais | |
('6341254', 5, '05/03/2013', '56.137.579/0001-93'), | |
('1246245', 5, '05/03/2013', '09.304.620/0001-99') | |
INSERT INTO Despesas(nome, identificacao, docPagamento, tituloCredito, etapa, numero) values | |
('Debito1', 10, 1, 'REC', 1, '0930.7835-ET/2013'), | |
('Debito2', 20, 2, 'REC', 2, '0930.7835-ET/2013'), | |
('Debito3', 30, 3, 'REC', 3, '0930.7835-ET/2013'), | |
('Debito4', 40, 4, 'REC', 4, '5613.0492-TE/2013'), | |
('Debito5', 50, 5, 'REC', 5, '5613.0492-TE/2013'), | |
('Debito6', 60, 6, 'REC', 6, '5613.0492-TE/2013'), | |
('Debito7', 70, 7, 'REC', 7, '0930.7835-ET/2013'), | |
('Debito8', 80, 8, 'REC', 8, '0930.7835-ET/2013'), | |
('Debito9', 90, 9, 'REC', 9, '0930.7835-ET/2013'), -- parcial | |
('Debito10', 100, 10, 'REC', 10, '5613.0492-TE/2013') -- parcial | |
-- AQUI TERMINAM OS INSERTS | |
-- NESTA PARTE COMEÇAM AS VIEWS | |
CREATE VIEW dadosFinanceirosSimples -- falta algumas colunas | |
as | |
SELECT empresa.nome as Cliente, | |
projeto.numero as Projeto, | |
docpagamento.valor as Gastos, | |
projeto.inicio as DataInicio, | |
projeto.fim as DataFim | |
FROM projeto | |
JOIN empresa ON projeto.CNPJ = empresa.CNPJ | |
JOIN meta ON meta.projeto = projeto.numero | |
JOIN etapa ON meta.id = etapa.meta | |
LEFT JOIN recursoFinanceiro ON etapa.id = recursoFinanceiro.etapa | |
LEFT JOIN despesas ON despesas.etapa = etapa.id | |
LEFT JOIN docPagamento ON despesas.docPagamento = docPagamento.id | |
CREATE VIEW dadosFinanceirosCompleto -- falta a coluna recursos | |
as | |
SELECT empresa.nome as Cliente, | |
projeto.numero as Projeto, | |
docpagamento.valor as Gastos, | |
meta.numero as Meta, | |
recursoFinanceiro.valorDisponivel as ValorDisponivel | |
FROM projeto | |
JOIN empresa ON projeto.CNPJ = empresa.CNPJ | |
JOIN meta ON meta.projeto = projeto.numero | |
JOIN etapa ON meta.id = etapa.meta | |
LEFT JOIN recursoFinanceiro ON etapa.id = recursoFinanceiro.etapa | |
LEFT JOIN despesas ON despesas.etapa = etapa.id | |
LEFT JOIN docPagamento ON despesas.docPagamento = docPagamento.id |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment