a. Sistem operasi windows 7
b. Browser : Google Chrome
4.3 Tampilan Program dan Penjelasan
Pada Bagian ini akan dijelaskan jalannya program dan script yang dibutuhkan untuk menjalankan program tersebut.
4.3.1 Koneksi ke Database
Untuk dapat mengakses database pada server dibutuhkan suatu file koneksi. Pada program ini file koneksi menggunakan bahasa PHP, yang scriptnya
dapat dilihat pada gambar 4.1.
Name : Configures Database Name File :
inventaris\application\config\database.php
?php if definedBASEPATH exitNo direct script access allowed;
active_group = default; active_record = TRUE;
cONFIG CONNECT TO ORACLE tns = DESCRIPTION=
ADDRESS= PROTOCOL=TCP
HOST=localhost
PORT=1521
CONNECT_DATA= SERVER=dedicated
SERVICE_NAME=XE
;
db[default][hostname] = tns; db[default][username] = inventaris;
db[default][password] = 123456;
db[default][database] = ; db[default][dbdriver] = oci8;
db[default][dbprefix] = ; db[default][pconnect] = TRUE;
db[default][db_debug] = TRUE; db[default][cache_on] = FALSE;
db[default][cachedir] = ; db[default][char_set] = utf8;
db[default][dbcollat] = utf8_general_ci; db[default][swap_pre] = ;
db[default][autoinit] = TRUE; db[default][stricton] = FALSE;
Gambar 4.1. Koneksi ke Database
4.3.2 Implementasi Store Procedure
Berikut adalah listing program insert transaksi barang dipakai disajikan pada gambar 4.2, store procedure ini digunakan untuk memngurangi stok barang
dari nomor inventaris barang yang dimasukkan. Store procedure ini juga berguna
dalam menangani concurrency control, dengan menerapkan protokol 2PLtwo phase lokcing dengan memberi query FOR UPDATE. Locking berjalan ketika
nomor inventaris dipanggil, perintah FOR UPDATE berguna untuk mengunci quantity dari tabel transaksi barang agar tidak terbaca oleh user lain. Setelah
melakukan penguncian pada quantity, maka nomor inventaris yang telah ditunjuk akan dikurangi stoknya.
create or replace PACKAGE PACKAGE_BARANG_HABIS_PAKAI AS
TODO enter package declarations types, exceptions, methods etc here
PROCEDURE P_SIMPAN_BARANG_PAKAI pIdTransaksi IN VARCHAR2,
pNoInventaris IN VARCHAR2, pQuantity IN NUMBER,
pDeskripsi IN VARCHAR2, pUserUpdate IN VARCHAR2,
pUpdatedQuantity IN NUMBER, pStatus OUT NUMBER
; END PACKAGE_BARANG_HABIS_PAKAI;
create or replace PACKAGE BODY PACKAGE_BARANG_HABIS_PAKAI AS
Status Out 0 = Berhasil
1 = No inventaris Null Tidak ada 2 = Record Quantity sama dengan 0
3 = hasil pengurangan minus.
PROCEDURE P_SIMPAN_BARANG_PAKAI pIdTransaksi IN VARCHAR2,
pNoInventaris IN VARCHAR2, pQuantity IN NUMBER,
pDeskripsi IN VARCHAR2, pUserUpdate IN VARCHAR2,
pUpdatedQuantity IN NUMBER, pStatus OUT NUMBER
IS noInventaris TRANS_BARANG.NO_INVENTARIStype;
stockQuantity TRANS_BARANG.QUANTITYtype; updatedQuantity TRANS_BARANG.QUANTITYtype;
eInvalid1 EXCEPTION; eInvalid2 EXCEPTION;
eInvalid3 EXCEPTION; BEGIN
SELECT QUANTITY
INTO stockQuantity FROM TRANS_BARANG TB
WHERE TB.NO_INVENTARIS= pNoInventaris
FOR UPDATE; updatedQuantity := stockQuantity - pQuantity;
IF pNoInventaris IS NULL THEN RAISE eInvalid1;
ELSE IF stockQuantity = 0 THEN
RAISE eInvalid2; ELSE
IF updatedQuantity 0 THEN RAISE eInvalid3;
ELSE
-- Update Quantity Barang. UPDATE TRANS_BARANG
SET QUANTITY = updatedQuantity
WHERE NO_INVENTARIS = pNoInventaris;
-- Insert into Transaksi Barang Pakai. INSERT INTO TRANS_BARANG_DIPAKAI_DETAIL TBDD
VALUESpIdTransaksi,SYSDATE, pNoInventaris, pQuantity, pDeskripsi, pUserUpdate, SYSDATE;
pStatus := 0; COMMIT;
END IF; END IF;
END IF; EXCEPTION
WHEN eInvalid1 THEN pStatus := 1;
ROLLBACK; WHEN eInvalid2 THEN
pStatus := 2; ROLLBACK;
WHEN eInvalid3 THEN pStatus := 3;
ROLLBACK; END P_SIMPAN_BARANG_PAKAI;
END PACKAGE_BARANG_HABIS_PAKAI;
Gambar 4.2. Insert Transaksi Barang Dipakai
4.3.3 Halaman Login