rikyzulkarnainAvatar border
TS
rikyzulkarnain
[HELP] Desain database FIFO untuk sistem gudang
Bagaimana cara membuat desain perhitungan barang menggunakan metode fifo
saya sudah mencoba untuk membuat database dan isi nya seperti di bawah ini, namun kendala transaksi nya sudah banyak maka proses nya akan sangat lambat, bagi yang pernah mengimplementasikan cara kerja fifo pada sistem nya tolong ane dong, ntar ane transfer pulsa deh ke nomor agan. ini contoh yang saya buat
BUAT TABEL BARANGKELUAR
Code:
CREATE TABLE `barangkeluar` (
`KODE_TRANSAKSI` int(11) NOT NULL auto_increment,
`TANGAL` date default NULL,
`KODE_BRG` char(2) default NULL,
`JUMLAH` int(11) default NULL,
PRIMARY KEY (`KODE_TRANSAKSI`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

BUAT TABLE BARANGMASUK

Code:
CREATE TABLE `barangmasuk` (
`KODE_TRANSAKSI` int(11) NOT NULL auto_increment,
`TANGGAL` date default NULL,
`KODE_BRG` char(2) NOT NULL,
`JUMLAH` int(11) NOT NULL,
`HARGA` int(11) default NULL,
`KELUAR` int(11) NOT NULL,
`SISA` int(11) NOT NULL,
PRIMARY KEY (`KODE_TRANSAKSI`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


BUAT TRIGGER PADA PADA TABLE BARANGKELUAR SEPERTI BERIKUT
Code:
DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `fifo`.`FIFO`$$
create trigger `fifo`.`FIFO` BEFORE INSERT on `fifo`.`barangkeluar`
for each row BEGIN
DECLARE JKELUAR INT;
DECLARE KODE CHAR(2);
SET JKELUAR=NEW.JUMLAH;
SET @ID=(SELECT KODE_TRANSAKSI FROM BARANGMASUK WHERE KODE_BRG=NEW.KODE_BRG AND TANGGAL=(SELECT TANGGAL FROM BARANGMASUK WHERE SISA>0 LIMIT 1) AND SISA>0 LIMIT 1);
SET @SISA=(SELECT SISA FROM BARANGMASUK WHERE KODE_TRANSAKSI=@ID);
SET @KODE=NEW.KODE_BRG;
REPEAT
IF(@SISA>JKELUAR) THEN
UPDATE BARANGMASUK SET SISA=@SISA-JKELUAR , KELUAR=KELUAR+JKELUAR WHERE KODE_TRANSAKSI=@ID;
SET JKELUAR=0;
END IF;
IF (@SISA<JKELUAR) THEN
UPDATE BARANGMASUK SET SISA=0,KELUAR=KELUAR+@SISA WHERE KODE_TRANSAKSI=@ID;
SET JKELUAR=JKELUAR-@SISA;
SET @ID=(SELECT KODE_TRANSAKSI FROM BARANGMASUK WHERE KODE_BRG=NEW.KODE_BRG AND TANGGAL=(SELECT TANGGAL FROM BARANGMASUK WHERE SISA>0 LIMIT 1) AND SISA>0 LIMIT 1);
SET @SISA=(SELECT SISA FROM BARANGMASUK WHERE KODE_TRANSAKSI=@ID);
END IF;
IF(@SISA=JKELUAR) THEN
UPDATE BARANGMASUK SET SISA=0,KELUAR=KELUAR+JKELUAR WHERE KODE_TRANSAKSI=@ID;
END IF;
UNTIL JKELUAR=0
END REPEAT;
END;
$$
DELIMITER ;

ISIKAN DATA PADA TABEL BARANGMASUK
Code:
INSERT INTO `barangmasuk` VALUES (1, '2014-01-01', '01', 5, 0, 5);
INSERT INTO `barangmasuk` VALUES (2, '2014-01-02', '01', 12, 0, 12);
INSERT INTO `barangmasuk` VALUES (3, '2014-01-05', '01', 13, 0, 13);


IMPEMENTASI MASUKAN DATA PADA TABLE BARANGKELUAR
Code:
INSERT INTO BARANGKELUAR VALUES('','14/1/9','01',20);

CARA HITUNG HARGA ADALAH DARI BARANG MASUK YAITU KELUAR * HARGA.
Code:
SELECT KODE_BRG,HARGA,KELUAR,HARGA*KELUAR FROM BARANGMASUK;


itu gan masalah nya jika data nya banyak sudah pasti lambat karena di baca dari tanggal yang terkecil hingga terbesar, kira2 agan punya refrensi yang beda gak ya dari itu atau yang lebih simple, terimakasih atas bantuan agan yang telah menolong sayang
nona212
nona212 memberi reputasi
1
3.9K
12
GuestAvatar border
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Mari bergabung, dapatkan informasi dan teman baru!
Programmer Forum
Programmer Forum
icon
20.2KThread4.2KAnggota
Terlama
GuestAvatar border
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Ikuti KASKUS di
© 2023 KASKUS, PT Darta Media Indonesia. All rights reserved.