-- =============================================================================
-- XPERT SAP B1 - Migracion 046
-- Clasificacion ABC / velocidad de rotacion de items. No existia ningun
-- campo de rotacion en items (solo category_id, que es rubro comercial) --
-- ver AbcClassificationService para el motor que calcula esto a partir de
-- stock_movements (metodo Pareto: 80% del movimiento acumulado = A,
-- siguiente 15% = B, resto = C). Se recalcula on-demand por boton, no por
-- cron, asi que estas columnas quedan NULL hasta la primera corrida.
--
-- abc_count_freq_*_days / abc_replenishment_coverage_days alimentan dos de
-- los tres consumidores (frecuencia sugerida de conteo ciclico, cobertura
-- sugerida de reposicion). Sin UI de edicion en esta iteracion -- mismo
-- criterio que count_tolerance_pct (028), que tampoco la tiene todavia.
-- =============================================================================

ALTER TABLE `items`
    ADD COLUMN `abc_class`          CHAR(1) NULL COMMENT 'A/B/C, calculado por AbcClassificationService',
    ADD COLUMN `abc_score`          DECIMAL(6,3) NULL COMMENT '% individual sobre el total movido en la ventana de calculo',
    ADD COLUMN `abc_calculated_at`  DATETIME NULL;

ALTER TABLE `company_settings`
    ADD COLUMN `abc_count_freq_a_days`             INT UNSIGNED NOT NULL DEFAULT 30,
    ADD COLUMN `abc_count_freq_b_days`             INT UNSIGNED NOT NULL DEFAULT 90,
    ADD COLUMN `abc_count_freq_c_days`             INT UNSIGNED NOT NULL DEFAULT 365,
    ADD COLUMN `abc_replenishment_coverage_days`   INT UNSIGNED NOT NULL DEFAULT 7;

-- La clasificacion agrega stock_movements por item_id + rango de fecha;
-- no habia indice compuesto que cubriera ese patron (solo idx_movements_item
-- e idx_movements_date por separado).
ALTER TABLE `stock_movements`
    ADD INDEX `idx_movements_item_date` (`item_id`, `created_at`);
