-- ============================================================
-- SISTEMA DE ANÁLISIS DE PROCUREMENT
-- Base de datos: procurement_analytics
-- Motor: MySQL 8.0+ / MariaDB 10.6+
-- ============================================================

CREATE DATABASE IF NOT EXISTS procurement_analytics
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

USE procurement_analytics;

-- ============================================================
-- TABLA STAGING: Carga directa desde CSV
-- Esta es la tabla principal para análisis inmediato
-- ============================================================

DROP TABLE IF EXISTS staging_compras;

CREATE TABLE staging_compras (
    id                            INT AUTO_INCREMENT PRIMARY KEY,
    id_interno_linea              INT,
    subsidiaria                   VARCHAR(150),
    folio_requisicion             VARCHAR(20),
    cotizacion                    VARCHAR(20),
    folio_orden_compra            VARCHAR(30),
    solicitante                   VARCHAR(200),
    autoriza_req                  VARCHAR(200),
    comprador                     VARCHAR(200),
    autorizador_oc                VARCHAR(200),
    comentarios                   TEXT,
    area_consumo                  VARCHAR(200),
    ubicacion_consumo             VARCHAR(200),
    ubicacion_almacen             VARCHAR(200),
    ubicacion_recepcion           VARCHAR(200),
    fecha_creacion                DATETIME,
    fecha_envio_autorizacion      DATETIME,
    fecha_autorizacion            DATETIME,
    fecha_invitacion_proveedor    DATETIME,
    fecha_finalizacion_cotizacion DATETIME,
    fecha_envio_autorizacion_oc   DATETIME,
    fecha_autorizacion_oc         DATETIME,
    fecha_recepcion               DATETIME,
    estatus_requisicion           VARCHAR(50),
    estatus_almacen               VARCHAR(50),
    estatus_cotizacion            VARCHAR(50),
    estatus_orden_compra          VARCHAR(50),
    articulo                      VARCHAR(300),
    unidad                        VARCHAR(50),
    cantidad_oc                   DECIMAL(12,2),
    cantidad_solicitada           DECIMAL(12,2),
    precio_ultima_compra          DECIMAL(15,2),
    familia                       VARCHAR(150),
    proveedor                     VARCHAR(200),
    precio_final_mxn              DECIMAL(15,2),
    moneda                        VARCHAR(5),
    precio_final_proveedor        DECIMAL(15,2),
    monto_total_colocado          DECIMAL(15,2),
    por_var_ultimo_precio         DECIMAL(10,4),
    por_var_precio_max            DECIMAL(10,4),
    por_var_precio_min            DECIMAL(10,4),
    proveedor_max                 VARCHAR(200),
    precio_final_max              DECIMAL(15,2),
    proveedor_min                 VARCHAR(200),
    precio_final_min              DECIMAL(15,2),
    
    INDEX idx_folio_req (folio_requisicion),
    INDEX idx_folio_oc (folio_orden_compra),
    INDEX idx_comprador (comprador(100)),
    INDEX idx_proveedor (proveedor(100)),
    INDEX idx_familia (familia),
    INDEX idx_estatus_req (estatus_requisicion),
    INDEX idx_estatus_oc (estatus_orden_compra),
    INDEX idx_estatus_alm (estatus_almacen),
    INDEX idx_fecha_creacion (fecha_creacion),
    INDEX idx_fecha_recepcion (fecha_recepcion),
    INDEX idx_subsidiaria (subsidiaria(100))
) ENGINE=InnoDB;
