Anda di halaman 1dari 8

Membuat Form Transaksi Penjualan Sederhana

1. Buat table baru untuk transaksi penjualan dan detail transaksi penjualan. Tabel baru bisa
berupa satu table transaksi ataupun dua table (transaksi dan detail transaksi)
2. Buatlah ERD dengan Ms Accees yang berupa : table master + table transaksi , sesuai
dengan Sistem Informasi yang sudah dibuat sebelumnya

3. Buatlah form Transaksi sebagai berikut


Komponen tambahan yang digunakan :
1. Timer (untuk mengambil waktu/jam)
2. DataGridView
4. Pada DataGridView , tambahkan kolom dengan cara : klik panah kecil dikanan atas pada
DGV , kemudian Add Column . Akan muncul tampilan sebagai berikut :
- Kemudian , isikan nama kolom yang diinginkan sesuai pada Header text
5. Kemudian kita mulai tuliskan codingnya sebagai berikut :
5.1 Kode Faktur  Membuat kode faktur secara otomatis berdasarkan tanggal transaksi
Sub Nomorfakturotomatis()
Call koneksiDB()
CMD = New OleDb.OleDbCommand("Select * from Penjualan where No_faktur in
(select max(No_faktur) from Penjualan)", Conn)
Dim urutankode As String
Dim hitung As Long
DM = CMD.ExecuteReader
DM.Read()

If Not DM.HasRows Then


urutankode = "J" + Format(Now, "yyMMdd") + "001"
'huruf "J" diatas yang dimaksud adalah transaksi penjualan , huruf bisa
diganti sesuai dengan keinginan
Else
hitung = Microsoft.VisualBasic.Right(DM.GetString(0), 9) + 1
urutankode = "J" + Format(Now, "yyMMdd") +
Microsoft.VisualBasic.Right("000" & hitung, 3)
'Koding ini maksudnya , setelah huruf J , akan ditambahkan tanggal , tahun
, dan bulan dengan format yyMMdd dan 000
'misalnya J181221001
End If
txtkodestruk.Text = urutankode
End Sub
5.2 Kode Member  membuat coding pada kode member seperti membuat fungsi cari
berdasarkan Primary Key yang pernah dicoba dibeberapa pertemuan sebelumnya
- Ketika text pada Kode Member diubah , maka akan muncul fungsi cari. Coding bisa dicopy
paste dari pertemuan sebelumnya.
Private Sub TextBox10_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles txtkodemember.TextChanged
Try
Call koneksiDB()
CMD = New OleDb.OleDbCommand(" select * from Karyawan where id_karyawan ='"
& txtkodemember.Text & "'", Conn)
DM = CMD.ExecuteReader
'Disini saya menggunakan tabel karyawan , karena saya tidak memiliki tabel
member

If DM.HasRows = True Then


DM.Read()

txtkodemember.Text = DM.Item("id_karyawan")
txtnamamember.Text = DM.Item("nama_karyawan")
txtalamatmember.Text = DM.Item("alamat")
txttelpmember.Text = DM.Item("no_telp")
txtkodebuku.Focus()
End If
Catch ex As Exception
MsgBox("Data member tidak ada")
End Try

End Sub

5.3 Membuat fungsi bersihkan form seperti yang ada dipertemuan sebelumnya.
5.4 Menyetting kondisi awal untuk tanggal transaksi , jam transaksi dan nama kasir
Sub kondisiawal()
txttgltransaksi.Text = Today
txtjamtransaksi.Text = TimeOfDay
txtnamakasir.Text = Login.txtuser.Text

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles Timer1.Tick
txtjamtransaksi.Text = TimeOfDay
End Sub

- Tanggal transaksi : tanggal hari ini


- Jam transaksi : Timer1 (TimeOfDay)
- Nama Kasir : diambil dari Form Login.txtuser.Text
5.5 Kode Barang : hampir sama dengan fungsi pada Kode Member , dibuat fungsi cari pada
Kode Barang. Bedanya disini digunakan metode KeyPress , bukan text changed.
Private Sub TextBox11_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtkodebuku.KeyPress
If e.KeyChar = Chr(13) Then
'Chr(13) itu Tombol ENTER
Call koneksiDB()
CMD = New OleDb.OleDbCommand("Select * from Buku where Kode_buku ='" &
txtkodebuku.Text & "'", Conn)
DM = CMD.ExecuteReader
DM.Read()
If Not DM.HasRows Then
MsgBox("Kode Barang Tidak Ada")
Else
txtkodebuku.Text = DM.Item("Kode_buku")
txtnamabuku.Text = DM.Item("Nama_buku")
txthargabuku.Text = DM.Item("Harga")
txtjumlah.Enabled = True
txtjumlah.Focus()
'coding txtjumlah.Focus maksudnya ketika tombol Enter dipencet ,
maka kursor keyboard akan langsung mengarah ke txtjumlah

End If

End If

End Sub

5.6 Jumlah : pada txtjumlah disini saya coding sekalian sebagai fungsi
insert/tambah/masukkan data ke DataGridView1.
- Bisa juga jika kalian tambahkan tombol Insert , sebagai ganti txtjumlah dengan Key Press
Private Sub txtjumlah_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtjumlah.KeyPress
If e.KeyChar = Chr(13) Then
If txtnamabuku.Text = "" Or txthargabuku.Text = "" Then
MsgBox("Masukkan Kode Kode Barang dan tekan enter ")
Else
DataGridView1.Rows.Add(New String() {txtkodebuku.Text,
txtnamabuku.Text, txthargabuku.Text, txtjumlah.Text, Val(txthargabuku.Text) *
Val(txtjumlah.Text)})
Call RumusGrandTotal()
Call kosongkanitem()
txtkodebuku.Focus()
Call carijumlahitem()

End If

End If

End Sub
Ataupun jika kalian beri tombol Insert , tuliskan coding berikut :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
If txtnamabuku.Text = "" Or txthargabuku.Text = "" Then
MsgBox("Masukkan Kode Kode Barang dan tekan enter ")
End If
DataGridView1.Rows.Add(New String() {txtkodebuku.Text, txtnamabuku.Text,
txthargabuku.Text, txtjumlah.Text, Val(txthargabuku.Text) * Val(txtjumlah.Text)})
Call RumusGrandTotal()
Call kosongkanitem()
txtkodebuku.Focus()
Call carijumlahitem()

End Sub

5.7 Untuk menghitung Grand Total


Sub RumusGrandTotal()
Dim hitung As Integer = 0
For i As Integer = 0 To DataGridView1.Rows.Count - 1
hitung = hitung + DataGridView1.Rows(i).Cells(4).Value
txtgrandtotal.Text = hitung
Next
End Sub

5.8 Bayar : Ketika Bayar di isi dan di tekan ENTER , maka akan muncul fungsi hitung
kembalian.
Private Sub txtbayar_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtbayar.KeyPress
If e.KeyChar = Chr(13) Then
If Val(txtbayar.Text) < Val(txtgrandtotal.Text) Then
MsgBox("Uang Pembayaran Kurang")
ElseIf Val(txtbayar.Text) = Val(txtgrandtotal.Text) Then
txtkembalian.Text = 0
ElseIf Val(txtbayar.Text) > Val(txtgrandtotal.Text) Then
txtkembalian.Text = Val(txtbayar.Text) - Val(txtgrandtotal.Text)
btnsimpan.Focus()

End If
End If
End Sub

5.9 Items : Untuk menghitung Jumlah Items yang dibeli


Sub carijumlahitem()
Dim hitungitem As Integer = 0
For i As Integer = 0 To DataGridView1.Rows.Count - 1
hitungitem = hitungitem + DataGridView1.Rows(i).Cells(3).Value
txtitems.Text = hitungitem

Next
End Sub

5.10 Ketika Form di load


Private Sub TransaksiPenjualan_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Call kondisiawal()
Call Nomorfakturotomatis()

5.11 Simpan : data disimpan dalam dua table transaksi (table penjualan dan detail penjualan) ,
kemudian stok barang yang ada pada table barang akan dikurangi sesuai dengan jumlah barang
yang telah terjual.
Private Sub btnsimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnsimpan.Click
If txtkembalian.Text = "" Or txtgrandtotal.Text = "" Then
MsgBox("Data Transaksi Belum Lengkap")
'Pengecekan , apabila transaksi belum terjadi maka tidak bisa di ENTER
Else
Dim Simpantransaksi As String = "Insert into Penjualan values ('" &
txtkodestruk.Text & "' , '" & txttgltransaksi.Text & "' , '" & txtjamtransaksi.Text &
"', '" & txtnamakasir.Text & "', '" & txtkodemember.Text & "', '" & txtitems.Text &
"','" & txtbayar.Text & "','" & txtkembalian.Text & "', '" & txtgrandtotal.Text & "')"
CMD = New OleDb.OleDbCommand(Simpantransaksi, Conn)
CMD.ExecuteNonQuery()
'Data disimpan di tabel Penjualan

For baris As Integer = 0 To DataGridView1.Rows.Count - 2


Dim Simpandetail As String = "Insert into Detail_jual values ('" &
txtkodestruk.Text & "', '" & DataGridView1.Rows(baris).Cells(0).Value & "', '" &
DataGridView1.Rows(baris).Cells(1).Value & "', '" &
DataGridView1.Rows(baris).Cells(2).Value & "', '" &
DataGridView1.Rows(baris).Cells(3).Value & "', '" &
DataGridView1.Rows(baris).Cells(4).Value & "')"
CMD = New OleDb.OleDbCommand(Simpandetail, Conn)
CMD.ExecuteNonQuery()
'Data disimpan di tabel detail penjualan
' DataGridView1.Rows(baris).Cells(0).Value artinya data di cell pertama
, kedua , ketiga , keempat

CMD = New OleDb.OleDbCommand("select * from Buku where Kode_buku = '" &


DataGridView1.Rows(baris).Cells(0).Value & "'", Conn)
DM = CMD.ExecuteReader
DM.Read()
Dim kurangistok As String = "Update Buku set Stok = '" &
DM.Item("Stok") - DataGridView1.Rows(baris).Cells(3).Value & "' where Kode_buku = '" &
DataGridView1.Rows(baris).Cells(0).Value & "'"
CMD = New OleDb.OleDbCommand(kurangistok, Conn)
CMD.ExecuteNonQuery()
'Coding ini maksudnya , stok barang akan dikurangi sesuai dengan jumlah
barang yang sudah terjual
Next

MsgBox("Transaksi Telah Tersimpan")


Call kondisiawal()

End If
End Sub

Anda mungkin juga menyukai