USE bulo;

ALTER TABLE corridas
  ADD COLUMN IF NOT EXISTS cancelamento_valor_motorista DECIMAL(10,2) NOT NULL DEFAULT 0.00 AFTER cancelamento_taxa;

CREATE TEMPORARY TABLE IF NOT EXISTS tmp_cancelamento_motorista_creditos AS
SELECT
  id_motorista,
  DATE(COALESCE(cancelada_em, atualizada_em, criada_em)) AS data_ref,
  SUM(ROUND(COALESCE(cancelamento_taxa, 0) * 0.85, 2)) AS total_valor
FROM corridas
WHERE status = 'cancelada'
  AND COALESCE(cancelamento_taxa, 0) > 0
  AND COALESCE(cancelamento_valor_motorista, 0) = 0
  AND id_motorista IS NOT NULL
GROUP BY id_motorista, DATE(COALESCE(cancelada_em, atualizada_em, criada_em));

INSERT INTO ganhos_diarios (id_motorista, data_ref, total_corridas, total_valor)
SELECT id_motorista, data_ref, 0, total_valor
FROM tmp_cancelamento_motorista_creditos
WHERE total_valor > 0
ON DUPLICATE KEY UPDATE
  total_valor = total_valor + VALUES(total_valor),
  atualizado_em = CURRENT_TIMESTAMP;

UPDATE corridas
SET cancelamento_valor_motorista = ROUND(COALESCE(cancelamento_taxa, 0) * 0.85, 2)
WHERE status = 'cancelada'
  AND COALESCE(cancelamento_taxa, 0) > 0
  AND COALESCE(cancelamento_valor_motorista, 0) = 0
  AND id_motorista IS NOT NULL;

DROP TEMPORARY TABLE IF EXISTS tmp_cancelamento_motorista_creditos;
