Versions Compared

Key

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

...

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

ss_adjustments_table_get_skus

ss_adjustments_table_get_stores

ss_adjustments_table_get_sku-stores

ss_adjustments_sku_coef_update

ss_adjustments_store_coef_update

ss_adjustments_skustore_coef_update

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Описание корректировки прогноза

Форма Корректировка прогноза
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_table_get_stores

ss_adjustments_table_get_sku-stores

ss_adjustments_sku_coef_update

ss_adjustments_store_coef_update

ss_adjustments_skustore_coef_update

ss_adjustments_skustore_create

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

fcst_view_sku_by_all_regions

...

rpm_delete_tmp_table_by_store

rpm_truncate_tmp_table_by_store

rpm_fill_tmp_table_by_store

rpm_fill_tmp_table_with_skus_by_diagram

rpm_select_tmp_table_diagrams

rpm_clear_store_adjusted_delivery_today_order_delivery

rpm_get_existing_cross_dock_orders

rpm_delete_existing_cross_dock_orders

rpm_get_orders_by_stores_for_cross_dock

rpm_update_line_order_volume

rpm_add_whs_order_id_to_header

rpm_get_cross_dock_calendars

rpm_get_forecasts_for_picking

rpm_get_forecasts_for_picking_by_store

rpm_get_master_products_forecasts_picking_by_store

rpm_get_closest_picking_calendars

rpm_get_store_orders_with_insufficient_stock

rpm_get_pick_to_zero_with_insufficient_order

rpm_save_picking_forecast_orders

rpm_delete_assigned_lots

rpm_get_picking_orders_for_lots_assignment

rpm_get_picking_lots_for_assignment

rpm_get_adjusted_picking_orders_to_recalculate

rpm_get_cross_orders_to_adjust_sku_delivery

rpm_clear_adjusted_delivery

rpm_set_adjusted_delivery_by_order_id

rpm_get_todays_whs_deliveries

rpm_confirm_orders_after_orders_batch

rpm_max_calendar_id

rpm_delete_calendars

rpm_delete_unlinked_headers_and_lines

Запросы, используемые при работе с функционалом модуля Пополнение

rpm_check_orders_batch_running

Форма Диаграммы

rpm_diagrams

rpm_suppliers

rpm_warehouses

rpm_contracts_by_supplier

rpm_get_contract_by_diagram

rpm_check_remaining_stores_for_cross_dock

rpm_skus_by_supplier

rpm_get_diagram

rpm_get_groups_for_diagram_with_skus_by_diagram

rpm_select_tmp_table_diagrams

rpm_clear_store_adjusted_delivery_today_order_delivery

rpm_get_existing_cross_dock_orders

rpm_delete_existing_cross_dock_orders

rpm_get_orders_by_stores_for_cross_dock

rpm_update_line_order_volume

rpm_add_whs_order_id_to_header

rpm_get_cross_dock_calendars

rpm_get_forecasts_for_picking

rpm_get_forecasts_for_picking_by_store

rpm_get_master_products_forecasts_picking_by_store

rpm_get_closest_picking_calendars

rpm_get_store_orders_with_insufficient_stock

rpm_get_pick_to_zero_with_insufficient_order

rpm_save_picking_forecast_orders

rpm_delete_assigned_lots

rpm_get_picking_orders_for_lots_assignment

rpm_get_picking_lots_for_assignment

rpm_get_adjusted_picking_orders_to_recalculate

rpm_get_cross_orders_to_adjust_sku_delivery

rpm_clear_adjusted_delivery

rpm_set_adjusted_delivery_by_order_id

rpm_get_todays_whs_deliveries

rpm_confirm_orders_after_orders_batch

rpm_max_calendar_id

rpm_delete_calendars

rpm_delete_unlinked_headers_and_lines

Запросы, используемые при работе с функционалом модуля Пополнение

rpm_check_orders_batch_running– Проверяет наличие временной таблицы RPM_SKU_BY_DIAGRAMS.

Форма Диаграммы

Работает с таблицами RPM_DIAGRAM, RPM_DIAGRAM_GROUPS, RPM_DIAGRAM_ITEMS

Таблица RPM_DIAGRAM_STORES устарела. (как и колонка ALL_STORES в RPM_DIAGRAM). Одна диаграмма обслуживает один магазин.

Опциональные таблицы:
RPM_DIAGRAM_SCHEDULE - содержит список диаграмм для батча расчетов заказов, если указан аргумент --diagram_from

RPM_DIAGRAM_HIST - архив удаленных диаграмм

RPM_DIAGRAM_CHANGES - трекинг изменений в основных таблицах под специфику клиента

При использовании групп СКЮ или параметра ALL_SKUS список позиций берется из SKU_STORE_CONTRACT

rpm_diagrams

Обслуживает метод classes/controllers/rpm/diagram.js - getDiagrams , который вызывается ендпоинтом /rpm/get_diagrams и выдает список диаграмм по фильтру.

rpm_suppliers Аналогичен all_suppliers, только без сортировки. (SupplierDim.supplier_name ?). Вызывается перед модалкой новой диаграммы.

rpm_warehouses Список складов (StoreDim.warehouse_name?) Вызывается перед модалкой новой диаграммы.

rpm_contracts_by_supplier - для ЕП /rpm/get_diagram_params_by_supplier. Вызывается при смене поставщика диаграммы в модалке.

rpm_get_contract_by_diagram - список контрактов поставщика, указанного в диаграмме. Обслуживает ЕП /rpm/get_diagram_by_id.

rpm_get_diagram_by_id - параметры диаграммы для редактирования. Обслуживает ЕП /rpm/get_diagram_by_id.

rpm_check_remaining_stores_for_cross_dock - список магазинов, которые могут быть добавлены к кроссдок-пакету диаграмм. ЕП /rpm/get_remaining_stores_for_add_crdock.

rpm_skus_by_supplier - список СКЮ по контракту и магазинам для модалки диаграммы. ЕП /rpm/get_diagram_skus_by_contract.

rpm_get_diagram - выборка пересекающихся диаграмм. Запрос checkIntersections. Проверяет перед созданием или сохранением диаграммы есть ли существующие активные диаграммы, которые имеют те же самые пары sku/store (предполагается, что в один момент может быть только один активный контракт на пару sku/store). А также для кроссдок проверяет, есть ли уже диаграмма со склада поставщику для пары sku/whs, в том числе и для подмененных через cd_contract_map контрактов.

rpm_get_groups_for_diagram - список всех групп с пометкой выбранных для диаграммы. Выбранные группы берутся из GROUPS или SKU_STORE_CONTRACT_V, если там есть GROUP_ID. ЕП rpm/get_groups_for_diagram.

rpm_delete_rpm_diagram_groups_by_diagram - в методе updateSkus при редактировании диаграммы.

rpm_delete_getrpm_diagram_items_by_iddiagram - в методе updateSkus при редактировании диаграммы.

rpm_get_diagram_mins_for_store

...

rpm_full_delete_diagram_calendars_orders_cross_dock_stores

rpm_get_cross_dock_whs_diagramrpm_delete_rpm_diagram_items_by_diagram

rpm_check_contract_for_supplier

...