
USE `inventory`;

DROP PROCEDURE IF EXISTS `inventory`.`onHitungUlangDataStokOpname`;
DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `inventory`.`onHitungUlangDataStokOpname`(IN `PID` INT, IN `PRUANGAN` CHAR(10), IN `PTANGGAL` DATE)
BEGIN
	DECLARE VTANGGAL, VTANGGAL1, VTANGGAL2 DATETIME;
	DECLARE VROW, VJENIS, VATURAN, VKATEGORI INT;
	
	SELECT ID INTO VATURAN FROM aplikasi.properti_config WHERE ID = 900603 AND VALUE = 'TRUE';
	
	IF FOUND_ROWS() > 0 THEN
		SET VJENIS = 1;
	ELSE
		SET VJENIS = 0;
	END IF;
	
	SELECT DATE_FORMAT(CONCAT(TANGGAL,' ',TIME),'%Y-%m-01 00:00:00'), DATE_FORMAT(CONCAT(TANGGAL,' ',TIME),'%Y-%m-%d %H:%i:%s'), KATEGORI INTO VTANGGAL1, VTANGGAL2, VKATEGORI
	  FROM inventory.stok_opname
	 WHERE ID = PID;
	 
	SELECT DATE_FORMAT(CONCAT(TANGGAL,' ',TIME),'%Y-%m-%d %H:%i:%s') INTO VTANGGAL
	  FROM inventory.stok_opname
	 WHERE NOT ID IN (PID)
	   AND RUANGAN = PRUANGAN AND KATEGORI = VKATEGORI
	   AND STATUS = 'Final' ORDER BY TANGGAL DESC LIMIT 1;
	   
	IF FOUND_ROWS() = 0 THEN
		SET VTANGGAL = '2020-01-01 00:00:00';
	END IF;
	 
	SET VTANGGAL = IF(VTANGGAL IS NULL, VTANGGAL2, VTANGGAL);
	
	SET @awal= ROUND(0.00,2);
	SET @masuk= ROUND(0.00,2);
	SET @keluar= ROUND(0.00,2);
	
	UPDATE inventory.stok_opname_detil so
		SET so.AWAL = @awal:=inventory.getStokAwal(so.BARANG_RUANGAN, VTANGGAL),
		so.BARANG_MASUK = @masuk:=inventory.getJumlahBarangMasuk(so.BARANG_RUANGAN, VTANGGAL1, VTANGGAL2),
		so.BARANG_KELUAR = @keluar:=inventory.getJumlahBarangKeluar(so.BARANG_RUANGAN, VTANGGAL1, VTANGGAL2),
		so.SISTEM = ((@awal + @masuk) - @keluar)
	WHERE so.STOK_OPNAME = PID;
				
	CALL inventory.onInsertNewDataStokOpname(PID, PRUANGAN, VTANGGAL2);
END//
DELIMITER ;