CREATE TABLE IF NOT EXISTS traspasos_caja (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    empresa_id BIGINT UNSIGNED NOT NULL,
    apertura_origen_id BIGINT UNSIGNED NOT NULL,
    apertura_destino_id BIGINT UNSIGNED NOT NULL,
    usuario_origen_id BIGINT UNSIGNED NOT NULL,
    usuario_destino_id BIGINT UNSIGNED NOT NULL,
    monto DECIMAL(12,2) NOT NULL DEFAULT 0,
    estado ENUM('pendiente', 'aprobado', 'rechazado') NOT NULL DEFAULT 'pendiente',
    concepto VARCHAR(160) NOT NULL,
    observacion TEXT NULL,
    respondido_por_id BIGINT UNSIGNED NULL,
    respondido_at DATETIME NULL,
    observacion_respuesta TEXT NULL,
    created_at DATETIME NULL,
    INDEX idx_traspasos_empresa_fecha (empresa_id, created_at),
    INDEX idx_traspasos_estado_destino (empresa_id, estado, apertura_destino_id),
    CONSTRAINT fk_traspasos_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id),
    CONSTRAINT fk_traspasos_apertura_origen FOREIGN KEY (apertura_origen_id) REFERENCES aperturas_caja(id),
    CONSTRAINT fk_traspasos_apertura_destino FOREIGN KEY (apertura_destino_id) REFERENCES aperturas_caja(id),
    CONSTRAINT fk_traspasos_usuario_origen FOREIGN KEY (usuario_origen_id) REFERENCES usuarios(id),
    CONSTRAINT fk_traspasos_usuario_destino FOREIGN KEY (usuario_destino_id) REFERENCES usuarios(id),
    CONSTRAINT fk_traspasos_respondido_por FOREIGN KEY (respondido_por_id) REFERENCES usuarios(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
