2021-01-07 11:34:56 +07:00

86 lines
5.0 KiB
SQL

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;