Advertisement
tercnem

vw_trx_sales_indocom_with_detail_product

Jun 15th, 2020
1,172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP VIEW IF EXISTS vw_trx_sales_indocom_with_detail_product;
  2.  
  3. CREATE OR REPLACE VIEW vw_trx_sales_indocom_with_detail_product
  4. AS
  5. WITH data_penjualan AS (
  6.     SELECT E.brand_code, E.brand_name, F.ctgr_product_code, F.ctgr_product_name, G.partner_code AS salesman_code, G.partner_name AS salesman_name,
  7.         H.line_of_business, SUBSTRING(A.ref_doc_date, 1, 6) AS periode,
  8.         CASE WHEN A.ref_doc_type_id = 502 OR A.do_receipt_item_id <> -99 THEN 'Y' ELSE 'N' END AS is_return,
  9.         (A.price_so * ABS(A.qty_dlv_so)) *  f_commercial_rate(A.tenant_id, A.ref_doc_date, A.curr_code, 'IDR') AS sell_amount,
  10.         COALESCE(CASE WHEN (J.gl_amount <> 0 AND J.qty = 0) OR (J.gl_amount = 0 AND J.qty = 0) THEN 0 ELSE J.gl_amount / J.qty * ABS(A.qty_dlv_so) END, 0) AS purch_amount_summary_amount,
  11.         COALESCE(K.price * ABS(A.qty_dlv_so), 0) AS purch_amount_so,
  12.         COALESCE(L.avg_price * ABS(A.qty_dlv_so), 0) AS purch_amount_summary_cogs,
  13.         B.doc_no AS so_no, B.doc_date AS so_date, A.ref_doc_no AS do_no, A.ref_doc_date AS do_date, D.product_code, D.product_name,
  14.         A.so_balance_invoice_id, B.so_id, B.doc_type_id, C.ref_id AS so_item_id,
  15.         A.tenant_id, A.qty_dlv_so
  16.     FROM sl_so_balance_invoice A
  17.     INNER JOIN sl_so B ON A.so_id = B.so_id
  18.     INNER JOIN sl_do_item C ON A.ref_item_id = C.do_item_id
  19.     INNER JOIN m_product D ON D.product_id = C.product_id
  20.     INNER JOIN m_brand E ON D.brand_id = E.brand_id
  21.     INNER JOIN m_ctgr_product F ON D.ctgr_product_id = F.ctgr_product_id
  22.     INNER JOIN m_partner G ON B.salesman_id = G.partner_id
  23.     INNER JOIN m_partner H ON A.partner_id = H.partner_id
  24.     INNER JOIN m_ou_structure I ON A.ou_id = I.ou_id
  25.     LEFT JOIN in_summary_monthly_amount J ON J.doc_type_id = -99
  26.         AND J.date_year_month = TO_CHAR(TO_DATE(A.ref_doc_date,'YYYYMMDD') + INTERVAL '1 Month','YYYYMM')
  27.         AND J.ou_bu_id = I.ou_bu_id AND J.product_id = D.product_id AND D.base_uom_id = J.base_uom_id
  28.     LEFT OUTER JOIN sl_so_item_purchasing K ON K.so_item_id = C.ref_id
  29.     LEFT OUTER JOIN in_summary_monthly_cogs L ON L.ou_id = I.ou_bu_id AND L.product_id = D.product_id AND L.date_year_month = SUBSTRING(A.ref_doc_date, 1, 6)
  30. ), data_harga_po AS (
  31.     SELECT B.so_balance_invoice_id, B.so_id, B.so_item_id,
  32.     CASE WHEN SUM(ABS(K.qty_po)) = 0 THEN 0 ELSE
  33.         SUM(f_commercial_rate(B.tenant_id, J.doc_date, K.curr_code, 'IDR') * K.nett_price_po * ABS(K.qty_po)) / SUM(ABS(K.qty_po))
  34.     END * ABS(B.qty_dlv_so) AS purch_amount
  35.     FROM data_penjualan B
  36.     INNER JOIN pu_po J ON J.ref_id = B.so_id AND J.ref_doc_type_id = B.doc_type_id
  37.     INNER JOIN pu_po_item K ON J.po_id = K.po_id AND B.so_item_id = K.ref_id
  38.     WHERE J.status_doc <> 'V'
  39.     GROUP BY B.so_balance_invoice_id, B.so_id, B.so_item_id, B.qty_dlv_so
  40. )
  41. SELECT A.so_no, A.so_date, A.do_no, A.do_date, A.salesman_name, A.product_name,
  42. CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END AS sell_amount,
  43. CASE WHEN is_return = 'Y' THEN -1 * A.purch_amount_summary_amount ELSE A.purch_amount_summary_amount END AS purch_amount_summary_amount,
  44. CASE WHEN is_return = 'Y' THEN -1 * A.purch_amount_so ELSE A.purch_amount_so END AS purch_amount_so,
  45. CASE WHEN is_return = 'Y' THEN -1 * COALESCE(B.purch_amount, 0) ELSE COALESCE(B.purch_amount, 0) END AS purch_amount_po,
  46. CASE WHEN is_return = 'Y' THEN -1 * A.purch_amount_summary_cogs ELSE A.purch_amount_summary_cogs END AS purch_amount_summary_cogs,
  47. CASE WHEN (
  48.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END = 0
  49. ) THEN
  50.     0
  51. ELSE
  52.     CASE WHEN is_return = 'Y' THEN -1 * (A.sell_amount - A.purch_amount_summary_amount) ELSE A.sell_amount - A.purch_amount_summary_amount END * 100 /
  53.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END
  54. END AS purch_amount_summary_amount_percentage,
  55. CASE WHEN (
  56.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END = 0
  57. ) THEN
  58.     0
  59. ELSE
  60.     CASE WHEN is_return = 'Y' THEN -1 * (A.sell_amount - A.purch_amount_so) ELSE A.sell_amount - A.purch_amount_so END * 100 /
  61.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END
  62. END AS purch_amount_so_percentage,
  63. CASE WHEN (
  64.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END = 0
  65. ) THEN
  66.     0
  67. ELSE
  68.     CASE WHEN is_return = 'Y' THEN -1 * (A.sell_amount - COALESCE(B.purch_amount, 0)) ELSE A.sell_amount - COALESCE(B.purch_amount, 0) END * 100 /
  69.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END
  70. END AS purch_amount_po_percentage,
  71. CASE WHEN (
  72.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END = 0
  73. ) THEN
  74.     0
  75. ELSE
  76.     CASE WHEN is_return = 'Y' THEN -1 * (A.sell_amount - A.purch_amount_summary_cogs) ELSE A.sell_amount - A.purch_amount_summary_cogs END * 100 /
  77.     CASE WHEN is_return = 'Y' THEN -1 * A.sell_amount ELSE A.sell_amount END
  78. END AS purch_amount_summary_cogs_percentage
  79. FROM data_penjualan A
  80. LEFT OUTER JOIN data_harga_po B ON B.so_id = A.so_id AND B.so_item_id = A.so_item_id AND B.so_balance_invoice_id = A.so_balance_invoice_id
  81. ORDER BY A.so_no, A.so_date, A.do_no, A.do_date, A.product_name;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement