мета-данные страницы
  •  

Это старая версия документа!


A_Sales

Проект «AnaliticDB»

Реализация

Назначение

Нерепликационная таблица A_Sales из БД Срезы содержит изменеия сумм заказа

Поля таблицы

select
  aor.id        , -- ВнНомер
  aor.dttm      , -- Дата импорта записи
  aor.doc_id    , -- Заказ docs.doc_id
  aor.dor_id    , -- Заказ docs_order.id
  aor.date_ch   , -- Дата изменеия суммы заказа
  aor.doc_date  , -- Дата заказа
  aor.doc_num   , -- № заказа
  aor.kind_id   , -- Тип заказа
  aor.laud_serv , -- Стоимость заказа считать через doc_laud_services (1, если kind_id=1 and summ_from_details=1 and use_simple_laundry=0)

  aor.status_id , -- Статус заказа
  aor.net_sales , -- Изменение суммы заказа с учетом скидки = Чистая сумма продаж = sales - Скидка (дельта docs_order.kredit)
  aor.sales     , -- Изменение суммы заказа без учета скидки

  aor.firm_id   , -- Организация
  aor.contr_id  , -- Контрагент
  aor.sclad_id  , -- Приемный пункт (Склад приемки)

from  A_Sales aor -- Реализация

Формирование таблицы

Список заказов

Пока записываются итоговые суммы заказа.

select
  d.doc_id as doc_id,   
  dor.id as dor_id,   
  d.doc_date as date_ch,   
  d.doc_date as doc_date,   
  d.doc_num as doc_num,   
  dor.kind_id as kind_id,
  dor.summ_from_details,  
  dor.use_simple_laundry,  
  dor.status_id as status_id,   
  coalesce(dor.kredit,0) as net_sales,
  iif( (dor.kind_id=1) and (coalesce(dor.summ_from_details,0)=1) and (coalesce(dor.use_simple_laundry,0)=0),
        coalesce( (select sum(dl.contr_kredit)
                   from doc_order_services dos
                     left join doc_laud_services dl on dl.dos_id=dos.id
                   where dos.doc_order_id=dor.id),0),
  
        coalesce(( select sum(coalesce(dos.qty_kredit,0)*dos.kfx*dos.price_rozn_kfx)
                   from doc_order_services dos
                   where dos.doc_order_id=dor.id and (dos.status_id<>7) ),0)+
        coalesce(( select sum(coalesce(dol.qty_kredit,0)*dol.price)
                   from doc_order_lines dol  where dol.doc_order_id=dor.id ),0))  
                                                                                as Sales,
    d.firm_id as firm_id,   
    d.contragent_id as contr_id,   
    dor.sclad_kredit_id as sclad_id
from docs d
  inner join docs_order dor on dor.doc_id=d.doc_id
where   (d.doc_date>=:p1) and (d.doc_date<=:p2) 

laud_serv - признак, того что сумма заказа вычисляется через doc_laud_services.

laud_serv=(dor.kind_id=1) and (coalesce(dor.summ_from_details,0)=1) and (coalesce(dor.use_simple_laundry,0)=0)

Дополнительная информация