• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Прибуток по складу (різниця цін) по користувачах

Автор molotokk, Жовтень 01, 2021, 00:30:17

Попередня тема - Наступна тема

0 Користувачі і 2 Гостей дивляться цю тему.

molotokk

Редагую звіт Прибуток по складу (різниця цін), щоб можна було робити вибір по користувачах
Нижче наведено змінений код звіту, також активував вибір користувача і всі користувачі, але звіт грузить дууууууууууже довго
Хто знає - підкажіть як його можна оптимізувати, щоб швидше завантажувався, чи можливо я щось зробив неправильно?

SELECT
  gr.group_name,       
  tn.name,       
  tn.kod,       
  tn.ed_izm,
  vn.doc_user_id,
  AVG(CASE       
    WHEN (c.how_to_calc IN (1,6)) THEN tn.cena/c.kurs   
    WHEN (c.how_to_calc = 0) THEN tn.cena*c.kurs       
  END) AS cena,       
  SUM(CASE       
    WHEN (tm.doc_type_id = 8) THEN tm.to_kolvo       
    ELSE NULL
  END) AS kolvo_in,       
  AVG(CASE       
    WHEN (tm.doc_type_id = 8) THEN tm.to_cena       
    ELSE NULL
  END) AS cena_in,       
  SUM(CASE
    WHEN (tm.doc_type_id = 8) THEN tm.to_cena*tm.to_kolvo
    ELSE NULL
  END) AS cena_in_suma,
  SUM(CASE       
    WHEN (tm.doc_type_id IN (1,6)) THEN tm.to_kolvo   
    WHEN (tm.doc_type_id = 12) THEN (-1)*tm.to_kolvo       
    ELSE NULL
  END) AS kolvo_out,       
  AVG(CASE       
    WHEN (tm.doc_type_id IN (1,6)) THEN tm.to_cena   
    WHEN (tm.doc_type_id = 12) THEN NULL
    ELSE NULL
  END) AS cena_out,       
  SUM(CASE       
    WHEN (tm.doc_type_id IN (1,6)) THEN tm.to_suma   
    WHEN (tm.doc_type_id = 12) THEN (-1)*tm.to_suma     
    ELSE NULL
  END) AS suma_out       
FROM         
  tovar_move tm,
  vnakl vn,           
  tovar_name tn       
    LEFT JOIN currency c ON tn.cena_curr_id = c.num,         
  print_view_sklad(0,#склад_№#) gr   
WHERE         
  (   
    (tm.from_firma_id = #активная_фирма_№# AND tm.doc_type_id = 1 AND tm.from_sklad_id = #склад_№#) OR   
    (tm.from_firma_id = #активная_фирма_№# AND tm.doc_type_id = 6 AND tm.from_sklad_id = #склад_№#) OR   
    (tm.to_firma_id = #активная_фирма_№# AND tm.doc_type_id = 8 AND tm.to_sklad_id = #склад_№#) OR   
    (tm.to_firma_id = #активная_фирма_№# AND tm.doc_type_id = 12 AND tm.to_sklad_id = #склад_№#)   
  ) AND     
  tm.is_usluga = 0 AND   
  tm.tovar_id = tn.num AND         
  tn.tip = gr.num AND
#if #пользователь_№# = -1 #then
#else
  vn.doc_user_id = #пользователь_№# AND
#endif           
  tm.mdate >= '#дата_с#' AND
  tm.mdate <= '#дата_по#'
GROUP BY       
  1,2,3,4,5   
HAVING 
  SUM(CASE       
    WHEN (tm.doc_type_id IN (1,6)) THEN tm.to_kolvo   
    WHEN (tm.doc_type_id = 12) THEN (-1)*tm.to_kolvo       
    ELSE NULL
  END) IS NOT NULL
ORDER BY       
  vn.doc_user_id,
  gr.group_name,       
  tn.#товар_сорт#
підбір та продаж обладнання для торгівлі, допомога в налаштуваннях програми ⇒ "komfort-m.com" ⇒ "t.me/komfortmservice" ⇒ ✆ 097-873-59-01