Versions Compared

Key

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

...

Code Block
languagesql
    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_idupdate
 Основной скрипт для закладки Заголовки
 По фильтру выдает список текущих трансферов
 Основная таблица 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
languagesql
    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
languagesql
    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
languagesql
    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
languagesql
    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
languagesql
    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
languagesql
    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
languagesql
    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
languagesql
    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
languagesql
    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

Батчи

Батч расчета заказов

...