Aplikasi Pemesanan Dan Pengiriman Barang

 

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.

6.1  Membuat Database

Untuk membuat database lakukanlah langkah-langkah di bawah ini:

 

1.              Buka sql server

2.              Klik kanan databases > new database

3.              Ketik nama database baru misal DBPemesanan

4.              Klik OK

Gambar 6.1  Membuat database

6.2 Membuat Tabel

Setelah membuat database, lanjutkan dengan membuat beberapa buah tabel yang diperlukan antara lain :

1.              Tabel User

2.              Tabel Barang

3.              Tabel Customer

4.              Tabel Kurir

5.              Tabel Pesanan

6.              Tabel DetailPesanan

7.              Tabel Kiriman

8.              Tabel DetailKiriman

Gambar 6.2  Membuat tabel

Struktur masing-masing tabel dapat dilihat pada gambar-gambar berikut ini:

Gambar 6.3  Tabel user

Gambar 6.4  Tabel barang

 

Gambar 6.5  Tabel customer

Gambar 6.6  Tabel kurir

Gambar 6.7  Tabel pesanan

Gambar 6.8  Tabel detail pesanan

Gambar 6.9  Tabel kiriman

Gambar 6.10 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.

Gambar 6.10  Relasi tabel

6.3  Membuat Project Baru

Setelah dipastikan desain semua tabel dapat terhubung dengan baik, maka segera lanjutkan dengan membuat project baru dengan nama Aplikasi Pemesanan dan pengiriman Barang.

6.3.1   Memberi Nama Project

Gambar 6.11  Memberi nama project

6.3.2   Membuat Module

Setelah project terbuka, buatlah module dengan cara sebagai berikut:

1.              Klik menu project

2.              Pilih add module

3.              Klik add

4.              Lalu ketik koding berikut ini

 

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

    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 If

    End Sub

End Module

6.4  Form login

 

Gambar 6.12  Form Login

Logika program dalam form login dalam buku semuanya hampir sama. Silakan lihat kembali logika program login pada aplikasi pembayaran SPP.

Coding :

 

Imports System.Data.SqlClient

 

Public Class Login

 

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        If e.KeyChar = Chr(13) Then

            TextBox2.Focus()

        End If

    End Sub

 

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        If e.KeyChar = Chr(13) Then

            Button1.Focus()

        End If

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

Mencari nama dan password user, jika datanya ditemukan maka tampil menuutama dan masing-masing panel diisi dengan data user yang login

 

        Call Koneksi()

        CMD = New SqlCommand("select * from tbluser where nama_user='" & TextBox1.Text & "' and pwd_user='" & TextBox2.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            MsgBox("Login gagal, Password Case Sensitive")

            TextBox1.Clear()

            TextBox2.Clear()

            TextBox1.Focus()

        Else

            Me.Visible = False

            MenuUtama.Show()

            MenuUtama.Panel1.Text = DR.Item("kode_user")

            MenuUtama.Panel2.Text = DR.Item("nama_user")

            MenuUtama.Panel3.Text = DR.Item("statuS_user")

 

            If MenuUtama.Panel3.Text = "USER" Or MenuUtama.Panel3.Text = "OPERATOR" Then

                MenuUtama.UserToolStripMenuItem.Enabled = False

            Else

                MenuUtama.UserToolStripMenuItem.Enabled = True

            End If

        End If

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        End

    End Sub

 

End Class

6.5  Form Menu Utama

Dalam menu utama terdapat objek PictureBox yang digunakan untuk menampilkan gambar background agar tampilan aplikasi lebih menarik.

Gambar 6.13  Menu Utama

6.6  Form User

Gambar 6.14  Form user

Pada bab ini dibuatkan model pengolahan data master yang berbeda dengan bab sebelumnya, yaitu proses input, edit dan delete harus diawali dengan melakukan klik pada button TAMBAH. Konsekuensinya pembuatan program menjadi lebih banyak karena harus mengendalikan button-button.

Coding :

Imports System.Data.SqlClient

 

Public Class MasterUser

 

 

    Sub Kosongkan()

        TextBox1.Clear()

        TextBox2.Clear()

        TextBox3.Clear()

        ComboBox1.Text = ""

        TextBox5.Clear()

    End Sub

 

    Sub DataBaru()

        TextBox2.Clear()

        TextBox3.Clear()

        ComboBox1.Text = ""

        TextBox5.Clear()

        TextBox2.Focus()

    End Sub

 

    Sub Ketemu()

        On Error Resume Next

        TextBox2.Text = DR.Item("nama_User")

        TextBox3.Text = DR.Item("Pwd_user")

        ComboBox1.Text = DR.Item("Status_User")

        TextBox2.Focus()

    End Sub

 

    Sub KondisiAwal()

        BTNTambah.Enabled = True

        BTNTutup.Enabled = True

 

        BTNSimpan.Enabled = False

        BTNEdit.Enabled = False

        BTNHapus.Enabled = False

        BTNBatal.Enabled = False

        BTNTambah.Focus()

 

        TextBox1.Enabled = False

        TextBox2.Enabled = False

        TextBox3.Enabled = False

        ComboBox1.Enabled = False

    End Sub

 

    Sub KondisiSimpan()

        BTNTambah.Enabled = False

        BTNSimpan.Enabled = True

        BTNEdit.Enabled = False

        BTNHapus.Enabled = False

        BTNBatal.Enabled = True

        BTNTutup.Enabled = False

 

        TextBox2.Enabled = True

        TextBox3.Enabled = True

        ComboBox1.Enabled = True

        TextBox2.Focus()

    End Sub

 

    Sub KondisiEdiHapus()

        BTNTambah.Enabled = False

        BTNSimpan.Enabled = False

        BTNEdit.Enabled = True

        BTNHapus.Enabled = True

        BTNBatal.Enabled = True

        BTNTutup.Enabled = False

 

        TextBox1.Enabled = False

        TextBox2.Enabled = True

        TextBox3.Enabled = True

        ComboBox1.Enabled = True

        TextBox2.Focus()

    End Sub

 

    Sub TampilGrid()

        Call Koneksi()

        DA = New SqlDataAdapter("select * from tblUser", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

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

        Call Koneksi()

        Call Kosongkan()

        Call TampilGrid()

        Call KondisiAwal()

        BTNTambah.Focus()

    End Sub

 

 

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        TextBox1.MaxLength = 5

        If e.KeyChar = Chr(13) Then

Mencari data user, jika datanya tidak ada maka akan ditampilkan jika data tidak ada maka dianggap data baru

 

            Call Koneksi()

            CMD = New SqlCommand("select * from tblUser where kode_User='" & TextBox1.Text & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If Not DR.HasRows Then

                Call DataBaru()

                Call KondisiSimpan()

            Else

                Call Ketemu()

                Call KondisiEdiHapus()

            End If

        End If

    End Sub

 

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        If e.KeyChar = Chr(13) Then TextBox3.Focus()

    End Sub

 

    Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

        If e.KeyChar = Chr(13) Then ComboBox1.Focus()

    End Sub

 

    Private Sub combobox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress

        If e.KeyChar = Chr(13) Then

            If ComboBox1.Text <> "ADMIN" And ComboBox1.Text <> "OPERATOR" And ComboBox1.Text <> "USER" Then

                MsgBox("Status user tidak valid, pilih saja dalam combo")

                Exit Sub

            End If

            If BTNSimpan.Enabled = True Then

                BTNSimpan.Focus()

            ElseIf BTNEdit.Enabled = True Then

                BTNEdit.Focus()

            End If

        End If

        If ((e.KeyChar >= "0" And e.KeyChar <= "9") And e.KeyChar <> vbBack) Then e.Handled = True

    End Sub

 

    Private Sub BTNTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTambah.Click

        BTNTambah.Enabled = False

        BTNBatal.Enabled = True

        TextBox1.Enabled = True

        TextBox1.Focus()

    End Sub

 

    Private Sub BTNSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNSimpan.Click

        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1.Text = "" Then

            MsgBox("Data Belum lengkap")

            Exit Sub

        Else

            Call Koneksi()

Menyimpan data ke tabel user

 

            CMD = New SqlCommand("insert into tblUser values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & ComboBox1.Text & "')", CONN)

            CMD.ExecuteNonQuery()

            Call Kosongkan()

            Call TampilGrid()

            Call KondisiAwal()

        End If

    End Sub

 

    Private Sub BTNEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNEdit.Click

        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1.Text = "" Then

            MsgBox("Data Belum lengkap")

            Exit Sub

        Else

            Call Koneksi()

Mengedit data user

 

            CMD = New SqlCommand("update tblUser set Nama_User='" & TextBox2.Text & "',Pwd_user='" & TextBox3.Text & "',Status_User='" & ComboBox1.Text & "' where kode_User='" & TextBox1.Text & "'", CONN)

            CMD.ExecuteNonQuery()

            Call Kosongkan()

            Call TampilGrid()

            Call KondisiAwal()

        End If

    End Sub

 

    Private Sub BTNHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNHapus.Click

        If MessageBox.Show("Yakin akan dihapus...", "Peratian", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

            Call Koneksi()

Menghapus data user

 

            CMD = New SqlCommand("delete from tblUser where kode_User='" & TextBox1.Text & "'", CONN)

            CMD.ExecuteNonQuery()

            Call Kosongkan()

            Call TampilGrid()

            Call KondisiAwal()

        Else

            Call Kosongkan()

            Call KondisiAwal()

        End If

    End Sub

 

    Private Sub BTNBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNBatal.Click

        Call Kosongkan()

        Call KondisiAwal()

    End Sub

 

    Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTutup.Click

        Me.Close()

    End Sub

 

    Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged

        Call Koneksi()

        DA = New SqlDataAdapter("select * from tblUser where nama_User like '%" & TextBox5.Text & "%' or status_user like '%" & TextBox5.Text & "%'", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

    End Sub

 

    Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick

        On Error Resume Next

        TextBox1.Text = DGV.Rows(e.RowIndex).Cells(0).Value

        TextBox2.Text = DGV.Rows(e.RowIndex).Cells(1).Value

        TextBox3.Text = DGV.Rows(e.RowIndex).Cells("Pwd_user").Value

        ComboBox1.Text = DGV.Rows(e.RowIndex).Cells("Status_User").Value

        Call KondisiEdiHapus()

    End Sub

 

    Private Sub ComboBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.LostFocus

        If ComboBox1.Text <> "ADMIN" And ComboBox1.Text <> "OPERATOR" And ComboBox1.Text <> "USER" Then

            MsgBox("Status user tidak valid, pilih saja dalam combo")

            Exit Sub

        End If

    End Sub

End Class

6.7  Form Barang

Gambar 6.15  Form barang

6.8  Form Customer

Gambar 6.16   Form customer

6.9  Form Kurir

Gambar 6.17  Form kurir

6.10            Form Pemesanan Barang

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”

7.         Proses update inipun terjadi pada kolom status pembayaran dan sisa

Gambar 6.18  Transaksi pemesanan barang

Coding :

 

Imports System.Data.SqlClient

 

Public Class Pemesanan

 

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

                LBLNomor.Text = "PS" + Format(Now, "yyMMdd") + "01"

            End If

        End If

    End Sub

 

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

    End Sub

 

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

        Call Koneksi()

        Call Nomorotomatis()

        Call TampilCustomer()

    End Sub

 

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

    End Sub

 

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

    End Sub

 

 

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_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellEndEdit

        If e.ColumnIndex = 0 Then

            Call Koneksi()

            CMD = New SqlCommand("select * from tblbarang where kode_barang='" & DGV.Rows(e.RowIndex).Cells(0).Value & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                DGV.Rows(e.RowIndex).Cells(1).Value = DR.Item("Nama_barang")

                DGV.Rows(e.RowIndex).Cells(2).Value = DR.Item("harga_Barang")

                DGV.Columns(2).DefaultCellStyle.Format = "###,###,###"

                DGV.Rows(e.RowIndex).Cells(3).Value = DR.Item("stok")

                DGV.CurrentCell = DGV(4, DGV.CurrentCell.RowIndex)

                SendKeys.Send("{UP}")

            Else

                Try

                    MsgBox("Kode barang tidak terdaftar")

                    DGV.Rows(e.RowIndex).Cells(0).Value = ""

                    DaftarBarang.Show()

                    DGV.Rows.RemoveAt(DGV.CurrentCell.RowIndex)

                    SendKeys.Send("{down}")

                Catch ex As Exception

                    MsgBox(ex.Message)

                End Try

            End If

        End If

 

        Try

            If e.ColumnIndex = 4 Then

                If DGV.Rows(e.RowIndex).Cells(4).Value > DGV.Rows(e.RowIndex).Cells(3).Value Then

                    DGV.Rows(e.RowIndex).Cells(5).Value = DGV.Rows(e.RowIndex).Cells(3).Value

                    DGV.Rows(e.RowIndex).Cells(6).Value = DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(4).Value

                    DGV.Rows(e.RowIndex).Cells(7).Value = "Barang Kurang " & DGV.Rows(e.RowIndex).Cells(4).Value - DGV.Rows(e.RowIndex).Cells(3).Value & ""

                ElseIf DGV.Rows(e.RowIndex).Cells(4).Value <= DGV.Rows(e.RowIndex).Cells(3).Value Then

                    DGV.Rows(e.RowIndex).Cells(5).Value = DGV.Rows(e.RowIndex).Cells(4).Value

                    DGV.Rows(e.RowIndex).Cells(6).Value = DGV.Rows(e.RowIndex).Cells(2).Value * DGV.Rows(e.RowIndex).Cells(4).Value

                    DGV.Rows(e.RowIndex).Cells(7).Value = "OK"

                End If

                DGV.Columns(6).DefaultCellStyle.Format = "###,###,###"

                DGV.CurrentCell = DGV(0, DGV.CurrentCell.RowIndex)

                Call HitungBarang()

                Call HitungHarga()

            End If

        Catch ex As Exception

            MsgBox("harus angka")

            DGV.Rows(e.RowIndex).Cells(4).Value = 0

            SendKeys.Send("{up}")

        End Try

    End Sub

 

    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()

        End If

 

        If e.KeyChar = Chr(13) Then

            TXTUangMuka.Focus()

        End If

    End Sub

 

    Private Sub TxtUangMuka_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TXTUangMuka.KeyPress

        If e.KeyChar = Chr(13) Then

        

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()

            End If

 

            If TXTUangMuka.Text = LBLTotalHarga.Text Then

                LBLSisa.Text = 0

                LBLStatusPembayaran.Text = "LUNAS"

                Button1.Focus()

            End If

 

            If Val(Microsoft.VisualBasic.Str(TXTUangMuka.Text)) > Val(Microsoft.VisualBasic.Str(LBLTotalHarga.Text)) Then

                LBLSisa.Text = 0

                LBLStatusPembayaran.Text = "LUNAS"

                Button1.Focus()

            End If

            LBLStatusPesanan.Text = "BELUM DIKIRIM"

        End If

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Me.Close()

    End Sub

 

    Sub Bersihkan()

        ComboBox1.Text = ""

        LBLTotalBarang.Text = ""

        LBLTotalHarga.Text = ""

        TXTUangMuka.Text = ""

        LBLSisa.Text = ""

        LBLStatusPembayaran.Text = ""

        LBLStatusPesanan.Text = ""

        DGV.Rows.Clear()

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Call Bersihkan()

    End Sub

End Class

 

Gambar 6.19  Konfirmasi cetak faktur

Gambar 6.20  Faktur pemesanan barang

6.11            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

Transaksi pengiriman barang diambil dari nomor pemesanan customer sebelumnya. Jika proses ini sudah dilakukan maka nomor pemesanan tersebut akan hilang dari combo.

Gambar 6.21 Transaksi pengiriman barang

Coding :

 

Imports System.Data.SqlClient

 

Public Class Pengiriman

 

    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

                LBLNomor.Text = Microsoft.VisualBasic.Right(DR.Item("No_Kiriman"), 8) + 1

                LBLNomor.Text = "KR" + LBLNomor.Text

            Else

                LBLNomor.Text = "KR" + Format(Now, "yyMMdd") + "01"

            End If

        End If

    End Sub

 

 

 

 

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

    End Sub

 

 

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

    End Sub

 

    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()

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Call Koneksi()

        CMD = New SqlCommand("SELECT * FROM tblpesanan where no_pesanan='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            LblTanggalPesanan.Text = DR.Item("tgl_pesanan")

 

            LBLTotalBarang.Text = DR.Item("total_barang")

            LBLTotalHarga.Text = FormatNumber(DR.Item("total_harga"), 0)

            TXTUangMuka.Text = FormatNumber(DR.Item("uang_muka"), 0)

            LBLSisa.Text = FormatNumber(DR.Item("sisa"), 0)

            LBLStatusPembayaran.Text = DR.Item("status_pembayaran")

 

            Dim CariCustomer As String = DR.Item("kode_customer")

            Call Koneksi()

            CMD = New SqlCommand("SELECT * FROM tblcustomer where kode_customer='" & CariCustomer & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                DataCustomer.Text = DR.Item("nama_customer") & Space(1) & DR.Item("alamat_customer") & Space(1) & DR.Item("hp_telp_customer")

            End If

 

Mengambil kembali data pesanan customer untuk ditampilkan dalam grid

 

            Call Koneksi()

            DGV.Columns.Clear()

            DA = New SqlDataAdapter("select tbldetailpesanan.kode_barang as Kode,tblbarang.Nama_Barang,tbldetailpesanan.Harga_Satuan,Jumlah,SubTotal from tbldetailpesanan,tblbarang where tbldetailpesanan.kode_barang=tblbarang.kode_barang and tbldetailpesanan.no_pesanan='" & ComboBox1.Text & "'", CONN)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

            DGV.Columns(1).Width = 200

            DGV.ReadOnly = True

            DGV.Columns(2).DefaultCellStyle.Format = "###,###,###"

            DGV.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

            DGV.Columns(4).DefaultCellStyle.Format = "###,###,###"

            DGV.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

        Else

            MsgBox("Nomor pesanan tidak valid")

        End If

    End Sub

 

    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 If

    End Sub

 

    Sub Bersihkan()

        ComboBox1.Text = ""

        ComboBox2.Text = ""

        LblTanggalPesanan.Text = ""

        LBLNamaKurir.Text = ""

        DataCustomer.Clear()

        LBLTotalBarang.Text = ""

        LBLTotalHarga.Text = ""

        TXTUangMuka.Text = ""

        LBLSisa.Text = ""

        LBLStatusPembayaran.Text = ""

        DGV.Columns.Clear()

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Call Bersihkan()

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Me.Close()

    End Sub

 

End Class

 

Gambar 6.22  Konfirmasi cetak faktur pengiriman barang

Gambar 6.23  Faktur pengiriman barang

6.12            Form Laporan Pegiriman Oleh Kurir

Setelah transaksi pengiriman dilakukan, maka barang dan faktur siap diantar oleh kurir kepada customer. Setelah barang dan faktur diterima oleh customer, maka kurir akan kembali ke operator untuk melakukan konfirmasi bahwa barang sudah diterima customer dan proses tersebut dilakukan pada form di bawah ini.

Gambar 6.24  Form laporan pengiriman barang oleh kurir

Coding :

 

Imports System.Data.SqlClient

 

Public Class LaporanKurir

 

 

Menampilkan data pesanan customer

 

    Sub TampilData()

        Call Koneksi()

        DA = New SqlDataAdapter("select TblKurir.Nama_Kurir,tblpesanan.No_Pesanan,Total_Harga,Uang_Muka,Sisa,Status_Pembayaran,tblcustomer.Nama_Customer,Alamat_Customer,tblpesanan.status_pesanan as [Status] from tblpesanan,tblkiriman,tblcustomer,tblkurir where status_pesanan='DALAM PENGIRIMAN' AND tblpesanan.no_pesanan=tblkiriman.no_pesanan and tblkiriman.kode_kurir=tblkurir.kode_kurir and tblcustomer.kode_customer=tblpesanan.kode_customer order by 1", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

        Me.Text = DGV.RowCount - 1

    End Sub

 

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

        Call TampilData()

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

Melakukan update data pesanan yang sudah dikirimkan ke customer

 

        Call Koneksi()

        Dim updateKiriman As String = "update tblpesanan set status_pesanan='SUDAH DITERIMA CUSTOMER',status_pembayaran='LUNAS',Sisa=0 where no_pesanan='" & DGV.Rows(DGV.CurrentCell.RowIndex).Cells(1).Value & "'"

        CMD = New SqlCommand(updateKiriman, CONN)

        CMD.ExecuteNonQuery()

 

        Call TampilData()

 

    End Sub

End Class

6.13            Laporan Data Master

6.13.1 Laporan Data User

 

Gambar 6.25  Laporan data user

Coding :

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan user.rpt"

    End Sub

6.13.2 Laporan Data Customer

Gambar 6.26  Laporan data customer

Coding :

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan customer.rpt"

    End Sub

6.13.3 Laporan Data Kurir

 

Gambar 6.27  Laporan data kurir

Coding :

 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan kurir.rpt"

    End Sub

6.13.4 Laporan Data Barang

Gambar 6.28  Laporan data barang

Coding :

 

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.ReportSource = "laporan barang.rpt"

    End Sub

6.14            Laporan Pemesanan Barang

 

Gambar 6.28  Laporan pemesanan barang

6.14.1 Laporan Harian

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "totext({tblpesanan.tgl_pesanan})='" & DateTimePicker1.Text & "'"

        CRV.ReportSource = "master pesanan.rpt"

    End Sub

6.14.2 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 = "({tblpesanan.tgl_pesanan}) in date ('" & DateTimePicker2.Text & "') to date ('" & DateTimePicker3.Text & "') "

        CRV.ReportSource = "master pesanan.rpt"

 

    End Sub

6.14.3 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({tblpesanan.tgl_pesanan})=(" & Month(DateTimePicker4.Text) & ") and year({tblpesanan.tgl_pesanan}) =(" & Year(DateTimePicker4.Text) & ") "

        CRV.ReportSource = "master pesanan.rpt"

    End Sub

6.14.4 Laporan Per Status Pesanan

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 pesanan.rpt"

    End Sub

6.14.5 Laporan Per 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 pesanan.rpt"

    End Sub

6.15            Laporan Pengiriman Barang

 

Gambar 6.37 Laporan pengirman barang

6.15.1 Laporan Harian

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        CRV.RefreshReport()

        CRV.SelectionFormula = "totext({tblkiriman.tgl_kiriman})='" & DateTimePicker1.Text & "'"

        CRV.ReportSource = "master kiriman.rpt"

    End Sub

6.15.2 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"

    End Sub

6.15.3 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"

    End Sub

6.15.4 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"

    End Sub

6.15.5 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"

    End Sub