-- =============================================================================
-- 04 — PAGOS: registro de pagos + integración MercadoPago
-- =============================================================================

-- Tabla principal de pagos (puede haber 1+ pagos por pedido si hay parciales)
CREATE TABLE IF NOT EXISTS pagos (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    id_pedido       INT NOT NULL,
    id_forma_pago   INT NOT NULL,
    monto           DECIMAL(10,2) NOT NULL,
    estado          ENUM('pendiente','procesando','aprobado','rechazado','cancelado','devuelto') DEFAULT 'pendiente',
    fecha_creado    TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    fecha_aprobado  TIMESTAMP NULL,
    referencia      VARCHAR(120),       -- número de transacción, comprobante, etc.
    INDEX (id_pedido),
    FOREIGN KEY (id_pedido) REFERENCES pedidos(id) ON DELETE CASCADE,
    FOREIGN KEY (id_forma_pago) REFERENCES formas_pago(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Detalles específicos de MercadoPago
CREATE TABLE IF NOT EXISTS pagos_mercadopago (
    id_pago             INT PRIMARY KEY,
    preference_id       VARCHAR(120),
    payment_id          VARCHAR(120),
    init_point          VARCHAR(500),       -- link para que el cliente pague
    status              VARCHAR(40),        -- approved, pending, rejected, etc.
    status_detail       VARCHAR(120),
    payer_email         VARCHAR(150),
    payer_id            VARCHAR(50),
    payment_method_id   VARCHAR(40),        -- visa, master, account_money, etc.
    payment_type        VARCHAR(40),        -- credit_card, debit_card, ticket, etc.
    raw_payload         JSON,               -- guardamos el webhook completo
    fecha_evento        TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_pago) REFERENCES pagos(id) ON DELETE CASCADE,
    INDEX (preference_id),
    INDEX (payment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Log de webhooks de MercadoPago (auditoría + debug)
CREATE TABLE IF NOT EXISTS mercadopago_webhooks_log (
    id           INT AUTO_INCREMENT PRIMARY KEY,
    headers      TEXT,
    body         TEXT,
    tipo_evento  VARCHAR(40),
    payment_id   VARCHAR(120),
    procesado    TINYINT DEFAULT 0,
    error        TEXT,
    fecha        TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX (payment_id),
    INDEX (procesado, fecha)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
