Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Форма Корректировка прогноза

Описание корректировки прогноза

Форма Корректировка прогноза
http://localhost:3000/forecast_adjustments
Основная таблица этой формы FCST_ADJUSTMENTS.
Таблица интерфейсная, в [after_forecasting_batch_query] и [forecast_adjustment_batch] данные перегружаются в таблицу FCST_SKU.

Фронтовой функционал собран в:
public\javascripts\manual_forecast\main.js
public\javascripts\manual_forecast\templates.js
Серверная часть в:
classes\controllers\manualForecast.js

manual_forecast_table_data
Основной запрос страницы forecast_adjustments. Предназначен для извлечения данных отображаемых таблицей. Назначен на /api/manual_fcst/data и /api/manual_fcst/data_by_filters.
Первый используется при первом открытии страницы и дополнительно извлекает список магазинов, групп, SKU и т.д., а второй для обновления таблицы при применении фильтров.
Фильтры SKU, магазин и неделя.

Code Block
languagesql
    SELECT 
        WEEK,
        SKU_ID,
        STORE_ID,
        'DEFAULT USER' MANAGER, 
        SUBSTRING(CONVERT(VARCHAR, UPDATED, 120), 1, 16) UPDATED, 
        COEF,
        FCST
    FROM FCST_ADJUSTMENTS
    WHERE WEEK = :week
    and (:sku = -999 or SKU_ID = :sku)
    and (:store = -999 or STORE_ID = :store)
    ORDER BY UPDATED DESC;

manual_forecast_create
Запрос сохранения данных в FCST_ADJUSTMENTS. Привязан к /api/manual_fcst/create-new-skustore.
Используется при редактировании данных из формы.

Code Block
languagesql
    INSERT INTO FCST_ADJUSTMENTS (WEEK, SKU_ID, STORE_ID, COEF, UPDATED_BY, UPDATED)
    VALUES (:week, :sku, :store, :coef, :user, GETDATE())

manual_forecast_delete
Запрос удаления данных из FCST_ADJUSTMENTS. Привязан к /api/manual_fcst/delete_row, а также выполняется при редактировании записи в /api/manual_fcst/create-new-skustore, /api/manual_fcst/create-new-skustore__bulk и /api/manual_fcst/create-new-promo__bulk.
Первый назначен на удаление записи из формы.

Code Block
languagesql
    DELETE FROM FCST_ADJUSTMENTS
    WHERE WEEK = :week AND SKU_ID = :sku AND STORE_ID = :store;

manual_forecast_update
Запрос изменения данных в FCST_ADJUSTMENTS. Привязан к /api/manual_fcst/update-skustore, а также к /api/manual_fcst/import_skustores_to_table.
Первый используется при редактировании данных из формы, а второй при импорте из csv.

Code Block
languagesql
    MERGE INTO FCST_ADJUSTMENTS dest
    USING (SELECT :week WEEK, :sku SKU_ID, :store STORE_ID) src
    ON (dest.WEEK = src.WEEK AND dest.SKU_ID = src.SKU_ID AND dest.STORE_ID = src.STORE_ID)
    WHEN MATCHED THEN UPDATE SET UPDATED = GETDATE(), UPDATED_BY = :user, COEF = :coef, FCST = :fcst
    WHEN NOT MATCHED THEN
        INSERT(WEEK, SKU_ID, STORE_ID, COEF, FCST, UPDATED_BY, UPDATED)
        VALUES(src.WEEK, src.SKU_ID, src.STORE_ID, :coef, :fcst, :user, GETDATE());

manual_forecast_sales_sku_day
Используется для извлечения объемов продаж из таблицы SALES_SKU_DAY, при добавлении записи в /api/manual_fcst/create-new-skustore__bulk.

Code Block
languagesql
    SELECT STORE_ID, sum(sales_volume)/sum(CASE WHEN sales_volume > 0 THEN 0.5 ELSE 1 END) SALES_VOLUME
    FROM SALES_SKU_DAY
    WHERE SKU_ID = :sku
      and (stock_volume > 0 or sales_volume > 0)
      AND sdate BETWEEN ':dateFrom' AND ':dateTo' AND store_id [stores]
    GROUP BY STORE_ID;

manual_forecast_sales_sku_day_group
Используется для извлечения объемов продаж из таблицы SALES_SKU_DAY, при добавлении записи в /api/manual_fcst/create-new-skustore__bulk.

Code Block
languagesql
    SELECT s.STORE_ID, sum(s.sales_volume) SALES_VOLUME
    FROM SALES_SKU_DAY s join PRODUCTS p on p.SKU_ID=s.SKU_ID
    WHERE p.GROUP_ID = :group
        and (s.stock_volume > 0 or s.sales_volume > 0)
        AND s.sdate BETWEEN ':dateFrom' AND ':dateTo' AND s.store_id [stores]
    GROUP BY s.STORE_ID;

fcst_adjustments_promo
Извлекает список промо, актуальных для заданной недели, через startDate и endDate. Выведен в /api/manual_fcst/get_promo.
Используется для наполнения выпадающего списка промо.

Code Block
languagesql
    SELECT ID, NAME FROM PROMO_HEADER WHERE 
    (start_date BETWEEN ':startDate'AND ':endDate') OR 
    (end_date BETWEEN ':startDate' AND ':endDate') OR 
    (start_date <= ':startDate' AND end_date >= ':endDate')

fcst_adjustments_promo_stores_by_id
Извлекает список магазинов привязанных к заданному промо. Выведен в /manual_fcst/get_promo_sku-stores.
Используется для наполнения списка выбора магазина в модальном окне заведения коэффициента.

Code Block
languagesql
    select STORE_ID as ID, (select STORE_NAME from STORES where STORES.STORE_ID = ps.STORE_ID) as NAME
    from PROMO_STORES as ps
    where ID = :promoId

fcst_adjustments_promo_skus_by_id
Извлекает список SKU привязанных к заданному промо. Выведен в /manual_fcst/get_promo_sku-stores.
Используется для наполнения списка выбора SKU в модальном окне заведения коэффициента.

Code Block
languagesql
    SELECT SKU_ID as ID, (SELECT ARTICLE_NAME FROM PRODUCTS WHERE PRODUCTS.SKU_ID = ps.SKU_ID) as NAME
    from PROMO_SKU as ps
    where ID = :promoId

ss_adjustments_table_get_skus

...

ss_adjustments_skustore_create

manual_forecast_table_data

manual_forecast_create

manual_forecast_delete

manual_forecast_update

manual_forecast_sales_sku_day

manual_forecast_sales_sku_day_group

fcst_adjustments_promo

fcst_adjustments_promo_stores_by_id

fcst_adjustments_promo_skus_by_id

Форма Просмотр прогнозов

fcst_view_sku_by_all_regions

...