!
fiz passo a passo mas não tá saindo NULL no descontoAplicado e valorFinal
DELIMITER $$
CREATE TRIGGER AtualizaResumoAluguel
AFTER INSERT ON alugueis
FOR EACH ROW
BEGIN
DECLARE desconto DECIMAL(10,2);
DECLARE valorFinal DECIMAL(10,2);
SET desconto = CalcularDescontoPorDIas(NEW.aluguel_id);
SET valorFinal = CalcularValorFinalComDesconto(NEW.aluguel_id);
INSERT INTO resumo_aluguel
(
aluguel_id,
cliente_id,
valorTotal,
descontoAplicado,
valorFinal
)
VALUES
(
NEW.aluguel_id,
NEW.cliente_id,
NEW.preco_total,
desconto,
valorFinal
);
END$$
DELIMITER ;
SELECT * FROM resumo_aluguel;
INSERT INTO alugueis(aluguel_id, cliente_id, hospedagem_id, data_inicio, data_fim, preco_total)
VALUES (10002, 42, 15, '2024-01-01', '2024-01-08', 3000.00);
DROP TRIGGER IF EXISTS AtualizaResumoAluguel;
SELECT CalcularValorFinalComDesconto('10001');
SELECT CalcularDescontoPorDIas('10001');
DELIMITER $$
CREATE FUNCTION CalcularValorFinalComDesconto(AluguelID INT)
RETURNS DECIMAL(10,2) DETERMINISTIC
BEGIN
DECLARE ValorTotal DECIMAL(10,2);
DECLARE Desconto INT;
DECLARE ValorFinal DECIMAL(10,2);
SELECT preco_total INTO ValorTotal FROM alugueis
WHERE aluguel_id = AluguelID;
SET Desconto = CalcularDescontoPorDIas(AluguelID);
SET ValorFinal = ValorTotal - (ValorTotal * Desconto / 100);
RETURN ValorFinal;
END $$
DELIMITER ;
SELECT CalcularValorFinalComDesconto(1);
DELIMITER $$
CREATE FUNCTION CalcularDescontoPorDIas(AluguelID INT)
RETURNS INT DETERMINISTIC
BEGIN
DECLARE desconto INT;
SELECT
CASE
WHEN DATEDIFF(data_fim, data_inicio) BETWEEN 4 AND 6 THEN 5
WHEN DATEDIFF(data_fim, data_inicio) BETWEEN 7 AND 9 THEN 10
WHEN DATEDIFF(data_fim, data_inicio) >= 10 THEN 15
ELSE 0
END INTO desconto
FROM alugueis
WHERE cliente_id = AluguelID;
RETURN desconto;
END$$
DELIMITER ;
SELECT CalcularDescontoPorDIas(1);