Advertisement
agungsucipto

Query Stok Detail

Jul 16th, 2020
2,059
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. select json_agg(foo) from (
  2.     SELECT
  3.         kode_item,
  4.         nama_item,
  5.         satuan,
  6.         wac,
  7.         SUM ( awal ) as awal,
  8.         SUM ( awal_rupiah ) as awal_rupiah,
  9.         SUM (masuk) as masuk,
  10.         SUM (masuk_rupiah) as masuk_rupiah,
  11.         SUM ( keluar ) as keluar,
  12.         SUM ( keluar_rupiah ) as keluar_rupiah,
  13.         SUM (adj_plus) as adj_plus,
  14.         SUM (adj_plus_rupiah) as adj_plus_rupiah,
  15.         SUM (adj_minus) as adj_minus,
  16.         SUM (adj_minus_rupiah) as adj_minus_rupiah,
  17.         SUM ( akhir ) as akhir,
  18.         SUM ( akhir_rupiah ) as akhir_rupiah
  19. FROM
  20.         (
  21.             SELECT
  22.             item.kode_item,
  23.             item.nama_item,
  24.             (
  25.             SELECT
  26.                 nama_satuan
  27.             FROM
  28.                 item_satuan
  29.                 INNER JOIN satuan ON satuan.id_satuan = item_satuan.id_satuan
  30.             WHERE
  31.                 item_satuan.id_item = item.id_item
  32.                 AND parent_id_item_satuan IS NULL
  33.             ) AS satuan,
  34.             item_gudang_setup.min_stok,
  35.             item_gudang_setup.max_stok,
  36.             item.wac,
  37.             (
  38.             SELECT
  39.                 jumlah_setelah_transaksi
  40.             FROM
  41.                 daftar_item_transaksi
  42.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  43.             WHERE
  44.                 daftar_item_transaksi.id_item = item.id_item
  45.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  46.                 AND item_transaksi.waktu_transaksi < '2020-06-01 00:00:00'
  47.             ORDER BY
  48.                 item_transaksi.waktu_transaksi DESC
  49.                 LIMIT 1
  50.             ) AS awal,
  51.             (
  52.             SELECT
  53.                 jumlah_setelah_transaksi * harga_wac
  54.             FROM
  55.                 daftar_item_transaksi
  56.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  57.             WHERE
  58.                 daftar_item_transaksi.id_item = item.id_item
  59.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  60.                 AND item_transaksi.waktu_transaksi < '2020-06-01 00:00:00'
  61.             ORDER BY
  62.                 item_transaksi.waktu_transaksi DESC
  63.                 LIMIT 1
  64.             ) AS awal_rupiah,
  65.             (
  66.             SELECT COALESCE
  67.                 ( SUM ( jumlah_transaksi ), 0 )
  68.             FROM
  69.                 daftar_item_transaksi
  70.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  71.             WHERE
  72.                 daftar_item_transaksi.id_item = item.id_item
  73.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  74.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  75.                 AND '2020-07-16 23:59:59'
  76.                 AND item_transaksi.id_jenis_item_transaksi IN ( 1, 12, 4, 39, 3 )
  77.                 AND item_transaksi.is_delete = FALSE
  78.             ) AS masuk,
  79.             (
  80.             SELECT SUM
  81.                 ( transaksi )
  82.             FROM
  83.                 (
  84.                     (
  85.                     SELECT COALESCE
  86.                         (
  87.                         CASE
  88.                                
  89.                                 WHEN item_transaksi.id_jenis_item_transaksi = 1 THEN
  90.                                 COALESCE ( SUM ( jumlah_transaksi * harga_transaksi ), 0 ) ELSE COALESCE ( SUM ( jumlah_transaksi * harga_wac ), 0 )
  91.                             END,
  92.                             0
  93.                         ) AS transaksi
  94.                     FROM
  95.                         daftar_item_transaksi
  96.                         INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  97.                     WHERE
  98.                         daftar_item_transaksi.id_item = item.id_item
  99.                         AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  100.                         AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  101.                         AND '2020-07-16 23:59:59'
  102.                         AND item_transaksi.id_jenis_item_transaksi IN ( 1, 12, 4, 39, 3 )
  103.                         AND item_transaksi.is_delete = FALSE
  104.                     GROUP BY
  105.                         item_transaksi.id_jenis_item_transaksi
  106.                     )
  107.                 ) foo
  108.             ) AS masuk_rupiah,
  109.             (
  110.             SELECT COALESCE
  111.                 ( SUM ( jumlah_transaksi ), 0 )
  112.             FROM
  113.                 daftar_item_transaksi
  114.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  115.             WHERE
  116.                 daftar_item_transaksi.id_item = item.id_item
  117.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  118.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  119.                 AND '2020-07-16 23:59:59'
  120.                 AND item_transaksi.id_jenis_item_transaksi IN ( 2, 10, 13, 15, 6 )
  121.                 AND item_transaksi.is_delete = FALSE
  122.             ) AS keluar,
  123.             (
  124.             SELECT SUM
  125.                 ( transaksi )
  126.             FROM
  127.                 (
  128.                     (
  129.                     SELECT COALESCE
  130.                         (
  131.                         CASE
  132.                                
  133.                                 WHEN item_transaksi.id_jenis_item_transaksi IN ( 6, 15 ) THEN
  134.                                 COALESCE ( SUM ( jumlah_transaksi * harga_transaksi ), 0 ) ELSE COALESCE ( SUM ( jumlah_transaksi * harga_wac ), 0 )
  135.                             END,
  136.                             0
  137.                         ) AS transaksi
  138.                     FROM
  139.                         daftar_item_transaksi
  140.                         INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  141.                     WHERE
  142.                         daftar_item_transaksi.id_item = item.id_item
  143.                         AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  144.                         AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  145.                         AND '2020-07-16 23:59:59'
  146.                         AND item_transaksi.id_jenis_item_transaksi IN ( 2, 10, 13, 15, 6 )
  147.                         AND item_transaksi.is_delete = FALSE
  148.                     GROUP BY
  149.                         item_transaksi.id_jenis_item_transaksi
  150.                     )
  151.                 ) foo
  152.             ) AS keluar_rupiah,
  153.             (
  154.             SELECT COALESCE
  155.                 ( SUM ( jumlah_transaksi ), 0 )
  156.             FROM
  157.                 daftar_item_transaksi
  158.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  159.             WHERE
  160.                 daftar_item_transaksi.id_item = item.id_item
  161.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  162.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  163.                 AND '2020-07-16 23:59:59'
  164.                 AND item_transaksi.id_jenis_item_transaksi IN ( 23 )
  165.                 AND item_transaksi.is_delete = FALSE
  166.             ) AS adj_plus,
  167.             (
  168.             SELECT COALESCE
  169.                 ( SUM ( jumlah_transaksi * harga_transaksi ), 0 )
  170.             FROM
  171.                 daftar_item_transaksi
  172.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  173.             WHERE
  174.                 daftar_item_transaksi.id_item = item.id_item
  175.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  176.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  177.                 AND '2020-07-16 23:59:59'
  178.                 AND item_transaksi.id_jenis_item_transaksi IN ( 23 )
  179.                 AND item_transaksi.is_delete = FALSE
  180.             GROUP BY
  181.                 item_transaksi.id_jenis_item_transaksi
  182.             ) AS adj_plus_rupiah,
  183.             (
  184.             SELECT COALESCE
  185.                 ( SUM ( jumlah_transaksi ), 0 )
  186.             FROM
  187.                 daftar_item_transaksi
  188.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  189.             WHERE
  190.                 daftar_item_transaksi.id_item = item.id_item
  191.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  192.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  193.                 AND '2020-07-16 23:59:59'
  194.                 AND item_transaksi.id_jenis_item_transaksi IN ( 37 )
  195.                 AND item_transaksi.is_delete = FALSE
  196.             ) AS adj_minus,
  197.             (
  198.             SELECT COALESCE
  199.                 ( SUM ( jumlah_transaksi * harga_transaksi ), 0 )
  200.             FROM
  201.                 daftar_item_transaksi
  202.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  203.             WHERE
  204.                 daftar_item_transaksi.id_item = item.id_item
  205.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  206.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  207.                 AND '2020-07-16 23:59:59'
  208.                 AND item_transaksi.id_jenis_item_transaksi IN ( 37 )
  209.                 AND item_transaksi.is_delete = FALSE
  210.             GROUP BY
  211.                 item_transaksi.id_jenis_item_transaksi
  212.             ) AS adj_minus_rupiah,
  213.             (
  214.             SELECT
  215.                 jumlah_setelah_transaksi
  216.             FROM
  217.                 daftar_item_transaksi
  218.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  219.             WHERE
  220.                 daftar_item_transaksi.id_item = item.id_item
  221.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  222.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  223.                 AND '2020-07-16 23:59:59'
  224.             ORDER BY
  225.                 item_transaksi.waktu_transaksi DESC
  226.                 LIMIT 1
  227.             ) AS akhir,
  228.             (
  229.             SELECT
  230.                 jumlah_setelah_transaksi * harga_wac
  231.             FROM
  232.                 daftar_item_transaksi
  233.                 INNER JOIN item_transaksi ON item_transaksi.id_item_transaksi = daftar_item_transaksi.id_item_transaksi
  234.             WHERE
  235.                 daftar_item_transaksi.id_item = item.id_item
  236.                 AND daftar_item_transaksi.id_item_gudang_setup = item_gudang_setup.id_item_gudang_setup
  237.                 AND item_transaksi.waktu_transaksi BETWEEN '2020-06-01 00:00:00'
  238.                 AND '2020-07-16 23:59:59'
  239.             ORDER BY
  240.                 item_transaksi.waktu_transaksi DESC
  241.                 LIMIT 1
  242.             ) AS akhir_rupiah
  243.         FROM
  244.             item_gudang_setup
  245.             INNER JOIN item ON item.id_item = item_gudang_setup.id_item
  246.         WHERE
  247.             id_gudang IN (78)
  248.         )
  249. data_gabung
  250. GROUP BY
  251. data_gabung.nama_item,
  252. data_gabung.kode_item,
  253. data_gabung.satuan,
  254. data_gabung.wac
  255. ) foo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement