You are on page 1of 4

BEGIN

DECLARE vRUANGAN VARCHAR(11);


DECLARE vKATEGORI VARCHAR(11);
DECLARE vBARANG VARCHAR(11);

SET vRUANGAN = CONCAT(RUANGAN,'%');


SET vBARANG = CONCAT(BARANG,'%');
SET vKATEGORI = CONCAT(KATEGORI,'%');

SET @sqlText = CONCAT('


SELECT inst.PPK, inst.NAMA NAMAINST,
inst.ALAMAT ALAMATINST, ib.NAMA NAMAOBAT
#awal
, IFNULL((
SELECT ts.STOK
FROM
inventory.transaksi_stok_ruangan ts
LEFT JOIN inventory.barang_ruangan
br ON br.ID=ts.BARANG_RUANGAN
LEFT JOIN inventory.barang b ON
b.ID=br.BARANG
WHERE b.ID=ib.ID
AND ts.TANGGAL <= "',TGLAWAL,'"
AND br.RUANGAN LIKE "',vRUANGAN,'"
ORDER BY ts.TANGGAL DESC
LIMIT 1
),0) AS TAWAL
#tempmasuk
, IFNULL((
SELECT SUM(ts.JUMLAH)
FROM
inventory.transaksi_stok_ruangan ts
LEFT JOIN inventory.barang_ruangan
bn ON bn.ID=ts.BARANG_RUANGAN
LEFT JOIN inventory.barang br ON
br.ID=bn.BARANG
LEFT JOIN
inventory.jenis_transaksi_stok jts ON ts.JENIS=jts.ID
WHERE br.ID=ib.ID
AND ts.TANGGAL BETWEEN
"',TGLAWAL,'" AND "',TGLAKHIR,'"
AND bn.RUANGAN LIKE "',vRUANGAN,'"
AND jts.ID IN (21,31,32,34,35)
AND jts.TAMBAH_ATAU_KURANG="+"
),0) AS TMASUK
#tempkeluar
, IFNULL((
SELECT SUM(ts.JUMLAH)
FROM
inventory.transaksi_stok_ruangan ts
LEFT JOIN inventory.barang_ruangan
bn ON bn.ID=ts.BARANG_RUANGAN
LEFT JOIN inventory.barang br ON
br.ID=bn.BARANG
LEFT JOIN
inventory.jenis_transaksi_stok jts ON ts.JENIS=jts.ID
WHERE br.ID=ib.ID
AND ts.TANGGAL BETWEEN
"',TGLAWAL,'" AND "',TGLAKHIR,'"
AND bn.RUANGAN LIKE "',vRUANGAN,'"
AND jts.ID IN (22,24,30,33)
AND jts.TAMBAH_ATAU_KURANG="-"
),0) AS TKELUAR
#stokopname
, IFNULL((
SELECT ts.JUMLAH
FROM
inventory.transaksi_stok_ruangan ts
LEFT JOIN inventory.barang_ruangan
bn ON bn.ID=ts.BARANG_RUANGAN
LEFT JOIN inventory.barang br ON
br.ID=bn.BARANG
LEFT JOIN
inventory.jenis_transaksi_stok jts ON ts.JENIS=jts.ID
WHERE br.ID=ib.ID
AND ts.TANGGAL BETWEEN
"',TGLAWAL,'" AND "',TGLAKHIR,'"
AND bn.RUANGAN LIKE "',vRUANGAN,'"
AND jts.TAMBAH_ATAU_KURANG=""
ORDER BY ts.TANGGAL DESC LIMIT 1
),0) AS STOKOPNAME
#akhir
, IFNULL((
SELECT ts.STOK
FROM
inventory.transaksi_stok_ruangan ts
LEFT JOIN inventory.barang_ruangan
br ON br.ID=ts.BARANG_RUANGAN
LEFT JOIN inventory.barang b ON
b.ID=br.BARANG
WHERE b.ID=ib.ID
AND ts.TANGGAL <= "',TGLAKHIR,'"
AND br.RUANGAN LIKE "',vRUANGAN,'"
ORDER BY ts.TANGGAL DESC
LIMIT 1
),0) AS TAKHIR
#selisih
, IFNULL((SELECT (TAWAL+TMASUK-TKELUAR)-
TAKHIR),0) AS SELISIH

#awal
, (SELECT TAWAL) AS AWAL
, IFNULL((
SELECT HARGA_BELI FROM
inventory.harga_barang
WHERE MASA_BERLAKU <=
"',TGLAKHIR,'"
AND
inventory.harga_barang.BARANG=ib.ID
ORDER BY MASA_BERLAKU DESC LIMIT 1
),0) AS HS_AWAL
, IFNULL((
SELECT ROUND(AWAL*HS_AWAL,2)
),0) AS HT_AWAL
#final adjusment
#masuk
, IF((SELECT SELISIH)<0,(SELECT ABS(SELISIH)),
(SELECT TMASUK)) AS MASUK
, IFNULL((
SELECT HARGA_BELI FROM
inventory.harga_barang
WHERE MASA_BERLAKU <=
"',TGLAKHIR,'"
AND
inventory.harga_barang.BARANG=ib.ID
ORDER BY MASA_BERLAKU DESC LIMIT 1
),0) AS HS_MASUK
, IFNULL((
SELECT ROUND(MASUK*HS_MASUK,2)
),0) AS HT_MASUK
#final adjusment
#keluar
, IF((SELECT SELISIH)>0,(SELECT SELISIH),
(SELECT TKELUAR)) AS KELUAR
, IFNULL((
SELECT HARGA_BELI FROM
inventory.harga_barang
WHERE MASA_BERLAKU <=
"',TGLAKHIR,'"
AND
inventory.harga_barang.BARANG=ib.ID
ORDER BY MASA_BERLAKU DESC LIMIT 1
),0) AS HS_KELUAR
, IFNULL((
SELECT ROUND(KELUAR*HS_KELUAR,2)
),0) AS HT_KELUAR
, (SELECT TAKHIR) AS AKHIR
, IFNULL((
SELECT HARGA_BELI FROM
inventory.harga_barang
WHERE MASA_BERLAKU <=
"',TGLAKHIR,'"
AND
inventory.harga_barang.BARANG=ib.ID
ORDER BY MASA_BERLAKU DESC LIMIT 1
),0) AS HS_AKHIR
, IFNULL((
SELECT ROUND(AKHIR*HS_AKHIR,2)
),0) AS HT_AKHIR
, CONCAT("LAPORAN PERSEDIAAN BARANG
",UPPER(jk.DESKRIPSI)) JENISLAPORAN
#, master.getHeaderLaporan(',RUANGAN,')
INSTALASI
#, master.getHeaderKategoriBarang(',KATEGORI,')
KATEGORI
, IF("',RUANGAN,'"=0,''Semua'',
master.getHeaderLaporan("',RUANGAN,'")) INSTALASI
, IF("',KATEGORI,'"=0,''Semua'',
master.getHeaderKategoriBarang(',KATEGORI,')) KATEGORI
, IF(',CARABAYAR,'=0,''Semua'',(SELECT
ref.DESKRIPSI FROM master.referensi ref WHERE ref.ID=',CARABAYAR,' AND
ref.JENIS=10)) CARABAYARHEADER
, IF(',BARANG,'=0,''Semua'',(SELECT br.NAMA
FROM inventory.barang br WHERE br.ID=',BARANG,')) BARANGHEADER
FROM inventory.barang ib
LEFT JOIN inventory.kategori ik ON
ib.KATEGORI=ik.ID
, master.ruangan r
LEFT JOIN master.referensi jk ON
r.JENIS_KUNJUNGAN=jk.ID AND jk.JENIS=15
, (SELECT mp.NAMA, ai.PPK, mp.ALAMAT
FROM
aplikasi.instansi ai
,
master.ppk mp
WHERE
ai.PPK=mp.ID) inst

WHERE

r.JENIS=5
AND r.JENIS_KUNJUNGAN=11
#AND ib.ID LIKE "',vBARANG,'"
#AND ik.ID LIKE "',vKATEGORI,'"
',IF(BARANG=0,'',CONCAT(' AND ib.ID LIKE
"',vBARANG,'"')),'
',IF(KATEGORI=0,'',CONCAT(' AND ik.ID
LIKE "',vKATEGORI,'"')),'
GROUP BY ib.ID
ORDER BY ib.ID ASC

');

PREPARE stmt FROM @sqlText;


EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END

You might also like