Advertisement
aadddrr

Query Current Gross Profit Amount

Nov 22nd, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. WITH tt_cogs_price AS (
  2.     SELECT A.ou_id, B.salesman_id, SUBSTRING(A.ref_doc_date, 1, 6) AS year_month,
  3.         A.ref_item_id,
  4.         SUM(
  5.             CASE WHEN A.curr_code <> 'IDR' THEN
  6.                 CASE WHEN A.ref_doc_type_id IN (311, 312) THEN
  7.                     A.qty_dlv_so * D.price * f_commercial_rate(10 /*(tenantId)*/, A.ref_doc_date, D.curr_code, 'IDR')
  8.                 ELSE
  9.                     0
  10.                 END
  11.             ELSE
  12.                 CASE WHEN A.ref_doc_type_id IN (311, 312) THEN
  13.                     A.qty_dlv_so * D.price
  14.                 ELSE
  15.                     0
  16.                 END
  17.             END
  18.         ) AS cogs_amount
  19.     FROM sl_so_balance_invoice A
  20.     INNER JOIN sl_so B ON A.so_id = B.so_id
  21.     INNER JOIN sl_do_item C ON A.ref_item_id = C.do_item_id
  22.     INNER JOIN sl_so_item_purchasing D ON C.ref_id = D.so_item_id
  23.     WHERE A.ou_id = 10
  24.         AND B.salesman_id = 2616
  25.         AND SUBSTRING(A.ref_doc_date, 1, 6) = '201609'
  26.     GROUP BY A.ou_id, B.salesman_id, SUBSTRING(A.ref_doc_date, 1, 6), A.ref_item_id
  27. ), tt_current_sales AS (
  28.     SELECT A.ou_id, B.salesman_id, SUBSTRING(A.ref_doc_date, 1, 6) AS year_month,
  29.         A.ref_item_id,
  30.         SUM(
  31.             CASE WHEN A.curr_code <> 'IDR' THEN
  32.                 CASE WHEN A.ref_doc_type_id IN (311, 312) THEN
  33.                     A.item_amount * f_commercial_rate(10 /*(tenantId)*/, A.ref_doc_date, A.curr_code, 'IDR')
  34.                 ELSE
  35.                     -1 * A.item_amount * f_commercial_rate(10 /*(tenantId)*/, A.ref_doc_date, A.curr_code, 'IDR')
  36.                 END
  37.             ELSE
  38.                 CASE WHEN A.ref_doc_type_id IN (311, 312) THEN
  39.                     A.item_amount
  40.                 ELSE
  41.                     -1 * A.item_amount
  42.                 END
  43.             END
  44.         ) AS sales_amount
  45.     FROM sl_so_balance_invoice A
  46.     INNER JOIN sl_so B ON A.so_id = B.so_id
  47.     INNER JOIN sl_do C ON A.ref_id = C.do_id
  48.     INNER JOIN sl_so_item_purchasing D ON C.ref_id = D.so_item_id
  49.     WHERE A.ou_id = 10 --ouId
  50.         AND B.salesman_id = 2616 --salesmanId
  51.         AND SUBSTRING(A.ref_doc_date, 1, 6) = '201609' --yearMonth
  52.     GROUP BY A.ou_id, B.salesman_id, SUBSTRING(A.ref_doc_date, 1, 6), A.ref_item_id
  53. )
  54. SELECT A.ou_id, A.salesman_id, A.year_month, SUM(B.sales_amount - A.cogs_amount)
  55. FROM tt_cogs_price A
  56. LEFT OUTER JOIN tt_current_sales B ON A.ou_id = B.ou_id
  57.     AND A.salesman_id = B.salesman_id
  58.     AND A.year_month = B.year_month
  59.     AND A.ref_item_id = B.ref_item_id
  60. GROUP BY A.ou_id, A.salesman_id, A.year_month
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement