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 sebelumnya telah saya jelaskan pembuatan transaksi pembelian yang saya bagi dalam 2 part yaitu form dan sourcecode. Untuk source code secara keseluruhan sebagai berikut :
Imports
System.Data.Odbc
'--------------------------------------------
Sub
bersihkanbarang()
txtkodebarang.Clear()
txtnamabarang.Clear()
txthargabeli.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 tb_pembelian where no_faktur in (select max(no_faktur) from
tb_pembelian)", Conn)
RD =
CMD.ExecuteReader
RD.Read()
If Not RD.HasRows Then
Urutan = "NJ" & Date.Now.Year
& "0001"
Else
Cari =
Microsoft.VisualBasic.Right(RD.GetString(0), 4)
If Microsoft.VisualBasic.Left(RD.GetString(0), 6)
<> "NJ" & Date.Now.Year Then
Urutan
= "NJ" & Date.Now.Year & "0001"
Else
Hitung
= Microsoft.VisualBasic.Right(RD.GetString(0), 4) + 1
Urutan
= "NJ" & Date.Now.Year & Microsoft.VisualBasic.Right("0000" & Hitung, 4)
End If
End If
RD.Close()
txtnofaktur.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_beli", "Harga_Beli")
.Columns.Add("jumlah", "Jumlah")
.Columns.Add("sub_total", "SubTotal")
'---------------------------------------------
.Columns("Kode_Barang").Width = 90
.Columns("Nama_Barang").Width = 150
.Columns("Harga_Beli").Width = 90
.Columns("Jumlah").Width = 70
.Columns("Sub_Total").Width = 90
End With
End Sub
'-------------------------------------------------------------
Sub Autocompletebarang()
Koneksi()
CMD = New OdbcCommand("SELECT
kode_barang FROM tb_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 Autocompletepemasok()
Koneksi()
CMD = New OdbcCommand("SELECT
kode_pemasok FROM tb_pemasok", Conn)
RD =
CMD.ExecuteReader
While RD.Read
With txtkodepemasok
.AutoCompleteCustomSource.Add(RD(0).ToString)
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.CustomSource
End With
End While
Conn.Close()
End Sub
'----------------------------------------------
Sub awal()
Nootomatis()
DTP_tgl.Text =
Format(Now, "dd MMMM yyyy")
txtnofaktur.Enabled
= False
DTP_tgl.Enabled
= False
RB_nonpemasok.Checked = True
txtkodepemasok.Enabled = False
txtnamapemasok.Enabled = False
txtkodepemasok.Text = "000"
txtnamapemasok.Text = "-"
txtnamabarang.Enabled = False
txthargabeli.Enabled = False
txtsubtotal.Enabled = False
txttotalbarang.Text = "0"
txttotalharga.Text = "0"
txttotalbayar.Text = "0"
txtdiskon.Text
= "0"
txttotalbayar.Text = "0"
txtdibayar.Text = "0"
txtkembalian.Text = "0"
txttotalbarang.Enabled = False
txttotalharga.Enabled = False
txttotalbayar.Enabled = False
txtkembalian.Enabled = False
DGV.Rows.Clear()
bersihkanbarang()
End Sub
'---------------------------------------------------------
Private Sub
FormPembelian_Load(ByVal sender As Object, ByVal e As EventArgs)
Handles MyBase.Load
BuatKolom()
Autocompletebarang()
Autocompletepemasok()
awal()
End Sub
'-------------------------------------------------------------------
Private Sub
TxtKodeBarang_KeyDown(ByVal sender As Object, ByVal e As
KeyEventArgs) Handles txtkodebarang.KeyDown
If e.KeyCode = Keys.Enter Then
Koneksi()
CMD = New OdbcCommand("SELECT
* FROM tb_barang WHERE kode_barang = '" + txtkodebarang.Text + "'", Conn)
RD =
CMD.ExecuteReader
If RD.Read Then
txtkodebarang.Text = RD(0).ToString
txtnamabarang.Text =
RD(1).ToString
txthargabeli.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(ByVal sender As Object, ByVal 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(txthargabeli.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
= txthargabeli.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(ByVal sender As Object, ByVal 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
TxtKodePemasok_KeyDown(ByVal sender As Object, ByVal e As
KeyEventArgs) Handles txtkodepemasok.KeyDown
If e.KeyCode = Keys.Enter Then
Koneksi()
CMD = New OdbcCommand("SELECT
* FROM tb_pemasok WHERE kode_pemasok = '" + txtkodepemasok.Text + "'", Conn)
RD =
CMD.ExecuteReader
If RD.Read Then
txtkodepemasok.Text = RD(0).ToString
txtnamapemasok.Text = RD(1).ToString
End If
Conn.Close()
txtkodebarang.Focus()
End If
End Sub
'----------------------------------------------------------------------------
Private Sub
TxtJumlah_KeyDown(ByVal sender As Object, ByVal e As
KeyEventArgs) Handles txtjumlah.KeyDown
If e.KeyCode = Keys.Enter Then
'Rumus Mencari Sub Total
txtsubtotal.Text = Val(txthargabeli.Text) * Val(txtjumlah.Text)
btplus.Focus()
End If
End Sub
'-----------------------------------------------------------------------------------
Private Sub
TxtJumlah_KeyPress(ByVal sender As Object, ByVal 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(ByVal sender As Object, ByVal 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(ByVal sender As Object, ByVal 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(ByVal sender As Object, ByVal 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
txtkembalian.Text = Val(txtdibayar.Text) - Val(txttotalbayar.Text)
btsimpan.Focus()
End If
End If
End Sub
'-------------------------------------------------------------------------
Private Sub
txtdibayar_KeyPress(ByVal sender As Object, ByVal 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
rb_pemasok_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Handles RB_pemasok.CheckedChanged
txtkodepemasok.Enabled = True
txtkodepemasok.Clear()
txtnamapemasok.Clear()
txtkodepemasok.Focus()
End Sub
'--------------------------------------------------------------------------------
Private Sub
rb_nonpemasok_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Handles RB_nonpemasok.CheckedChanged
txtkodepemasok.Enabled = False
txtkodepemasok.Text = "000"
txtnamapemasok.Text = "-"
txtkodebarang.Focus()
End Sub
'-----------------------------------------------------------------------------------
Private Sub
btsimpan_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles btsimpan.Click
Try
'validasi jika data masih kosong
If Len(Trim(txtkodepemasok.Text)) = 0 Then
MsgBox("Data Pemasok Belum diinputkan...",
MsgBoxStyle.Information)
txtkodepemasok.Focus()
ElseIf (Len(Trim(txtdibayar.Text)) = 0) Or (txtdibayar.Text = "0")
Then
MsgBox("Transaksi belum dibayar...",
MsgBoxStyle.Information)
txtdibayar.Focus()
Else
'simpan data non pemasok
Koneksi()
CMD = New OdbcCommand("SELECT
kode_pemasok FROM tb_pemasok WHERE kode_pemasok = '" +
txtkodepemasok.Text + "'", Conn)
RD =
CMD.ExecuteReader
RD.Read()
If Not RD.HasRows Then
Koneksi()
CMD
= New OdbcCommand("INSERT
INTO tb_pemasok VALUES (?,?,?,?)", Conn)
With CMD
.Parameters.AddWithValue("?",
txtkodepemasok.Text)
.Parameters.AddWithValue("?",
txtnamapemasok.Text)
.Parameters.AddWithValue("?",
"000")
.Parameters.AddWithValue("?", "-")
.ExecuteNonQuery()
End With
Conn.Close()
End If
'simpan Data ke tabel pembelian
Koneksi()
CMD = New OdbcCommand("INSERT
INTO tb_pembelian VALUES (?,?,?,?,?)", Conn)
With CMD
.Parameters.AddWithValue("?",
txtnofaktur.Text)
.Parameters.AddWithValue("?",
txtkodepemasok.Text)
.Parameters.AddWithValue("?", Format(Now.Date, "yyyy-MM-dd"))
.Parameters.AddWithValue("?",
txttotalbarang.Text)
.Parameters.AddWithValue("?",
txttotalharga.Text)
.ExecuteNonQuery()
End With
Conn.Close()
'Simpan Data ke tabel detail pembelian
'Koneksi()
'For i As Integer = 0 To DGV.Rows.Count - 1
'CMD = New OdbcCommand("INSERT INTO detail_pembelian
VALUES (?,?,?,?,?)", Conn)
'With CMD
'.Parameters.AddWithValue("?", txtnofaktur.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
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(ByVal sender As Object, ByVal e As EventArgs)
Handles btkeluar.Click
Me.Close()
End Sub
End ClassUntuk tampilan awal, tanggal akan terisi otomatis sesuai tanggal sekarang, no faktur muncul secara otomatis. Langkah pertama adalah memilih radio button pemasok atau non pemasok. Jika memilih radio button pemasok maka kursor akan aktif di kode pemasok, dan kalian tinggal isi kode pemasoknya.
Kode pemasok yang kalian input di data pemasok akan muncul sebagai pilihan, pilih salah satu kemudian enter. Maka akan muncul nama pemasok secara otomatis. Lalu kursor akan pindah ke bagian kode barang. Silahkan masukkan kode barangnya.
Setelah kalian pilih kode barangnya maka akan muncul nama barang dan harga beli secara otomatis. Tinggal isi jumlah barang yang akan dibeli lalu enter, jika coding kalian benar akan muncul sub totalnya seperti gambar di bawah.
Setelah memasukkan jumlah barangnya dan muncul sub total kalian klik tombol plus (+), barang yang kalian input tadi akan tampil di datagridview dan total barang dan total harga akan otomatis muncul. Jika kalian ingin membatalkan atau menghapus barang kalian bisa klik tombol min (-).
Sekarang tinggal mengisi diskon jika ada. Lalu kalian
tekan enter. Total bayar setelah diskon akan muncul. Dan kursor akan berpindah
ke bagian dibayar, silahkan isi sejumlah uang lalu enter. Kembalian akan
otomatis muncul.
Jika sudah klik button simpan agar data tersimpan di database. Kalian berhasil jika muncul tampilan seperti di atas.
Demikian contoh pembuatan transaksi pembelian yang bisa saya bagikan. Karena aplikasi di atas adalah versi sederhananya, kalian bisa modifikasi sesuai keinginan kalian ya guys. Jika ada pertanyaan silahkan tanyakan di kolom komentar.
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.