Membuat Program Penjualan Visual Basic 4 : Membuat Form Transaksi
Selamat datang kembali di tutorial belajar VB. Pada kali ini kita akan belajar yang lebih sulit lagi yaitu membuat form transaksi yang merupakan inti dari program ini dibuat. Kalau yang namanya penjualan sudah pasti ada transaksi yang terjadi disitu. Pada tutorial yang ke 1 dulu kita sudah membuat sebanyak 7 Table dan yang akan kita bahas disini adalah semua table tersebut yang dijadikan satu di dalam form transaksi ini. Sudah siap? Bismillahirrohmanirrohim !
4. Membuat FORM TRANSAKSI
- Buat form baru lagi lalu isikan dengan isi dan properties dibawah ini:
NAME
|
CAPTION/TEXT
|
KETERANGAN
|
TAMBAHAN
|
|
Label1 | No Faktur | Label | ||
Label2 | Kode Pelanggan | Label | ||
Label3 | Nama Pelanggan | Label | ||
Label4 | Nomor Hp/Telpon | Label | ||
Label5 | Alamat | Label | ||
Label6 | ID User | Label | ||
Label7 | Kode Buku | Label | ||
Label8 | Nama Buku | Label | ||
Label9 | Stok Buku | Label | ||
Label10 | Harga Buku | Label | ||
Label11 | Biaya Pengiriman | Label | ||
Label12 | Jumlah beli | Label | ||
Label13 | Total Harga | Label | ||
Label14 | Total Bayar | Label | ||
Label15 | Uang bayar | Label | ||
Label16 | Uang Kembali | Label | ||
Label17 | Masukan Kode Buku | Label | ||
Label18 | Masukan Kode Pelanggan | Label | ||
txtnofak |
-
|
Textbox | ||
txtkdpel |
-
|
Textbox | ||
txtnmpel |
-
|
Textbox | ||
txttelpon |
-
|
Textbox | ||
txtalamat |
-
|
Textbox | ||
txtkasir |
-
|
Textbox | ||
txtkdbuku |
-
|
Textbox | ||
txtnmbuku |
-
|
Textbox | ||
txtstok |
-
|
Textbox | ||
txtharga |
-
|
Textbox | ||
txtkirim |
-
|
Textbox | ||
txtjumbel |
-
|
Textbox | ||
txttohar |
-
|
Textbox | ||
txttobay |
-
|
Textbox | ||
txtubar |
-
|
Textbox | ||
txtukem |
-
|
Textbox | ||
txtfindb |
-
|
Textbox | ||
txtfindp |
-
|
Textbox | ||
txtjam |
-
|
Textbox | ||
txttgl |
-
|
Textbox | ||
cmdfindp | Find Pelanggan | Command Button | ||
cmdfindb | Find Barang | Command Button | ||
Cmdadd | &add | Command Button | ||
Cmdclear | &clear | Command Button | ||
Cmdsave | &save | Command Button | ||
Cmdexit | &exit | Command Button | ||
Cmdlagi | lagi | Command Button | ||
Cmdselesai | selesai | Command Button | ||
Optdalam | Dalam kota | Command Button | ||
Optluar | Luar kota | Command Button | ||
Opttidak | Tidak dikirim | Command Button | ||
Timer1 |
-
|
Timer | Interval : 10 | |
Dbgrid1 |
-
|
Dbgrid | Data source: data6 | |
Dbgrid2 |
-
|
Dbgrid | Data source: data2 | |
Dbgrid3 |
-
|
Dbgrid | Data source: data1 | |
Data1 | Data | |||
Data2 | Data | |||
Data3 | Data | |||
Data4 | Data | |||
Data5 | Data | |||
Data6 | Data | |||
Data7 | Data | |||
FTransaksi | Transaksi | Form | ||
Frame1 | Biaya Pengiriman Buku | Frame | ||
Frame2 | Buku | Frame | Visible: False | |
Frame3 | Pelanggan | Frame | Visible: False | |
Frame4 |
-
|
Frame | ||
Frame5 |
-
|
Frame | ||
CR |
-
|
Crystal Report | Jika Punya CR |
Private Sub Form_Activate() Call nonaktif Call kosong TXTKASIR.Text = Menuutama.txtuser.Text End Sub Private Sub Form_Load() Data1.DatabaseName = App.Path & "/buku.mdb" Data1.RecordSource = "select * from Table_buku order by Kode_buku" Data2.DatabaseName = App.Path & "/buku.mdb" Data2.RecordSource = "select * from Table_pelanggan" Data3.DatabaseName = App.Path & "/buku.mdb" Data3.RecordSource = "select * from Table_transaksi" Data4.DatabaseName = App.Path & "/buku.mdb" Data4.RecordSource = "select * from Table_detail" Data5.DatabaseName = App.Path & "/buku.mdb" Data5.RecordSource = "select * from Table_user" Data6.DatabaseName = App.Path & "/buku.mdb" Data6.RecordSource = "select * from Table_bantu" Data7.DatabaseName = App.Path & "/buku.mdb" Data7.RecordSource = "select * from Table_bayar" End Sub Private Sub CMDADD_Click() Call Auto Call aktif CMDFINDP.Enabled = True CMDADD.Enabled = False CMDEXIT.Enabled = False End Sub Private Sub CMDCLEAR_Click() Call kosong Call hapus_grid Call nonaktif CMDADD.Enabled = True CMDEXIT.Enabled = True End Sub Private Sub CMDEXIT_Click() Unload Me Menuutama.Show End Sub Sub aktif() CMDCLEAR.Enabled = True CMDSAVE.Enabled = False End Sub Sub nonaktif() CMDFINDB.Enabled = False CMDFINDP.Enabled = False TXTKASIR.Enabled = False TXTNOFAK.Enabled = False TXTKDPEL.Enabled = False TXTNMPEL.Enabled = False TXTTELPON.Enabled = False TXTALAMAT.Enabled = False TXTKDBUKU.Enabled = False TXTNMBUKU.Enabled = False TXTSTOK.Enabled = False TXTHARGA.Enabled = False TXTJUMBEL.Enabled = False TXTTOHAR.Enabled = False TXTTOBAY.Enabled = False TXTUBAR.Enabled = False TXTUKEM.Enabled = False TXTKIRIM.Enabled = False OPTDALAM.Enabled = False OPTLUAR.Enabled = False OPTTIDAK.Enabled = False CMDCLEAR.Enabled = False CMDSAVE.Enabled = False CMDLAGI.Enabled = False CMDSELESAI.Enabled = False End Sub Sub kosong() TXTNOFAK.Text = "" TXTKDPEL.Text = "" TXTNMPEL.Text = "" TXTALAMAT.Text = "" TXTTELPON.Text = "" TXTKDBUKU.Text = "" TXTNMBUKU.Text = "" TXTSTOK.Text = "" TXTHARGA.Text = "" TXTJUMBEL.Text = "" TXTTOHAR.Text = "" TXTUBAR.Text = "" TXTUKEM.Text = "" TXTTOBAY.Text = "" TXTKIRIM.Text = "" OPTDALAM.Value = False OPTLUAR.Value = False OPTTIDAK.Value = False End Sub Private Sub CMDFINDB_Click() Frame2.Visible = True TXTFINDB.SetFocus End Sub Private Sub CMDFINDP_Click() Frame3.Visible = True TXTFINDP.SetFocus End Sub 'VISIBLE digunakan sebagai pilihan apakah suatu objek akan ditampilkan atau disembunyikan. 'Jika VISIBLE = TRUE maka objek akan ditampilkan. 'Jika VISIBLE = FALSE maka objek akan disembunyikan. Private Sub TXTFINDB_Change() Data1.RecordSource = "SELECT*FROM Table_buku WHERE Kode_buku LIKE’*" & TXTFINDB.Text & "*’" DBGrid3.Refresh Data1.Refresh If Data1.Recordset.EOF Then MsgBox "DATA TIDAK ADA !" End If End Sub Private Sub TXTFINDB_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TXTKDBUKU.Text = Data1.Recordset!Kode_buku TXTNMBUKU.Text = Data1.Recordset!Judul_buku TXTSTOK.Text = Data1.Recordset!Stok_buku TXTHARGA.Text = Data1.Recordset!Harga_buku Frame2.Visible = False TXTJUMBEL.Enabled = True TXTJUMBEL.SetFocus TXTFINDB.Text = "" CMDFINDB.Enabled = False End If End Sub Private Sub TXTFINDP_Change() Data2.RecordSource = "SELECT*FROM Table_pelanggan WHERE Kode_pelanggan LIKE’*" & TXTFINDP.Text & "*’" DBGrid2.Refresh Data2.Refresh If Data2.Recordset.EOF Then MsgBox "DATA TIDAK ADA !" End If End Sub Private Sub TXTFINDP_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TXTKDPEL.Text = Data2.Recordset!Kode_pelanggan TXTNMPEL.Text = Data2.Recordset!Nama_Pelanggan TXTTELPON.Text = Data2.Recordset!Telp_pelanggan TXTALAMAT.Text = Data2.Recordset!Almt_pelanggan Frame3.Visible = False CMDFINDB.Enabled = True CMDFINDP.Enabled = False TXTFINDP.Text = "" End If End Sub Private Sub CMDLAGI_Click() CMDFINDB.Enabled = True CMDSELESAI.Enabled = False CMDLAGI.Enabled = False TXTJUMBEL.Text = "" End Sub Private Sub CMDSELESAI_Click() OPTDALAM.Enabled = True OPTLUAR.Enabled = True OPTTIDAK.Enabled = True If Data6.Recordset.RecordCount = 0 Then Data6.Recordset.AddNew Data6.Recordset!Nofak = TXTNOFAK.Text Data6.Recordset!Kode_buku = TXTKDBUKU.Text Data6.Recordset!Jumlah_beli = TXTJUMBEL.Text Data6.Recordset!Total_harga = Val(TXTTOHAR.Text) Data6.Recordset.Update Data6.Refresh DBGrid1.Refresh TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTTOHAR.Text) End If CMDLAGI.Enabled = False CMDSELESAI.Enabled = False TXTJUMBEL.Enabled = False End Sub 'Maksud dari If Data6.Recordset.RecordCount = 0 Then dst… yang ada pada CmdSelesai ini adalah jika isi dari field data6 (Table_bantu) masih kosong maka terjadi penyimpanan data dan isi data txttobay adalah txttobay yang lama ditambah dengan txttohar. Private Sub OPTDALAM_Click() If OPTDALAM.Value = True Then TXTKIRIM.Text = 5000 TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTKIRIM.Text) TXTUBAR.Enabled = True TXTUBAR.SetFocus OPTLUAR.Enabled = False OPTTIDAK.Enabled = False TXTUBAR.SetFocus End If End Sub Private Sub OPTLUAR_Click() If OPTLUAR.Value = True Then TXTKIRIM.Text = 10000 TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTKIRIM.Text) TXTUBAR.Enabled = True TXTUBAR.SetFocus OPTDALAM.Enabled = False OPTTIDAK.Enabled = False TXTUBAR.SetFocus End If End Sub Private Sub OPTTIDAK_Click() If OPTTIDAK.Value = True Then TXTKIRIM.Text = 0 TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTKIRIM.Text) TXTUBAR.Enabled = True TXTUBAR.SetFocus OPTLUAR.Enabled = False OPTDALAM.Enabled = False TXTUBAR.SetFocus End If End Sub 'Maksud dari VALUE pada Option Button adalah: 'Jika VALUE = TRUE berarti Option Button tersebut dipilih. 'Jika VALUE = FALSE berarti Option Button tersebut tidak dipilih. 'Keterangan dari data biaya pengirimannya adalah: 'Jika yang dipilih adalah OptDalam (dalam kota) maka biaya kirimnya adalah 5000 'Jika yang dipilih adalah OptLuar(luar kota) maka biaya kirimnya adalah 10000 'Jika yang dipilih adalah OptTidak (tidak dikirim) maka biaya kirimnya adalah 0 'Total bayar berisi penjumlahan dari Total bayar yang lama ditambah biaya kirim tersebut. Private Sub TXTJUMBEL_Change() TXTTOHAR.Text = Val(TXTJUMBEL.Text) * Val(TXTHARGA.Text) End Sub Private Sub TXTJUMBEL_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If Val(TXTJUMBEL.Text) > Val(TXTSTOK.Text) Then MsgBox "stok terbatas" Else Data6.Recordset.AddNew Data6.Recordset!No_faktur = TXTNOFAK.Text Data6.Recordset!Kode_buku = TXTKDBUKU.Text Data6.Recordset!Jumlah_beli = Val(TXTJUMBEL.Text) Data6.Recordset!Total_harga = Val(TXTTOHAR.Text) Data6.Recordset.Update Data6.Refresh DBGrid1.Refresh TXTTOBAY.Text = Val(TXTTOBAY.Text) + Val(TXTTOHAR.Text) TXTJUMBEL.Text = "" TXTTOHAR.Text = "" CMDFINDB.Enabled = False CMDLAGI.Enabled = True CMDSELESAI.Enabled = True TXTKDBUKU.Text = "" TXTNMBUKU.Text = "" TXTSTOK.Text = "" TXTHARGA.Text = "" TXTJUMBEL.Enabled = False End If End If End Sub 'Perhatikan bahwa TxtJumbel (jumlah beli) disitu ada 2 bagian yaitu CHANGE dan KEYPRESS. 'CHANGE: Pada txtjumbel ketika ditulis suatu data maka secara langsung akan terjadi perkalian antara txtjumbel dan txtharga dan hasilnya akan ditaruh di txttohar (total harga). 'KEYPRESS: Pada txtjumbel ketika ditekan Enter maka akan terjadi perhitungan data stok, Jika angka yang dimasukan pada txtjumbel lebih besar daripada angka yang ada di txtstok maka akan muncul pesan bahwa Stok terbatas. Tapi jika lebih kecil maka akan terjadi proses penyimpanan data. Private Sub TXTUBAR_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If Val(TXTUBAR.Text) < Val(TXTTOBAY.Text) Then MsgBox "uang bayar kurang" Else TXTUKEM.Text = Val(TXTUBAR.Text) – Val(TXTTOBAY.Text) CMDSAVE.Enabled = True CMDSAVE.SetFocus End If End If End Sub 'Pada txtubar apabila ditekan Enter maka akan terjadi perhitungan data sebagai berikut: 'Jika angka yang dimasukan pada txtubar (uang bayar) lebih kecil dari angka yang ada di txttobay (total bayar) maka akan muncul pesan bahwa uang bayar kurang. 'Tapi jika lebih besar maka terjadi pengurangan antara txtubar dikurangi dengan txttobay yang hasilnya diletakkan pada txtukem (uang kembali). Private Sub Timer1_Timer() TXTTGL.Text = Date TXTJAM.Text = Time End Sub Listing ini digunakan untuk memunculkan tanggal dan waktu terjadinya transaksi (hari itu juga) Txttgl berisi Tanggal terjadinya transaksi. 'txtjam berisi Jam terjadinya transaksi. 'Diperlukan Tool TIMER dan jangan lupa untuk merubah INTERVAL nya pada properties. Sub hapus_grid() If Data6.Recordset.RecordCount <= 0 Then Exit Sub End If Data6.Recordset.MoveFirst Do While Not Data6.Recordset.EOF Data6.Recordset.Delete Data6.Recordset.MoveNext Loop End Sub Sub hapus_bayar() If Data7.Recordset.RecordCount <= 0 Then Exit Sub End If Data7.Recordset.MoveFirst Do While Not Data7.Recordset.EOF Data7.Recordset.Delete Data7.Recordset.MoveNext Loop End Sub Private Sub CMDSAVE_Click() 'TABLE DETAIL DAN TABLE BANTU While Not Data6.Recordset.EOF Data4.Recordset.AddNew Data4.Recordset!No_faktur = Data6.Recordset!No_faktur Data4.Recordset!Kode_buku = Data6.Recordset!Kode_buku Data4.Recordset!Jumlah_beli = Data6.Recordset!Jumlah_beli Data4.Recordset!Total_harga = Data6.Recordset!Total_harga ' PENGURANGAN STOK Data1.Recordset.MoveFirst Data1.Recordset.FindFirst "Kode_buku= ‘" & Data6.Recordset!Kode_buku & "’" If Not Data1.Recordset.NoMatch Then Data1.Recordset.Edit Data1.Recordset!Stok_buku = Val(Data1.Recordset!Stok_buku) – Val(Data6.Recordset!Jumlah_beli) Data1.Recordset.Update Data1.Refresh End If Data4.Recordset.Update Data6.Recordset.MoveNext N = N + 1 Wend Data4.Refresh Data6.Refresh ‘TABLE TRANSAKSI Data3.Recordset.AddNew Data3.Recordset!No_faktur = TXTNOFAK.Text Data3.Recordset!Tgl_faktur = TXTTGL.Text Data3.Recordset!Kode_pelanggan = TXTKDPEL.Text Data3.Recordset!Total_bayar = TXTTOBAY.Text Data3.Recordset!Id_user = TXTKASIR.Text Data3.Recordset!Biaya_kirim = TXTKIRIM.Text Data3.Recordset.Update Data3.Refresh ‘TABLE BAYAR Data7.Recordset.AddNew Data7.Recordset!No_faktur = TXTNOFAK.Text Data7.Recordset!Uang_bayar = TXTUBAR.Text Data7.Recordset!Uang_kembali = TXTUKEM.Text Data7.Recordset.Update Data7.Refresh 'MENCETAK FAKTUR 'CR.ReportFileName = App.Path & "\Faktur.rpt" 'CR.SelectionFormula = "({Table_detail.No_faktur}=’" & TXTNOFAK.Text & "’)" 'CR.WindowState = crptMaximized 'CR.RetrieveDataFiles 'CR.Action = 1 CMDADD.Enabled = True CMDSAVE.Enabled = False Call kosong Call nonaktif Call hapus_grid Call hapus_bayar CMDEXIT.Enabled = True End Sub 'Dalam Tombol Save ini terjadi Penyimpanan data pada beberapa Table yaitu: Table Detail (diambil dari Table Bantu), Table Transaksi (diambil dari form), dan Table Bayar (diambil dari form). 'Isi dari Table Detail didapat dari isi dari Table Bantu. Sedangkan isi Table Bantu itu sendiri didapat dari data yang dimasukan pada form transaksi ini. 'Pada Penyimpanan data ke dalam Table Detail terjadi perintah perulangan yaitu WHILE WEND karena data Table Bantu yang akan disimpan ke dalam Table Detail berjumlah banyak sehingga berulang ulang memasukannya. 'Contoh dari perulangan itu adalah apabila ada pelanggan yang membeli buku banyak yang berbeda beda pastinya semua itu hanya dicatat dalam 1 faktur atau 1 struk saja. Makanya disini terjadi pengulangan. Karena tidak mungkin setiap 1 pelanggan yang membeli buku yang banyak harus menggunakan banyak faktur juga. 'Didalam penyimpanan Table Detail diatas juga terjadi PENGURANGAN STOK. 'Maksud Listing Programnya adalah: 'FINDFIRST dipakai untuk mencari kode_buku yang ada pada data1 (Table_buku) yang sama dengan kode_buku yang ada pada data6 (Table_bantu). 'Dan jika data tersebut ditemukan maka stok_buku yang ada di data1 (Table_buku) akan dikurangi oleh Jumlah_beli yang ada di data6 (Table_bantu). 'Dan setelah data tersebut di Save, maka terjadi perintah untuk memanggil Sub Hapus_Grid dan Sub Hapus_bayar. 'Dengan adanya Sub Hapus_Grid tersebut, maka semua data yang ada di data6 (table_bantu) akan dikosongkan karena sudah disimpan pada data4 (table_detail). 'Dan dengan adanya Sub Hapus_Bayar tersebut, maka semua data yang ada di data7 (table_bayar) juga akan dikosongkan karena sudah dipakai dan ditampilkan di dalam Faktur. 'MENCETAK FAKTUR hanya dipakai jika anda mempunyai software pembuat laporan yang bernama CRYSTAL REPORT. Jika tidak punya, silahkan hapus rumusnya. Tapi jika anda punya, gunakan listing program tersebut dan hilangkan tanda petik di depan rumusnya. Untuk keterangan lebih lanjut baca Tutorial Membuat Laporan dengan Crystal Report. Private Sub Auto() Data3.RecordSource = "select * from Table_Transaksi Where No_faktur In(Select Max(No_faktur)From Table_Transaksi)Order By No_faktur Desc" Data3.Refresh Dim Urutan As String * 10 Dim Hitung As Long With Data3.Recordset If .EOF Then Urutan = Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2) + "0001" No_faktur = Urutan Else If Left(!No_faktur, 6) <> Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2) Then Urutan = Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2) + "0001" Else Hitung = (!No_faktur) + 1 Urutan = (Right(Date, 2) + Mid(Date, 4, 2) + Left(Date, 2)) + Right("0000" & Hitung, 4) End If End If TXTNOFAK.Text = Urutan End With End Sub
Sub AUTO ini digunakan untuk memunculkan nomor faktur secara otomatis.
Jumlah karakter dari nomor faktur ini adalah 10 digit angka yang terdiri dari: 2 angka pertama untuk Tahun faktur, 2 angka berikutnya untuk Bulan faktur, 2 angka berikutnya untuk Tanggal faktur dan 4 angka terakhir digunakan untuk Nomor faktur.
Contoh: jika ada Nomor Faktur yang bertuliskan 0806250099 maka
Tahun faktur tersebut adalah 08 (2008)
Bulan faktur tersebut adalah 06 (Juni)
Tanggal faktur tersebut adalah 25
Nomor faktur tersebut adalah 0099
PERHATIAN: untuk memakai nomor faktur otomatis ini, settingan waktu komputer anda harus berformat ”dd/mm/yy” (2 digit angka hari/bulan/tahun). Contoh: 30/12/09.
Jika belum dirubah, maka rubahlah format tanggal tersebut dari CONTROL PANEL lalu pilihlah REGIONAL AND LANGUAGE OPTIONS lalu tekan tombol CUSTOMIZE dan pilih DATE lalu rubahlah SHORT DATE FORMAT menjadi dd/mm/yy jika sudah tekan Oke.
CARA MEMAKAI FORM TRANSAKSI INI:
1. Klik Add, untuk memasukan data transaksi yang baru
2. Klik tombol find yang ada disamping kode pelanggan lalu masukan kode pelanggan pada kotak pencarian data kemudian tekan enter.
3. Klik tombol find yang ada disamping kode buku lalu masukan kode buku pada kotak pencarian data kemudian tekan enter.
4. Masukan jumlah beli, lalu tekan enter.
5. Klik tombol Lagi untuk membeli buku yang lainnya lagi.
6. Klik tombol Selesai bila semua buku yang diinginkan sudah selesai dimasukkan.
7. Pilih cara pengiriman buku yang telah disediakan.
8. Masukan uang bayar pada tempat yang disediakan.
9. Klik Save, untuk menyimpan data atau Klik Clear, untuk mengosongkan dan membatalkan data yang akan disimpan.
10. Klik Exit untuk keluar.
- Jangan lupa untuk mengganti Name dari form ini di properties menjadi ”Ftransaksi” dan menyimpannya dengan nama ”Transaksi.frm”.
Selesai Juga Dech Tutorialnya....
Terimakasih Atas Kunjungannya....
Semoga Ilmu Yang Sedikit Ini Bermanfaat....
Jangan Lupa Like Post Ini Ya.... Terimakasih....
0 komentar:
Posting Komentar