- Versão do delphi utilizada: 10.3
- Versão do firebird utilizada: 5.0
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';
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;
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');