Dosen Pengampu: Bayutama Isnaini, S.Si., M.Si.
Disusun oleh: Kelompok G
| Nama | NIM |
|---|---|
| Amanda Satya Hapsari | 21108062610009 |
| Cindwi Fidah Qutrratu’ain | 21108062610021 |
| Damar Fadhal Athaya Putera | 21108062610023 |
| Dika Faturrohman | 21108062610028 |
| Faiz Ayesha Ceyda Emira | 21108062610032 |
Program ini bertujuan untuk menilai kelayakan pembelian rumah bagi 10 karyawan yang bekerja di PT Abadi Jaya berdasarkan kemampuan membayar cicilan dan kecukupan tabungan. Hasil penilaian digunakan untuk menentukan apakah pengajuan pembelian rumah diterima atau ditolak.
PT Abadi Jaya memiliki 10 karyawan yang mengajukan pembelian salah satu dari tiga jenis rumah, yaitu Rumah A, Rumah B, atau Rumah C. Data yang digunakan meliputi nomor karyawan, nama, gaji, bonus 5% untuk tiap karyawan, pilihan rumah, dan jumlah tabungan.
Berdasarkan data tersebut, program menghitung total gaji setelah bonus, uang muka untuk tiap jenis rumah, tabungan minimal, cicilan per periode, status pengajuan, dan total pembayaran.
karyawan <- data.frame(
No = 1:10,
Nama = c(
"Damar", "Dika", "Dudung", "Adit", "Fahri",
"Atika", "Zahra", "Serly", "Sarah", "Santi"
),
Gaji = c(
12000000, 8500000, 13500000, 10000000, 11000000,
9000000, 13000000, 9500000, 12000000, 13500000
),
Produk = c(
"Rumah A", "Rumah C", "Rumah B", "Rumah B",
"Rumah A", "Rumah C", "Rumah A", "Rumah B",
"Rumah C", "Rumah A"
),
Tabungan = c(
70000000, 50000000, 80000000, 90000000, 85000000,
100000000, 60000000, 85000000, 110000000, 45000000
)
)
knitr::kable(
karyawan,
caption = "Data Awal Karyawan PT Abadi Jaya",
format.args = list(big.mark = ".", decimal.mark = ",")
)
| No | Nama | Gaji | Produk | Tabungan |
|---|---|---|---|---|
| 1 | Damar | 12.000.000 | Rumah A | 70.000.000 |
| 2 | Dika | 8.500.000 | Rumah C | 50.000.000 |
| 3 | Dudung | 13.500.000 | Rumah B | 80.000.000 |
| 4 | Adit | 10.000.000 | Rumah B | 90.000.000 |
| 5 | Fahri | 11.000.000 | Rumah A | 85.000.000 |
| 6 | Atika | 9.000.000 | Rumah C | 100.000.000 |
| 7 | Zahra | 13.000.000 | Rumah A | 60.000.000 |
| 8 | Serly | 9.500.000 | Rumah B | 85.000.000 |
| 9 | Sarah | 12.000.000 | Rumah C | 110.000.000 |
| 10 | Santi | 13.500.000 | Rumah A | 45.000.000 |
Penentuan kelayakan pembelian rumah ditentukan sebagai berikut.
| Komponen | Ketentuan |
|---|---|
| Bonus | 5% dari gaji |
| Total gaji | Gaji ditambah bonus |
| Batas kemampuan cicilan | 30% dari total gaji |
| Uang muka | 7% dari harga rumah |
| Tabungan minimal | Dua kali uang muka |
| Bunga | 10% |
| Periode cicilan | 36 periode |
Harga setiap jenis rumah ditetapkan sebagai berikut.
| Jenis Rumah | Harga |
|---|---|
| Rumah A | Rp500.000.000 |
| Rumah B | Rp650.000.000 |
| Rumah C | Rp750.000.000 |
bonus <- 0.05
batas_cicilan <- 0.30
persen_dp <- 0.07
bunga <- 0.10
periode <- 36
harga_A <- 500000000
harga_B <- 650000000
harga_C <- 750000000
Konstanta digunakan apabila terdapat perubahan persentase bonus, batas cicilan, uang muka, atau harga rumah, nilai tersebut dapat diubah tanpa perlu mengganti angka pada setiap bagian perhitungan. Sehingga program dapat dikelola dengan terpusat.
Program menggunakan dua konsep utama, yaitu variabel dan percabangan.
1. Variabel digunakan untuk menyimpan data dan hasil
perhitungan, misalnya bonus, harga_rumah, dan
karyawan$DP.
2. Percabangan menggunakan struktur if,
else if, dan else untuk memilih harga rumah
berdasarkan produk yang diajukan serta menentukan status kelayakan
karyawan.
Bonus dihitung menggunakan rumus:
\[ \text{Bonus} = \text{Gaji} \times 5\% \]
Total gaji setelah bonus dihitung dengan:
\[ \text{Total Gaji} = \text{Gaji} + \text{Bonus} \]
Uang muka dihitung berdasarkan harga rumah:
\[ \text{DP} = \text{Harga Rumah} \times 7\% \]
Tabungan minimal ditentukan sebesar dua kali uang muka:
\[ \text{Tabungan Minimal} = 2 \times \text{DP} \]
Cicilan per periode mengikuti rumus yang ditetapkan dalam kasus:
\[ \text{Cicilan} = \frac{\text{Harga Rumah} \times 10\%}{36} \]
Batas kemampuan membayar cicilan dihitung dengan:
\[ \text{Batas Cicilan} = \text{Total Gaji} \times 30\% \]
Pengajuan ditolak apabila cicilan melebihi batas kemampuan membayar. Jika cicilan memenuhi batas, program memeriksa kecukupan tabungan. Pengajuan diterima apabila kedua syarat tersebut terpenuhi.
Bonus setiap karyawan dihitung sebesar 5% dari gaji. Nilai bonus kemudian ditambahkan pada gaji awal untuk memperoleh total gaji setelah bonus.
karyawan$Bonus <- karyawan$Gaji * bonus
karyawan$Total_Gaji <- karyawan$Gaji + karyawan$Bonus
karyawan$Harga_Rumah <- 0
karyawan$DP <- 0
karyawan$Tabungan_Minimal <- 0
karyawan$Status <- ""
karyawan$Cicilan <- 0
karyawan$Total_Bayar <- 0
Program menentukan harga rumah berdasarkan produk yang dipilih setiap karyawan menggunakan percabangan if, else if, dan else. Selanjutnya, program menghitung DP sebesar 7% dari harga rumah, tabungan minimal sebesar dua kali DP, serta cicilan berdasarkan bunga 10% dan periode 36 kali.
Pemeriksaan dilakukan secara berurutan:
Kode 5.3 Langkah 3 dan 5.4 Langkah 4 digabung dalam satu code chunk berikut.
# Menentukan harga rumah berdasarkan produk
karyawan$Harga_Rumah <- ifelse(
karyawan$Produk == "Rumah A", harga_A,
ifelse(
karyawan$Produk == "Rumah B", harga_B,
ifelse(karyawan$Produk == "Rumah C", harga_C, NA)
)
)
# Menghitung uang muka
karyawan$DP <- karyawan$Harga_Rumah * persen_dp
# Menghitung tabungan minimal
karyawan$Tabungan_Minimal <- 2 * karyawan$DP
# Menghitung cicilan per periode
karyawan$Cicilan <- (karyawan$Harga_Rumah * bunga) / periode
# Menghitung batas kemampuan membayar cicilan
karyawan$Batas_Kemampuan <-
karyawan$Total_Gaji * batas_cicilan
# Menentukan status kelayakan
karyawan$Status <- ifelse(
is.na(karyawan$Harga_Rumah),
"Produk tidak dikenali",
ifelse(
karyawan$Cicilan > karyawan$Batas_Kemampuan,
"Ditolak, cicilan terlalu besar",
ifelse(
karyawan$Tabungan < karyawan$Tabungan_Minimal,
"Ditolak, tabungan kurang",
"Diterima"
)
)
)
# Menghitung total pembayaran hanya untuk pengajuan yang diterima
karyawan$Total_Bayar <- ifelse(
karyawan$Status == "Diterima",
karyawan$DP + (karyawan$Cicilan * periode),
0
)
# Menampilkan hasil
karyawan
## No Nama Gaji Produk Tabungan Bonus Total_Gaji Harga_Rumah DP
## 1 1 Damar 12000000 Rumah A 70000000 600000 12600000 500000000 35000000
## 2 2 Dika 8500000 Rumah C 50000000 425000 8925000 750000000 52500000
## 3 3 Dudung 13500000 Rumah B 80000000 675000 14175000 650000000 45500000
## 4 4 Adit 10000000 Rumah B 90000000 500000 10500000 650000000 45500000
## 5 5 Fahri 11000000 Rumah A 85000000 550000 11550000 500000000 35000000
## 6 6 Atika 9000000 Rumah C 100000000 450000 9450000 750000000 52500000
## 7 7 Zahra 13000000 Rumah A 60000000 650000 13650000 500000000 35000000
## 8 8 Serly 9500000 Rumah B 85000000 475000 9975000 650000000 45500000
## 9 9 Sarah 12000000 Rumah C 110000000 600000 12600000 750000000 52500000
## 10 10 Santi 13500000 Rumah A 45000000 675000 14175000 500000000 35000000
## Tabungan_Minimal Status Cicilan Total_Bayar
## 1 70000000 Diterima 1388889 85000000
## 2 105000000 Ditolak, tabungan kurang 2083333 0
## 3 91000000 Ditolak, tabungan kurang 1805556 0
## 4 91000000 Ditolak, tabungan kurang 1805556 0
## 5 70000000 Diterima 1388889 85000000
## 6 105000000 Ditolak, tabungan kurang 2083333 0
## 7 70000000 Ditolak, tabungan kurang 1388889 0
## 8 91000000 Ditolak, tabungan kurang 1805556 0
## 9 105000000 Diterima 2083333 127500000
## 10 70000000 Ditolak, tabungan kurang 1388889 0
## Batas_Kemampuan
## 1 3780000
## 2 2677500
## 3 4252500
## 4 3150000
## 5 3465000
## 6 2835000
## 7 4095000
## 8 2992500
## 9 3780000
## 10 4252500
Setelah seluruh pengajuan cicilan karyawan diproses, program menampilkan tabel yang memuat data awal dan hasil penilaian kelayakan pengajuan cicilan pembelian rumah.
hasil_tampil <- karyawan
hasil_tampil[] <- lapply(hasil_tampil, function(x) {
if (is.numeric(x)) {
format(
x,
scientific = FALSE,
big.mark = ".",
decimal.mark = ",",
trim = TRUE,
nsmall = 0
)
} else {
x
}
})
knitr::kable(
hasil_tampil,
caption = "Hasil Penilaian Kelayakan Pembelian Rumah"
)
| No | Nama | Gaji | Produk | Tabungan | Bonus | Total_Gaji | Harga_Rumah | DP | Tabungan_Minimal | Status | Cicilan | Total_Bayar | Batas_Kemampuan |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Damar | 12.000.000 | Rumah A | 70.000.000 | 600.000 | 12.600.000 | 500.000.000 | 35.000.000 | 70.000.000 | Diterima | 1.388.889 | 85.000.000 | 3.780.000 |
| 2 | Dika | 8.500.000 | Rumah C | 50.000.000 | 425.000 | 8.925.000 | 750.000.000 | 52.500.000 | 105.000.000 | Ditolak, tabungan kurang | 2.083.333 | 0 | 2.677.500 |
| 3 | Dudung | 13.500.000 | Rumah B | 80.000.000 | 675.000 | 14.175.000 | 650.000.000 | 45.500.000 | 91.000.000 | Ditolak, tabungan kurang | 1.805.556 | 0 | 4.252.500 |
| 4 | Adit | 10.000.000 | Rumah B | 90.000.000 | 500.000 | 10.500.000 | 650.000.000 | 45.500.000 | 91.000.000 | Ditolak, tabungan kurang | 1.805.556 | 0 | 3.150.000 |
| 5 | Fahri | 11.000.000 | Rumah A | 85.000.000 | 550.000 | 11.550.000 | 500.000.000 | 35.000.000 | 70.000.000 | Diterima | 1.388.889 | 85.000.000 | 3.465.000 |
| 6 | Atika | 9.000.000 | Rumah C | 100.000.000 | 450.000 | 9.450.000 | 750.000.000 | 52.500.000 | 105.000.000 | Ditolak, tabungan kurang | 2.083.333 | 0 | 2.835.000 |
| 7 | Zahra | 13.000.000 | Rumah A | 60.000.000 | 650.000 | 13.650.000 | 500.000.000 | 35.000.000 | 70.000.000 | Ditolak, tabungan kurang | 1.388.889 | 0 | 4.095.000 |
| 8 | Serly | 9.500.000 | Rumah B | 85.000.000 | 475.000 | 9.975.000 | 650.000.000 | 45.500.000 | 91.000.000 | Ditolak, tabungan kurang | 1.805.556 | 0 | 2.992.500 |
| 9 | Sarah | 12.000.000 | Rumah C | 110.000.000 | 600.000 | 12.600.000 | 750.000.000 | 52.500.000 | 105.000.000 | Diterima | 2.083.333 | 127.500.000 | 3.780.000 |
| 10 | Santi | 13.500.000 | Rumah A | 45.000.000 | 675.000 | 14.175.000 | 500.000.000 | 35.000.000 | 70.000.000 | Ditolak, tabungan kurang | 1.388.889 | 0 | 4.252.500 |
Tabel hasil memuat informasi mengenai nomor karyawan, gaji, bonus, total gaji, pilihan rumah, harga rumah, tabungan, uang muka, tabungan minimal, status pengajuan, cicilan, dan total pembayaran.
Penentuan status dilakukan dengan memeriksa kemampuan membayar cicilan terlebih dahulu. Oleh karena itu, apabila cicilan melebihi batas kemampuan, alasan penolakan yang dicatat adalah cicilan terlalu besar, meskipun tabungan karyawan juga tidak mencukupi.
Apabila cicilan memenuhi batas kemampuan tetapi tabungan kurang dari tabungan minimal, pengajuan ditolak karena tabungan kurang. Sebaliknya, apabila kedua syarat terpenuhi, pengajuan dinyatakan diterima dan nilai cicilan serta total pembayaran dicatat.
Kolom Cicilan dan Total_Bayar yang bernilai
“0” pada pengajuan yang ditolak bukan berarti
karyawan tidak memiliki kewajiban pembayaran. Nilai tersebut
hanya menunjukkan bahwa pembayaran tidak dicatat sebagai pengajuan yang
diterima.
library(openxlsx)
write.xlsx(
karyawan,
file = "data.xlsx",
overwrite = TRUE
)
Program penilaian kelayakan pembelian rumah bagi karyawan PT Abadi Jaya menggunakan perhitungan bonus, total gaji setelah bonus, uang muka, tabungan minimal, dan cicilan per periode. Proses penilaian dilakukan menggunakan percabangan if, else if, dan else.
Pengajuan dinyatakan diterima apabila cicilan tidak melebihi 30% dari total gaji setelah bonus dan tabungan mencukupi sekurang-kurangnya dua kali uang muka. Jika salah satu syarat tidak terpenuhi, pengajuan ditolak berdasarkan syarat yang pertama kali gagal.