Last active
November 16, 2017 15:09
-
-
Save r17x/bfcd09e84294823d26889c5b5383d47c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import division # untuk mendapatkan hasil pembagian pecahan | |
import datetime as DATE | |
tahun = DATE.datetime.now().year #tahun sekarang | |
golongan = { | |
'I' : { | |
'3' : 2000000, | |
'310': 2500000, | |
'10' : 2700000 | |
}, | |
'II' : { | |
'3' : 2000000, | |
'310': 2500000, | |
'10' : 2700000 | |
}, | |
'III': { | |
'3' : 2000000, | |
'310': 2500000, | |
'10' : 2700000 | |
}, | |
} | |
karyawan = { | |
'nama' : None, | |
'nik' : None, | |
'jk' : 'L', | |
'kawin' : False, | |
'golongan' : 'I', | |
'pendidikan': 'SMA', | |
'jabatan' : 'A', | |
'jam' : 0, | |
'pinjaman' : 0, | |
'tahun' : tahun, | |
'gaji_pokok': 0, | |
't_pend' : 0, | |
't_jab' : 5, | |
't_anak' : 0, | |
't_istri' : 0, | |
'j_anak' : 0, | |
'l_jam' : 0, | |
'k_jam' : 0, | |
'transport' : 0, | |
'beras' : 0, | |
} | |
def persen(persen): | |
global karyawan | |
return (persen/100) * karyawan['gaji_pokok'] | |
def getGajiKotor(): | |
global karyawan | |
kotor = sum([persen(sum([ | |
karyawan['t_istri'], | |
karyawan['t_anak'], | |
karyawan['t_pend'], | |
karyawan['t_jab'], | |
])), karyawan['transport'], karyawan['beras']]) | |
karyawan['gaji_kotor'] = kotor | |
return kotor | |
def tunjanganKerja(): | |
# tunjangan di berikan jika PRIA | |
global karyawan | |
gaji = karyawan['gaji_pokok'] | |
print "Gaji Pokok Sebesar {g}\n".format(g=gaji) | |
if karyawan['jk'] == 'L' and karyawan['kawin']: | |
karyawan['t_anak'] = 5 * 2 if karyawan['j_anak'] > 1 else 5 | |
karyawan['t_istri'] = 10 | |
beras = 100000 | |
karyawan['beras'] = beras | |
print "Tunjangan Beras Rp {b}".format(b=beras) | |
print "Tunjangan Anak Sebesar {anak}%\nTunjangan Istri Sebesar {istri}%\n".format( | |
anak = karyawan['t_anak'], | |
istri = karyawan['t_istri'] | |
) | |
# tunjangan Pendidikan | |
pendidikan = karyawan['pendidikan'] | |
if pendidikan == 'SMA': | |
pendidikan = 5 | |
elif pendidikan == 'D3': | |
pendidikan = 7 | |
elif pendidikan == 'S1': | |
pendidikan = 10 | |
print "Tunjangan Pendidikan {t}%\n".format(t=pendidikan) | |
karyawan['t_pend'] = pendidikan | |
# tunjangan jabatan | |
jab = karyawan['jabatan'] | |
if jab == 'A': | |
jab = 5 | |
elif jab == 'B': | |
jab = 10 | |
elif jab == 'C': | |
jab = 15 | |
else: | |
jab = 0 | |
print "Tunjangan Jabartan {t}%\n".format(t=jab) | |
karyawan['t_jab'] = jab | |
transport = 500000 | |
karyawan['transport'] = transport | |
print "Tunjangan Transportasi {t}".format(t=transport) | |
if karyawan['l_jam'] > 0: | |
lembur = persen(1) * karyawan['l_jam'] | |
karyawan['gaji_lembur'] = lembur | |
print "Tambahan Gaji Lembur Rp {g} lebih {j} Jam dari 200 Jam Kerja".format(g=lembur, j=karyawan['l_jam']) | |
if karyawan['k_jam'] > 0: | |
potongan = persen(2) * karyawan['k_jam'] | |
karyawan['potongan_gaji'] = potongan | |
print "Potongan Gaji Rp {g} Kurang {j} Jam dari 200 Jam Kerja".format(g=potongan,j=karyawan['k_jam']) | |
koperasi = persen(5) | |
print "Potongan Simpanan Koperasi 5% Rp {g}".format(g=koperasi) | |
if karyawan['pinjaman'] > 0: | |
pinjaman = persen(10) | |
karyawan['p_pinjaman'] = pinjaman | |
print "Potongan Pinjaman Koperasi 10% Rp {g}\n".format(g=pinjaman) | |
kotor = getGajiKotor() | |
print "Gaji Kotor : Rp {g}\n".format(g=kotor) | |
bersih = 0 | |
if kotor in range(3000000, 4000000): | |
bersih = (2/100) * kotor | |
elif kotor in range(4000000, 5000000): | |
bersih = (4/100) * kotor | |
elif kotor > 5000000: | |
bersih = (7/100) * kotor | |
print "Gaji Bersih : Rp {g}\n".format(g=bersih) | |
#karyawan['gaji_bersih'] = getGajiBersih() | |
#fungsi mencari gaji pokok | |
def getGaji(): | |
global karyawan | |
global golongan | |
bekerja = tahun - karyawan['tahun'] | |
if bekerja <= 3: | |
bekera = '3' | |
elif bekerja > 3 and bekerja < 10: | |
bekerja='310' | |
else: | |
bekerja='10' | |
gaji = golongan[karyawan['golongan']][bekerja] | |
karyawan['gaji_pokok'] = gaji | |
#fungsi inputan data karyawan | |
def setKaryawan(): | |
global karyawan | |
karyawan['nama'] = raw_input('Nama :') | |
karyawan['nik'] = raw_input('Nik :') | |
kelamin = raw_input('Jenis Kelamin [L/P] :').upper() | |
kawin = raw_input('Status Perkawinan : [y/n]').upper() | |
goloongan = raw_input('Golongan [I/II/III] :').upper() | |
pendidikan = raw_input('Pendidikan [SMA/D3/S1] :').upper() | |
jabatan = raw_input('Jabatan [A/B/C] :').upper() | |
tahun = input('Tahun Bekerja [2001] :') | |
karyawan['kawin'] = True if kawin == 'Y' else False | |
if kelamin == 'L' and karyawan['kawin'] : | |
karyawan['j_anak'] = input('Jumlah Anak [0 jika tidak ada] :') | |
karyawan['tahun'] = tahun if isinstance(tahun, int) else karyawan['tahun'] | |
jam = input('Jumlah Jam Kerja : ') | |
karyawan['jam'] = jam | |
karyawan['k_jam'] = 200 - jam if 200 - jam > 0 else 0 | |
karyawan['l_jam'] = jam - 200 if jam - 200 > 0 else 0 | |
karyawan['pinjaman'] = input('Jumlah Pinjaman : ') | |
karyawan['jk'] = kelamin if kelamin in ['L','P'] else 'L' | |
karyawan['jabatan'] = jabatan if jabatan in ['A','B','C'] else 'A' | |
karyawan['golongan'] = goloongan if goloongan in ['I','II','III'] else 'I' | |
karyawan['pendidikan'] = pendidikan if pendidikan in ['SMA','D3','S1'] else 'SMA' | |
setKaryawan() | |
getGaji() | |
tunjanganKerja() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment