Hitung Receh dengan Delphi7

Suatu perusahaan biasanya memberi gaji secara tunai pada karyawannya, terutama untuk harian dan borongan. Tentu saja kadang dibutuhkan (dalam program penghitungan gaji) penentuan jumlah pecahan uang (RECEH) sesuai dengan jumlah yang harus diterima masing-masing orang.

Meskipun secara manual (tanpa program) sebenarnya bisa dilakukan, namun biasanya karena jumlah karyawan yang terlalu banyak menjadikan pekerjaan manual tersebut susah untuk dilakukan.

Secara teori proses penghitungannya seperti ini :
- Misalkan seorang menerima gaji sebesar Rp 859800, 00 maka dia akan menerima uang dengan pecahan :
  - 100.000 = 8 lbr
  - 50.000 = 1 lbr
  - 20.000 = 0 lbr
  - 10.000 = 0 lbr
  - 5.000   =  1 lbr
  - 1.000   = 4 lbr
  - 500      = 0 lbr
  - 100      = 3 lbr
Ilustrasi di atas disesuaikan dengan program yang akan saya tunjukkan, pecahan 2.000 dan 200 tidak saya masukkan, bisa Anda tambahkan sendiri (buat PR), hehe..

Program yang saya buat masih tergolong coding sangat sederhana dan mungkin terlalu panjang. Maklum saya bukan S.Kom dan lagi belajar programming. Mungkin bagi master2 programming khususnya delphi bakal nyindir nih, hehe...

Berikut contoh program penghitungan receh untuk gaji karyawan. Karena yang akan ditampilkan hanya coding penghitungan receh, maka sebagian data (yang tidak digunakan) saya tutup. Berikut screenshot nya :


Lalu ketika dimasukkan angka pada input text kanan bawah akan secara otomatis menghitung jumlah receh/pecahan uang yang akan diterima karyawan :


Berikut kode program yang saya gunakan :
- sebagai awalan, yang terjadi adalah saat input angka (properties name : etotal) berubah akan otomatis terhitung receh-nya.


procedure TFMain.etotalChange(Sender: TObject);
var
  total,satusewu,seketewu,rongpuluh,sepuluh,limangewu,rongewu,sewu,limangatus,rongatus,satus : real;
  satusewu1,seketewu1,rongpuluh1,sepuluh1,limangewu1,rongewu1,sewu1,limangatus1,rongatus1,satus1 : real;
  satusewu2,satusewu3,seketewu2,seketewu3 : real;
  sepuluh2,rongpuluh2 : real;
  limangewu2 : real;
  rongewu2 : real;
  sewu2 : real;
  jumlah : integer;
  limangatus2 : real;
  satus2 : real;
  koma1,koma2,koma3,koma4,koma5,koma6,koma7,koma8,koma9,koma10 : real;
  e11,e21,e31,e41,e51,e61,e71,e81,e91,e101 : integer;
begin
//satusewu
total     := strtofloat(etotal.Text);
satusewu  := total/100000;
koma1     := round(satusewu);
satusewu1 := total-(100000*koma1);
if satusewu1 < 0 then
begin
e1.Text   := floattostr(koma1-1);
seketewu  := satusewu1+100000;
end
  else
  begin
  e1.Text   := floattostr(koma1);
  seketewu  := satusewu1;
  end;

//seketewu
seketewu1   := seketewu/50000;
if seketewu1<1 then
begin
e2.Text     := '0';
rongpuluh   := seketewu;
end
  else
  begin
  e2.Text   := '1';
  rongpuluh := seketewu-50000;
  end;

//rongpuluhewu
rongpuluh1  := rongpuluh/20000;
koma2       := round(rongpuluh1);
rongpuluh2  := rongpuluh-(koma2*20000);
if rongpuluh2<0 then
begin
e3.Text := floattostr(koma2-1);
sepuluh := rongpuluh2+20000;
end
  else
  begin
  e3.Text := floattostr(koma2);
  sepuluh := rongpuluh2;
  end;

//sepuluhewu
sepuluh1  := sepuluh/10000;
koma4     := round(sepuluh1);
sepuluh2  := sepuluh-(koma4*10000);
if sepuluh2<0 then
begin
e4.Text   := floattostr(koma4-1);
limangewu := sepuluh2+10000;
end
  else
  begin
  e4.Text   := floattostr(koma4);
  limangewu := sepuluh2;
  end;

//limangewu
limangewu1  := limangewu/5000;
koma5       := round(limangewu1);
limangewu2  := limangewu-(5000*koma5);
if limangewu2<0 then
begin
e5.Text := floattostr(koma5-1);
sewu    := limangewu2+5000;
end
  else
  begin
  e5.Text := floattostr(koma5);
  sewu    := limangewu2;
  end;

//rongewu
{rongewu1 := rongewu/2000;
koma6 := round(rongewu1);
rongewu2 := rongewu - (2000*koma6);
if rongewu2<0 then
begin
e6.Text := floattostr(koma6-1);
sewu := rongewu2+2000;
end
  else
  begin
  e6.Text := floattostr(koma6);
  sewu := rongewu2;
  end;}

//sewu
sewu1 := sewu/1000;
koma7 := round(sewu1);
sewu2 := sewu - (1000*koma7);
if sewu2<0 then
begin
e7.Text     := floattostr(koma7-1);
limangatus  := sewu2+1000;
end
  else
  begin
  e7.Text     := floattostr(koma7);
  limangatus  := sewu2;
  end;

//limangatus
limangatus1 := limangatus/500;
koma8       := round(limangatus1);
limangatus2 := limangatus - (500*koma8);
if limangatus2<0 then
begin
e8.Text := floattostr(koma8-1);
satus   := limangatus2+500;
end
  else
  begin
  e8.Text := floattostr(koma8);
  satus   := limangatus2;
  end;

//satus
satus1  := satus/100;
koma9   := round(satus1);
satus2  := satus-(100*koma9);
if satus2<0 then
begin
e10.Text := floattostr(koma9-1);
end
  else
  begin
  e10.Text := floattostr(koma9);
  end;

//Menghitung jumlah pecahan uang untuk memastikan hasilnya benar dengan angka awal
e11     := (strtoint(e1.Text)*strtoint(l1.Caption));
e21     := (strtoint(e2.Text)*strtoint(l2.Caption));
e31     := (strtoint(e3.Text)*strtoint(l3.Caption));
e41     := (strtoint(e4.Text)*strtoint(l4.Caption));
e51     := (strtoint(e5.Text)*strtoint(l5.Caption));
e71     := (strtoint(e7.Text)*strtoint(l7.Caption));
e81     := (strtoint(e8.Text)*strtoint(l8.Caption));
e101    := (strtoint(e10.Text)*strtoint(l10.Caption));
jumlah  := e11+e21+e31+e41+e51+e71+e81+e101;
e9.Text := inttostr(jumlah);

end;

Lumayan panjang codingnya, namun menurutku tergolong sangat sederhana karena cuma menerapkan fungsi IF dan konversi tipe data saja.

NB : kalo bingung dengan istilah satusewu, seketewu, dll, itu hanya variabel saja, bisa diganti sesuai selera.

Semoga bermanfaat bagi saya (terutama) untuk menghindari hilangnya source code karena kerusakan laptop, hehe.

Ga mau ketinggalan Informasi Menarik Lainnya kan? Silakan Subscribe

0 Response to "Hitung Receh dengan Delphi7"

Post a Comment