oLucasPopov/PostoABC

★ 0Forks 0PascalGitHub ↗Compare

README

Configurando o Banco de Dados

  • Versão do delphi utilizada: 10.3
  • Versão do firebird utilizada: 5.0

Criando o arquivo .fdb com o iSQL

Ao abrir a ferramenta Firebird iSQL Tool, rodar o seguinte comando substituindo [caminho_disco_rigido]

CREATE DATABASE '[caminho_disco_rigido]\test.fdb' page_size 8192 user 'SYSDBA' password 'masterkey';

Criando a Estrutura do banco de dados

execute os comandos abaixo para criação da estrutura

create table tanques_combustivel(
  id integer generated by default as identity primary key
 ,tipo_tanque char(1) not null -- A - Alcool; D - Diesel; G - Gasolina
 ,descricao_tanque varchar(256) not null
 ,preco_litro numeric(18,2) not null
);
create table bombas_combustivel(
  id integer  generated by default as identity primary key
 ,id_tanque integer not null
 ,descricao_bomba varchar(256) not null
 ,foreign key (id_tanque) references tanques_combustivel(id)
);
create table vendas_combustivel(
  id integer  generated by default as identity primary key
 ,id_bomba integer --através da bomba, pegar o tanque
 ,datahora_transacao timestamp generated always as (CURRENT_TIMESTAMP(0))
 ,litros numeric(18, 3)
 ,preco_litro numeric(18,2)
 ,total_bruto numeric(18,2) generated always as (litros * preco_litro) 
 ,deducao_imposto numeric(18, 2) generated always as (total_bruto * 0.13) 
 ,total_liquido numeric(18, 2) generated always as (total_bruto - deducao_imposto) 
 ,foreign key (id_bomba) references bombas_combustivel(id)
);
CREATE VIEW MOVIMENTACAO_VENDAS_AGRUPADO
AS
select cast(datahora_transacao as date) as dia_venda
      ,bc.descricao_bomba 
      ,tc.descricao_tanque 
      ,sum(vc.litros) as total_litros                
      ,sum(vc.total_bruto) as total_bruto
      ,sum(vc.deducao_imposto) as total_imposto
      ,sum(vc.total_liquido) as total_liquido
  from vendas_combustivel vc
 inner join bombas_combustivel bc on bc.id = vc.id_bomba
inner join tanques_combustivel tc on tc.id = bc.id_tanque   
group by cast(datahora_transacao as date), bc.descricao_bomba, tc.descricao_tanque;

Inserindo Valores padrão no Banco de Dados

insert into 
  tanques_combustivel(tipo_tanque, descricao_tanque, preco_litro) 
values
  ('G', 'Tanque Gasolina', 5.87);
 
insert into 
  tanques_combustivel(tipo_tanque, descricao_tanque, preco_litro) 
values('D', 'Tanque Diesel', 5.94);
insert into 
  bombas_combustivel (id_tanque, descricao_bomba) 
values
  (1, 'Bomba Gasolina 1');

insert into 
  bombas_combustivel (id_tanque, descricao_bomba) 
values(1, 'Bomba Gasolina 2');

insert into 
  bombas_combustivel (id_tanque, descricao_bomba) 
values(2, 'Bomba Diesel 1');

insert into 
  bombas_combustivel (id_tanque, descricao_bomba) 
values(2, 'Bomba Diesel 2');

Contributors

oLucasPopov

Issues