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