Assalamu'alaikum Wr Wb
Selamat Datang di Web Sibukngoding.com. Pada kesempatan kali ini saya akan melanjutkan seri pembuatan Aplikasi Penjualan dengan VB.net dan database MariaDB. Pada pertemuan sebelumya telah saya jelaskan pembuatan transaksi penjualan yang saya bagi dalam 2 part yaitu form dan sourcecode. Untuk source code secara keseluruhan sebagai berikut:
Imports System.Data.Odbc
Public Class FormPenjualan
Sub bersihkanbarang()
TxtKodeBarang.Clear()
TxtNamaBarang.Clear()
TxtHarga.Text = "0"
TxtJumlah.Text = "0"
TxtSubTotal.Text = "0"
TxtKodeBarang.Focus()
End Sub
'--------------------------------------------
Sub Nootomatis()
Koneksi()
Dim Urutan As String
Dim Hitung, Cari As Long
CMD = New OdbcCommand("Select
* from penjualan where no_penjualan in (select max(no_penjualan) from
penjualan)", Conn)
RD = CMD.ExecuteReader
RD.Read()
If Not RD.HasRows Then
Urutan = "PJ"
& Date.Now.Year & "0001"
Else
Cari =
Microsoft.VisualBasic.Right(RD.GetString(0), 4)
If Microsoft.VisualBasic.Left(RD.GetString(0), 6)
<> "PJ" & Date.Now.Year Then
Urutan = "PJ"
& Date.Now.Year & "0001"
Else
Hitung =
Microsoft.VisualBasic.Right(RD.GetString(0), 4) + 1
Urutan = "PJ"
& Date.Now.Year & Microsoft.VisualBasic.Right("0000"
& Hitung, 4)
End If
End If
RD.Close()
TxtNoPenjualan.Text = Urutan
Conn.Close()
End Sub
'----------------------------------------------------------
Sub AutoNumberRowsForGrid()
If DGV IsNot Nothing Then
Dim count As Integer = 0
While (count <= (DGV.Rows.Count - 1))
DGV.Rows(count).HeaderCell.Value = String.Format((count + 1).ToString(), "0")
count += 1
End While
End If
End Sub
'------------------------------------------------------------
Sub BuatKolom()
With DGV
.Columns.Add("Kode_Barang", "Kode_Barang")
.Columns.Add("Nama_Barang", "Nama_Barang")
.Columns.Add("Harga", "Harga")
.Columns.Add("Jumlah", "Jumlah")
.Columns.Add("SubTotal", "SubTotal")
'---------------------------------------------
.Columns("Kode_Barang").Width = 80
.Columns("Nama_Barang").Width = 150
.Columns("Harga").Width
= 90
.Columns("Jumlah").Width
= 70
.Columns("SubTotal").Width
= 90
End With
End Sub
'-------------------------------------------------------------
Sub Autocompletebarang()
Koneksi()
CMD = New OdbcCommand("SELECT
kode_barang FROM barang", Conn)
RD = CMD.ExecuteReader
While RD.Read
With TxtKodeBarang
.AutoCompleteCustomSource.Add(RD(0).ToString)
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.CustomSource
End With
End While
Conn.Close()
End Sub
'------------------------------------------------------------
Sub Autocompletepelanggan()
Koneksi()
CMD = New OdbcCommand("SELECT
kode_pelanggan FROM pelanggan", Conn)
RD = CMD.ExecuteReader
While RD.Read
With TxtKodePelanggan
.AutoCompleteCustomSource.Add(RD(0).ToString)
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.CustomSource
End With
End While
Conn.Close()
End Sub
'----------------------------------------------
Sub awal()
Nootomatis()
TxtTanggal.Text = Format(Now, "dd MMMM yyyy")
TxtNoPenjualan.Enabled = False
TxtTanggal.Enabled = False
rbnonpelanggan.Checked = True
TxtKodePelanggan.Enabled = False
TxtNamaPelanggan.Enabled = False
TxtKodePelanggan.Text = "000"
TxtNamaPelanggan.Text = "-"
TxtNamaBarang.Enabled = False
TxtHarga.Enabled = False
TxtSubTotal.Enabled = False
txttotalbarang.Text = "0"
txttotalharga.Text = "0"
txttotalbayar.Text = "0"
txtdiskon.Text = "0"
txttotalbayar.Text = "0"
txtdibayar.Text = "0"
txtkembali.Text = "0"
txttotalbarang.Enabled = False
txttotalharga.Enabled = False
txttotalbayar.Enabled = False
txtkembali.Enabled = False
DGV.Rows.Clear()
bersihkanbarang()
End Sub
'---------------------------------------------------------
Private Sub FormPenjualan_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BuatKolom()
Autocompletebarang()
Autocompletepelanggan()
awal()
End Sub
'-------------------------------------------------------------------
Private Sub TxtKodeBarang_KeyDown(sender As Object, e As KeyEventArgs) Handles
TxtKodeBarang.KeyDown
If e.KeyCode = Keys.Enter Then
Koneksi()
CMD = New OdbcCommand("SELECT * FROM barang WHERE kode_barang =
'" + TxtKodeBarang.Text + "'",
Conn)
RD = CMD.ExecuteReader
If RD.Read Then
TxtKodeBarang.Text =
RD(0).ToString
TxtNamaBarang.Text =
RD(1).ToString
TxtHarga.Text = RD(4).ToString
Conn.Close()
TxtJumlah.Focus()
Else
MsgBox("Kode Barang Yang Anda Inputkan Salah")
TxtKodeBarang.Focus()
End If
End If
End Sub
'------------------------------------------------------------------------
Private Sub btplus_Click(sender As Object, e As EventArgs) Handles btplus.Click
If Len(Trim(TxtKodeBarang.Text)) = 0 Then
MsgBox("Kode Barang Belum Diisi", MsgBoxStyle.Information)
TxtKodeBarang.Focus()
ElseIf Len(Trim(TxtNamaBarang.Text)) = 0 Then
MsgBox("Data Belum Lengkap", MsgBoxStyle.Information)
TxtKodeBarang.Focus()
ElseIf Len(Trim(TxtHarga.Text)) = 0 Then
MsgBox("Data Belum Lengkap", MsgBoxStyle.Information)
TxtKodeBarang.Focus()
ElseIf (Len(Trim(TxtJumlah.Text)) = 0) Or
(TxtJumlah.Text = "0") Then
MsgBox("Jumlah Belum dimasukkan", MsgBoxStyle.Information)
TxtJumlah.Focus()
ElseIf Len(Trim(TxtSubTotal.Text)) = 0 Then
MsgBox("Data Belum Lengkap", MsgBoxStyle.Information)
TxtJumlah.Focus()
Else
Try
Dim rownumber As Integer = DGV.Rows.Add()
DGV.Rows.Item(rownumber).Cells(0).Value = TxtKodeBarang.Text
DGV.Rows.Item(rownumber).Cells(1).Value = TxtNamaBarang.Text
DGV.Rows.Item(rownumber).Cells(2).Value = TxtHarga.Text
DGV.Rows.Item(rownumber).Cells(3).Value
= TxtJumlah.Text
DGV.Rows.Item(rownumber).Cells(4).Value = TxtSubTotal.Text
'Hitung
Total Harga di datagrid
Dim totalharga, totalbarang As Integer
totalharga = 0
totalbarang = 0
For t As Integer = 0 To DGV.Rows.Count - 1
totalharga = totalharga +
Val(DGV.Rows(t).Cells(4).Value)
totalbarang = totalbarang +
Val(DGV.Rows(t).Cells(3).Value)
Next
txttotalharga.Text = totalharga
txttotalbarang.Text =
totalbarang
txttotalbayar.Text = totalharga
AutoNumberRowsForGrid()
bersihkanbarang()
Catch ex As Exception
MsgBox("Gagal !!!!", MsgBoxStyle.Information)
End Try
End If
End Sub
'----------------------------------------------------------------------
Private Sub btmin_Click(sender As Object, e As EventArgs) Handles btmin.Click
Try
If DGV.CurrentRow.Index <> DGV.NewRowIndex Then
DGV.Rows.RemoveAt(DGV.CurrentRow.Index)
'Hitung
Total Harga di datagrid
Dim totalharga, totalbarang As Integer
totalharga = 0
totalbarang = 0
For t As Integer = 0 To DGV.Rows.Count - 1
totalharga = totalharga +
Val(DGV.Rows(t).Cells(4).Value)
totalbarang = totalbarang +
Val(DGV.Rows(t).Cells(3).Value)
Next
txttotalharga.Text = totalharga
txttotalbarang.Text =
totalbarang
txttotalbayar.Text = totalharga
End If
Catch ex As Exception
MsgBox("Tidak Ada Data yang DiHapus", MsgBoxStyle.Information)
End Try
End Sub
'--------------------------------------------------------------------------
Private Sub TxtKodePelanggan_KeyDown(sender As Object, e As KeyEventArgs) Handles
TxtKodePelanggan.KeyDown
If e.KeyCode = Keys.Enter Then
Koneksi()
CMD = New OdbcCommand("SELECT
* FROM pelanggan WHERE kode_pelanggan = '" +
TxtKodePelanggan.Text + "'", Conn)
RD = CMD.ExecuteReader
If RD.Read Then
TxtKodePelanggan.Text =
RD(0).ToString
TxtNamaPelanggan.Text =
RD(1).ToString
End If
Conn.Close()
TxtKodeBarang.Focus()
End If
End Sub
'----------------------------------------------------------------------------
Private Sub TxtJumlah_KeyDown(sender As Object, e As KeyEventArgs) Handles
TxtJumlah.KeyDown
If e.KeyCode = Keys.Enter Then
'Rumus
Mencari Sub Total
TxtSubTotal.Text =
Val(TxtHarga.Text) * Val(TxtJumlah.Text)
btplus.Focus()
End If
End Sub
'-----------------------------------------------------------------------------------
Private Sub TxtJumlah_KeyPress(sender As Object, e As KeyPressEventArgs) Handles
TxtJumlah.KeyPress
'Agar
hanya angka yang bisa diinputkan
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And
e.KeyChar <> vbBack Then e.Handled = True
End Sub
'------------------------------------------------------------
Private Sub txtdiskon_KeyDown(sender As Object, e As KeyEventArgs) Handles
txtdiskon.KeyDown
If e.KeyCode = Keys.Enter Then
'Rumus
mencari total bayar setelah didiskon
txttotalbayar.Text =
Val(txttotalharga.Text) - ((Val(txtdiskon.Text) / 100) *
Val(txttotalharga.Text))
txtdibayar.Focus()
End If
End Sub
'-------------------------------------------------------------------------
Private Sub txtdiskon_KeyPress(sender As Object, e As KeyPressEventArgs) Handles
txtdiskon.KeyPress
'Agar
hanya angka yang bisa diinputkan
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And
e.KeyChar <> vbBack Then e.Handled = True
End Sub
'----------------------------------------------------------------------
Private Sub txtdibayar_KeyDown(sender As Object, e As KeyEventArgs) Handles
txtdibayar.KeyDown
If e.KeyCode = Keys.Enter Then
If (Len(Trim(txtdibayar.Text)) = 0) Or
(txtdibayar.Text = "0") Then
MsgBox("Data Belum Diisi...", MsgBoxStyle.Information)
txtdibayar.Focus()
ElseIf Val(txttotalbayar.Text) > Val(txtdibayar.Text) Then
MsgBox("Uang yang dimasukkan kurang.....", MsgBoxStyle.Information)
txtdibayar.Focus()
Else
'Rumus
mencari uang kembali
txtkembali.Text =
Val(txtdibayar.Text) - Val(txttotalbayar.Text)
btsimpan.Focus()
End If
End If
End Sub
'-------------------------------------------------------------------------
Private Sub txtdibayar_KeyPress(sender As Object, e As KeyPressEventArgs) Handles
txtdibayar.KeyPress
'Agar
hanya angka yang bisa diinputkan
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Chr(13) And
e.KeyChar <> vbBack Then e.Handled = True
End Sub
'-------------------------------------------------------------------------------
Private Sub rbpelanggan_CheckedChanged(sender As Object, e As EventArgs) Handles
rbpelanggan.CheckedChanged
TxtKodePelanggan.Enabled = True
TxtKodePelanggan.Clear()
TxtNamaPelanggan.Clear()
TxtKodePelanggan.Focus()
End Sub
'--------------------------------------------------------------------------------
Private Sub rbnonpelanggan_CheckedChanged(sender As Object, e As EventArgs) Handles
rbnonpelanggan.CheckedChanged
TxtKodePelanggan.Enabled = False
TxtKodePelanggan.Text = "000"
TxtNamaPelanggan.Text = "-"
TxtKodeBarang.Focus()
End Sub
'-----------------------------------------------------------------------------------
Private Sub btsimpan_Click(sender As Object, e As EventArgs) Handles
btsimpan.Click
Try
'validasi
jika data masih kosong
If Len(Trim(TxtKodePelanggan.Text)) = 0 Then
MsgBox("Data Pelanggan Belum diinputkan...", MsgBoxStyle.Information)
TxtKodePelanggan.Focus()
ElseIf (Len(Trim(txtdibayar.Text)) = 0) Or
(txtdibayar.Text = "0") Then
MsgBox("Transaksi belum dibayar...", MsgBoxStyle.Information)
txtdibayar.Focus()
Else
'simpan
data non pelanggan
Koneksi()
CMD = New OdbcCommand("SELECT kode_pelanggan FROM pelanggan WHERE
kode_pelanggan = '" +
TxtKodePelanggan.Text + "'", Conn)
RD = CMD.ExecuteReader
RD.Read()
If Not RD.HasRows Then
Koneksi()
CMD = New OdbcCommand("INSERT INTO pelanggan VALUES (?,?,?,?)", Conn)
With CMD
.Parameters.AddWithValue("?", TxtKodePelanggan.Text)
.Parameters.AddWithValue("?",
TxtNamaPelanggan.Text)
.Parameters.AddWithValue("?", "-")
.Parameters.AddWithValue("?", "-")
.ExecuteNonQuery()
End With
Conn.Close()
End If
'simpan
Data ke tabel penjualan
Koneksi()
CMD = New OdbcCommand("INSERT INTO penjualan VALUES (?,?,?,?,?)", Conn)
With CMD
.Parameters.AddWithValue("?",
TxtNoPenjualan.Text)
.Parameters.AddWithValue("?",
Format(Now.Date, "yyyy-MM-dd"))
.Parameters.AddWithValue("?",
TxtKodePelanggan.Text)
.Parameters.AddWithValue("?",
txttotalbarang.Text)
.Parameters.AddWithValue("?",
txttotalharga.Text)
.ExecuteNonQuery()
End With
Conn.Close()
'Simpan
Data ke tabel detail penjualan
Koneksi()
For i As Integer = 0 To DGV.Rows.Count - 1
CMD = New OdbcCommand("INSERT INTO detail_penjualan VALUES
(?,?,?,?,?)", Conn)
With CMD
.Parameters.AddWithValue("?",
TxtNoPenjualan.Text)
.Parameters.AddWithValue("?", DGV.Rows(i).Cells(0).Value)
.Parameters.AddWithValue("?", DGV.Rows(i).Cells(3).Value)
.Parameters.AddWithValue("?", DGV.Rows(i).Cells(2).Value)
.Parameters.AddWithValue("?", DGV.Rows(i).Cells(4).Value)
.ExecuteNonQuery()
End With
Next
awal()
MsgBox("Data Berhasil disimpan.....", MsgBoxStyle.Information, "Informasi")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
'-----------------------------------------------------------
Private Sub btkeluar_Click(sender As Object, e As EventArgs) Handles
btkeluar.Click
Me.Close()
End Sub
End Class
Untuk hasil setelah di run sebagai berikut
Untuk
tampilan awal, tanggal akan terisi otomatis sesuai tanggal transaksinya dan
nomor penjualan akan terisi otomatis. Kita bisa pilih apakah transaksi tersebut
untuk pelanggan atau non pelanggan dengan memilih radio buttonnya. Jika kita pilih pelanggan, maka kursor akan
aktif di kode pelanggan dan kita bisa memilih pelanggan dari daftar pelanggan.
Jika sudah
dipilih kode pelanggannya, selanjutnya dienter lalu nama pelanggan otomatis
akan terisi sesuai kode pelanggan yang diambil dari tabel pelanggan. Dan kursor akan aktif di kode barang dan kita pilih barang yang akan kita masukkan.
Setelah kode dimasukkan, kita enter setelah itu nama barang dan harga akan muncul dan kursor akan aktif di bagian jumlah. Dan kita isikan jumlah barangnya lalu dienter sampai muncul sub total.
Setelah kode dimasukkan, kita enter setelah itu nama barang dan harga akan muncul dan kursor akan aktif di bagian jumlah. Dan kita isikan jumlah barangnya lalu dienter sampai muncul sub total.
Setelah kita masukkan jumlah barangnya, kita klik tombol +(Plus) dan data barang akan masuk ke dalam datagridview. Kita bisa menambahkan data barang dengan cara diatas. Jika ingin menghapus barang yang ada di Datagridview, kita klik tombol -(Min).
Setelah kode dimasukkan, kita enter setelah itu nama barang dan harga akan muncul dan kursor akan aktif di bagian jumlah. Dan kita isikan jumlah barangnya lalu dienter sampai muncul sub total.
Setelah kode dimasukkan, kita enter setelah itu nama barang dan harga akan muncul dan kursor akan aktif di bagian jumlah. Dan kita isikan jumlah barangnya lalu dienter sampai muncul sub total.
Setelah kita masukkan jumlah barangnya, kita klik tombol +(Plus) dan data barang akan masuk ke dalam datagridview. Kita bisa menambahkan data barang dengan cara diatas. Jika ingin menghapus barang yang ada di Datagridview, kita klik tombol -(Min).
Setelah
selesai memasukkan barang, kursor akan otomatis ke txtdiskon. Kita bisa
memasukkan diskonnya jika ada dan dienter lalu kursor akan pindah ke
txtdibayar. Kita masukkan uang yang dibayarkan dan dienter
Setelah
itu di klik simpan dan data akan masuk ke dalam database. Dan tampilan akan
kembali ke awal sama saat program pertama kali dijalankan.
Demikian
contoh pembuatan Transaksi penjualan yang bisa saya sampaikan. Silahkan
dimodifikasi sesuai selera anda dan jika ada pertanyaan bisa ditanyakan
di komentar. Untuk cetak nota penjualan InsyaAllah akan saya post di postingan
berikutnya.
Terimakasih
atas kunjungannya, Selamat belajar dan jangan mudah menyerah.
Wassalamu’alaikum Wr Wb
Comments
Post a Comment
- Berkomentarlah dengan bijak, Komentar akan di moderasi dahulu sebelum ditampilkan.