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

1. Tujuan

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.

2. Deskripsi Kasus

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.

2.1 Memasukkan Data Karyawan

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 = ",")
)
Data Awal Karyawan PT Abadi Jaya
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

3. Aturan dan Ketentuan

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

3.1 Mendefinisikan Konstanta

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.

4. Konsep Dasar Pemrograman

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.

4.1 Rumus Perhitungan

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.

5. Penyelesaian

5.1 Langkah 1: Menghitung Bonus dan Total Gaji

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

5.2 Langkah 2: Menyiapkan Kolom Hasil

karyawan$Harga_Rumah <- 0
karyawan$DP <- 0
karyawan$Tabungan_Minimal <- 0
karyawan$Status <- ""
karyawan$Cicilan <- 0
karyawan$Total_Bayar <- 0

5.3 Langkah 3: Menentukan Harga Rumah dan Menghitung Kebutuhan

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.

5.4 Langkah 4: Menentukan Status Kelayakan

Pemeriksaan dilakukan secara berurutan:

  1. Jika cicilan melebihi 30% dari total gaji, pengajuan ditolak karena cicilan terlalu besar.
  2. Jika cicilan memenuhi batas tetapi tabungan kurang dari tabungan minimal, pengajuan ditolak karena tabungan kurang.
  3. Jika kedua syarat terpenuhi, pengajuan diterima dan total pembayaran dicatat.

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

6. Hasil dan Pembahasan

Setelah seluruh pengajuan cicilan karyawan diproses, program menampilkan tabel yang memuat data awal dan hasil penilaian kelayakan pengajuan cicilan pembelian rumah.

6.1 Tabel Hasil Penilaian

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"
)
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

6.2 Pembahasan Hasil

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.

7. Ekspor Hasil ke Excel

library(openxlsx)
write.xlsx(
  karyawan,
  file = "data.xlsx",
  overwrite = TRUE
)

8. Kesimpulan

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.