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.