Rabu, 25 Juli 2012

Aplikasi Zakat Menggunakan Vb.net

hai ketemu lagi ama gw... kli ini gw mau ngepos tentang aplikasi bikinan gw yaitu aplikasi untuk manghitung zakat dan mencetak kwitansinya bagi yg udah bisa yaa gak usah diliat haha hahaha gw cma berbagi sdikit ilmu gw ini screen shootnya:







dan ini codingnya :
Imports System.Drawing.Printing
Imports System.Data.OleDb
Public Class Form1
    Public zu As Long
    Public zb As Decimal
    Private PageNumber As Integer
    Private Offset As Integer
    Private PrintFont As New System.Drawing.Font("Tahoma", 9, Drawing.FontStyle.Bold)
    Private PaperSize As New System.Drawing.Printing.PaperSize("custom Size", 850, 450)
    Private Conn As OleDbConnection = Nothing
    Private cmd As OleDbCommand = Nothing
    Private sql As String = Nothing
    Private reader As OleDbDataReader = Nothing
    Private da As OleDbDataAdapter = Nothing
    Function Connect()
        If Not Conn Is Nothing Then
            Conn.Close()
        End If
        Conn.Open()
        Return Conn
    End Function
    Function Closedd()
        Conn.Close()
        Return Conn
    End Function
    Sub uang()
        Dim PrintPreview As New System.Windows.Forms.PrintPreviewDialog

        pruang.DocumentName = "Kwitansi"
        pruang.DefaultPageSettings.PaperSize = PaperSize

        PrintPreview.Document = pruang
        PrintPreview.Left = 0
        PrintPreview.Top = 0
        PrintPreview.Height = My.Computer.Screen.Bounds.Height
        PrintPreview.Width = My.Computer.Screen.Bounds.Width
        PrintPreview.PrintPreviewControl.Zoom = 1
        PrintPreview.ShowDialog()
    End Sub
    Sub przm()
        Dim PrintPreview As New System.Windows.Forms.PrintPreviewDialog

        zm.DocumentName = "Kwitansi"
        zm.DefaultPageSettings.PaperSize = PaperSize

        PrintPreview.Document = zm
        PrintPreview.Left = 0
        PrintPreview.Top = 0
        PrintPreview.Height = My.Computer.Screen.Bounds.Height
        PrintPreview.Width = My.Computer.Screen.Bounds.Width
        PrintPreview.PrintPreviewControl.Zoom = 1
        PrintPreview.ShowDialog()
    End Sub
    Sub beras()
        Dim PrintPreview As New System.Windows.Forms.PrintPreviewDialog

        prberas.DocumentName = "Kwitansi"
        prberas.DefaultPageSettings.PaperSize = PaperSize

        PrintPreview.Document = prberas
        PrintPreview.Left = 0
        PrintPreview.Top = 0
        PrintPreview.Height = My.Computer.Screen.Bounds.Height
        PrintPreview.Width = My.Computer.Screen.Bounds.Width
        PrintPreview.PrintPreviewControl.Zoom = 1
        PrintPreview.ShowDialog()
    End Sub
    Sub prcampur()
        Dim PrintPreview As New System.Windows.Forms.PrintPreviewDialog

        campur.DocumentName = "Kwitansi"
        campur.DefaultPageSettings.PaperSize = PaperSize

        PrintPreview.Document = campur
        PrintPreview.Left = 0
        PrintPreview.Top = 0
        PrintPreview.Height = My.Computer.Screen.Bounds.Height
        PrintPreview.Width = My.Computer.Screen.Bounds.Width
        PrintPreview.PrintPreviewControl.Zoom = 1
        PrintPreview.ShowDialog()
    End Sub
    Sub bersih()
        Dim Ctl As Control
        Dim lbl As Control
        For Each Ctl In Me.Controls
            If TypeOf Ctl Is TextBox Then Ctl.Text = ""
        Next
        For Each lbl In Me.Controls
            If TypeOf lbl Is Label Then lbl.Text = ""
        Next
    End Sub
    Public Function Terbilang(ByVal nilai As Long) As String
        Dim bilangan As String() = {"", "satu", "dua", "tiga", "empat", "lima", _
        "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"}
        If nilai < 12 Then
            Return " " & bilangan(nilai)
        ElseIf nilai < 20 Then
            Return Terbilang(nilai - 10) & " belas"
        ElseIf nilai < 100 Then
            Return (Terbilang(CInt((nilai \ 10))) & " puluh") + Terbilang(nilai Mod 10)
        ElseIf nilai < 200 Then
            Return " seratus" & Terbilang(nilai - 100)
        ElseIf nilai < 1000 Then
            Return (Terbilang(CInt((nilai \ 100))) & " ratus") + Terbilang(nilai Mod 100)
        ElseIf nilai < 2000 Then
            Return " seribu" & Terbilang(nilai - 1000)
        ElseIf nilai < 1000000 Then
            Return (Terbilang(CInt((nilai \ 1000))) & " ribu") + Terbilang(nilai Mod 1000)
        ElseIf nilai < 1000000000 Then
            Return (Terbilang(CInt((nilai \ 1000000))) & " juta") + Terbilang(nilai Mod 1000000)
        ElseIf nilai < 1000000000000 Then
            Return (Terbilang(CInt((nilai \ 1000000000))) & " milyar") + Terbilang(nilai Mod 1000000000)
        ElseIf nilai < 1000000000000000 Then
            Return (Terbilang(CInt((nilai \ 1000000000000))) & " trilyun") + Terbilang(nilai Mod 1000000000000)
        Else
            Return ""
        End If
    End Function
  

    Private Sub pruang_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pruang.PrintPage
        e.Graphics.DrawImage(PictureBox1.Image, 0, 0)
        e.Graphics.DrawString("Kwitansi Zakat Fitrah 1433 H", New System.Drawing.Font("Bookman Old Style", 18, Drawing.FontStyle.Bold), Drawing.Brushes.Black, 250, 160)
        e.Graphics.DrawString("No: " & lblfak.Text, PrintFont, Drawing.Brushes.Black, 40, 190)
        e.Graphics.DrawString("Telah Diterima Dari " & txtnama.Text, PrintFont, Drawing.Brushes.Black, 40, 210)
        e.Graphics.DrawString("Sebesar: Rp. " & lbljml.Text, PrintFont, Drawing.Brushes.Black, 40, 230)
        e.Graphics.DrawString(Terbilang(lbljml.Text) & " Rupiah", PrintFont, Drawing.Brushes.Black, 80, 265)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 60, 250)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 65, 260)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 70, 270)
        If txtinfak.Text = "" Then
            e.Graphics.DrawString("Untuk Pembayaran Zakat Fitrah Rp. " & txjmu.Text & " (" & txtuang.Text & " Jiwa)", PrintFont, Drawing.Brushes.Black, 40, 300)
        Else
            e.Graphics.DrawString("Untuk Pembayaran Zakat Fitrah Rp. " & txjmu.Text & " (" & txtuang.Text & " Jiwa) & Infak Rp." & txtinfak.Text, PrintFont, Drawing.Brushes.Black, 40, 300)
        End If
        e.Graphics.DrawString("Parung Panjang, " & ststgl.Text, PrintFont, Drawing.Brushes.Black, 600, 320)
        e.Graphics.DrawString("Ust Syahroni ", PrintFont, Drawing.Brushes.Black, 660, 400)
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        stsjam.Text = TimeOfDay
        ststgl.Text = Format(Now, "dd MMMM yyyy")
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Conn Is Nothing Then Conn.Close()
        Dim ConnString As String
        ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\zakat.accdb"
        Try
            Conn = New OleDbConnection(ConnString)
            Conn.Open()
            Me.Text = "Zakat[Connected]"
            Conn.Close()
        Catch ex As Exception
            MessageBox.Show("Koneksi Error : " + ex.Message)
        End Try
        Timer1.Start()
    End Sub

    Private Sub txtnama_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnama.KeyPress
        If e.KeyChar = Chr(13) Then
            Dim DR As DataRow
            Dim s As String
            DR = SQLTable("select max(right(nofak,4)) as Nomor from tbzakatfitrah").Rows(0)

            'jika berisi null atau tdk ditemukan
            If DR.IsNull("Nomor") Then
                s = "ZF-14330001" 'member nilai awal
            Else
                s = "ZF-1433" & Format(DR("Nomor") + 1, "0000")
            End If

            lblfak.Text = s
        End If
    End Sub

    Private Sub txtberas_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtberas.KeyPress
        If e.KeyChar = Chr(13) Then
            Dim beras As Decimal = 3.5
            Dim mb As Decimal = txtberas.Text

            zb = mb * beras
            txtjb.Text = zb
        End If
    End Sub

 
    Private Sub btnok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnok.Click
        Connect()
        Dim insertquery As String
        Dim Hasil As Integer
        Dim cmd As OleDbCommand
        If txtuang.Text = "" Then
            insertquery = ("insert into tbzakatfitrah(nofak,nama,beras,wzberas,rt,alamat,jumlah,infak)Values('" & lblfak.Text & "','" & txtnama.Text & "','" & txtjb.Text & "','" & txtberas.Text & "','" & cmbrt.Text & "','" & txtalmat.Text & "','" & lbljml.Text & "','" & txtinfak.Text & "')")
            Try
                cmd = New OleDbCommand(insertquery, Conn)
                Hasil = cmd.ExecuteNonQuery
                If Hasil > 0 Then
                    MessageBox.Show("Record Berhasil Dimasukan", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    beras()
                End If
            Catch ex As OleDbException
                MessageBox.Show("Failed : " & ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        ElseIf txtberas.Text = "" Then
            insertquery = ("insert into tbzakatfitrah(nofak,nama,uang,wzuang,rt,alamat,jumlah,infak)Values('" & lblfak.Text & "','" & txtnama.Text & "','" & txjmu.Text & "','" & txtuang.Text & "','" & cmbrt.Text & "','" & txtalmat.Text & "','" & lbljml.Text & "','" & txtinfak.Text & "')")
            Try
                cmd = New OleDbCommand(insertquery, Conn)
                Hasil = cmd.ExecuteNonQuery
                If Hasil > 0 Then
                    MessageBox.Show("Record Berhasil Dimasukan", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    uang()
                End If
            Catch ex As OleDbException
                MessageBox.Show("Failed : " & ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        Else
            insertquery = ("insert into tbzakatfitrah(nofak,nama,uang,beras,wzberas,wzuang,rt,alamat,jumlah,infak)Values('" & lblfak.Text & "','" & txtnama.Text & "','" & txjmu.Text & "','" & txtjb.Text & "','" & txtberas.Text & "','" & txtuang.Text & "','" & cmbrt.Text & "','" & txtalmat.Text & "','" & lbljml.Text & "','" & txtinfak.Text & "')")
            Try
                cmd = New OleDbCommand(insertquery, Conn)
                Hasil = cmd.ExecuteNonQuery
                If Hasil > 0 Then
                    MessageBox.Show("Record Berhasil Dimasukan", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    prcampur()
                End If
            Catch ex As OleDbException
                MessageBox.Show("Failed : " & ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End If
       
        Closedd()
        bersih()
    End Sub

    Private Sub prberas_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prberas.PrintPage
        e.Graphics.DrawImage(PictureBox1.Image, 0, 0)
        e.Graphics.DrawString("Kwitansi Zakat Fitrah 1433 H", New System.Drawing.Font("Bookman Old Style", 18, Drawing.FontStyle.Bold), Drawing.Brushes.Black, 250, 160)
        e.Graphics.DrawString("No: " & lblfak.Text, PrintFont, Drawing.Brushes.Black, 40, 210)
        e.Graphics.DrawString("Telah Diterima Dari " & txtnama.Text, PrintFont, Drawing.Brushes.Black, 40, 230)
        e.Graphics.DrawString("Beras Sebanyak: " & txtjb.Text & "Liter", PrintFont, Drawing.Brushes.Black, 40, 250)
        If txtinfak.Text = "" Then
            e.Graphics.DrawString("Untuk Pembayaran Zakat " & txtberas.Text & " Orang", PrintFont, Drawing.Brushes.Black, 40, 270)
        Else
            e.Graphics.DrawString("Uang Sebesar: ", PrintFont, Drawing.Brushes.Black, 40, 270)
            e.Graphics.DrawString(Terbilang(txtinfak.Text) & " Rupiah", PrintFont, Drawing.Brushes.Black, 155, 270)
            e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 130, 255)
            e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 140, 265)
            e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 150, 275)
            e.Graphics.DrawString("Untuk Pembayaran Zakat " & txtberas.Text & " Orang & Infak Rp. " & txtinfak.Text, PrintFont, Drawing.Brushes.Black, 40, 300)
        End If
        e.Graphics.DrawString("Parung Panjang, " & ststgl.Text, PrintFont, Drawing.Brushes.Black, 600, 320)
        e.Graphics.DrawString("Ust Syahroni ", PrintFont, Drawing.Brushes.Black, 660, 400)
    End Sub



    Private Sub campur_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles campur.PrintPage
        Dim br As Integer = txtberas.Text
        Dim ua As Integer = txtuang.Text
        Dim tot As Integer = br + ua
        e.Graphics.DrawImage(PictureBox1.Image, 0, 0)
        e.Graphics.DrawString("Kwitansi Zakat Fitrah 1433 H", New System.Drawing.Font("Bookman Old Style", 18, Drawing.FontStyle.Bold), Drawing.Brushes.Black, 250, 160)
        e.Graphics.DrawString("No: " & lblfak.Text, PrintFont, Drawing.Brushes.Black, 40, 190)
        e.Graphics.DrawString("Telah Diterima Dari " & txtnama.Text, PrintFont, Drawing.Brushes.Black, 40, 210)
        e.Graphics.DrawString("Beras Sebanyak: " & txtjb.Text & " Liter", PrintFont, Drawing.Brushes.Black, 40, 230)
        e.Graphics.DrawString("Uang Sebesar: ", PrintFont, Drawing.Brushes.Black, 40, 265)
        e.Graphics.DrawString(Terbilang(lbljml.Text) & " Rupiah", PrintFont, Drawing.Brushes.Black, 155, 265)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 130, 250)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 140, 260)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 150, 270)
        If txtinfak.Text = "" Then
            e.Graphics.DrawString("Untuk Pembayaran Zakat Fitrah Rp" & txjmu.Text & "(" & txtuang.Text & " Jiwa) & Beras " & txtjb.Text & "Liter(" & txtberas.Text & " Jiwa)", PrintFont, Drawing.Brushes.Black, 40, 300)
        Else
            e.Graphics.DrawString("Untuk Pembayaran Zakat Fitrah Rp" & txjmu.Text & "(" & txtuang.Text & " Jiwa), Beras " & txtjb.Text & "Liter(" & txtberas.Text & " Jiwa) & Infak Rp." & txtinfak.Text, PrintFont, Drawing.Brushes.Black, 40, 300)
        End If
        e.Graphics.DrawString("Parung Panjang, " & ststgl.Text, PrintFont, Drawing.Brushes.Black, 600, 320)
        e.Graphics.DrawString("Ust Syahroni ", PrintFont, Drawing.Brushes.Black, 660, 400)
    End Sub

    Private Sub txtuang_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtuang.KeyPress
        If e.KeyChar = Chr(13) Then
            Dim zakat As Long = 27000
            Dim agt As Integer = txtuang.Text
            zu = zakat * agt
            lbljml.Text = zu
            txjmu.Text = zu
        End If
    End Sub

   
    Private Sub txtinfak_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtinfak.KeyPress
        If e.KeyChar = Chr(13) Then
            Dim infak As Long = txtinfak.Text
            Dim jt As Long = zu + infak
            lbljml.Text = jt
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Connect()
        Dim insertquery As String
        Dim Hasil As Integer
        Dim cmd As OleDbCommand
        insertquery = ("insert into tbzakatmaal(nofak,nama,nominal,rt,alamat,jumlah,infak,tgl)Values('" & lblnofak2.Text & "','" & txtnam2.Text & "','" & txtzm.Text & "','" & cmbrt2.Text & "','" & txtalmat2.Text & "','" & txtjmlzm.Text & "','" & txtinfak2.Text & "','" & ststgl.Text & "')")
        Try
            cmd = New OleDbCommand(insertquery, Conn)
            Hasil = cmd.ExecuteNonQuery
            If Hasil > 0 Then
                MessageBox.Show("Record Berhasil Dimasukan", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                przm()
            End If
        Catch ex As OleDbException
            MessageBox.Show("Failed : " & ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        txtalmat2.Text = ""
        txtnam2.Text = ""
        txtinfak2.Text = ""
        lblnofak2.Text = ""
        cmbrt2.Text = ""
        txtzm.Text = ""
        txtjmlzm.Text = ""
        Closedd()
    End Sub


    Private Sub txtnama_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtnama.TextChanged
        Dim i As Integer = txtnama.SelectionStart
        txtnama.Text = StrConv(txtnama.Text, VbStrConv.ProperCase)
        txtnama.SelectionStart = i
    End Sub

    Private Sub txtnam2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnam2.KeyPress
        If e.KeyChar = Chr(13) Then
            Dim DR As DataRow
            Dim s As String
            DR = SQLTable("select max(right(nofak,4)) as Nomor from tbzakatmaal").Rows(0)

            'jika berisi null atau tdk ditemukan
            If DR.IsNull("Nomor") Then
                s = "ZM-14330001" 'member nilai awal
            Else
                s = "ZM-1433" & Format(DR("Nomor") + 1, "0000")
            End If

            lblnofak2.Text = s
        End If
    End Sub

    Private Sub txtnam2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtnam2.TextChanged
        Dim i As Integer = txtnam2.SelectionStart
        txtnam2.Text = StrConv(txtnam2.Text, VbStrConv.ProperCase)
        txtnam2.SelectionStart = i
    End Sub

    Private Sub txtzm_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtzm.TextChanged
        txtjmlzm.Text = txtzm.Text
    End Sub

    Private Sub txtinfak2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtinfak2.KeyPress
        If e.KeyChar = Chr(13) Then
            Dim a As Long = txtzm.Text
            Dim i As Long = txtinfak2.Text
            Dim b As Long = a + i
            txtjmlzm.Text = b
        End If
    End Sub

    Private Sub zm_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles zm.PrintPage
        e.Graphics.DrawImage(PictureBox1.Image, 0, 0)
        e.Graphics.DrawString("Kwitansi Zakat Maal", New System.Drawing.Font("Bookman Old Style", 18, Drawing.FontStyle.Bold), Drawing.Brushes.Black, 300, 160)
        e.Graphics.DrawString("No: " & lblnofak2.Text, PrintFont, Drawing.Brushes.Black, 40, 190)
        e.Graphics.DrawString("Telah Diterima Dari " & txtnam2.Text, PrintFont, Drawing.Brushes.Black, 40, 210)
        e.Graphics.DrawString("Sebesar: Rp. " & txtjmlzm.Text, PrintFont, Drawing.Brushes.Black, 40, 230)
        e.Graphics.DrawString(Terbilang(txtjmlzm.Text) & " Rupiah", PrintFont, Drawing.Brushes.Black, 80, 265)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 60, 250)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 65, 260)
        e.Graphics.DrawString(StrDup(80, "_"), PrintFont, Drawing.Brushes.Black, 70, 270)
        If txtinfak2.Text = "" Or txtinfak2.Text = "0" Then
            e.Graphics.DrawString("Untuk Pembayaran Zakat Maal", PrintFont, Drawing.Brushes.Black, 40, 300)
        Else
            e.Graphics.DrawString("Untuk Pembayaran Zakat Maal & Infak", PrintFont, Drawing.Brushes.Black, 40, 300)
        End If
        e.Graphics.DrawString("Parung Panjang, " & ststgl.Text, PrintFont, Drawing.Brushes.Black, 600, 320)
        e.Graphics.DrawString("Ust Syahroni ", PrintFont, Drawing.Brushes.Black, 660, 400)
    End Sub
End Class
sekian dari saya semoga bermanfaat......

1 komentar: