Salman Manoe d62735d472 Update domain
clean code
2025-03-11 14:20:45 +07:00

253 lines
5.2 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;