congky

Untitled

Sep 25th, 2017
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. INSERT INTO tt_current_main_data(
  2.             session_id, tenant_code, raw_data_type, main_data_type, current_id)
  3.  
  4. -- INIT CURRENT ID
  5. SELECT '${SESSION_ID}' AS session_id, B.tenant_code, 'SALES' AS raw_data_type, 'SLS_INVOICE_DO' AS main_data_type, COALESCE(MAX(A.so_balance_invoice_id), -99) AS current_id
  6. FROM sl_so_balance_invoice A
  7. INNER JOIN t_tenant B ON A.tenant_id = B.tenant_id
  8. WHERE A.ref_doc_type_id IN(311, 502 )
  9. AND A.flg_invoice = 'N'
  10. GROUP BY B.tenant_code;
  11.  
  12. INSERT INTO tt_current_main_data(
  13.             session_id, tenant_code, raw_data_type, main_data_type, current_id)
  14.  
  15. SELECT '${SESSION_ID}' AS session_id, B.tenant_code, 'SALES' AS raw_data_type, 'SLS_INVOICE_AR' AS main_data_type, COALESCE(MAX(A.invoice_ar_id), -99) AS current_id
  16. FROM fi_invoice_ar_balance A
  17. INNER JOIN t_tenant B ON A.tenant_id = B.tenant_id
  18. WHERE A.doc_type_id = 321
  19. GROUP BY B.tenant_code;
  20.  
  21. -- insert into raw data sales
  22. INSERT INTO dw_raw_sales(
  23.             tenant_code, doc_type, doc_no, doc_date, doc_year_month,
  24.             customer_code, pkp, class_customer_code, customer_group_code,
  25.             city_code, level_price_code, province_code, region_code, ou_code,
  26.             warehouse_code, brand_code, series_code, group_brand_product_code,
  27.             category_code, sub_category_code, product_code, promo_code, salesman_code,
  28.             supplier_code, qty, add_discount_amount, regular_discount_percentage,
  29.             regular_discount_amount, discount_percentage, discount_amount,
  30.             nett_sell_price, gross_item_amount, nett_item_amount, ref_doc_no,
  31.             ref_doc_date, version, create_datetime, create_user_id, update_datetime,
  32.             update_user_id)
  33. -- GET RAW DATA DO
  34. SELECT B.tenant_code, f_get_doc_desc(A.ref_doc_type_id) AS doc_type, A.ref_doc_no AS doc_no, A.ref_doc_date AS doc_date, substr(A.ref_doc_date,1,6) doc_year_month,  
  35. C.partner_code AS customer_code, COALESCE(L.flg_pkp, 'N') AS pkp, C.industry_type AS class_customer_code,
  36. f_get_payment_group_customer_code(C.partner_id) AS customer_group_code, D.city AS city_code, C.price_level AS level_price_code,  
  37. D.state_or_province AS province_code, H.region_code, f_get_ou_code(A.ou_id) AS ou_code, f_get_warehouse_code(G.warehouse_id) AS warehouse_code,  
  38. f_get_brand_code(J.brand_id) AS brand_code, f_get_code_golongan_product(J.product_id) AS series_code,
  39. F.group_brand_product AS group_brand_product_code, f_get_ctgr_product_code(J.ctgr_product_id) AS category_code,
  40. f_get_sub_ctgr_product_code(J.sub_ctgr_product_id) AS sub_category_code, J.product_code,
  41. COALESCE(M.promo_code, '') AS promo_code , f_get_partner_code(E.salesman_id) AS salesman_code,
  42. f_get_partner_code(K.supplier_id) AS supplier_code,
  43. A.qty_dlv_so AS qty, 0 AS add_discount_amount,
  44. CASE WHEN (COALESCE(M.promo_type,  '') = '' OR COALESCE(M.promo_type, '') = 'PROMOEVENT')
  45.     THEN E.regular_discount_percentage
  46.     ELSE 0
  47.     END AS regular_discount_percentage,  
  48. CASE WHEN (COALESCE(M.promo_type,  '') = '' OR COALESCE(M.promo_type, '') = 'PROMOEVENT')
  49.     THEN A.regular_disc_amount
  50.     ELSE 0
  51.     END AS regular_discount_amount,
  52.  
  53. CASE WHEN (COALESCE(M.promo_type,  '') = 'PROMOEVENT')
  54.     THEN IX.discount_percentage
  55.     ELSE 0
  56.     END AS discount_percentage,  
  57. CASE WHEN (COALESCE(M.promo_type,  '') = 'PROMOEVENT')
  58.     THEN A.promo_disc_amount
  59.     ELSE 0
  60.     END AS discount_amount,
  61. A.price_so AS nett_sell_price ,
  62. A.item_amount + COALESCE(N.tax_amount, 0) AS gross_item_amount,
  63. IX.nett_item_amount, E.ext_doc_no AS ref_doc_no, E.ext_doc_date AS ref_doc_date, 0 AS version,
  64. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS create_datetime,
  65. -1 AS create_user_id,
  66. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS update_datetime,
  67. -1 AS update_user_id
  68. FROM sl_so_balance_invoice A
  69. INNER JOIN t_tenant B ON A.tenant_id = B.tenant_id
  70. INNER JOIN m_partner C ON A.partner_id = C.partner_id
  71. INNER JOIN m_partner_address D ON C.partner_id = D.partner_id AND flg_official = 'Y'
  72. INNER JOIN sl_so E ON A.so_id = E.so_id
  73. INNER JOIN sl_so_additional_for_dlg F ON E.so_id = F.so_id
  74. INNER JOIN sl_do G ON A.ref_id = G.do_id
  75. INNER JOIN m_region H ON F.region_id = H.region_id
  76. INNER JOIN sl_do_item I ON A.ref_id = I.do_id AND A.ref_item_id = I.do_item_id
  77. INNER JOIN sl_so_item IX ON I.ref_id = IX.so_item_id
  78. INNER JOIN m_product J ON I.product_id = J.product_id
  79. INNER JOIN m_product_custom_for_dlg K ON J.product_id = K.product_id
  80. LEFT JOIN m_partner_npwp L ON C.partner_id = L.partner_id
  81. LEFT JOIN m_promo_sales M ON F.promo_sales_id = M.promo_sales_id
  82. LEFT JOIN sl_so_balance_invoice_tax N ON E.so_id = N.so_id AND G.do_id = N.ref_id AND I.do_item_id = N.ref_item_id
  83. WHERE A.ref_doc_type_id = 311 AND A.do_receipt_item_id = -99 AND A.flg_invoice = 'N'
  84. AND EXISTS (
  85.     SELECT 1 FROM dw_last_main_data Z, tt_current_main_data X
  86.     WHERE Z.tenant_code = B.tenant_code
  87.     AND Z.tenant_code = X.tenant_code
  88.     AND Z.main_data_type = 'SLS_INVOICE_DO'
  89.     AND Z.main_data_type = X.main_data_type
  90.     AND X.session_id = '${SESSION_ID}'
  91.     AND A.so_balance_invoice_id BETWEEN Z.last_id+1 AND X.current_id
  92. );
  93.  
  94. INSERT INTO dw_raw_sales(
  95.             tenant_code, doc_type, doc_no, doc_date, doc_year_month,
  96.             customer_code, pkp, class_customer_code, customer_group_code,
  97.             city_code, level_price_code, province_code, region_code, ou_code,
  98.             warehouse_code, brand_code, series_code, group_brand_product_code,
  99.             category_code, sub_category_code, product_code, promo_code, salesman_code,
  100.             supplier_code, qty, add_discount_amount, regular_discount_percentage,
  101.             regular_discount_amount, discount_percentage, discount_amount,
  102.             nett_sell_price, gross_item_amount, nett_item_amount, ref_doc_no,
  103.             ref_doc_date, version, create_datetime, create_user_id, update_datetime,
  104.             update_user_id)
  105. -- GET DATA RAW DOR
  106. SELECT B.tenant_code, f_get_doc_desc(GX.doc_type_id) AS doc_type, GX.doc_no, GX.doc_date, substr(GX.doc_date,1,6) doc_year_month,  
  107. C.partner_code AS customer_code, COALESCE(L.flg_pkp, 'N') AS pkp, C.industry_type AS class_customer_code,
  108. f_get_payment_group_customer_code(C.partner_id) AS customer_group_code, D.city AS city_code, C.price_level AS level_price_code,  
  109. D.state_or_province AS province_code, H.region_code, f_get_ou_code(A.ou_id) AS ou_code, f_get_warehouse_code(G.warehouse_id) AS warehouse_code,  
  110. f_get_brand_code(J.brand_id) AS brand_code, f_get_code_golongan_product(J.product_id) AS series_code,
  111. F.group_brand_product AS group_brand_product_code, f_get_ctgr_product_code(J.ctgr_product_id) AS category_code,
  112. f_get_sub_ctgr_product_code(J.sub_ctgr_product_id) AS sub_category_code, J.product_code,
  113. COALESCE(M.promo_code, '') AS promo_code , f_get_partner_code(E.salesman_id) AS salesman_code,
  114. f_get_partner_code(K.supplier_id) AS supplier_code,
  115. A.qty_dlv_so AS qty, 0 AS add_discount_amount,
  116. CASE WHEN (COALESCE(M.promo_type,  '') = '' OR COALESCE(M.promo_type, '') = 'PROMOEVENT')
  117.     THEN E.regular_discount_percentage
  118.     ELSE 0
  119.     END AS regular_discount_percentage,  
  120. CASE WHEN (COALESCE(M.promo_type,  '') = '' OR COALESCE(M.promo_type, '') = 'PROMOEVENT')
  121.     THEN A.regular_disc_amount
  122.     ELSE 0
  123.     END AS regular_discount_amount,
  124.  
  125. CASE WHEN (COALESCE(M.promo_type,  '') = 'PROMOEVENT')
  126.     THEN IX.discount_percentage
  127.     ELSE 0
  128.     END AS discount_percentage,  
  129. CASE WHEN (COALESCE(M.promo_type,  '') = 'PROMOEVENT')
  130.     THEN A.promo_disc_amount
  131.     ELSE 0
  132.     END AS discount_amount,
  133. A.price_so AS nett_sell_price ,
  134. A.item_amount + COALESCE(N.tax_amount, 0) AS gross_item_amount,
  135. IX.nett_item_amount, E.ext_doc_no AS ref_doc_no, E.ext_doc_date AS ref_doc_date, 0 AS version,
  136. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS create_datetime,
  137. -1 AS create_user_id,
  138. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS update_datetime,
  139. -1 AS update_user_id
  140. FROM sl_so_balance_invoice A
  141. INNER JOIN t_tenant B ON A.tenant_id = B.tenant_id
  142. INNER JOIN m_partner C ON A.partner_id = C.partner_id
  143. INNER JOIN m_partner_address D ON C.partner_id = D.partner_id AND flg_official = 'Y'
  144. INNER JOIN sl_so E ON A.so_id = E.so_id
  145. INNER JOIN sl_so_additional_for_dlg F ON E.so_id = F.so_id
  146. INNER JOIN sl_do G ON A.ref_id = G.do_id
  147. INNER JOIN in_do_receipt GX ON G.do_id = GX.ref_id AND G.doc_type_id = GX.ref_doc_type_id
  148. INNER JOIN m_region H ON F.region_id = H.region_id
  149. INNER JOIN sl_do_item I ON A.ref_id = I.do_id AND A.ref_item_id = I.do_item_id
  150. INNER JOIN sl_so_item IX ON I.ref_id = IX.so_item_id
  151. INNER JOIN m_product J ON I.product_id = J.product_id
  152. INNER JOIN m_product_custom_for_dlg K ON J.product_id = K.product_id
  153. LEFT JOIN m_partner_npwp L ON C.partner_id = L.partner_id
  154. LEFT JOIN m_promo_sales M ON F.promo_sales_id = M.promo_sales_id
  155. LEFT JOIN sl_so_balance_invoice_tax N ON E.so_id = N.so_id AND G.do_id = N.ref_id AND I.do_item_id = N.ref_item_id
  156. WHERE A.ref_doc_type_id = 311 AND A.do_receipt_item_id != -99 AND A.flg_invoice = 'N'
  157. AND EXISTS (
  158.     SELECT 1 FROM dw_last_main_data Z, tt_current_main_data X
  159.     WHERE Z.tenant_code = B.tenant_code
  160.     AND Z.tenant_code = X.tenant_code
  161.     AND Z.main_data_type = 'SLS_INVOICE_DO'
  162.     AND Z.main_data_type = X.main_data_type
  163.     AND X.session_id = '${SESSION_ID}'
  164.     AND A.so_balance_invoice_id BETWEEN Z.last_id+1 AND X.current_id
  165. );
  166.  
  167. INSERT INTO dw_raw_sales(
  168.             tenant_code, doc_type, doc_no, doc_date, doc_year_month,
  169.             customer_code, pkp, class_customer_code, customer_group_code,
  170.             city_code, level_price_code, province_code, region_code, ou_code,
  171.             warehouse_code, brand_code, series_code, group_brand_product_code,
  172.             category_code, sub_category_code, product_code, promo_code, salesman_code,
  173.             supplier_code, qty, add_discount_amount, regular_discount_percentage,
  174.             regular_discount_amount, discount_percentage, discount_amount,
  175.             nett_sell_price, gross_item_amount, nett_item_amount, ref_doc_no,
  176.             ref_doc_date, version, create_datetime, create_user_id, update_datetime,
  177.             update_user_id)
  178. -- GET RAW DATA SALES INVOICE
  179. SELECT B.tenant_code, f_get_doc_desc(D.doc_type_id) AS doc_type, D.doc_no, D.doc_date, substr(D.doc_date,1,6) doc_year_month,
  180. E.partner_code AS customer_code, COALESCE(L.flg_pkp, 'N') AS pkp, E.industry_type AS class_customer_code,
  181. f_get_payment_group_customer_code(E.partner_id) AS customer_group_code, F.city AS city_code, E.price_level AS level_price_code,  
  182. F.state_or_province AS province_code, I.region_code, f_get_ou_code(A.ou_id) AS ou_code, f_get_warehouse_code(H.warehouse_id) AS warehouse_code,
  183. f_get_brand_code(HY.brand_id) AS brand_code, f_get_code_golongan_product(HY.product_id) AS series_code,  
  184. G.group_brand_product AS group_brand_product_code, f_get_ctgr_product_code(HY.ctgr_product_id) AS category_code,
  185. f_get_sub_ctgr_product_code(HY.sub_ctgr_product_id) AS sub_category_code, HY.product_code,
  186. COALESCE(M.promo_code, '') AS promo_code , f_get_partner_code(D.salesman_id) AS salesman_code,
  187. f_get_partner_code(HZ.supplier_id) AS supplier_code,
  188. 0 AS qty, A.promo_disc_amount+A.adj_promo_disc_amount AS add_discount_amount,
  189. HYX.discount_percentage AS regular_discount_percentage, 0 regular_discount_amount, 0 discount_percentage,  0 discount_amount,
  190. A.price_so AS nett_sell_price, 0 AS gross_item_amount, 0 AS nett_item_amount,
  191. H.ext_doc_no AS ref_doc_no, H.ext_doc_date AS ref_doc_date, 0 AS version,
  192. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS create_datetime,
  193. -1 AS create_user_id,
  194. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS update_datetime,
  195. -1 AS update_user_id
  196. FROM sl_so_balance_invoice A
  197. INNER JOIN t_tenant B ON A.tenant_id = B.tenant_id
  198. INNER JOIN fi_invoice_ar_balance C ON A.invoice_id = C.invoice_ar_id AND C.doc_type_id = 321
  199. INNER JOIN sl_invoice D ON A.invoice_id = D.invoice_id
  200. INNER JOIN m_partner E ON D.partner_id = E.partner_id
  201. INNER JOIN m_partner_address F ON E.partner_id = F.partner_id AND F.flg_official = 'Y'
  202. INNER JOIN sl_so_additional_for_dlg G ON D.ref_id = G.so_id AND D.ref_doc_type_id = 301
  203. INNER JOIN sl_do H ON D.ref_id = H.ref_id AND D.ref_doc_type_id = H.ref_doc_type_id
  204. INNER JOIN sl_do_item HX ON A.ref_id = HX.do_id AND A.ref_item_id = HX.do_item_id
  205. INNER JOIN sl_so_item HYX ON HX.ref_id = HYX.so_item_id
  206. INNER JOIN m_product HY ON HX.product_id = HY.product_id
  207. INNER JOIN m_product_custom_for_dlg HZ ON HY.product_id = HZ.product_id
  208. INNER JOIN m_region I ON G.region_id = I.region_id
  209. LEFT JOIN m_partner_npwp L ON C.partner_id = L.partner_id
  210. LEFT JOIN m_promo_sales M ON G.promo_sales_id = M.promo_sales_id
  211. WHERE A.flg_invoice = 'Y' AND
  212. A.ref_doc_type_id = 311
  213. AND EXISTS (
  214.     SELECT 1 FROM dw_last_main_data Z, tt_current_main_data X
  215.     WHERE Z.tenant_code = B.tenant_code
  216.     AND Z.tenant_code = X.tenant_code
  217.     AND Z.main_data_type = 'SLS_INVOICE_AR'
  218.     AND Z.main_data_type = X.main_data_type
  219.     AND X.session_id = '${SESSION_ID}'
  220.     AND C.invoice_ar_id BETWEEN Z.last_id+1 AND X.current_id
  221. );
  222.  
  223. INSERT INTO dw_raw_sales(
  224.             tenant_code, doc_type, doc_no, doc_date, doc_year_month,
  225.             customer_code, pkp, class_customer_code, customer_group_code,
  226.             city_code, level_price_code, province_code, region_code, ou_code,
  227.             warehouse_code, brand_code, series_code, group_brand_product_code,
  228.             category_code, sub_category_code, product_code, promo_code, salesman_code,
  229.             supplier_code, qty, add_discount_amount, regular_discount_percentage,
  230.             regular_discount_amount, discount_percentage, discount_amount,
  231.             nett_sell_price, gross_item_amount, nett_item_amount, ref_doc_no,
  232.             ref_doc_date, version, create_datetime, create_user_id, update_datetime,
  233.             update_user_id)
  234. -- GET RAW DATA RN
  235. SELECT B.tenant_code, f_get_doc_desc(A.ref_doc_type_id) AS doc_type, A.ref_doc_no AS doc_no, A.ref_doc_date AS doc_date, substr(A.ref_doc_date,1,6) doc_year_month,
  236. C.partner_code AS customer_code, COALESCE(L.flg_pkp, 'N') AS pkp, C.industry_type AS class_customer_code,
  237. f_get_payment_group_customer_code(C.partner_id) AS customer_group_code, D.city AS city_code, C.price_level AS level_price_code,  
  238. D.state_or_province AS province_code, COALESCE(J.region_code, '') AS region_code, f_get_ou_code(A.ou_id) AS ou_code, f_get_warehouse_code(AX.warehouse_to_id) AS warehouse_code,  
  239. f_get_brand_code(EX.brand_id) AS brand_code, f_get_code_golongan_product(EX.product_id) AS series_code,
  240. COALESCE(I.group_brand_product, '') AS group_brand_product_code, f_get_ctgr_product_code(EX.ctgr_product_id) AS category_code,
  241. f_get_sub_ctgr_product_code(EX.sub_ctgr_product_id) AS sub_category_code, EX.product_code,
  242. COALESCE(K.promo_code, '') AS promo_code , f_get_partner_code(COALESCE(H.salesman_id,-99)) AS salesman_code,
  243. f_get_partner_code(EY.supplier_id) AS supplier_code,
  244. A.qty_dlv_so AS qty, 0 AS add_discount_amount,
  245. 0 regular_discount_percentage, 0 regular_discount_amount, 0 discount_percentage,  0 discount_amount,
  246. A.price_so AS nett_sell_price,
  247. A.item_amount + COALESCE(M.tax_amount, 0) AS gross_item_amount,
  248. E.nett_item_amount, COALESCE(H.ext_doc_no, '') AS ref_doc_no, COALESCE(H.ext_doc_date, '') AS ref_doc_date, 0 AS version,
  249. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS create_datetime,
  250. -1 AS create_user_id,
  251. TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING AS update_datetime,
  252. -1 AS update_user_id
  253. FROM sl_so_balance_invoice A
  254. INNER JOIN in_inventory AX ON A.ref_id = AX.inventory_id
  255. INNER JOIN t_tenant B ON A.tenant_id = B.tenant_id
  256. INNER JOIN m_partner C ON A.partner_id = C.partner_id
  257. INNER JOIN m_partner_address D ON C.partner_id = D.partner_id AND flg_official = 'Y'
  258. INNER JOIN sl_request_return_sales_item E ON A.ref_item_id = E.request_return_sales_item_id AND A.so_id = E.request_return_sales_id
  259. INNER JOIN m_product EX ON E.product_id = EX.product_id
  260. INNER JOIN m_product_custom_for_dlg EY ON EX.product_id = EY.product_id
  261. LEFT JOIN sl_do_item F ON E.ref_id = F.do_item_id
  262. LEFT JOIN sl_do G ON F.do_id = G.do_id
  263. LEFT JOIN sl_so H ON G.ref_id = H.so_id
  264. LEFT JOIN sl_so_item HX ON F.ref_id = HX.so_item_id
  265. LEFT JOIN sl_so_additional_for_dlg I ON H.so_id = I.so_id
  266. LEFT JOIN m_region J ON I.region_id = J.region_id
  267. LEFT JOIN m_promo_sales K ON I.promo_sales_id = K.promo_sales_id
  268. LEFT JOIN m_partner_npwp L ON C.partner_id = L.partner_id
  269. LEFT JOIN sl_so_balance_invoice_tax M ON H.so_id = M.so_id AND G.do_id = M.ref_id AND F.do_item_id = M.ref_item_id
  270. WHERE A.ref_doc_type_id = 502
  271. AND EXISTS (
  272.     SELECT 1 FROM dw_last_main_data Z, tt_current_main_data X
  273.     WHERE Z.tenant_code = B.tenant_code
  274.     AND Z.tenant_code = X.tenant_code
  275.     AND Z.main_data_type = 'SLS_INVOICE_DO'
  276.     AND Z.main_data_type = X.main_data_type
  277.     AND X.session_id = '${SESSION_ID}'
  278.     AND A.so_balance_invoice_id BETWEEN Z.last_id+1 AND X.current_id
  279. );
  280.  
  281. -- UPDATE LAST ID
  282. UPDATE dw_last_main_data A
  283.    SET last_id=B.current_id,
  284.        update_datetime=TO_CHAR(CURRENT_DATE, 'YYYYMMDDHH24MISS')::CHARACTER VARYING
  285. FROM tt_current_main_data B
  286. WHERE A.tenant_code = B.tenant_code
  287. AND A.raw_data_type = B.raw_data_type
  288. AND A.main_data_type = B.main_data_type
  289. AND B.session_id = '${SESSION_ID}';
  290.  
  291. -- REMOVE DW CURRENT ID
  292. DELETE FROM tt_current_main_data where session_id = '${SESSION_ID}';
Advertisement
Add Comment
Please, Sign In to add comment