Advertisement
henikseptiana15

Script perbaikan data po balance item

Jan 18th, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Perbaiki qty_rcv dan qty_int_rcv data pu_po_balance_item */
  2.  
  3. WITH get_po_balance_item AS(
  4.     -- Ambil data po balance item yg sudah di GR
  5.     SELECT A.po_item_id, A.qty_int_po, A.qty_int_rcv
  6.     FROM pu_po_balance_item A
  7.     WHERE A.qty_int_rcv <> 0
  8. ), get_data_qty_rcv_invalid AS(
  9.  
  10.     -- Dapatkan data receive goods dimana qty_rcv antara yg di dokumen GR dan di po balance item beda (pastikan summary qty rcv di dokumen GR <= qty po)
  11.     -- Ambil semua data GR apapun status doc nya
  12.     SELECT A.ref_id AS po_id, B.ref_id AS po_item_id,
  13.            SUM(B.qty_rcv_int) AS sum_qty_rcv, C.qty_int_po,
  14.            C.qty_int_rcv
  15.     FROM pu_receive_goods A
  16.     INNER JOIN pu_receive_goods_item B ON A.receive_goods_id = B.receive_goods_id
  17.     INNER JOIN get_po_balance_item C ON B.ref_id = C.po_item_id
  18.     GROUP BY A.ref_id, B.ref_id, C.qty_int_po, C.qty_int_rcv
  19.     HAVING SUM(B.qty_rcv_int) <> C.qty_int_rcv AND
  20.            SUM(B.qty_rcv_int) <= C.qty_int_po
  21.     ORDER BY A.ref_id, B.ref_id
  22. )
  23. UPDATE pu_po_balance_item A
  24. SET qty_rcv = B.sum_qty_rcv,
  25.     qty_int_rcv = B.sum_qty_rcv,
  26.     update_user_id = -3,
  27.     update_datetime = '20180119100000'
  28. FROM get_data_qty_rcv_invalid B
  29. WHERE A.po_item_id = B.po_item_id;
  30.  
  31. -------------------------------------------------------------------------------------------------
  32. /* Update semua data PO balance item yg nggak ada dokumen RG O/S dan Manage PO O/S */
  33. UPDATE pu_po_balance_item A
  34. SET status_item = 'R',
  35.     update_user_id = -3,
  36.     update_datetime = '20180119100000'
  37. WHERE NOT EXISTS(SELECT 1 FROM pu_receive_goods B, pu_receive_goods_item C
  38.              WHERE B.receive_goods_id = C.receive_goods_id AND
  39.                C.ref_id = A.po_item_id AND
  40.                B.status_doc <> 'R')
  41.       AND NOT EXISTS(SELECT 1 FROM pu_manage_po B, pu_manage_po_item C
  42.                  WHERE B.manage_po_id = C.manage_po_id AND
  43.                C.po_item_id = A.po_item_id AND
  44.                    B.status_doc <> 'R')
  45.  
  46. /* update data PO balance item menjadi F, tuk semua item yg status item = R, dan (A.qty_po - A.qty_cancel + A.qty_add - A.qty_rcv) <= 0 */
  47. UPDATE pu_po_balance_item A
  48. SET status_item = 'F',
  49.     update_user_id = -3,
  50.     update_datetime = '20180119100000'
  51. WHERE A.status_item = 'R' AND
  52.       (A.qty_po - A.qty_cancel + A.qty_add - A.qty_rcv) <= 0;
  53.  
  54. -------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement