USE `inventory`;
-- --------------------------------------------------------
-- Versi server:                 8.0.11 - MySQL Community Server - GPL
-- OS Server:                    Win64
-- HeidiSQL Versi:               9.2.0.4947
-- --------------------------------------------------------


-- Dumping structure for trigger inventory.pengiriman_detil_after_update
DROP TRIGGER IF EXISTS `pengiriman_detil_after_update`;
SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_ENGINE_SUBSTITUTION';
DELIMITER //
CREATE TRIGGER `pengiriman_detil_after_update` AFTER UPDATE ON `pengiriman_detil` FOR EACH ROW BEGIN
	DECLARE VASAL, VTUJUAN CHAR(10);
	DECLARE VTANGGAL_TERIMA,VTANGGAL_KIRIM DATETIME;
	DECLARE VBARANG_RUANGAN_ASAL, VBARANG_RUANGAN_TUJUAN BIGINT;
	DECLARE VJENIS_KUNJUNGAN_TUJUAN TINYINT;
	DECLARE VBARANG SMALLINT;
	DECLARE VKATEGORI CHAR(10);
	
	IF OLD.STATUS != NEW.STATUS AND NEW.STATUS = 2 THEN
		BEGIN
			
			SELECT k.ASAL, k.TUJUAN, r.TANGGAL, k.TANGGAL, rg.JENIS_KUNJUNGAN INTO VASAL, VTUJUAN, VTANGGAL_TERIMA, VTANGGAL_KIRIM, VJENIS_KUNJUNGAN_TUJUAN
			  FROM inventory.pengiriman k
			  		 LEFT JOIN master.ruangan rg ON rg.ID = k.TUJUAN,
			  		 inventory.penerimaan r
			 WHERE k.NOMOR = OLD.PENGIRIMAN
			   AND r.JENIS = 2 AND r.STATUS = 1
				AND r.REF = OLD.PENGIRIMAN LIMIT 1;
			 
			IF FOUND_ROWS() > 0 THEN	
				
				SELECT asal.ID, tujuan.ID, OLD.BARANG, b.KATEGORI INTO VBARANG_RUANGAN_ASAL, VBARANG_RUANGAN_TUJUAN, VBARANG, VKATEGORI
				  FROM inventory.permintaan_detil pd
				  		 LEFT JOIN inventory.barang_ruangan asal ON asal.BARANG = OLD.BARANG AND asal.RUANGAN = VASAL
				  		 LEFT JOIN inventory.barang_ruangan tujuan ON tujuan.BARANG = OLD.BARANG AND tujuan.RUANGAN = VTUJUAN
				  		 LEFT JOIN inventory.barang b ON b.ID = pd.BARANG
				 WHERE pd.ID = OLD.PERMINTAAN_BARANG_DETIL;
				
				IF FOUND_ROWS() > 0 THEN
				BEGIN
					
					INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
				 		  VALUES(VBARANG_RUANGAN_ASAL, 23, OLD.ID, VTANGGAL_KIRIM, NEW.JUMLAH);
				 	
				 	IF NOT EXISTS(SELECT 1 FROM inventory.barang_ruangan WHERE RUANGAN = VTUJUAN AND BARANG = VBARANG) THEN
				 		INSERT INTO inventory.barang_ruangan(RUANGAN, BARANG, STOK, TANGGAL, TRANSAKSI_STOK_RUANGAN)
				 		     VALUES (VTUJUAN, VBARANG, 0, NOW(), NULL);
				 		SET VBARANG_RUANGAN_TUJUAN = LAST_INSERT_ID();
				 	END IF;
				 	
				 	IF NOT EXISTS(SELECT 1 FROM aplikasi.properti_config p WHERE p.ID = 900609 AND p.VALUE = 'TRUE') THEN
						INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
					 		  VALUES(VBARANG_RUANGAN_TUJUAN, 20, OLD.ID, VTANGGAL_TERIMA, NEW.JUMLAH);
					ELSE
						INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
					 		  VALUES(VBARANG_RUANGAN_TUJUAN, 20, OLD.ID, VTANGGAL_KIRIM, NEW.JUMLAH);
					END IF;
					
				END;
				END IF;
			END IF;
		END;
	END IF;
	
	/* Script Batal terima */
	IF OLD.STATUS != NEW.STATUS  AND NEW.STATUS = 1 THEN
		BEGIN
			
			SELECT k.ASAL, k.TUJUAN, r.TANGGAL, k.TANGGAL, rg.JENIS_KUNJUNGAN INTO VASAL, VTUJUAN, VTANGGAL_TERIMA, VTANGGAL_KIRIM, VJENIS_KUNJUNGAN_TUJUAN
			  FROM inventory.pengiriman k
			  		 LEFT JOIN master.ruangan rg ON rg.ID = k.TUJUAN,
			  		 inventory.penerimaan r
			 WHERE k.NOMOR = OLD.PENGIRIMAN
			   AND r.JENIS = 2 AND r.STATUS = 0
				AND r.REF = OLD.PENGIRIMAN ORDER BY r.TANGGAL DESC LIMIT 1;
			 
			IF FOUND_ROWS() > 0 THEN	
				
				SELECT asal.ID, tujuan.ID, OLD.BARANG, b.KATEGORI INTO VBARANG_RUANGAN_ASAL, VBARANG_RUANGAN_TUJUAN, VBARANG, VKATEGORI
				  FROM inventory.permintaan_detil pd
				  		 LEFT JOIN inventory.barang_ruangan asal ON asal.BARANG = OLD.BARANG AND asal.RUANGAN = VASAL
				  		 LEFT JOIN inventory.barang_ruangan tujuan ON tujuan.BARANG = OLD.BARANG AND tujuan.RUANGAN = VTUJUAN
				  		 LEFT JOIN inventory.barang b ON b.ID = pd.BARANG
				 WHERE pd.ID = OLD.PERMINTAAN_BARANG_DETIL;
				
				IF FOUND_ROWS() > 0 THEN
				BEGIN
					
					INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
				 		  VALUES(VBARANG_RUANGAN_ASAL, 66, OLD.ID, VTANGGAL_KIRIM, NEW.JUMLAH);
				 	
				 	IF NOT EXISTS(SELECT 1 FROM inventory.barang_ruangan WHERE RUANGAN = VTUJUAN AND BARANG = VBARANG) THEN
				 		INSERT INTO inventory.barang_ruangan(RUANGAN, BARANG, STOK, TANGGAL, TRANSAKSI_STOK_RUANGAN)
				 		     VALUES (VTUJUAN, VBARANG, 0, NOW(), NULL);
				 		SET VBARANG_RUANGAN_TUJUAN = LAST_INSERT_ID();
				 	END IF;
				 	
				 	IF NOT EXISTS(SELECT 1 FROM aplikasi.properti_config p WHERE p.ID = 900609 AND p.VALUE = 'TRUE') THEN
						INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
					 		  VALUES(VBARANG_RUANGAN_TUJUAN, 65, OLD.ID, VTANGGAL_TERIMA, NEW.JUMLAH);
					ELSE
						INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
					 		  VALUES(VBARANG_RUANGAN_TUJUAN, 65, OLD.ID, VTANGGAL_KIRIM, NEW.JUMLAH);
					END IF;
					
				END;
				END IF;
			END IF;
		END;
	END IF;
	
	/* Script Ubah Tanggal Terima dan Kirim */
	IF OLD.FLAG_UBAH_TANGGAL != NEW.FLAG_UBAH_TANGGAL AND OLD.STATUS = 2 THEN
		BEGIN
			
			SELECT k.ASAL, k.TUJUAN, r.TANGGAL, k.TANGGAL INTO VASAL, VTUJUAN, VTANGGAL_TERIMA, VTANGGAL_KIRIM
			  FROM inventory.pengiriman k, inventory.penerimaan r
			 WHERE r.JENIS = 2 AND r.`STATUS`=1
				AND r.REF = k.NOMOR 
				AND k.NOMOR = OLD.PENGIRIMAN AND k.STATUS=2 LIMIT 1;
			 
			IF FOUND_ROWS() > 0 THEN	
				
				SELECT tujuan.ID, OLD.BARANG, b.KATEGORI INTO VBARANG_RUANGAN_TUJUAN, VBARANG, VKATEGORI
				  FROM inventory.permintaan_detil pd
				  		 LEFT JOIN inventory.barang_ruangan tujuan ON tujuan.BARANG = OLD.BARANG AND tujuan.RUANGAN = VTUJUAN
				  		 LEFT JOIN inventory.barang b ON b.ID = pd.BARANG
				 WHERE pd.ID = OLD.PERMINTAAN_BARANG_DETIL;
				
				IF FOUND_ROWS() > 0 THEN
				BEGIN
				 	
				 	IF VBARANG_RUANGAN_TUJUAN IS NOT NULL THEN
					 	IF EXISTS(SELECT 1 FROM aplikasi.properti_config p WHERE p.ID = 900609 AND p.VALUE = 'TRUE') THEN
					 		INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
						 		  VALUES(VBARANG_RUANGAN_TUJUAN, 65, OLD.ID, VTANGGAL_TERIMA, OLD.JUMLAH);
						 		  
							INSERT INTO inventory.transaksi_stok_ruangan(BARANG_RUANGAN, JENIS, REF, TANGGAL, JUMLAH)
						 		  VALUES(VBARANG_RUANGAN_TUJUAN, 20, OLD.ID, VTANGGAL_TERIMA, OLD.JUMLAH);
						END IF;
					END IF;
					
				END;
				END IF;
			END IF;
		END;
	END IF;
	
END//
DELIMITER ;
