Total Tayangan Halaman

Kamis, 08 Desember 2011

Membuat Program Penjualan Visual Basic 4 : Membuat Form Transaksi


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
Adapun Listing Program dari Form Transaksi Ini Adalah :
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”.

Demikianlah pembahasan tentang program transaksi yang memang sangat panjang dan lebar. Tapi jika anda mengerti maka terasa tidak terlalu sulit untuk membuatnya. Selamat menikmati tutorial selanjutnya !

By: OPIX HOLMES
opix.holmes@yahoo.com
http://www.islamicunderground.com
vb-transaksi

Tidak ada komentar:

Posting Komentar