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

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

Автор LazerC, Березень 03, 2023, 14:19:21

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

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

LazerC

Добрий день, шановне товариство.
Далекий від програмування С++, допоможіть у написанні розрахунку прибутку по складу (різниця цін). Використовую в обліку роздрібну ціну, знаю щоданий розрахунок проводиться по різниці цін, якщо є прихідна накладна між роздрібною і прихідною ціною. Якщо приходу немає то береться різниця цін із довідника товару. Допоможіть написати розрахунок так, щоб завжди брало різницю із довідника
Дякую зазделегідь. Все буде Україна *flag1*

SELECT
  gr.group_name,       
  tn.name,       
  tn.kod,       
  tn.ed_izm,       
  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,         
  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         
  tm.mdate >= '#дата_с#' AND
  tm.mdate <= '#дата_по#'
GROUP BY       
  1,2,3,4       
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       
  gr.group_name,       
  tn.#товар_сорт#