Translate

Rabu, 19 November 2014

Cara Membuat Invoice Menggunakan VB.Net

Public Class Invoice
    Dim baris, kolom, Hargasatuan As Integer
    Dim kodebrg, namabrg, statusheader As String

    Private Sub Invoice_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call koneksi()
        Call isicombo1()
        Call isicombo2()
        Call settingdatagrid()
        Call tampilkan_detail_Inv()
        'Call tampil_dInvoice()


    End Sub
    Private Sub simpandata()
        If Trim(TextBox1.Text) = "" Then Exit Sub
        If Trim(TextBox2.Text) = "" Then Exit Sub
        If Trim(ComboBox1.Text) = "" Then Exit Sub
        If Trim(ComboBox2.Text) = "" Then Exit Sub
        If Trim(TextBox3.Text) = "" Then Exit Sub
        If Trim(TextBox5.Text) = "" Then Exit Sub
        If Trim(TextBox6.Text) = "" Then Exit Sub


        If Add.Text = "Simpan" Then
            Tampil.Connection = Dtbase
            Tampil.CommandType = CommandType.Text
            Tampil.CommandText = "insert into Invoice_H(noInvo,tglInvo,noSO,kdcust,kdcarabyr,jnstransaksi,ppn,total,tglentry,useridd) values ('" & Trim(TextBox1.Text) & "', '" & DateTimePicker1.Value & "','" & Microsoft.VisualBasic.Left(ComboBox1.Text, 4) & "','" & TextBox2.Text & "','" & Microsoft.VisualBasic.Left(ComboBox2.Text, 2) & "','" & TextBox3.Text & "'," & Val(TextBox7.Text) & "," & Val(TextBox5.Text) & ",'" & tglskg & "', '" & nmorang & "' )"
            Tampil.ExecuteNonQuery()
        Else
            If Edit.Text = "Simpan" Then
                Tampil.Connection = Dtbase
                Tampil.CommandType = CommandType.Text
                Tampil.CommandText = "update Invoice_H set tglInvo='" & DateTimePicker1.Value & "', noSO='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 4) & "', kdcust='" & TextBox2.Text & "',tglEntry='" & tglskg & "', useridd='" & nmorang & "' where noInvo='" & Trim(TextBox1.Text) & "'"
                Tampil.ExecuteNonQuery()
                'ppn=" & TextBox7.Text & ",total=" & TextBox5.Text & ",
            Else
                If Delete.Text = "Ok" Then
                    'Untuk menghapus detail SO
                    Tampil.Connection = Dtbase
                    Tampil.CommandType = CommandType.Text
                    Tampil.CommandText = "Delete from Invoice_D where noInvo_H='" & Trim(TextBox1.Text) & "'"
                    Tampil.ExecuteNonQuery()
                    'Untuk menghapus header SO
                    Tampil.Connection = Dtbase
                    Tampil.CommandType = CommandType.Text
                    Tampil.CommandText = "Delete from Invoice_H where noInvo='" & Trim(TextBox1.Text) & "'"
                    Tampil.ExecuteNonQuery()
                    Call settingdatagrid()


                Else

                End If
            End If

        End If

    End Sub
    Private Sub isicombo1()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from SalesOrder "
        Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            ComboBox1.Items.Clear()
            While Tampilkan.Read() 'membaca data 1 per 1
                ComboBox1.Items.Add(Trim(Tampilkan("NoSO"))) '& " " & Trim(Tampilkan("nmcarabyr")))
            End While
        End If
    End Sub
    Private Sub isicombo2()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from Carabayar "
        Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            ComboBox2.Items.Clear()
            While Tampilkan.Read() 'membaca data 1 per 1
                ComboBox2.Items.Add(Trim(Tampilkan("kdcarabyr")) & " " & Trim(Tampilkan("nmcarabyr")))
            End While
        End If
    End Sub
    Private Sub posisiList()
        ListBox1.Top = TextBox3.Top + TextBox4.Height
        ListBox1.Left = TextBox3.Left

    End Sub
    Private Sub caritransaksi()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from Jenistransaksi where nmjnstrans like '%" & Trim(TextBox3.Text) & "%' "
        Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            ListBox1.Items.Clear()
            ListBox1.Visible = True
            Call posisiList()
            While Tampilkan.Read() 'membaca data 1 per 1
                ListBox1.Items.Add(Trim(Tampilkan("kdjnstrans")) & " " & Trim(Tampilkan("nmjnstrans")))
            End While
        End If
    End Sub
    Private Sub carinamatransaksi()
        Call koneksi()
        Tampil.Connection = Dtbase
        Tampil.CommandType = CommandType.Text
        Tampil.CommandText = "select * from Jenistransaksi where kdjnstrans='" & Trim(TextBox3.Text) & "'"
        Tampilkan = Tampil.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data


        If Tampilkan.HasRows = True Then

            'klw ada record(data)maka akan bertipe true
            While Tampilkan.Read()
                TextBox4.Text = Tampilkan("nmjnstrans")

            End While
        End If

    End Sub
    Private Sub caristatusheader()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from Invoice_H where noInvo='" & Trim(TextBox1.Text) & "'"
        Tampilkan = Tampil2.ExecuteReader

        If Tampilkan.HasRows = True Then
            statusheader = "T"
        Else
            statusheader = "F"

        End If
    End Sub
    Private Sub carinamacustomer()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from Customer where kdcust ='" & Trim(TextBox2.Text) & "' "
        Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            While Tampilkan.Read() 'membaca data 1 per 1
                TextBox8.Text = Trim(Tampilkan("nmcust"))
            End While
        End If

    End Sub
    Private Sub bersih()
        TextBox1.Text = ""
        TextBox2.Text = ""
        ComboBox1.Text = ""
        ComboBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        TextBox6.Text = ""
        TextBox7.Text = ""
        TextBox8.Text = ""

    End Sub
    Private Sub normal()
        Add.Text = "Add"
        Edit.Text = "Edit"
        Delete.Text = "Delete"
        Keluar.Text = "Exit"
        Add.Enabled = True
        Edit.Enabled = True
        Delete.Enabled = True
        Keluar.Text = "Exit"
    End Sub
    Private Sub nomorOtomatis()
        If DG1 IsNot Nothing Then

            Dim count As Integer = 0

            While (count <= (DG1.Rows.Count - 2))

                DG1.Rows(count).HeaderCell.Value = String.Format((count + 1).ToString(), "0")

                count += 1

            End While

        End If


    End Sub

    Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
        ListBox1.Visible = False
        ListBox1.Top = 12
        TextBox3.Text = Microsoft.VisualBasic.Left(ListBox1.Text, 4)
       
    End Sub


    Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
        If Len(TextBox3.Text) > 0 Then
            Call caritransaksi()
            Call carinamatransaksi()
        End If
    End Sub
    Private Sub caridata_H()
        Call koneksi()
        Tampil.Connection = Dtbase
        Tampil.CommandType = CommandType.Text
        Tampil.CommandText = "select * from Invoice_H where noInvo='" & Trim(TextBox1.Text) & "'"
        Tampilkan = Tampil.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            While Tampilkan.Read() 'membaca data 1 per 1
                If IsDBNull(Tampilkan("noInvo")) Then '
                    TextBox1.Focus()
                Else
                    DateTimePicker1.Value = Tampilkan("tglInvo")
                    TextBox2.Text = Tampilkan("kdcust")
                    ComboBox1.Text = Tampilkan("noSO")
                    ComboBox2.Text = Tampilkan("kdcarabyr")
                    TextBox3.Text = Tampilkan("jnstransaksi")
                    'TextBox5.Text = Tampilkan("total")
                    'TextBox7.Text = Tampilkan("ppn")
                    TextBox2.Focus()

                End If
            End While
        End If
    End Sub
    Private Sub settingdatagrid()
        'untuk menentukan jumlah kolom
        DG1.ColumnCount = 5
        DG1.RowCount = 5

        'untuk menentukan nama header kolom
        DG1.Columns(0).Name = "Kode Barang"
        DG1.Columns(1).Name = "Nama Barang"
        DG1.Columns(2).Name = "Qty"
        DG1.Columns(3).Name = "Satuan Harga"
        DG1.Columns(4).Name = "Total Harga"

        'menentukan lebar kolom
        DG1.Columns(0).Width = 120
        DG1.Columns(1).Width = 250
        DG1.Columns(2).Width = 100
        DG1.Columns(3).Width = 100
        DG1.Columns(4).Width = 100

        Call AddButtonColumn()
        'format kolom sesuai dengan keingninan
        DG1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight
        DG1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight

    End Sub
    Private Sub AddButtonColumn()
        'untuk membuat tombol button di datagridview
        Dim btn = New DataGridViewButtonColumn()
        DG1.Columns.Add(btn)
        btn.HeaderText = "Simpan"
        btn.Text = "Simpan"
        btn.Name = "btnsimpan"
        btn.UseColumnTextForButtonValue = True
    End Sub
    Private Sub bersihbaris()
        DG1.Rows.Item(baris).Cells(0).Value = ""
        DG1.Rows.Item(baris).Cells(1).Value = ""
        DG1.Rows.Item(baris).Cells(2).Value = ""
    End Sub

    Private Sub tampilkan_detail_Inv()
        Call koneksi()
        Dim n As Integer
        DG1.RowCount = 1
        DG1.RowCount = 5

        Tabel = "SELECT SODetail.kdbrg, Barang.nmbrg, SODetail.qty,SODetail.hargasatuan, SODetail.totalharga"
        Tabel = Tabel + "  FROM SODetail INNER JOIN Barang ON SODetail.kdbrg = Barang.kdbrg WHERE  SODetail.nosoH= '" & Trim(ComboBox1.Text) & "'"
        Tampil4.Connection = Dtbase
        Tampil4.CommandType = CommandType.Text
        'MsgBox(Tabel)
        Tampil4.CommandText = Tabel
        Tampilkan = Tampil4.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            n = 0
            While Tampilkan.Read() 'membaca data 1 per 1

                DG1.Rows.Item(n).Cells(0).Value = Tampilkan("kdbrg")
                DG1.Rows.Item(n).Cells(1).Value = Trim(Tampilkan("nmbrg"))
                DG1.Rows.Item(n).Cells(2).Value = Tampilkan("qty")
                DG1.Rows.Item(n).Cells(3).Value = Tampilkan("hargasatuan")
                DG1.Rows.Item(n).Cells(4).Value = Tampilkan("totalharga")


                n = n + 1

            End While
            DG1.RowCount = n + 1

            'Dim nn As Integer = dgv1.Rows.Add()
        End If
        Dim nn As Integer = DG1.Rows.Add()
        'Dim nn As Integer = dgv1.Rows.Add()

        Tampilkan.Close()
        Tampil4.ExecuteReader.Close()
    End Sub
    Private Sub tampil_dInvoice()
        Call koneksi()
        Dim n As Integer
        DG1.RowCount = 1
        DG1.RowCount = 5

        Tabel = "SELECT Invoice_D.kdbrg, Barang.nmbrg, Invoice_D.qty,Invoice_D.hargasatuan, Invoice_D.totalharga"
        Tabel = Tabel + "  FROM Invoice_D INNER JOIN Barang ON Invoice_D.kdbrg = Barang.kdbrg WHERE  Invoice_D.noInvo_H= '" & Trim(TextBox1.Text) & "'"
        Tampil4.Connection = Dtbase
        Tampil4.CommandType = CommandType.Text
        'MsgBox(Tabel)
        Tampil4.CommandText = Tabel
        Tampilkan = Tampil4.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            n = 0
            While Tampilkan.Read() 'membaca data 1 per 1

                DG1.Rows.Item(n).Cells(0).Value = Tampilkan("kdbrg")
                DG1.Rows.Item(n).Cells(1).Value = Trim(Tampilkan("nmbrg"))
                DG1.Rows.Item(n).Cells(2).Value = Tampilkan("qty")
                DG1.Rows.Item(n).Cells(3).Value = Tampilkan("hargasatuan")
                DG1.Rows.Item(n).Cells(4).Value = Tampilkan("totalharga")


                n = n + 1

            End While
            DG1.RowCount = n + 1
            'Dim nn As Integer = DG1.Rows.Add()
        End If
        Dim nn As Integer = DG1.Rows.Add()

        Tampilkan.Close()
        Tampil4.ExecuteReader.Close()
    End Sub
    Private Sub bersih_datagrid()
        DG1.RowCount = 1
        DG1.Refresh()
        DG1.RowCount = 5
    End Sub
    Private Sub simpan_datagridview()
        'cek sudah terisi semua belum
        If DG1.Rows.Item(baris).Cells(0).Value = "" Then Exit Sub
        If DG1.Rows.Item(baris).Cells(1).Value = "" Then Exit Sub
        If Trim(DG1.Rows.Item(baris).Cells(2).Value) = "" Then Exit Sub
        If Trim(DG1.Rows.Item(baris).Cells(3).Value) = "" Then Exit Sub
        If Trim(DG1.Rows.Item(baris).Cells(4).Value) = "" Then Exit Sub

        If Add.Text = "Simpan" Then
            Tampil.Connection = Dtbase
            Tampil.CommandType = CommandType.Text
            Tampil.CommandText = "insert into Invoice_D(noInvo_H,kdbrg,qty,hargasatuan,totalharga,tglEntry,useridd) values ('" & Trim(TextBox1.Text) & "', '" & Trim(DG1.Rows.Item(baris).Cells(0).Value) & "'," & Val(DG1.Rows.Item(baris).Cells(2).Value) & "," & Val(DG1.Rows.Item(baris).Cells(3).Value) & "," & Val(DG1.Rows.Item(baris).Cells(4).Value) & ",'" & tglskg & "', '" & nmorang & "')"
            Tampil.ExecuteNonQuery()
            ' Call tampilkan_detail_SO()
        Else
            If Edit.Text = "Simpan" Then
                Tampil.Connection = Dtbase
                Tampil.CommandType = CommandType.Text
                Tampil.CommandText = "update Invoice_D set qty = " & Val(DG1.Rows.Item(baris).Cells(2).Value) & ",hargasatuan=" & Val(DG1.Rows.Item(baris).Cells(3).Value) & ",totalharga =" & Val(DG1.Rows.Item(baris).Cells(4).Value) & " where noInvo_H='" & Trim(TextBox1.Text) & "' and kdbrg= '" & Trim(DG1.Rows.Item(baris).Cells(0).Value) & "'"
                Tampil.ExecuteNonQuery()
                'Call tampilkan_detail_SO()
            Else
                If Delete.Text = "Ok" Then
                    Tampil.Connection = Dtbase
                    Tampil.CommandType = CommandType.Text
                    Tampil.CommandText = "Delete from Invoice_D where noInvo_H='" & Trim(TextBox1.Text) & "' and kdbrg= '" & Trim(DG1.Rows.Item(baris).Cells(0).Value) & "'"
                    Tampil.ExecuteNonQuery()
                    Call bersihbaris()
                End If
            End If
        End If
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = Chr(Keys.Enter) Then
            Call caridata_H()
            Call carinamacustomer()
            Call tampilkan_detail_Inv()

            'Call tampil_dInvoice()

        End If
    End Sub


    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If Len(TextBox1.Text) > 0 Then
            Call tampilkan_detail_Inv()

            'Call tampil_dInvoice()
            Call penjumlahan()
        End If
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Call koneksi()
        Call tampilkan_detail_Inv()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from SalesOrder where NoSO='" & Trim(ComboBox1.Text) & "'"
        Tampilkan2 = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan2.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            While Tampilkan2.Read() 'membaca data 1 per 1
                If IsDBNull(Tampilkan2("NoSO")) Then '
                    TextBox1.Focus()
                    'Call tampilkan_detail_SJ()
                Else

                    TextBox2.Text = Tampilkan2("kdcust")



                    TextBox2.Focus()

                End If


            End While
        End If
        Call carinamacustomer()

    End Sub
    Private Sub Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Add.Click
        If Add.Text = "Add" Then 'jk button1 d klik,mka button 1 berubah jd simpan & button4 jd batal
            TextBox1.Focus()
            Add.Text = "Simpan"
            Edit.Enabled = False
            Delete.Enabled = False
            Keluar.Text = "Batal"

        Else
            ' Call simpandata()   'jk tdak maka call simpan data, call bersih,call normal
            Call bersih()
            Call normal()
            Call bersih_datagrid()


        End If

    End Sub

    Private Sub Edit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Edit.Click
        If Edit.Text = "Edit" Then 'jk button1 d klik,mka button 1 berubah jd simpan & button4 jd batal
            TextBox1.Focus()
            Edit.Text = "Simpan"
            Add.Enabled = False
            Delete.Enabled = False
            Keluar.Text = "Batal"

        Else
            Call simpandata()   'jk tdak maka call simpan data, call bersih,call normal
            Call bersih()
            Call normal()
            Call bersih_datagrid()

        End If

    End Sub

    Private Sub Delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delete.Click
        If Delete.Text = "Delete" Then 'jk button1 d klik,mka button 1 berubah jd simpan & button4 jd batal
            TextBox1.Focus()
            Delete.Text = "Ok"
            Add.Enabled = False
            Edit.Enabled = False
            Keluar.Text = "Batal"

        Else
            Call simpandata()   'jk tdak maka call simpan data, call bersih,call normal
            Call bersih()

            Call normal()
            Call bersih_datagrid()

        End If

    End Sub

    Private Sub Keluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Keluar.Click
        If Keluar.Text = "Batal" Then
            Call normal()
            Call bersih()
            Call bersih_datagrid()
            TextBox1.Focus()
        Else
            Me.Close() 'untuk menutup form diri sendiri'
        End If
    End Sub

    Private Sub DG1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DG1.CellClick
        baris = DG1.CurrentRow.Index

        'untuk menentukan kolom yang mana
        If DG1.Columns(e.ColumnIndex).Name = "Kode Barang" Then
            kolom = 1
        Else
            If DG1.Columns(e.ColumnIndex).Name = "Nama Barang" Then
                kolom = 2
            Else
                If DG1.Columns(e.ColumnIndex).Name = "Harga" Then
                    kolom = 3
                Else
                    If DG1.Columns(e.ColumnIndex).Name = "Qty" Then
                        kolom = 4
                    Else
                        kolom = 5
                    End If
                End If


            End If
        End If
        If kolom = 5 Then
            If Add.Text = "Simpan" Then
                'dgv1.Rows.Add()
                Call caristatusheader()
                If statusheader = "T" Then
                    Call simpan_datagridview()
                    Call penjumlahan()
                    Call updateTOTAL()
                Else
                    Call simpandata()
                    Call simpan_datagridview()
                    Call penjumlahan()
                    Call updateTOTAL()
                End If

            Else
                If Edit.Text = "Simpan" Then
                    Call simpan_datagridview()
                    Call penjumlahan()
                Else
                    If Delete.Text = "Ok" Then
                        Call simpan_datagridview()
                        Call penjumlahan()
                    End If
                End If
            End If
        End If
    End Sub


    Private Sub DG1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DG1.CellEnter
        ' untuk menunjukan kolom yang mana
        If kolom = 1 Then

            'untuk mengambil nilai dari cell datagridview
            kodebrg = DG1.Rows.Item(baris).Cells(0).Value

            ' memanggil method untuk menampilkan data barang
            ' Call tampilkan_data_barang()

            'menentukan posisi listbox
            'Call posisilist2()

        End If

        'If kolom = 2 Then

        'End If

        If kolom = 3 Then

        End If


        If kolom = 4 Then



            'isi total harga
            DG1.Rows.Item(baris).Cells(4).Value = Val(DG1.Rows.Item(baris).Cells(3).Value) * Val(DG1.Rows.Item(baris).Cells(2).Value)
        End If
        Call nomorOtomatis()

        'isi total harga
        'DataGridView1.Rows.Item(baris).Cells(4).Value = Val(DataGridView1.Rows.Item(baris).Cells(3).Value) * Val(DataGridView1.Rows.Item(baris).Cells(2).Value)

    End Sub
    Private Sub penjumlahan()
        Call koneksi()
        Tampil5.Connection = Dtbase
        Tampil5.CommandType = CommandType.Text
        Tampil5.CommandText = "SELECT SUM(totalharga) AS subtotal FROM Invoice_D WHERE noInvo_H = '" & Trim(TextBox1.Text) & "'"
        Tampilkan = Tampil5.ExecuteReader
        If Tampilkan.HasRows = True Then
            Do While Tampilkan.Read()
                If IsDBNull(Tampilkan("subtotal")) Then
                Else
                    TextBox6.Text = Format(Tampilkan("subtotal"), "###,###,###")
                    TextBox7.Text = Format(Tampilkan("subtotal"), "###,###,###") * 0.1
                    TextBox5.Text = Format(Tampilkan("subtotal"), "###,###,###") + Val(TextBox7.Text)

                End If
            Loop
        End If
        'Tampil5.Connection = Database
        'Tampil5.CommandType = CommandType.Text
        'Tampil5.CommandText = "SELECT SUM(totalharga) AS subtotal FROM Detailinvoice WHERE NoinvoiceH = '" & Trim(TextBox1.Text) & "'"
        'Tampilkan3 = Tampil5.ExecuteReader
        'If Tampilkan3.HasRows = True Then
        '    Do While Tampilkan3.Read()
        '        If IsDBNull(Tampilkan3("subtotal")) Then
        '        Else
        '            TextBox7.Text = Format(Tampilkan3("subtotal"), "###,###,###")




    End Sub

    Private Sub updateTOTAL()
        Tampil.Connection = Dtbase
        Tampil.CommandType = CommandType.Text
        Tampil.CommandText = "update Invoice_H set total= " & Val(TextBox5.Text) & " where noInvo='" & Trim(TextBox1.Text) & "'"
        Tampil.ExecuteNonQuery()
    End Sub

    Private Sub Print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Print.Click
        noprint = TextBox1.Text
        lap_in.Show()
    End Sub

    Private Sub DG1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DG1.CellContentClick

    End Sub
End Class









Senin, 17 November 2014

Cara Membuat Surat Jalan menggunakan VB.Net

Public Class SJ
    Dim baris, kolom, Hargasatuan As Integer
    Dim kodebrg, namabrg, statusheader As String
    Private Sub SJ_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call koneksi()
        Call isicombo()
        Call settingdatagrid()
        Call tampilkan_detail_SJ()
    End Sub
    Private Sub simpandata()
        If Trim(TextBox1.Text) = "" Then Exit Sub
        If Trim(TextBox2.Text) = "" Then Exit Sub
        If Trim(ComboBox1.Text) = "" Then Exit Sub


        If Add.Text = "Simpan" Then
            Tampil.Connection = Dtbase
            Tampil.CommandType = CommandType.Text
            Tampil.CommandText = "insert into SJ_H(noSJ,tglSJ,kdcust,noso,tglEntry, useridd) values ('" & Trim(TextBox1.Text) & "', '" & DateTimePicker1.Value & "','" & TextBox2.Text & "','" & Microsoft.VisualBasic.Left(ComboBox1.Text, 5) & "','" & tglskg & "', '" & nmorang & "' )"
            Tampil.ExecuteNonQuery()
        Else
            If Edit.Text = "Simpan" Then
                Tampil.Connection = Dtbase
                Tampil.CommandType = CommandType.Text
                Tampil.CommandText = "update SJ_H set tglSJ='" & DateTimePicker1.Value & "',kdcust='" & TextBox2.Text & "',noSO='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 5) & "',tglEntry='" & tglskg & "', useridd='" & nmorang & "' where noSJ='" & Trim(TextBox1.Text) & "'"
                Tampil.ExecuteNonQuery()

            Else
                If Delete.Text = "Ok" Then
                    'Untuk menghapus detail SO
                    Tampil.Connection = Dtbase
                    Tampil.CommandType = CommandType.Text
                    Tampil.CommandText = "Delete from SJ_D where noSJ_H='" & Trim(TextBox1.Text) & "'"
                    Tampil.ExecuteNonQuery()
                    'Untuk menghapus header SO
                    Tampil.Connection = Dtbase
                    Tampil.CommandType = CommandType.Text
                    Tampil.CommandText = "Delete from SJ_H where noSJ='" & Trim(TextBox1.Text) & "'"
                    Tampil.ExecuteNonQuery()
                    Call settingdatagrid()


                Else

                End If
            End If

        End If

    End Sub
    Private Sub caristatusheader()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from SJ_H where noSJ='" & Trim(TextBox1.Text) & "'"
        Tampilkan = Tampil2.ExecuteReader

        If Tampilkan.HasRows = True Then
            statusheader = "T"
        Else
            statusheader = "F"

        End If
    End Sub

    Private Sub bersih()
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        ComboBox1.Text = ""
    End Sub
    Private Sub normal()
        Add.Text = "Add"
        Edit.Text = "Edit"
        Delete.Text = "Delete"
        Keluar.Text = "Exit"
        Add.Enabled = True
        Edit.Enabled = True
        Delete.Enabled = True
        Keluar.Text = "Exit"
    End Sub

    'Private Sub posisiList()
    '    ListBox1.Top = TextBox2.Top + TextBox2.Height
    '    ListBox1.Left = TextBox2.Left
    'End Sub

    'Private Sub caricustomer()
    '    Call koneksi()
    '    Tampil2.Connection = Dtbase
    '    Tampil2.CommandType = CommandType.Text
    '    Tampil2.CommandText = "select * from Customer where nmcust like '%" & Trim(TextBox2.Text) & "%' "
    '    Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

    '    If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
    '        ListBox1.Items.Clear()
    '        ListBox1.Visible = True
    '        Call posisiList()
    '        While Tampilkan.Read() 'membaca data 1 per 1
    '            ListBox1.Items.Add(Trim(Tampilkan("kdcust")) & " " & Trim(Tampilkan("nmcust")))
    '        End While
    '    End If

    'End Sub
    Private Sub carinamacustomer()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from Customer where kdcust ='" & Trim(TextBox2.Text) & "' "
        Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            While Tampilkan.Read() 'membaca data 1 per 1
                TextBox3.Text = Trim(Tampilkan("nmcust"))
            End While
        End If

    End Sub
    Private Sub caridata_H()
        Call koneksi()
        Tampil.Connection = Dtbase
        Tampil.CommandType = CommandType.Text
        Tampil.CommandText = "select * from SJ_H where noSJ='" & Trim(TextBox1.Text) & "'"
        Tampilkan = Tampil.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            While Tampilkan.Read() 'membaca data 1 per 1
                If IsDBNull(Tampilkan("noSJ")) Then '
                    TextBox1.Focus()
                Else
                    DateTimePicker1.Value = Tampilkan("tglSJ")
                    TextBox2.Text = Tampilkan("kdcust")
                    ComboBox1.Text = Tampilkan("noSO")

                    TextBox2.Focus()

                End If
            End While
        End If
    End Sub

    Private Sub isicombo()
        Call koneksi()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from SalesOrder "
        Tampilkan = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            ComboBox1.Items.Clear()
            While Tampilkan.Read() 'membaca data 1 per 1
                ComboBox1.Items.Add(Trim(Tampilkan("NoSO"))) '& " " & Trim(Tampilkan("nmcarabyr")))
            End While
        End If
    End Sub
    Private Sub settingdatagrid()
        'untuk menentukan jumlah kolom
        DG1.ColumnCount = 3
        DG1.RowCount = 5

        'untuk menentukan nama header kolom
        DG1.Columns(0).Name = "Kode Barang"
        DG1.Columns(1).Name = "Nama Barang"
        DG1.Columns(2).Name = "Qty"
       

        'menentukan lebar kolom
        DG1.Columns(0).Width = 120
        DG1.Columns(1).Width = 250
        DG1.Columns(2).Width = 100
       

        Call AddButtonColumn()

        'format kolom sesuai dengan keingninan
        'DG1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight
        'DG1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight
    End Sub
    Private Sub AddButtonColumn()
        'untuk membuat tombol button di datagridview
        Dim btn = New DataGridViewButtonColumn()
        DG1.Columns.Add(btn)
        btn.HeaderText = "Simpan"
        btn.Text = "Simpan"
        btn.Name = "btnsimpan"
        btn.UseColumnTextForButtonValue = True
    End Sub
    Private Sub simpan_datagridview()
        'cek sudah terisi semua belum
        If DG1.Rows.Item(baris).Cells(0).Value = "" Then Exit Sub
        If DG1.Rows.Item(baris).Cells(1).Value = "" Then Exit Sub
        If DG1.Rows.Item(baris).Cells(1).Value = "" Then Exit Sub
        ' If Trim(DG1.Rows.Item(baris).Cells(2).Value) = "" Then Exit Sub
        'If Trim(DG1.Rows.Item(baris).Cells(3).Value) = "" Then Exit Sub
        'If Trim(DG1.Rows.Item(baris).Cells(4).Value) = "" Then Exit Sub

        If Add.Text = "Simpan" Then
            Tampil.Connection = Dtbase
            Tampil.CommandType = CommandType.Text
            Tampil.CommandText = "insert into SJ_D(noSJ_H,kdbrg,qty,tglEntry,useridd) values ('" & Trim(TextBox1.Text) & "', '" & Trim(DG1.Rows.Item(baris).Cells(0).Value) & "'," & Val(DG1.Rows.Item(baris).Cells(2).Value) & ",'" & tglskg & "', '" & nmorang & "')"
            Tampil.ExecuteNonQuery()
            ' Call tampilkan_detail_SO()
        Else
            If Edit.Text = "Simpan" Then
                Tampil.Connection = Dtbase
                Tampil.CommandType = CommandType.Text
                Tampil.CommandText = "update SJ_D set qty = " & Val(DG1.Rows.Item(baris).Cells(2).Value) & "  where noSJ_H='" & Trim(TextBox1.Text) & "' and kdbrg= '" & Trim(DG1.Rows.Item(baris).Cells(0).Value) & "'"
                Tampil.ExecuteNonQuery()
                'Call tampilkan_detail_SO()
            Else
                If Delete.Text = "Ok" Then
                    Tampil.Connection = Dtbase
                    Tampil.CommandType = CommandType.Text
                    Tampil.CommandText = "Delete from SJ_D where noSJ_H='" & Trim(TextBox1.Text) & "' and kdbrg= '" & Trim(DG1.Rows.Item(baris).Cells(0).Value) & "'"
                    Tampil.ExecuteNonQuery()
                    Call bersihbaris()
                End If
            End If
        End If
    End Sub
    Private Sub bersihbaris()
        DG1.Rows.Item(baris).Cells(0).Value = ""
        DG1.Rows.Item(baris).Cells(1).Value = ""
        DG1.Rows.Item(baris).Cells(2).Value = ""
    End Sub

    Private Sub tampilkan_detail_SJ()
        Call koneksi()
        Dim n As Integer
        DG1.RowCount = 1
        DG1.RowCount = 10

        Tabel = "SELECT SODetail.kdbrg, Barang.nmbrg, SODetail.qty"
        Tabel = Tabel + "  FROM SODetail INNER JOIN Barang ON SODetail.kdbrg = Barang.kdbrg WHERE  SODetail.nosoH= '" & Trim(ComboBox1.Text) & "'"
        Tampil4.Connection = Dtbase
        Tampil4.CommandType = CommandType.Text
        'MsgBox(Tabel)
        Tampil4.CommandText = Tabel
        Tampilkan = Tampil4.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            n = 0
            While Tampilkan.Read() 'membaca data 1 per 1

                DG1.Rows.Item(n).Cells(0).Value = Tampilkan("kdbrg")
                DG1.Rows.Item(n).Cells(1).Value = Trim(Tampilkan("nmbrg"))
                DG1.Rows.Item(n).Cells(2).Value = Tampilkan("qty")


                n = n + 1

            End While
            'dgv1.RowCount = n + 1
            'Dim nn As Integer = dgv1.Rows.Add()
        End If
        'Dim nn As Integer = dgv1.Rows.Add()

        Tampilkan.Close()
        Tampil4.ExecuteReader.Close()
    End Sub
    Private Sub bersih_datagrid()
        DG1.RowCount = 1
        DG1.Refresh()
        DG1.RowCount = 10
    End Sub

    Private Sub DG1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DG1.CellClick
        baris = DG1.CurrentRow.Index

        'untuk menentukan kolom yang mana
        If DG1.Columns(e.ColumnIndex).Name = "Kode Barang" Then
            kolom = 0
        Else
            If DG1.Columns(e.ColumnIndex).Name = "Nama Barang" Then
                kolom = 1
            Else
                If DG1.Columns(e.ColumnIndex).Name = "Qty" Then
                    kolom = 2
                Else
                    kolom = 3
                    'Else
                    '    If dgv1.Columns(e.ColumnIndex).Name = "Qty" Then
                    '        kolom = 4
                    '    Else
                    '        kolom = 5
                    '    End If
                End If
            End If


        End If

        If kolom = 3 Then
            If Add.Text = "Simpan" Then
                'dgv1.Rows.Add()
                Call caristatusheader()
                If statusheader = "T" Then
                    Call simpan_datagridview()
                    'Call simpandata()
                Else
                    Call simpandata()
                    Call simpan_datagridview()


                End If

            Else
                If Edit.Text = "Simpan" Then
                    Call simpan_datagridview()

                Else
                    If Delete.Text = "Ok" Then
                        Call simpan_datagridview()

                    End If
                End If
            End If
        End If


    End Sub

    Private Sub DG1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DG1.CellContentClick

    End Sub

    Private Sub Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Add.Click
        If Add.Text = "Add" Then 'jk button1 d klik,mka button 1 berubah jd simpan & button4 jd batal
            TextBox1.Focus()
            Add.Text = "Simpan"
            Edit.Enabled = False
            Delete.Enabled = False
            Keluar.Text = "Batal"

        Else
            'Call simpandata()   'jk tdak maka call simpan data, call bersih,call normal
            Call bersih()
            Call normal()
            Call bersih_datagrid()


        End If

    End Sub

    Private Sub Edit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Edit.Click
        If Edit.Text = "Edit" Then 'jk button1 d klik,mka button 1 berubah jd simpan & button4 jd batal
            TextBox1.Focus()
            Edit.Text = "Simpan"
            Add.Enabled = False
            Delete.Enabled = False
            Keluar.Text = "Batal"

        Else
            Call simpandata()   'jk tdak maka call simpan data, call bersih,call normal
            Call bersih()
            Call normal()
            Call bersih_datagrid()

        End If

    End Sub

    Private Sub Delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delete.Click
        If Delete.Text = "Delete" Then 'jk button1 d klik,mka button 1 berubah jd simpan & button4 jd batal
            TextBox1.Focus()
            Delete.Text = "Ok"
            Add.Enabled = False
            Edit.Enabled = False
            Keluar.Text = "Batal"

        Else
            Call simpandata()   'jk tdak maka call simpan data, call bersih,call normal
            Call bersih()

            Call normal()
            Call bersih_datagrid()

        End If

    End Sub

    Private Sub Keluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Keluar.Click
        If Keluar.Text = "Batal" Then
            Call normal()
            Call bersih()
            'Call bersih_datagrid()
            TextBox1.Focus()
        Else
            Call bersih_datagrid()
            Me.Close() 'untuk menutup form diri sendiri'
        End If
    End Sub

    'Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    '    If Len(TextBox2.Text) > 0 Then
    '        Call caricustomer()
    '        Call carinamacustomer()
    '    End If
    'End Sub

    'Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    '    ListBox1.Visible = False
    '    ListBox1.Top = 12
    '    TextBox2.Text = Microsoft.VisualBasic.Left(ListBox1.Text, 4)
    'End Sub

    Private Sub ComboBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Click
        'Call koneksi()
        'Call tampilkan_detail_SJ()
        'Tampilkan2 = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data
        'Tampil2.Connection = Dtbase
        'Tampil2.CommandType = CommandType.Text
        'Tampil2.CommandText = "select * from SalesOrder where NoSO='" & Trim(ComboBox1.Text) & "'"

        'If Tampilkan2.HasRows = True Then 'klw ada record(data)maka akan bertipe true
        '    While Tampilkan2.Read() 'membaca data 1 per 1
        '        If IsDBNull(Tampilkan2("noso")) Then '
        '            TextBox1.Focus()
        '            'Call tampilkan_detail_SJ()
        '        Else

        '            TextBox2.Text = Tampilkan2("kdcust")



        '            TextBox2.Focus()

        '        End If


        '    End While
        'End If


    End Sub
    'select * SODetail.kbbrg, Barang.nmbrg , SJ_D.qty from SODetail inner join Barang inner join SJ_D on where SODetail.kdbrg=Barang.kdbrg and SODetail.nosoh
    '= '" & Trim(TextBox1.Text) & "'"

   
    Private Sub DG1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DG1.CellEnter
        ' untuk menunjukan kolom yang mana
        If kolom = 1 Then

            'untuk mengambil nilai dari cell datagridview
            kodebrg = DG1.Rows.Item(baris).Cells(0).Value

            ' memanggil method untuk menampilkan data barang
            ' Call tampilkan_data_barang()

            'menentukan posisi listbox
            'Call posisilist2()

        End If

        If kolom = 2 Then

        End If

        If kolom = 3 Then

        End If

        'isi total harga
        'DataGridView1.Rows.Item(baris).Cells(4).Value = Val(DataGridView1.Rows.Item(baris).Cells(3).Value) * Val(DataGridView1.Rows.Item(baris).Cells(2).Value)

    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = Chr(Keys.Enter) Then
            Call caridata_H()
            Call carinamacustomer()
            Call tampilkan_detail_SJ()

        End If

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If Len(TextBox1.Text) > 0 Then
            Call tampilkan_detail_SJ()
        End If

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Call koneksi()
        Call tampilkan_detail_SJ()
        Tampil2.Connection = Dtbase
        Tampil2.CommandType = CommandType.Text
        Tampil2.CommandText = "select * from SalesOrder where NoSO='" & Trim(ComboBox1.Text) & "'"
        Tampilkan2 = Tampil2.ExecuteReader 'tampilkan=menyimpan hasil pembacaan data

        If Tampilkan2.HasRows = True Then 'klw ada record(data)maka akan bertipe true
            While Tampilkan2.Read() 'membaca data 1 per 1
                If IsDBNull(Tampilkan2("NoSO")) Then '
                    'TextBox1.Focus()
                    'Call tampilkan_detail_SJ()
                Else

                    TextBox2.Text = Tampilkan2("kdcust")

                    ' TextBox2.Focus()

                End If


            End While
        End If
        Call carinamacustomer()
    End Sub

    Private Sub print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles print.Click
        noprint = TextBox1.Text
        Lap_SJ.Show()
    End Sub
End Class

 Cetak Surat Jalan
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Lap_SJ

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

        'Untuk mefilter data yang akan dicetak
        CRV1.SelectionFormula = "{SJ_H.noSJ} = '" & noprint & "'"
        CRV1.RefreshReport()

        'untuk setting form tampilan full dan posisi form
        Me.WindowState = FormWindowState.Maximized
        Me.StartPosition = FormStartPosition.CenterScreen 'posisi ditengah layar
    End Sub
    Private Sub ngeprint()
        'set variabel untuk buka laporan
        Dim cryRpt As New ReportDocument
        Dim crtableLogoninfos As New TableLogOnInfos
        Dim crtableLogoninfo As New TableLogOnInfo
        Dim crConnectionInfo As New ConnectionInfo
        Dim crTables As Tables
        Dim crTable As Table

        cryRpt.Load("D:\MAYA\MATERI KULIAH\semester 5\PPA\Penjualan2\Penjualan2\CrystalReportSJ.rpt")

        With crConnectionInfo
            .ServerName = "HP431-PC"
            .DatabaseName = "Penjualan2"
            .UserID = "sa"
            '.Password = "123456"
        End With

        crTables = cryRpt.Database.Tables 'untuk mengaktifkan
        For Each crTable In crTables
            crtableLogoninfo = crtableLogoninfo
            crtableLogoninfo.ConnectionInfo = crConnectionInfo
            crTable.ApplyLogOnInfo(crtableLogoninfo)
        Next
        Crv1.ReportSource = cryRpt
        Crv1.Refresh()
    End Sub
End Class