-- =============================================================================
-- Revenda+ — Sistema de Agentes e Fundo de Referência
-- sql/agente_setup.sql
-- MySQL 5.x compatible (sem IF NOT EXISTS em ALTER TABLE)
-- =============================================================================

-- 1. Colunas em TblRevendedor (correr uma vez)
ALTER TABLE TblRevendedor
  ADD COLUMN referenciadoPorId INT          NULL DEFAULT NULL AFTER nivelId,
  ADD COLUMN referenciadoEm    DATETIME     NULL DEFAULT NULL AFTER referenciadoPorId,
  ADD COLUMN agenteNivel       ENUM('normal','agente','super_agente','mega_agente')
                               NOT NULL DEFAULT 'normal' AFTER referenciadoEm,
  ADD COLUMN agenteDesde       DATETIME     NULL DEFAULT NULL AFTER agenteNivel;

-- 2. Fundo de Referência
CREATE TABLE IF NOT EXISTS TblFundoReferencia (
  id            INT           NOT NULL AUTO_INCREMENT,
  saldo         DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  totalEntradas DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  totalSaidas   DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  updatedAt     DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT IGNORE INTO TblFundoReferencia (id, saldo, totalEntradas, totalSaidas)
VALUES (1, 0.00, 0.00, 0.00);

-- 3. TblConfiguracao — regras configuráveis
INSERT INTO TblConfiguracao (chave, valor, descricao) VALUES
  ('referencia_comissao_valor',    1.00,  '1 MT pago ao referenciador por cada recarga do referido'),
  ('referencia_duracao_meses',     3,     'Meses de duração do vínculo de comissão de referência'),
  ('referencia_min_valor_recarga', 50.00, 'Valor mínimo de recarga para gerar comissão de referência'),
  ('referencia_default_msisdn',    0,     'msisdn do referenciador padrão (empresa) ex: 258873826690'),
  ('agente_min_referidos',         10,    'Mínimo de referidos activos para Agente'),
  ('agente_super_min_referidos',   30,    'Mínimo de referidos activos para Super Agente'),
  ('agente_mega_min_referidos',    50,    'Mínimo de referidos activos para Mega Agente'),
  ('agente_dias_consecutivos',     5,     'Dias consecutivos com vendas para referido ser activo'),
  ('agente_inativo_dias',          3,     'Dias sem vendas para referido ser inactivo')
ON DUPLICATE KEY UPDATE descricao = VALUES(descricao);

-- 4. Definir o msisdn da empresa como referenciador padrão
UPDATE TblConfiguracao SET valor = 258873826690 WHERE chave = 'referencia_default_msisdn';
