-- =============================================================================
-- Revenda+ — Serviços Municipais
-- Setup: manifesto_motor, manifesto_custo, manifesto_multa + TblConfiguracao
-- NOTA: custos em manifesto_custo são PLACEHOLDER — actualizar com tabela IAV real
-- =============================================================================

-- ---------------------------------------------------------------------------
-- 1. Tipos de motor / classe de veículo
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `manifesto_motor` (
  `tipoId`        INT          NOT NULL AUTO_INCREMENT,
  `descricao`     VARCHAR(80)  NOT NULL,
  `combustivelTipo` VARCHAR(30) NOT NULL DEFAULT '',
  `combustivelId` INT          NOT NULL DEFAULT 0,
  `classeLabel`   VARCHAR(30)  NOT NULL,
  `servicoTipo`   ENUM('ligeiro','moto','carga','passageiros') NOT NULL,
  PRIMARY KEY (`tipoId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT IGNORE INTO `manifesto_motor` (`tipoId`,`descricao`,`combustivelTipo`,`combustivelId`,`classeLabel`,`servicoTipo`) VALUES
-- Ligeiro — Diesel
(1,  'Diesel 0–1500 cc',       'Diesel',    1, '0-1500',    'ligeiro'),
(2,  'Diesel 1501–2000 cc',    'Diesel',    1, '1501-2000', 'ligeiro'),
(3,  'Diesel 2001–3000 cc',    'Diesel',    1, '2001-3000', 'ligeiro'),
(4,  'Diesel + 3000 cc',       'Diesel',    1, '+3000',     'ligeiro'),
-- Ligeiro — Gasolina
(5,  'Gasolina 0–1000 cc',     'Gasolina',  2, '0-1000',    'ligeiro'),
(6,  'Gasolina 1001–1300 cc',  'Gasolina',  2, '1001-1300', 'ligeiro'),
(7,  'Gasolina 1301–1750 cc',  'Gasolina',  2, '1301-1750', 'ligeiro'),
(8,  'Gasolina 1751–2600 cc',  'Gasolina',  2, '1751-2600', 'ligeiro'),
(9,  'Gasolina 2601–3500 cc',  'Gasolina',  2, '2601-3500', 'ligeiro'),
(10, 'Gasolina + 3500 cc',     'Gasolina',  2, '+3500',     'ligeiro'),
-- Ligeiro — Eléctrico
(11, 'Eléctrico 0–100 kW',     'Eléctrico', 3, '0-100kW',  'ligeiro'),
(12, 'Eléctrico + 100 kW',     'Eléctrico', 3, '+100kW',   'ligeiro'),
-- Motociclo
(13, 'Moto 0–50 cc',           'Moto',      4, '0-50',      'moto'),
(14, 'Moto 51–100 cc',         'Moto',      4, '51-100',    'moto'),
(15, 'Moto 101–500 cc',        'Moto',      4, '101-500',   'moto'),
(16, 'Moto + 500 cc',          'Moto',      4, '+500',      'moto'),
-- Veículo de Carga — por tonelagem
(17, 'Carga até 6 toneladas',  'N/A',       0, 'Até 6 ton', 'carga'),
(18, 'Carga 6–10 toneladas',   'N/A',       0, '6-10 ton',  'carga'),
(19, 'Carga 10–15 toneladas',  'N/A',       0, '10-15 ton', 'carga'),
(20, 'Carga + 15 toneladas',   'N/A',       0, '+15 ton',   'carga'),
-- Veículo de Passageiros — por lotação
(21, 'Até 9 lugares',          'N/A',       0, 'Até 9 lug', 'passageiros'),
(22, '10 a 30 lugares',        'N/A',       0, '10-30 lug', 'passageiros'),
(23, '31 a 60 lugares',        'N/A',       0, '31-60 lug', 'passageiros'),
(24, 'Mais de 60 lugares',     'N/A',       0, '+60 lug',   'passageiros');

-- ---------------------------------------------------------------------------
-- 2. Tabela de custos por classe + antiguidade
--    grupo_min/grupo_max = diferença de anos (anoActual - anoFabrico)
--    NOTA: preencher com valores reais da tabela IAV do Conselho Municipal
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `manifesto_custo` (
  `id`        INT           NOT NULL AUTO_INCREMENT,
  `servicoId` INT           NOT NULL COMMENT '31=Ligeiro 32=Carga 33=Moto 34=Passag',
  `classeId`  INT           NOT NULL COMMENT 'FK manifesto_motor.tipoId',
  `grupo_min` INT           NOT NULL COMMENT 'ano mínimo (inclusive)',
  `grupo_max` INT           NOT NULL COMMENT 'ano máximo (inclusive)',
  `custo`     DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_svc_classe_grp` (`servicoId`,`classeId`,`grupo_min`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ---- Automóveis Ligeiros (servicoId=31) — PLACEHOLDER ----
-- Diesel 0-1500 (classeId=1)
INSERT IGNORE INTO manifesto_custo (servicoId,classeId,grupo_min,grupo_max,custo) VALUES
(31,1,1,5,750.00),(31,1,6,10,600.00),(31,1,11,15,450.00),(31,1,16,20,300.00),(31,1,21,24,150.00),
-- Diesel 1501-2000 (2)
(31,2,1,5,900.00),(31,2,6,10,720.00),(31,2,11,15,540.00),(31,2,16,20,360.00),(31,2,21,24,180.00),
-- Diesel 2001-3000 (3)
(31,3,1,5,1100.00),(31,3,6,10,880.00),(31,3,11,15,660.00),(31,3,16,20,440.00),(31,3,21,24,220.00),
-- Diesel +3000 (4)
(31,4,1,5,1400.00),(31,4,6,10,1120.00),(31,4,11,15,840.00),(31,4,16,20,560.00),(31,4,21,24,280.00),
-- Gasolina 0-1000 (5)
(31,5,1,5,400.00),(31,5,6,10,320.00),(31,5,11,15,240.00),(31,5,16,20,160.00),(31,5,21,24,80.00),
-- Gasolina 1001-1300 (6)
(31,6,1,5,550.00),(31,6,6,10,440.00),(31,6,11,15,330.00),(31,6,16,20,220.00),(31,6,21,24,110.00),
-- Gasolina 1301-1750 (7)
(31,7,1,5,700.00),(31,7,6,10,560.00),(31,7,11,15,420.00),(31,7,16,20,280.00),(31,7,21,24,140.00),
-- Gasolina 1751-2600 (8)
(31,8,1,5,900.00),(31,8,6,10,720.00),(31,8,11,15,540.00),(31,8,16,20,360.00),(31,8,21,24,180.00),
-- Gasolina 2601-3500 (9)
(31,9,1,5,1100.00),(31,9,6,10,880.00),(31,9,11,15,660.00),(31,9,16,20,440.00),(31,9,21,24,220.00),
-- Gasolina +3500 (10)
(31,10,1,5,1400.00),(31,10,6,10,1120.00),(31,10,11,15,840.00),(31,10,16,20,560.00),(31,10,21,24,280.00),
-- Eléctrico 0-100kW (11)
(31,11,1,5,300.00),(31,11,6,10,240.00),(31,11,11,15,180.00),(31,11,16,20,120.00),(31,11,21,24,60.00),
-- Eléctrico +100kW (12)
(31,12,1,5,500.00),(31,12,6,10,400.00),(31,12,11,15,300.00),(31,12,16,20,200.00),(31,12,21,24,100.00);

-- ---- Motociclos (servicoId=33) ----
INSERT IGNORE INTO manifesto_custo (servicoId,classeId,grupo_min,grupo_max,custo) VALUES
-- Moto 0-50cc (13)
(33,13,1,5,60.00),(33,13,6,10,48.00),(33,13,11,15,36.00),(33,13,16,20,24.00),(33,13,21,24,12.00),
-- Moto 51-100cc (14)
(33,14,1,5,80.00),(33,14,6,10,64.00),(33,14,11,15,48.00),(33,14,16,20,32.00),(33,14,21,24,16.00),
-- Moto 101-500cc (15)
(33,15,1,5,120.00),(33,15,6,10,96.00),(33,15,11,15,72.00),(33,15,16,20,48.00),(33,15,21,24,24.00),
-- Moto +500cc (16)
(33,16,1,5,200.00),(33,16,6,10,160.00),(33,16,11,15,120.00),(33,16,16,20,80.00),(33,16,21,24,40.00);

-- ---- Veículos de Carga (servicoId=32) ----
INSERT IGNORE INTO manifesto_custo (servicoId,classeId,grupo_min,grupo_max,custo) VALUES
-- Até 6 ton (17)
(32,17,1,5,500.00),(32,17,6,10,400.00),(32,17,11,15,300.00),(32,17,16,20,200.00),(32,17,21,24,100.00),
-- 6-10 ton (18)
(32,18,1,5,800.00),(32,18,6,10,640.00),(32,18,11,15,480.00),(32,18,16,20,320.00),(32,18,21,24,160.00),
-- 10-15 ton (19)
(32,19,1,5,1100.00),(32,19,6,10,880.00),(32,19,11,15,660.00),(32,19,16,20,440.00),(32,19,21,24,220.00),
-- +15 ton (20)
(32,20,1,5,1500.00),(32,20,6,10,1200.00),(32,20,11,15,900.00),(32,20,16,20,600.00),(32,20,21,24,300.00);

-- ---- Veículos de Passageiros (servicoId=34) ----
INSERT IGNORE INTO manifesto_custo (servicoId,classeId,grupo_min,grupo_max,custo) VALUES
-- Até 9 lugares (21)
(34,21,1,5,300.00),(34,21,6,10,240.00),(34,21,11,15,180.00),(34,21,16,20,120.00),(34,21,21,24,60.00),
-- 10-30 lugares (22)
(34,22,1,5,600.00),(34,22,6,10,480.00),(34,22,11,15,360.00),(34,22,16,20,240.00),(34,22,21,24,120.00),
-- 31-60 lugares (23)
(34,23,1,5,900.00),(34,23,6,10,720.00),(34,23,11,15,540.00),(34,23,16,20,360.00),(34,23,21,24,180.00),
-- +60 lugares (24)
(34,24,1,5,1200.00),(34,24,6,10,960.00),(34,24,11,15,720.00),(34,24,16,20,480.00),(34,24,21,24,240.00);

-- ---------------------------------------------------------------------------
-- 3. Multa de manifesto (aplicada após 31 de Março)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `manifesto_multa` (
  `id`        INT           NOT NULL DEFAULT 1,
  `descricao` VARCHAR(100)  DEFAULT 'Multa por atraso no manifesto',
  `taxa_pct`  DECIMAL(5,2)  NOT NULL DEFAULT 25.00 COMMENT 'percentagem sobre custo base',
  `estadoId`  INT           NOT NULL DEFAULT 5,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT IGNORE INTO `manifesto_multa` (`id`,`taxa_pct`,`estadoId`) VALUES (1, 25.00, 5);

-- ---------------------------------------------------------------------------
-- 4. TblConfiguracao — chaves para serviços municipais + delivery universal
-- ---------------------------------------------------------------------------
INSERT IGNORE INTO `TblConfiguracao` (`chave`,`valor`,`descricao`) VALUES
('delivery_fee',           200.00, 'Taxa de entrega uniforme para todos os serviços (MT)'),
('manifesto_taxa_radio',   144.00, 'Taxa de rádio por manifesto (MT)'),
('manifesto_sms_custo',      3.50, 'Custo SMS por manifesto (MT)'),
('manifesto_taxa_servico_pct', 17.00, 'Taxa de serviço cobrada pela Revenda+ sobre manifesto (%)'),
('manifesto_comissao_agente',  10.00, 'Comissão fixa do agente por manifesto (MT)'),
('ipa_custo_base',         300.00, 'Custo base do Imposto Pessoal Autárquico (MT)'),
('ipa_taxa_servico_pct',    16.00, 'Taxa de serviço cobrada pela Revenda+ sobre IPA (%)'),
('ipa_comissao_agente',     10.00, 'Comissão fixa do agente por IPA (MT)');
