• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI DAN ANALISA HASIL

4.1. Antar Muka Pengguna Sistem

4.1.3. Pengelolaan DPA-SKPD

4.1.3.2. Tambah Detail DPA-SKPD

Proses tambah Detail DPA-SKPD ini hanya dapat dilakukan untuk DPA-SKPD yang belum disahkan saja. Berikut ini merupakan form tambah Detail DPA-SKPD disajikan dalam gambar 4.4 berikut ini

Gambar 4.4 Form Tambah Detail DPA-SKPD

Stored procedure untuk proses tambah Detail DPA-SKPD adalah insertDetail_DPA_SKPD, listing insertDetail_DPA_SKPD disajikan pada listing 4.8 serta diperjelas pada tabel 3.53:

Listing 4.8 Stored procedure insertDetail_DPA_SKPD DELIMITER $$;

DROP PROCEDURE IF EXISTS `pendapatan`.`insertDetail_DPA_SKPD`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertDetail_DPA_SKPD`(

p_uraian varchar(100), p_keterangan varchar(100), p_volume double, p_satuan varchar(20),

p_no_urutDPA int, p_user int, out keluaran varchar(100)) BEGIN

declare p_harga_satuan_event int; declare p_harga_satuan_pertahun int;

declare prosentase1, prosentase2, prosentase3, prosentase4 double;

declare p_triwulan_I, p_triwulan_II, p_triwulan_III, p_triwulan_IV, p_total double;

declare tahun char(4);

declare tri_I, tri_II, tri_III, tri_IV, tot double; declare triwulan double;

declare p_kode_rekening int; declare th char(4);

declare EXIT HANDLER FOR NOT FOUND select 'proses gagal' into keluaran;

declare EXIT HANDLER FOR SQLEXCEPTION select 'proses gagal' into keluaran;

SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET AUTOCOMMIT=0;

START TRANSACTION;

select triwulan_I into triwulan from dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select th_anggaran into tahun from dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select triwulan_I into prosentase1 from prosentase_pendapatan where th_anggaran=tahun for update;

select triwulan_II into prosentase2 from prosentase_pendapatan where th_anggaran=tahun for update;

select triwulan_III into prosentase3 from prosentase_pendapatan where th_anggaran=tahun for update;

select triwulan_IV into prosentase4 from prosentase_pendapatan where th_anggaran=tahun for update;

set tri_I = (0+(p_volume*prosentase1)); set tri_II = (0+(p_volume*prosentase2)); set tri_III = (0+(p_volume*prosentase3)); set tri_IV = (0+(p_volume*prosentase4)); set tot = (0+p_volume);

select ((sum(volume)*prosentase1)+(p_volume*prosentase1)) into p_triwulan_I from detail_dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select ((sum(volume)*prosentase2)+(p_volume*prosentase2)) into p_triwulan_II from detail_dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select ((sum(volume)*prosentase3)+(p_volume*prosentase3)) into p_triwulan_III from detail_dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select ((sum(volume)*prosentase4)+(p_volume*prosentase4)) into p_triwulan_IV from detail_dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select (sum(volume)+p_volume) into p_total from detail_dpa_skpd where no_urutDPA=p_no_urutDPA for update;

set p_harga_satuan_event=p_volume;

set p_harga_satuan_pertahun = (p_volume/12);

select th_anggaran into th from dpa_skpd where no_urutDPA=p_no_urutDPA for update;

select no_urut_rekening into p_kode_rekening from rekening where uraian=p_uraian and th_anggaran=th for update;

IF NOT EXISTS (select pengesahan from dpa_skpd where no_urutDPA=p_no_urutDPA and pengesahan=1)

THEN

IF NOT EXISTS (select uraian,no_urutDPA from detail_dpa_skpd where uraian=p_keterangan and no_urutDPA=p_no_urutDPA

FOR UPDATE) THEN

IF(p_satuan='event')

THEN

insert into detail_dpa_skpd(no_urut_rekening, uraian, volume, satuan, harga_satuan, no_urutDPA, no_pengunjung, hapus)

values(p_kode_rekening, p_keterangan, p_volume, p_satuan, p_harga_satuan_event, p_no_urutDPA, p_user, '-');

ELSE

insert into detail_dpa_skpd(no_urut_rekening, uraian, volume, satuan, harga_satuan, no_urutDPA, no_pengunjung, hapus)

values(p_kode_rekening, p_keterangan, p_volume,

p_satuan, p_harga_satuan_pertahun, p_no_urutDPA, p_user,'-'); END IF; IF(triwulan=0) THEN update dpa_skpd

set triwulan_I= tri_I, triwulan_II=tri_II , triwulan_III= tri_III, triwulan_IV= tri_IV,

total=tot

where no_urutDPA=p_no_urutDPA;

ELSE

update dpa_skpd

set triwulan_I= p_triwulan_I, triwulan_II= p_triwulan_II, triwulan_III= p_triwulan_III,triwulan_IV= p_triwulan_IV,total= p_total where no_urutDPA=p_no_urutDPA; END IF; COMMIT;

select "Data berhasil dimasukkan" into keluaran; ELSE

select "Data sudah ada dalam tabel" into keluaran; ROLLBACK;

END IF; ELSE

select "DPA-SKPD telah disahkan" into keluaran; END IF; SET AUTOCOMMIT=1; END$$ DELIMITER ;$$

Stored procedure diatas menjelaskan proses tambah Detail DPA-SKPD yang menggunakan transaksi management, dimana masukkannya adalah rekening, uraian, volume, satuan, no_urutDPA dan user dimana user diperoleh saat proses login dan parameter keluarannya berupa konfirmasi. Proses tambah Detail DPA-SKPD ini akan masuk ke tabel detail_dpa_skpd, pertama user memilih DPA-SKPD yang akan ditambah dan no_urutDPA tersebut akan disimpan, setelah itu user hanya diminta untuk memasukkan

rekening, uraian, volume dan satuan. Nilai no_urut_detail_dpa_skpd pada tabel detail_dpa_skpd akan terisi dengan sendiri karena auto increment, user memilih rekening dimana yang dimasukkan adalah uraian rekening dari tabel rekening tapi yang dimasukkan pada tabel detail_dpa_skpd adalah no_urut_rekening dari tabel rekening. Satuan hanya ada 2 pilihan yaitu event dan pertahun. Setelah memasukkan data maka dilakukan pencarian nilai dari triwulan_I dan th_anggaran sesuai dengan no_urutDPA, selain itu mencari prosentase pendapatan pada tahun yang bersangkutan. Selain itu juga dilakukan pengecekan apakah DPA-SKPD yang akan ditambahkan sudah disahkan atau belum jika sudah maka akan muncul konfirmasi “DPA-SKPD telah disahkan”, pengecakan juga dilakukan untuk uraian dan no_urutDPA tidak boleh ada yang sama, jika sama maka akan muncul konfirmasi “Data sudah ada dalam tabel”. Tetapi jika DPA-SKPD yang akan ditambah belum disahkan dan data tidak sama maka data akan dimasukkan ke tabel detail_dpa_skpd, dilakukan pengecekan lagi apakah satuannya event atau pertahun, jika satuan event maka harga_satuannya sama dengan volume tetapi jika pertahun maka harga_satuannya adalah volume/12. Selain itu juga akan mengupdate tabel dpa_skpd untuk triwulan_I, triwulan_II, triwulan_III, triwulan_IV, total.

Dokumen terkait