Advertisement
Evra70

oke

Dec 15th, 2021
1,324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- # cari qty reserved stock yg selisih
  2. WITH detail_transaksi AS (
  3.     -- ambil booking reserved dari settlement (belum di DO maupun lagi proses verify)
  4.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  5.             A.doc_no, A.doc_date, B.qty_settlement AS qty
  6.      FROM sl_so_settlement A
  7.      INNER JOIN sl_so_settlement_item B ON A.so_settlement_id = B.so_settlement_id
  8.      WHERE EXISTS(
  9.          SELECT 1
  10.          FROM sl_so_settlement C
  11.          INNER JOIN sl_so X ON X.so_id = C.ref_id AND X.doc_type_id = C.ref_doc_type_id
  12.          WHERE A.tenant_id = C.tenant_id
  13.          AND A.so_settlement_id = C.so_settlement_id
  14.          AND X.status_doc <> 'V'
  15.          AND NOT EXISTS (SELECT 1 FROM sl_do D WHERE C.ref_id = D.ref_id AND C.ref_doc_type_id = D.ref_doc_type_id AND D.status_doc = 'R' )
  16.          AND NOT EXISTS (SELECT 1 FROM sl_so_status E WHERE X.so_id = E.so_id AND E.status_do = 'V' )
  17.          )
  18.      AND A.tenant_id = 10
  19.      AND A.ou_id = 10
  20.      AND B.qty_settlement > 0
  21.      
  22.      UNION ALL
  23.    
  24.     -- Ambil bookingan reserved dari verifikasi DO (sudah diverify /scan lengkap dan belum sampai di DO)
  25.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  26.             A.doc_no, A.doc_date, B.qty_verify AS qty
  27.      FROM in_verification_header A
  28.      INNER JOIN in_verification_item B ON A.verification_id = B.verification_id
  29.      INNER JOIN sl_so X ON X.so_id = A.doc_id AND X.doc_type_id = A.doc_type_id
  30.      WHERE A.tenant_id = 10
  31.      AND B.qty_verify > 0
  32.      AND X.ou_id = 10
  33.      AND X.status_doc <> 'V'
  34.      AND NOT EXISTS (SELECT 1 FROM sl_do D WHERE X.so_id = D.ref_id AND X.doc_type_id = D.ref_doc_type_id  AND D.status_doc = 'R' )
  35.      AND EXISTS (SELECT 1 FROM sl_so_status E WHERE X.so_id = E.so_id AND E.status_do = 'V' )
  36.      UNION ALL
  37.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  38.             A.ref_doc_no AS doc_no, A.ref_doc_date AS doc_date, B.qty_current_scan AS qty
  39.      FROM in_scanner_header A
  40.      INNER JOIN in_scanner_item B ON A.scanner_header_id = B.scanner_header_id
  41.      INNER JOIN sl_so X ON X.so_id = A.ref_doc_id AND X.doc_type_id = A.ref_doc_type_id
  42.      WHERE A.tenant_id = 10
  43.      AND B.qty_current_scan > 0 AND B.scan_status = 'SL'
  44.      AND X.ou_id = 10
  45.      AND X.status_doc <> 'V'
  46.      AND NOT EXISTS (SELECT 1 FROM sl_do D WHERE X.so_id = D.ref_id AND X.doc_type_id = D.ref_doc_type_id  AND D.status_doc = 'R' )
  47.      AND EXISTS (SELECT 1 FROM sl_so_status E WHERE X.so_id = E.so_id AND E.status_do = 'V' )
  48.    
  49.      UNION ALL
  50.    
  51.     -- Ambil qty reserved dari cancel sob, dan sudah disettlement (belum di DO maupun lagi proses di verify)
  52.      SELECT f_get_product_name(F.product_id) AS product_name, F.product_id,
  53.             A.doc_no, A.doc_date, -1*F.qty_settlement AS qty
  54.      FROM sl_manage_so A
  55.      INNER JOIN sl_manage_so_item B ON A.manage_so_id = B.manage_so_id
  56.      INNER JOIN sl_so_item C ON B.so_item_id = C.so_item_id
  57.      INNER JOIN sl_so D ON C.so_id = D.so_id
  58.      INNER JOIN sl_so_settlement E ON D.so_id = E.ref_id AND D.doc_type_id = E.ref_doc_type_id
  59.      INNER JOIN sl_so_settlement_item F ON E.so_settlement_id = F.so_settlement_id AND C.product_id = F.product_id
  60.      WHERE A.tenant_id = 10
  61.      AND A.ou_id = 10
  62.      AND A.doc_type_id = 392
  63.      AND A.status_doc = 'R'
  64.      AND D.status_doc <> 'V'
  65.      AND F.qty_settlement > 0
  66.      AND NOT EXISTS (SELECT 1 FROM sl_do X WHERE E.ref_id = X.ref_id AND E.ref_doc_type_id = X.ref_doc_type_id AND X.status_doc = 'R')
  67.      AND NOT EXISTS (SELECT 1 FROM sl_so_status Y WHERE A.so_id = Y.so_id AND Y.status_do = 'V' )
  68.      
  69.      UNION ALL
  70.    
  71.     -- ambil booking reserved dari sob yang belum di settle
  72.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  73.             A.doc_no, A.doc_date, B.qty_int AS qty  
  74.      FROM sl_so A
  75.      INNER JOIN sl_so_item B ON A.so_id = B.so_id
  76.      WHERE NOT EXISTS(
  77.          SELECT 1
  78.          FROM sl_so_settlement C
  79.          WHERE A.tenant_id = C.tenant_id
  80.          AND A.so_id = C.ref_id AND A.doc_type_id = C.ref_doc_type_id
  81.          )
  82.      AND A.tenant_id = 10
  83.      AND A.ou_id = 10
  84.      AND A.status_doc IN ('R' , 'I')
  85.      AND A.workflow_status <> 'CHANGES REQUESTED'
  86.      
  87.      UNION ALL
  88.    
  89.     -- ambil booking reserved dari REXO (belum di EXO maupun lagi proses verify)
  90.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  91.             A.doc_no, A.doc_date, B.qty
  92.      FROM in_in_out_exchange A
  93.      INNER JOIN in_in_out_exchange_item B ON A.in_out_exchange_id = B.in_out_exchange_id
  94.      INNER JOIN in_in_out_exchange_status C ON C.in_out_exchange_id = A.in_out_exchange_id
  95.      WHERE A. tenant_id = 10
  96.      AND A.ou_id = 10
  97.      AND A.doc_type_id = 599
  98.      AND C.status_exchange_out NOT IN ('V', 'Y')
  99.    
  100.      UNION ALL
  101.    
  102.     -- Ambil bookingan reserved dari verifikasi EXO (sudah diverify /scan lengkap dan belum sampai di EXO)
  103.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  104.             A.doc_no, A.doc_date, B.qty_verify AS qty
  105.      FROM in_verification_header A
  106.      INNER JOIN in_verification_item B ON A.verification_id = B.verification_id
  107.      INNER JOIN in_in_out_exchange X ON X.in_out_exchange_id = A.doc_id AND X.doc_type_id = A.doc_type_id
  108.      WHERE A.tenant_id = 10
  109.      AND B.qty_verify > 0
  110.      AND X.ou_id = 10
  111.      AND X.doc_type_id = 599
  112.      AND NOT EXISTS (SELECT 1 FROM in_in_out_exchange D
  113.                     WHERE A.doc_id = D.req_id AND A.doc_type_id = D.req_doc_type_id AND D.doc_type_id = 565 AND D.status_doc = 'R' )
  114.      AND EXISTS (SELECT 1 FROM in_in_out_exchange_status E
  115.                     WHERE X.in_out_exchange_id = E.in_out_exchange_id AND E.status_exchange_out = 'V' )
  116.      UNION ALL
  117.      SELECT f_get_product_name(B.product_id) AS product_name, B.product_id,
  118.             A.ref_doc_no AS doc_no, A.ref_doc_date AS doc_date,  B.qty_current_scan AS qty
  119.      FROM in_scanner_header A
  120.      INNER JOIN in_scanner_item B ON A.scanner_header_id = B.scanner_header_id
  121.      INNER JOIN in_in_out_exchange X ON X.in_out_exchange_id = A.ref_doc_id AND X.doc_type_id = A.ref_doc_type_id
  122.      WHERE A.tenant_id = 10
  123.      AND B.qty_current_scan > 0AND B.scan_status = 'SL'
  124.      AND X.ou_id = 10
  125.      AND X.doc_type_id = 599
  126.      AND NOT EXISTS (SELECT 1 FROM in_in_out_exchange D
  127.                     WHERE A.doc_id = D.req_id AND A.doc_type_id = D.req_doc_type_id AND D.doc_type_id = 565 AND D.status_doc = 'R' )
  128.      AND EXISTS (SELECT 1 FROM in_in_out_exchange_status E
  129.                     WHERE X.in_out_exchange_id = E.in_out_exchange_id AND E.status_exchange_out = 'V' )
  130. ), stock_reserved_in_trx AS (
  131.     SELECT product_id, SUM(qty) AS qty
  132.     FROM detail_transaksi
  133.     GROUP BY product_id
  134. )    
  135. SELECT A.product_id, C.product_code, C.product_name,
  136.        A.qty AS qty_reserved_stock, COALESCE(B.qty, 0) AS qty_trx,
  137.        (A.qty - COALESCE(B.qty, 0)) AS qty_diff
  138. FROM in_product_balance_stock_reserved A
  139. INNER JOIN m_product C ON A.product_id = C.product_id
  140. LEFT JOIN stock_reserved_in_trx B ON A.product_id = B.product_id
  141. WHERE (A.qty - COALESCE(B.qty, 0)) <> 0
  142. ORDER BY C.product_name;
  143.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement