APLIKASI PEMESANAN DAN PENGIRIMAN BARANG - SQL SERVER Peminat silakan hubungi : Email : uusrusmawan71@gmail.com Facebook : konsultasivb@ymail.com (Uus Rusmawan) Phone : 0812 8438 1118 Sebelum membahas aplikasi pemesanan dan pengiriman barang ini, anda harus menyiapkan database dengan cara attach atau restore seperti yang telah dibahas pada bab sebelumnya. Jika anda ingin memulainya dari awal maka ikutilah langkah-langkah yang akan dijelaskan di bawah ini. Membuat Database Membuat Tabel Membuat database Membuat tabel 1
Tabel user Tabel barang Tabel customer Tabel kurir 2
Tabel pesanan Tabel detail pesanan Tabel kiriman 3
Pusat Kursus VB 6.0 - VB.Net - Bimbingan Tugas Akhir & Skripsi Tabel detail kiriman Bentuk relasi tabel dapat anda lihat seperti gambar di bawah ini. Gambar ini diambil dari hasil relasi menggunakan crystal report. Konsep relasi pada tabel ini adalah One To Many level 3NF. Membuat Module Relasi tabel Imports System.Data.SqlClient Module Module1 Public CONN As SqlConnection Public DA As SqlDataAdapter Public DS As New DataSet Public CMD As SqlCommand Public DR As SqlDataReader 4
Public STR As String Sub Koneksi() STR = "data source=user-pc\sqlexpress;initial catalog=dbpemesanan;integrated security =true" CONN = New SqlConnection(STR) If CONN.State = ConnectionState.Closed Then CONN.Open() End Module Form Login 5
Menu Utama 6
Form user 7
Form barang 8
Form customer 9
Form Pemesanan Barang Form kurir Sebelum membahas lebih jauh tentang pemesanan barang, sebaiknya kita pahami proses bisnisnya. 1. Customer memesan barang (cara pembayaran boleh cash atau dengan uang muka) 2. Jumlah barang yang tidak tersedia akan diberi catatan Barang Kurang sekian 3. Setelah proses entri pesanan, langsung cetak faktur pesanan agar petugas mencari (menyiapkan barang) yang dipesan di gudang 4. Setelah semua barang pesanan disiapkan, lanjutkan ke proses pengiriman oleh kurir 5. Pemesanan yang dilakukan dengan DP, akan diminta pelunasan oleh kurir saat barang dikirimkan (catatannya tercantum dalam faktur pengiriman barang) 6. Setelah kurir mengirimkan barang ke customer, kurir kembali lagi ke toko (gudang) untuk validasi pengiriman sekaligus update status pemesanan menjadi SUDAH DITERIMA CUSTOMER 10
7. Proses update inipun terjadi pada kolom status pembayaran dan sisa Coding : Imports System.Data.SqlClient Public Class Pemesanan Transaksi pemesanan barang Membuat nomor pemesanan otomatis dengan pola PSyyMMdd + nomor urut Sub Nomorotomatis() Call Koneksi() CMD = New SqlCommand("select * from tblpesanan where No_Pesanan in(select max(no_pesanan) from tblpesanan)", CONN) DR = CMD.ExecuteReader DR.Read() If Not DR.HasRows Then LBLNomor.Text = "PS" + Format(Now, "yymmdd") + "01" Else If Microsoft.VisualBasic.Mid(DR.Item("No_Pesanan"), 3, 6) = Format(Now, "yymmdd") Then LBLNomor.Text = Microsoft.VisualBasic.Right(DR.Item("No_Pesanan"), 8) + 1 LBLNomor.Text = "PS" + LBLNomor.Text Else 11
LBLNomor.Text = "PS" + Format(Now, "yymmdd") + "01" Menampilkan customer di combobox1 Sub TampilCustomer() Call Koneksi() CMD = New SqlCommand("select * from tblcustomer", CONN) DR = CMD.ExecuteReader Do While DR.Read ComboBox1.Items.Add(DR.Item("kode_customer") & Space(2) & DR.Item("nama_customer")) Loop Menghitung jumlah barang di kolom qty pesanan Sub HitungBarang() Dim hitung As Integer = 0 For baris As Integer = 0 To DGV.RowCount - 1 hitung = hitung + DGV.Rows(baris).Cells(5).Value LBLTotalBarang.Text = FormatNumber(hitung, 0) Next Menghitung total harga di kolom sub total Sub HitungHarga() Dim hitung As Integer = 0 For baris As Integer = 0 To DGV.RowCount - 1 hitung = hitung + DGV.Rows(baris).Cells(6).Value LBLTotalHarga.Text = FormatNumber(hitung, 0) Next 12
Proses entri data dalam datagrid adalah sebagai berikut : 1. Pilih tanggal transaksi 2. Pilih customer pada combobox 3. Ketik kode barang di kolom kode misal B01, jika datanya ada maka akan tampil nama barang, harga dan stok 4. Jika data tidak ada maka akan tampil daftar nama barang berikut kodenya, silakan pilih datanya lalu tekan enter 5. Ketik jumlah pesanan dari customer, jika stok cukup maka pesanan terpenuhi, jika stok kurang maka akan muncul keterangan jumlah kekurangannya 6. Mengisi uang muka (DP) sifanya opsional, apakah lebih kecil dari jumlah total harga, lebih besar ataupun sama dengan jumlah total harga akan mempengaruhi proses program selanjutnya 7. Ketika di klik button simpan maka akan muncul pertanyaan untuk pencetakan faktur pemesanan barang. Coding : Private Sub DGV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV.KeyPress On Error Resume Next If e.keychar = Chr(27) Then Menghapus baris tertentu dan menghitungkembali jumlah harga dan jumlah barang DGV.Rows.RemoveAt(DGV.CurrentCell.RowIndex) Call HitungBarang() Call HitungHarga() If e.keychar = Chr(13) Then TXTUangMuka.Focus() Private Sub TxtUangMuka_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TXTUangMuka.KeyPress If e.keychar = Chr(13) Then 13
Proses pembayaran akan mempengaruhi status pesanan dan pembayaran TXTUangMuka.Text = FormatNumber(TXTUangMuka.Text, 0) If TXTUangMuka.Text < LBLTotalHarga.Text Then LBLSisa.Text = FormatNumber((LBLTotalHarga.Text) - (TXTUangMuka.Text), 0) LBLStatusPembayaran.Text = "BELUM LUNAS" Button1.Focus() If TXTUangMuka.Text = LBLTotalHarga.Text Then LBLSisa.Text = 0 LBLStatusPembayaran.Text = "LUNAS" Button1.Focus() If Val(Microsoft.VisualBasic.Str(TXTUangMuka.Text)) > Val(Microsoft.VisualBasic.Str(LBLTotalHarga.Text)) Then LBLSisa.Text = 0 LBLStatusPembayaran.Text = "LUNAS" Button1.Focus() LBLStatusPesanan.Text = "BELUM DIKIRIM" Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.Close() Sub Bersihkan() ComboBox1.Text = "" LBLTotalBarang.Text = "" LBLTotalHarga.Text = "" TXTUangMuka.Text = "" LBLSisa.Text = "" LBLStatusPembayaran.Text = "" LBLStatusPesanan.Text = "" DGV.Rows.Clear() 14
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Call Bersihkan() End Class Konfirmasi cetak faktur Faktur pemesanan barang Form Pengiriman Barang Proses transaksi dalam form pengiriman barang adalah sebagai berikut : 1. Nomor pengiriman muncul secara otomatis dengan pola KRyyMMdd + 01 2. Pilih tanggal pengiriman 3. Pilih nomor pesanan 4. Pilih kurir 5. Klik simpan 15
Transaksi pengiriman barang diambil dari nomor pemesanan customer sebelumnya. Jika proses ini sudah dilakukan maka nomor pemesanan tersebut akan hilang dari combo. Coding : Imports System.Data.SqlClient Public Class Pengiriman Transaksi pengiriman barang Sub Nomorotomatis() Call Koneksi() CMD = New SqlCommand("select * from tblkiriman where No_Kiriman in(select max(no_kiriman) from tblkiriman)", CONN) DR = CMD.ExecuteReader DR.Read() If Not DR.HasRows Then LBLNomor.Text = "KR" + Format(Now, "yymmdd") + "01" Else If Microsoft.VisualBasic.Mid(DR.Item("No_Kiriman"), 3, 6) = Format(Now, "yymmdd") Then 16
LBLNomor.Text = Microsoft.VisualBasic.Right(DR.Item("No_Kiriman"), 8) + 1 LBLNomor.Text = "KR" + LBLNomor.Text Else LBLNomor.Text = "KR" + Format(Now, "yymmdd") + "01" Menapilkan data pesanan yang belum dikirim Sub TampilNomorPesanan() Call Koneksi() CMD = New SqlCommand("select * from tblpesanan where status_pesanan='belum DIKIRIM'", CONN) DR = CMD.ExecuteReader ComboBox1.Items.Clear() Do While DR.Read ComboBox1.Items.Add(DR.Item("NO_PESANAN")) Loop Menampilkan data kurir dalam combo2 Sub TampilKurir() Call Koneksi() CMD = New SqlCommand("select * from tblkurir", CONN) DR = CMD.ExecuteReader ComboBox2.Items.Clear() Do While DR.Read ComboBox2.Items.Add(DR.Item("kode_kurir")) Loop Private Sub Pengiriman_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Koneksi() Call Nomorotomatis() Call TampilNomorPesanan() Call TampilKurir() 17
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged Call Koneksi() CMD = New SqlCommand("SELECT * FROM tblkurir where kode_kurir='" & ComboBox2.Text & "'", CONN) DR = CMD.ExecuteReader DR.Read() If DR.HasRows Then LBLNamaKurir.Text = DR.Item("nama_kurir") Else MsgBox("Kode kurir tidak valid") End Class Faktur pengiriman barang Laporan Pemesanan Barang 18
Laporan pemesanan barang Laporan harian Laporan periodik 19
Laporan bulanan Laporan pemesanan belum dikirim Laporan pemesanan dalam pengiriman Laporan pemesanan sudah dikirim 20
Laporan pembayaran belum lunas Laporan pesanan sudah diterima customer Laporan pengirman barang 21
Laporan Periodik Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click CRV.ReportSource = Nothing CRV.RefreshReport() CRV.SelectionFormula = "({tblkiriman.tgl_kiriman}) in date ('" & DateTimePicker2.Text & "') to date ('" & DateTimePicker3.Text & "') " CRV.ReportSource = "master kiriman.rpt" Laporan Bulanan Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click CRV.ReportSource = Nothing CRV.RefreshReport() CRV.SelectionFormula = "month({tblkiriman.tgl_kiriman})=(" & Month(DateTimePicker4.Text) & ") and year({tblkiriman.tgl_kiriman}) =(" & Year(DateTimePicker4.Text) & ") " CRV.ReportSource = "master kiriman.rpt" Laporan Status Pengiriman Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged CRV.ReportSource = Nothing CRV.RefreshReport() CRV.SelectionFormula = "({tblpesanan.status_pesanan})='" & ListBox1.Text & "'" CRV.ReportSource = "master kiriman.rpt" 22
Laporan Status Pembayaran Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged CRV.ReportSource = Nothing CRV.RefreshReport() CRV.SelectionFormula = "({tblpesanan.status_pembayaran})='" & ListBox2.Text & "'" CRV.ReportSource = "master kiriman.rpt" 23