create view komponen_gaji_v as // Gaji Pokok select gj.id ID, p.nip_pns NIP, p.objectdetailkategorypegawaifk KategoriPegawai, p.namalengkap NamaLengkap, gp.golonganpegawai Golongan, pdk.Pendidikan Pendidikan, date_part('year', now()) - date_part('year', p.tglmasuk) MasaKerja, kh.id IdKomponenGaji, kh.komponenharga KomponenGaji, gjmkp.hargasatuan Harga from pegawaiskgaji_m gj left join pegawai_m p on gj.objectpegawaifk = p.id left join golonganpegawai_m gp on p.ObjectGolonganPegawaiFk = gp.id left join pendidikan_m pdk on p.objectpendidikanterakhirfk = pdk.id left join komponenharga_m kh on gj.objectkomponenhargafk = kh.id left join pegawaistrukturgajibymakape_m gjmkp on gjmkp.kdkomponenhargafk = gj.objectkomponenhargafk where kh.komponenharga = 'Gaji Pokok' and gjmkp.kdpendidikanfk = p.objectpendidikanterakhirfk and gjmkp.kddetailkategorypegawaifk = p.objectdetailkategorypegawaifk // kategori pegawai (sample data invalid->returned row 0) and gjmkp.kdrangemasakerjafk =( select r.id from range_m r where r.namarange = 'Range Masa Kerja' and date_part('year', now()) - date_part('year', p.tglmasuk) between r.rangemin and r.rangemax) union // Tunjangan Fungsional select distinct(gj.id) ID, p.nip_pns NIP, p.objectdetailkategorypegawaifk KategoriPegawai, p.namalengkap NamaLengkap, gp.golonganpegawai Golongan, pdk.Pendidikan Pedidikan, date_part('year', now()) - date_part('year', p.tglmasuk) MasaKerja, kh.id IdKomponenGaji, kh.komponenharga KomponenGaji, gjjp.hargasatuan Harga from pegawaiskgaji_m as gj left join pegawai_m p on gj.objectpegawaifk = p.id left join golonganpegawai_m gp on p.ObjectGolonganFk = gp.id left join pendidikan_m pdk on p.objectpendidikanterakhirfk = pdk.id left join komponenharga_m kh on gj.objectkomponenhargafk = kh.id left join pegawaistrukturgajibyjape_m gjjp on gjjp.kdkomponenhargafk = gj.objectkomponenhargafk where kh.komponenharga = 'Tunjangan Fungsional' and gjjp.kdpendidikan = p.objectpendidikanterakhirfk and gjjp.kdjabatanfk = p.objectjabatanfungsionalfk union // Tunjangan Bahaya Radiasi select distinct(gj.id) ID, p.nip_pns NIP, p.objectdetailkategorypegawaifk KategoriPegawai, p.namalengkap, gp.golonganpegawai Golongan, pdk.Pendidikan, date_part('year', now()) - date_part('year', p.tglmasuk) MasaKerja, kh.id IdKomponenGaji, kh.komponenharga KomponenGaji, gjlj.hargasatuan as Harga from pegawaiskgaji_m gj left join pegawai_m p on gj.objectpegawaifk = p.id left join golonganpegawai_m gp on p.ObjectGolonganFk = gp.id left join pendidikan_m pdk on p.objectpendidikanterakhirfk = pdk.id left join komponenharga_m kh on gj.objectkomponenhargafk = kh.id left join pegawaistrukturgajibyltja_m gjlj on gjlj.kdkomponenhargafk = gj.objectkomponenhargafk where kh.komponenharga = 'Tunjangan Bahaya Radiasi' and gjlj.kdjabatanfk = p.objectjabatanInternalfk and gjlj.kdleveltingkatfk = p.leveltingkatfk; // Gaji kotor create view komponen_gaji_bruto_v as select vg.id, vg.nip, vg.kategoripegawai, vg.namalengkap, vg.golongan, vg.pendidikan, vg.masakerja, kh.id IdKomponenGaji, kh.komponenharga KomponenGaji, ( select sum(vbs.harga) from komponen_gaji_v vbs where vg.nip = vbs.nip group by vbs.nip) harga from komponen_gaji_v vg, komponenharga_m kh where kh.id = 78; // Pajak create view komponen_pajak_v as select p.id ID, p.nip_pns NIP, p.objectdetailkategorypegawaifk KategoriPegawai, p.namalengkap NamaLengkap, gp.golonganpegawai Golongan, pdk.Pendidikan, date_part('year', now()) - date_part('year', p.tglmasuk) MasaKerja, 62 IdKomponenGaji, 'Persen Pajak' KomponenGaji, pj.persenpajak Harga from pegawaiskpajak_m pj left join pegawai_m p on pj.objectgolonganpegawaifk = p.objectgolonganpegawaifk left join golonganpegawai_m gp on p.objectgolonganpegawaifk = gp.id left join pendidikan_m pdk on p.objectpendidikanterakhirfk = pdk.id left join komponenharga_m kh on pj.objectobjekpajakfk = kh.id; // Tunjangan pajak create view komponen_tunjangan_pajak_v as select g.id, g.nip, g.kategoripegawai, g.namalengkap, g.golongan, g.pendidikan, g.masakerja, 62 IdKomponenGaji, 'Tunjangan Pajak' KomponenGaji, ( select vp.harga / 100 * gb.harga from komponen_pajak_v vp, komponen_gaji_bruto_v gb where vp.nip = gb.nip and g.nip = vp.nip) as harga from komponen_gaji_v g; // Potongan pajak create view komponen_potongan_pajak_v as select g.id, g.nip, g.kategoripegawai, g.namalengkap, g.golongan, g.pendidikan, g.masakerja, 66 IdKomponenGaji, 'Potongan Pajak' KomponenGaji, ( select vp.harga / 100 * gb.harga from komponen_pajak_v vp, komponen_gaji_bruto_v gb where vp.nip = gb.nip and g.nip = vp.nip) as harga from komponen_gaji_v g; // gaji bersih create view komponen_gaji_bersih_v as select g.id, g.nip, g.kategoripegawai, g.namalengkap, g.golongan, g.pendidikan, g.masakerja, 0 IdKomponenGaji, 'Gaji Bersih' KomponenGaji, gb.harga - vpp.harga harga from komponen_gaji_v g, komponen_gaji_bruto_v gb, komponen_potongan_pajak_v vpp where g.nip = gb.nip and gb.nip = vpp.nip; create view summary_gaji_v as select * from komponen_gaji_v union select * from komponen_gaji_bruto_v union select * from komponen_tunjangan_pajak_v union select * from komponen_potongan_pajak_v union select * from komponen_gaji_bersih_v;