...
Code Block | ||
---|---|---|
| ||
SELECT AP.NAME, RAPI.ID,RAPI.SKU_ID,RAPI.STORE_ID, convert(varchar, AP.START_DATE, 21) as START_DATE, convert(varchar, AP.END_DATE, 21) as END_DATE FROM RPM_ADD_PRESENTATION AS AP JOIN RPM_ADD_PRESENTATION_ITEMS RAPI ON RAPI.ID=AP.ID WHERE AP.IS_ACTIVE=1 AND AP.ID <> :id AND RAPI.SKU_ID = :sku_id AND RAPI.STORE_ID [store_list] AND (AP.START_DATE BETWEEN ':startDate' AND ':endDate' OR AP.END_DATE BETWEEN ':startDate' AND ':endDate' OR ':startDate' BETWEEN AP.START_DATE AND AP.END_DATE OR ':endDate' BETWEEN AP.START_DATE AND AP.END_DATE) |
Форма Перемещения
используются страницей http://localhost:3000/transfers
через контроллер classes/controllers/transfers.js
...
get_stores_with_overstock
По установленным фильтрам выдает список магазинов с перетаркой, количество перетарки в штуках и деньгах используется в закладке Магазин - SKU
get_skus_with_overstock_by_store
По установленным фильтрам выдает список SKU с перетаркой в конкретном магазине. Ключевой параметр - STOCK_WEEKS, т.е. за какаое количество недель этот товар будет распродан.
Используется в закладке Магазин - SKU
get_stores_for_sku_transfer
Для выбранной SKU подбирает список магазинов, где STOCK_WEEKS для данного товара наименьший.
Используется в закладке Магазин - SKU
get_store_to_store_skus
Похоже на get_store_to_supplierstore_skus, но только для случаев возврата поставщику
Используется в закладке Магазин-Магазин
get_store_to_transferssupplier_skus
Похоже на get_store_transfer_linesto_store_skus, но только для случаев возврата поставщику
Используется в закладке Магазин-Магазин
get_max_store_transfers_id
update
Основной скрипт для закладки Заголовки
По фильтру выдает список текущих трансферов
Основная таблица RPM_STORE_TRANSFERS
get_store_transfer_record
update_store_transfer_line
deletelines
Основной скрипт для закладки Строки
По фильтру выдает позиции (строки) транферов
Основная таблица RPM_STORE_TRANSFERS_LINES
get_max_store_transfers_id
Выдаетпоследний ID в RPM_STORE_TRANSFERS, за которым можно делать вставку
Code Block | ||
---|---|---|
| ||
select max(ID) as ID
from RPM_STORE_TRANSFERS |
update_store_transfer_record
delete_store_transfer_line
get_sku_nearest_promo_in_store
Апдейт записи в RPM_STORE_TRANSFERS
Code Block | ||
---|---|---|
| ||
UPDATE RPM_STORE_TRANSFERS
SET UPDATED = getdate(), UPDATED_BY = :user,
TOT_QUANTITY = case when :qnty > -1 then :qnty else TOT_QUANTITY end,
TOT_AMOUNT = case when :amount > -1 then :amount else TOT_AMOUNT end,
CONFIRMATION = case when :is_confirmed != '-1' then :is_confirmed
else CONFIRMATION end,
REASON = case when ':reason' <> '-' then ':reason' else REASON end
WHERE ID=:transfer_id; |
update_store_transfer_line
Апдейт записи в RPM_STORE_TRANSFERS_LINES
Code Block | ||
---|---|---|
| ||
merge into RPM_STORE_TRANSFERS_LINES stl
using (select :transfer_id as ID, :sku_id as SKU_ID) src
on (stl.TRANSFER_ID = src.ID and stl.SKU_ID = src.SKU_ID)
when matched then
update set UPDATED = getdate(), UPDATED_BY = :user,
QUANTITY = case when :qnty > -1 then :qnty else QUANTITY end
when not matched then
insert (TRANSFER_ID, SKU_ID, QUANTITY, ACTIVE, RECEIVED_QTY, UPDATED, UPDATED_BY)
values(:transfer_id, sku_id, :qnty, '1', null, getdate(), :user); |
delete_store_transfer_record
Удаление записи в RPM_STORE_TRANSFERS
Code Block | ||
---|---|---|
| ||
UPDATE RPM_STORE_TRANSFERS
SET UPDATED = getdate(), UPDATED_BY = :user,
ACTIVE = '0'
WHERE ID = :transfer_id; |
delete_store_transfer_line
Удаление записи в RPM_STORE_TRANSFERS_LINES
Code Block | ||
---|---|---|
| ||
delete RPM_STORE_TRANSFERS_LINES
WHERE TRANSFER_ID = :transfer_id and SKU_ID = :sku_id; |
get_sku_nearest_promo_in_store
Выдает из promo_header/promo_sku ближайшее промо в конкретном магазине (в таблице Магазин-Магазин позиции с промо помечаются голубым цветом)
Code Block | ||
---|---|---|
| ||
select prh.ID, prh.NAME, prh.START_DATE, prh.END_DATE, prs.SKU_ID, prst.STORE_ID
from promo_header prh join promo_sku prs on prs.id=prh.id join promo_stores prst on prst.id=prh.id
where prh.start_date < dateadd(day, 28, ':cur_date')
and prh.end_date > ':cur_date'
and (:sku_id=0 or :sku_id=prs.sku_id)
and (:store_id=0 or :store_id=prst.store_id) |
Общие блоки
transfers_promo
Выдает список текущих промо или со стартом в ближайший месяц
Code Block | ||
---|---|---|
| ||
select prh.NAME NM, prs.sku_id, prst.store_id
from promo_header prh with (nolock)
join promo_sku prs with (nolock) on prs.id=prh.id
join promo_stores prst with (nolock) on prst.id=prh.id
where prh.start_date < cast(getdate()+28 as date)
and prh.end_date > cast(getdate() as date) |
transfers_add_presentation
Учитывает в калькуляции оверстока доп.презентацию
Code Block | ||
---|---|---|
| ||
select quantity, sku_id, store_id
from RPM_ADD_PRESENTATION_ITEMS api with (nolock)
inner join RPM_ADD_PRESENTATION ap with (nolock) on api.ID=ap.ID
and ap.end_date >= cast(getdate() as date)
and ap.start_date <= cast(getdate() as date)
and ap.is_active=1 |
transfers_in_transit
Учитывает в калькуляциях товар в пути по стандартным заказам. Товар в перемещениях учитывает другим образом.
Code Block | ||
---|---|---|
| ||
select sum(t.ORDER_VOLUME) ORDER_VOLUME, t.STORE_ID, t.SKU_ID
from (select d.STORE_ID, ol.SKU_ID,
coalesce(ol.ADJUSTED_DELIVERY, ol.CUSTOM_ORDER_VOLUME, ol.ORDER_VOLUME)
as ORDER_VOLUME
from RPM_DIAGRAM d with (nolock)
inner join RPM_CALENDAR c with (nolock) on c.DIAGRAM_ID = d.ID
inner join RPM_ORDER_HEADER oh with (nolock) on oh.CALENDAR_ID = c.ID
inner join RPM_ORDER_LINE ol with (nolock) on ol.ID = oh.ID
where oh.IS_CONFIRMED = '1'
and oh.RECEIVED_DATE is null
and ol.RECEIVED_QTY is null
and coalesce(ol.ADJUSTED_DELIVERY, ol.CUSTOM_ORDER_VOLUME, ol.ORDER_VOLUME) > 0
and coalesce(oh.ADJUSTED_DELIVERY_DATE, c.DELIVERY_DATE) > cast(getdate() as date)
and oh.CANCEL_DATE is null
union all
select mo.STORE_ID, mo.SKU_ID, mo.ORDER_VOLUME
from MANUAL_ORDERS mo
where mo.RECEIVED_DATE is null
and mo.DELIVERY_DATE > cast(getdate() as date)
and mo.ORDER_VOLUME > 0
) as t
GROUP BY t.STORE_ID, t.SKU_ID |
Батчи
Батч расчета заказов
...