Kamis, 21 November 2013

Form Transaksi

Public Class Form_Transaksi
    Dim proses As New ClsKoneksi
    Dim tbcustomer As DataTable
    Dim tbTransaksi As DataTable
    Dim tbBarang As DataTable
    Dim SQL As String
    Dim ismember As Boolean

    Private Sub Form_Transaksi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        init_form()
    End Sub
    Private Sub init_form()
        ismember = False
        auto_code_customer()
        auto_code_transaksi()

        TxtTanggal.Text = Now.Date
        TxtKasir.Text = gl_user_login
        TxtNamaCustomer.Clear()
        TxtTelpCus.Clear()
        TxtIDBarang.Clear()
        TxtNamaBarang.Clear()
        TxtMerkBarang.Clear()
        TxtHargaBarang.Clear()
        TxtQty.Clear()
        TxtTotalBayar.Text = "0"
        TxtUangBayar.Clear()
        TxtUangKembali.Text = "0"
        TxtPotongan.Text = "0"
        TxtTotal.Text = "0"

        If DgTrans.RowCount <> 0 Then
            DgTrans.Rows.Clear()
        End If

        TxtIdTransaksi.Enabled = False
        TxtTanggal.Enabled = False
        TxtKasir.Enabled = False
        TxtCustomer.Enabled = False
        TxtNamaCustomer.Enabled = True
        TxtTelpCus.Enabled = True

        TxtIDBarang.Enabled = False
        TxtNamaBarang.Enabled = False
        TxtMerkBarang.Enabled = False
        TxtHargaBarang.Enabled = False

        TxtQty.Enabled = True
        TxtTotalBayar.Enabled = False
        TxtUangBayar.Enabled = False
        TxtUangKembali.Enabled = False
        TxtPotongan.Enabled = False
    End Sub

    Private Sub BtnCariBarang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCariBarang.Click
        Form_Cari_Barang.ShowDialog()
        If Form_Cari_Barang.DialogResult = Windows.Forms.DialogResult.OK Then
            TxtIDBarang.Text = gl_kode_Barang
            TxtNamaBarang.Text = gl_nama_Barang
            TxtMerkBarang.Text = gl_merk_Barang
            TxtHargaBarang.Text = gl_harga_Barang
            TxtQty.Focus()
        End If
    End Sub

    Private Sub BtnDeleteCustomer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDeleteCustomer.Click
        auto_code_customer()
        TxtNamaCustomer.Clear()
        TxtTelpCus.Clear()
        TxtNamaCustomer.Enabled = True
        TxtTelpCus.Enabled = True
        TxtNamaCustomer.Focus()
        ismember = False
        TxtMember.Visible = False
        get_total()
    End Sub
    Private Sub auto_code_customer()
        tbcustomer = proses.ExecuteQuery("Select * from tb_customer order by id_customer desc")
        If tbcustomer.Rows.Count = 0 Then
            TxtCustomer.Text = "CS001"
        Else
            With tbcustomer.Rows(0)
                TxtCustomer.Text = .Item("id_customer")
            End With

            TxtCustomer.Text = Val(Microsoft.VisualBasic.Mid(TxtCustomer.Text, 3, 3)) + 1
            If Len(TxtCustomer.Text) = 1 Then
                TxtCustomer.Text = "CS00" & TxtCustomer.Text & ""
            ElseIf Len(TxtCustomer.Text) = 2 Then
                TxtCustomer.Text = "CS0" & TxtCustomer.Text & ""
            ElseIf Len(TxtCustomer.Text) = 3 Then
                TxtCustomer.Text = "CS" & TxtCustomer.Text & ""
            End If
        End If

    End Sub
    Private Sub auto_code_transaksi()
        Dim dateno, tgl, bln, thn As String
        Dim code As String
        tgl = Format(Now.Date, "dd")
        bln = Format(Now.Date, "MM")
        thn = Format(Now.Date, "yyyy")

        dateno = "TRX" & bln & tgl & thn
        tbTransaksi = proses.ExecuteQuery("select id_transaksi from tb_transaksi order by cast(SUBSTRING(id_transaksi, 12,100) as INT) desc")
        If tbTransaksi.Rows.Count = 0 Then
            TxtIdTransaksi.Text = dateno & "1"

        Else
            With tbTransaksi.Rows(0)
                code = .Item("id_transaksi")

            End With
            Dim trans As String
            trans = dateno & Val(Integer.Parse(Microsoft.VisualBasic.Mid(code, 12))) + 1
            TxtIdTransaksi.Text = trans

        End If
    End Sub
    Private Sub add()
        If TxtIDBarang.Text = "" Then
            MsgBox("Tidak ada barang yang dibeli", MsgBoxStyle.Critical, "Error")
            BtnCariBarang.Focus()
            Return
        End If
        If TxtQty.Text = "" Then
            MsgBox("Silahkan isi jumlah beli", MsgBoxStyle.Critical, "Error")
            TxtQty.Focus()
            Return
        End If

        If TxtQty.Text = "0" Then
            MsgBox("jumlah beli minimal 1", MsgBoxStyle.Critical, "Error")
            TxtQty.Focus()
            Return
        End If

        If DgTrans.RowCount <> 0 Then
            Dim i As Integer
            For i = 0 To DgTrans.RowCount - 1
                If (TxtIDBarang.Text = DgTrans.Rows(i).Cells(0).Value.ToString) Then
                    MsgBox("Id barang " & TxtIDBarang.Text & " sudah ada", MsgBoxStyle.Critical, "Error")
                    Return
                End If
            Next

        End If
        tbBarang = proses.ExecuteQuery("select stock from tb_barang where id_barang = '" & TxtIDBarang.Text & "'")
        Dim stok As Integer
        If tbBarang.Rows.Count <> 0 Then
            stok = Val(tbBarang.Rows(0).Item("stock").ToString)
            If stok < Val(TxtQty.Text) Then
                MsgBox("Id barang " & TxtIDBarang.Text & "ada" & stok, MsgBoxStyle.Critical, "Stok tidak mencukupi")
                Return
            End If
        Else
            MsgBox("Data barang tidak valid", MsgBoxStyle.Critical, "Error")
            Return
        End If


        Dim row As String() = New String() {TxtIDBarang.Text, TxtNamaBarang.Text, TxtMerkBarang.Text, TxtHargaBarang.Text, TxtQty.Text, Val(TxtQty.Text) * Val(TxtHargaBarang.Text)}
        DgTrans.Rows.Add(row)
        TxtIDBarang.Clear()
        TxtNamaBarang.Clear()
        TxtHargaBarang.Clear()
        TxtMerkBarang.Clear()
        TxtQty.Clear()
        get_total()

    End Sub

    Private Sub BtnCariCus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCariCus.Click
        Form_Cari_Customer.ShowDialog()
        If Form_Cari_Customer.DialogResult = Windows.Forms.DialogResult.OK Then
            TxtCustomer.Text = gl_kode_Customer
            TxtNamaCustomer.Text = gl_nama_Customer
            TxtTelpCus.Text = gl_telepon_Customer
            TxtNamaCustomer.Enabled = False
            TxtTelpCus.Enabled = False
            If gl_status_Customer = "member" Then
                ismember = True
                TxtMember.Visible = Visible
            Else
                ismember = False
                TxtMember.Visible = False
            End If
            get_total()

        End If
    End Sub

    Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
        add()
    End Sub

    Private Sub TxtQty_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtQty.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack Or e.KeyChar = Chr(13)) Then e.Handled() = True
        If e.KeyChar = Chr(13) Then
            add()
        End If
    End Sub

    Private Sub TxtQty_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtQty.TextChanged

    End Sub
    Private Sub DgTrans_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DgTrans.CellContentClick

    End Sub
    Private Sub get_total()
        If DgTrans.RowCount <> 0 Then
            Dim i As Integer
            Dim total As Integer
            For i = 0 To DgTrans.RowCount - 1
                If (DgTrans.Rows(i).Cells(0).Value.ToString <> "") Then
                    total += Val(DgTrans.Rows(i).Cells(5).Value.ToString)
                End If
            Next
            TxtTotal.Text = total
        Else

            TxtPotongan.Text = "0"

        End If
        If ismember Then
            TxtPotongan.Text = Val(TxtTotal.Text) * (10 / 100)
        Else
            TxtPotongan.Text = "0"
        End If
        TxtTotalBayar.Text = Val(TxtTotal.Text) - Val(TxtPotongan.Text)
        TxtUangBayar.Enabled = True
    End Sub

    Private Sub DgTrans_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DgTrans.CellDoubleClick
        If e.RowIndex < 0 Then
            Exit Sub
        End If
        If MessageBox.Show("anda yakin ingin hapus", "Konfirmasi", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then
            Return
        Else
            DgTrans.Rows.RemoveAt(e.RowIndex)
            get_total()
        End If
    End Sub
    Private Sub save()
        If Val(TxtUangBayar.Text) < Val(TxtTotalBayar.Text) Then
            MsgBox("Uang bayar kurang ", MsgBoxStyle.Critical, "Error")
            Return
        Else
            TxtUangKembali.Text = Val(TxtUangBayar.Text) - Val(TxtTotalBayar.Text)
        End If

        If TxtCustomer.Text = "" Then
            MsgBox("Customer tidak boleh kosong ", MsgBoxStyle.Critical, "Error")
            Return
        End If

        If DgTrans.RowCount < 1 Then
            MsgBox("Barang yang dibeli tidak boleh kosong", MsgBoxStyle.Critical, "Error")
            Return
        End If

        If TxtUangBayar.Text = "" Then
            MsgBox("Silahkan bayar terlebih dahulu", MsgBoxStyle.Critical, "Error")
            Return
        End If
        Try
            SQL = "insert into tb_transaksi values ('" & TxtIdTransaksi.Text & "','" & CDate(Now) & "','" & TxtCustomer.Text & "','" & TxtPotongan.Text & "','" & TxtTotalBayar.Text & "','" & gl_user_login & "','" & TxtUangBayar.Text &"')"
            proses.ExecuteNonQuery(SQL)

            tbcustomer = proses.ExecuteQuery("select id_customer from tb_customer where id_customer = '" & TxtCustomer.Text & "'")
            If tbcustomer.Rows.Count = 0 Then
                SQL = "insert into tb_customer values ('" & TxtCustomer.Text & "','" & TxtNamaCustomer.Text & "' , null, '" & TxtTelpCus.Text & "','non member')"
                proses.ExecuteNonQuery(SQL)
            End If

            Dim i As Integer
            For i = 0 To DgTrans.RowCount - 1
                SQL = "insert into tb_detail_transaksi (id_transaksi,id_barang,jml_beli,harga_satuan,sub_total) values ('" & TxtIdTransaksi.Text & "','" & DgTrans.Rows(i).Cells(0).Value.ToString & "','" & DgTrans.Rows(i).Cells(4).Value.ToString & "','" & DgTrans.Rows(i).Cells(3).Value.ToString & "','" & DgTrans.Rows(i).Cells(5).Value.ToString & "')"
                proses.ExecuteNonQuery(SQL)

                SQL = "update tb_barang set stock = stock - " & Val(DgTrans.Rows(i).Cells(4).Value.ToString) & " where id_barang = '" & DgTrans.Rows(i).Cells(0).Value.ToString & "'"
                proses.ExecuteNonQuery(SQL)
            Next

            If MessageBox.Show("Transaksi berhasil, ingin cetak ?", "konfirmasi", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                Form_Cetak_Struk.cetak_struk1.SetParameterValue("id_transaksi", TxtIdTransaksi.Text)
                Form_Cetak_Struk.Show()
            End If

            init_form()
        Catch ex As Exception
            MsgBox(ex.ToString)

        End Try

    End Sub
    Private Sub cetak(ByVal idtrans As String)
        SQL = " SELECT tb_transaksi.id_transaksi, tb_transaksi.tgl_transaksi, tb_transaksi.id_customer, tb_customer.nm_customer, tb_customer.no_telp, " & _
                                                                                                                                                    "tb_detail_transaksi.id_barang, tb_barang.nm_barang, tb_supplier.nama_supplier, tb_barang.hrg_barang, tb_detail_transaksi.jml_beli, " & _
                                                                                                                                                    " tb_detail_transaksi.sub_total, tb_transaksi.total_bayar " & _
                                                                                                                                                    "FROM tb_detail_transaksi INNER JOIN " & _
                                                                                                                                               "tb_transaksi ON tb_detail_transaksi.id_transaksi ="
        'tbTransaksi.id_transaksi INNER JOIN " & _
        '                                                                                                                                            "tb_customer ON tb_transaksi.id_customer =
        'tb_customer.id_customer INNER JOIN " & _
        '                                                                                                                                            "tb_barang ON tb_detail_transaksi.id_barang =
        'tb_barang.id_barang(" & _")
        '                                                                                                                                            "left join tb_supplier on tb_barang.merk_barang =
        'tb_supplier.id_supplier(" & _")
        '                                                                                                                                            " where tb_transaksi.id_transaksi = '" & idtrans & "'"
        'tbTransaksi = proses.ExecuteQuery(SQL)
        'Dim objRpt As New cetakTrans
        'objRpt.SetDataSource(tbTransaksi)
        'reportViewer.Crpt.ReportSource = objRpt
        'reportViewer.Crpt.Refresh()
        'reportViewer.ShowDialog()
    End Sub

    Private Sub TxtUangBayar_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtUangBayar.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack Or e.KeyChar = Chr(13)) Then e.Handled() = True
        If e.KeyChar = Chr(13) Then
            save()
        End If
    End Sub

    Private Sub BtnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCetak.Click
        save()
    End Sub

    Private Sub TxtTelpCus_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtTelpCus.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True
    End Sub

    Private Sub Label19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label19.Click

    End Sub

    Private Sub TxtKasir_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtKasir.TextChanged

    End Sub
End Class

Tidak ada komentar:

Posting Komentar