Sistem Informasi Penjualan Barang pada Apotek K-24

  

LAMPIRAN

Modul Utama

  Option Explicit Public KoneksiDB As New ADODB.Connection Public Rs_Jenis As ADODB.Recordset Public Rs_Barang As ADODB.Recordset Public Rs_StokBarang As ADODB.Recordset Public Rs_Penjualan As ADODB.Recordset Public Rs_CetakPenjualan As ADODB.Recordset Public Rs_PreviewPenjualan As ADODB.Recordset Public Rs As ADODB.Recordset Public StrAkses As String Public SqlInsert As String Public SqlDelete As String Public SqlUpdate As String Public PenggunaID, PenggunaNm As String Public SQL As String Public Konfirmasi As String Public Status As String Public Sub BukaDatabase() StrAkses = "Provider=Microsoft.Jet.OLEDB.4.0;Persist " _ & "Security Info=False;Data Source=" _ & App.Path + "\DbBarang.mdb" On Error Resume Next If KoneksiDB.State = adStateOpen Then KoneksiDB.Close Set KoneksiDB = New ADODB.Connection KoneksiDB.Open StrAkses Else KoneksiDB.Open StrAkses End If Set Rs_Jenis = New ADODB.Recordset Rs_Jenis.Open "SELECT * FROM Jenis_Barang", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _

  & " FROM Barang, Jenis_Barang WHERE " _ & " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " ORDER BY Kode_Barang", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic Set Rs_StokBarang = New ADODB.Recordset Rs_StokBarang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _ & " FROM Barang, Jenis_Barang WHERE " _ & " AND Barang.Stok_Barang <> 0 " _ & " ORDER BY Kode_Barang", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic Set Rs_Pengguna = New ADODB.Recordset Rs_Pengguna.Open "SELECT * FROM Pengguna", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic Set Rs_Penjualan = New ADODB.Recordset Rs_Penjualan.Open "SELECT * FROM Penjualan", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic End Sub Public Function TglSkrg(tgl As Date) As String TglSkrg = Format(Day(tgl), "00") & "/" _ & Format(Month(tgl), "00") & "/" _ & Format(Year(tgl)) End Function

  Modul Cetak

  Public Type arrCetak KodeBarang As String NamaBarang As String TanggalTerima As Date Jumlah As Long HargaSatuan As Long Total As Long End Type Public tabCetak() As arrCetak '# Tulisan rata kiri Function RKiri(NData, CFormat) As String If NData > 0 Then 'Jika NData bilangan positif RKiri = Format(NData, CFormat)

  'RKiri = RKiri + Space(Len(CFormat) - Len(RKiri)) Else 'Jika NData merupakan string kosong RKiri = Format(NData, CFormat) RKiri = "" + Space(Len(CFormat) - 1) End If End Function '# Tulisan rata kanan Function RKanan(NData, CFormat) As String If NData > 0 Then 'Jika NData bilangan positif RKanan = RKanan + Space(Len(CFormat) - Len(RKanan)) Else 'Jika NData merupakan bilangan nol RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - 1) + "0" End If End Function Public Function IsPrinterInstalled() As Boolean On Error Resume Next Dim strDummy As String strDummy = Printer.DeviceName If Err.Number Then IsPrinterInstalled = False Else IsPrinterInstalled = True End If End Function

  Form Menu Utama

  Option Explicit Private Sub Form_Paint() Dim lebar As Single Dim tinggi As Single Dim x As Single Dim y As Single lebar = Picture1.ScaleWidth tinggi = Picture1.ScaleHeight y = Toolbar1.Height Do While y < ScaleHeight x = 0 Do While x < ScaleWidth PaintPicture Picture1.Picture, _ x, y, lebar, tinggi x = x + lebar Loop y = y + tinggi

  Loop End Sub Private Sub Form_Unload(Cancel As Integer) Dim Tanya Tanya = MsgBox("Keluar dari Sistem?", vbQuestion + vbYesNo) If Tanya = vbYes Then End Else End If End Sub Private Sub mnuGraJualBln_Click() cr.ReportFileName = App.Path + "\rptGraJualBln.rpt" cr.DataFiles(0) = App.Path + "\DbBarang.mdb" cr.DiscardSavedData = True cr.Destination = crptToWindow cr.WindowState = crptMaximized cr.Action = 28 End Sub Private Sub mnuKeluar_Click() Dim Tanya Tanya = MsgBox("Keluar Dari Program Ini?", vbQuestion + vbYesNo, "Keluar") If Tanya = vbYes Then End Else End If End Sub Private Sub mnuJualPeriode_Click() frmLapJualPeriode.Show 1 End Sub Private Sub mnuJualTgl_Click() frmLapJualTgl.Show 1 End Sub Private Sub mnuLapBrgJualAntrTgl_Click() frmLapBrgAntrTgl.Show 1 End Sub

  Private Sub mnuLapJlhBrgJualBln_Click() frmLapJlhBrgJualBln.Show 1 End Sub Private Sub mnuLapJualAntrTgl_Click() frmLapJlAntrTgl.Show 1 End Sub Private Sub mnuLapSelBrgJual_Click() cr.DataFiles(0) = App.Path + "\DbBarang.mdb" cr.DiscardSavedData = True cr.Destination = crptToWindow cr.WindowState = crptMaximized cr.Action = 28 End Sub Private Sub mnuPengguna_Click() frmPengguna.Show 1 End Sub Private Sub mnuJenis_Click() frmJenis.Show 1, FrmUtama End Sub Private Sub mnuLapJual_Click() With rptLapPenjualan .Sections("Section4").Controls("Label5").Caption = _ Format(Date, "dd MMMM yyyy") .Show 1 End With End Sub Private Sub mnuLapBarang_Click() With rptBarang .Sections("Section4").Controls("Label5").Caption = _ Format(Date, "dd MMMM yyyy") .Show 1 End With End Sub Private Sub mnuLogin_Click() If FrmUtama.mnuLogin.Caption = "Login" Then frmLogin.Show 1 Else mnuLaporan.Enabled = False mnuBarang.Enabled = False mnuJenis.Enabled = False mnuTamStok.Enabled = False mnuPengguna.Enabled = False mnuTransaksi.Enabled = False Toolbar1.Enabled = False Me.mnuLogin.Caption = "Login" End If End Sub frmBarang.Show 1, FrmUtama End Sub Private Sub mnuBarangJenis_Click() frmLapBarangJenis.Show 1 End Sub Private Sub mnuTamStok_Click() frmTambahStok.Show 1 End Sub Private Sub mnuTransJual_Click() frmJual.Show 1, FrmUtama End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next Select Case Button.Index Case 1: frmJenis.Show 1 Case 2: frmBarang.Show 1 Case 4: frmTambahStok.Show 1 Case 5: frmJual.Show 1 Case 7: frmLogin.Show 1 End Select End Sub

  Form Menu Login

  Option Explicit Dim MaxLogin As Integer Private Sub Form_Load() Skin1.LoadSkin App.Path & "/skin/chizh.skn"

  Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3 Call BukaDatabase cmbStatus.AddItem ("KASIR") cmbStatus.AddItem ("ADMIN") End Sub Private Sub TbLogin_Click() If txtUser.Text = "" Then MsgBox "USER ID MASIH KOSONG !", _ vbCritical + vbOKOnly, "Error" txtUser.SetFocus ElseIf txtPwd.Text = "" Then MsgBox "PASSWORD MASIH KOSONG !", _ vbCritical + vbOKOnly, "Error" txtPwd.SetFocus Else SQL = "" SQL = "SELECT * FROM Pengguna " _ & "WHERE UserID='" & txtUser.Text & "' " _ & " AND PassID='" & txtPwd.Text & "'" _ & " AND Status='" & cmbStatus.Text & "'" Set Rs_Pengguna = KoneksiDB.Execute(SQL) If Not Rs_Pengguna.BOF Then If Rs_Pengguna!Status = "ADMIN" Then Unload Me FrmUtama.Enabled = True FrmUtama.Show FrmUtama.mnuLaporan.Enabled = True FrmUtama.mnuBarang.Enabled = True FrmUtama.mnuJenis.Enabled = True FrmUtama.mnuPengguna.Enabled = True FrmUtama.mnuTransaksi.Enabled = True FrmUtama.mnuTamStok.Enabled = True FrmUtama.mnuTransJual.Enabled = True FrmUtama.mnuJualPeriode.Enabled = True FrmUtama.mnuLapJual.Enabled = True FrmUtama.mnuJualTgl.Enabled = True FrmUtama.mnuLapSelBrgJual.Enabled = True FrmUtama.mnuLapJualAntrTgl.Enabled = True FrmUtama.mnuLapBrgJualAntrTgl.Enabled = True FrmUtama.mnuLapJlhBrgJualBln.Enabled = True FrmUtama.mnuGraJualBln.Enabled = True FrmUtama.Toolbar1.Enabled = True

  Else Unload Me FrmUtama.Enabled = True FrmUtama.Show FrmUtama.mnuLaporan.Enabled = True FrmUtama.mnuLapBarang.Enabled = True FrmUtama.mnuBarangJenis.Enabled = True FrmUtama.mnuTransJual.Enabled = True FrmUtama.mnuTamStok.Enabled = False FrmUtama.mnuJualPeriode.Enabled = False FrmUtama.mnuJualTgl.Enabled = False FrmUtama.mnuBarang.Enabled = False FrmUtama.mnuJenis.Enabled = False FrmUtama.mnuPengguna.Enabled = False FrmUtama.mnuTransaksi.Enabled = True FrmUtama.mnuLapJualAntrTgl.Enabled = False FrmUtama.mnuLapBrgJualAntrTgl.Enabled = False FrmUtama.mnuLapSelBrgJual.Enabled = False FrmUtama.mnuLapJlhBrgJualBln.Enabled = False FrmUtama.mnuGraJualBln.Enabled = False FrmUtama.Toolbar1.Enabled = False End If PenggunaID = Rs_Pengguna!UserId PenggunaNm = Rs_Pengguna!Nama With FrmUtama .StatusBar1.Panels(1).Text = Rs_Pengguna!Nama .StatusBar1.Panels(2).Text = "[" _ & Rs_Pengguna!Status & "]" .mnuLogin.Enabled = True .mnuLogin.Caption = "Logout" End With Unload Me Else ' Periksa, login hanya 3 kali ' 3x gagal pesan error ditampilkan If MaxLogin < 3 Then MsgBox "PASSWORD MASIH SALAH, SILAHKAN ULANGI LAGI!", _ vbCritical + vbOKOnly, "Error" txtPwd.Text = "" txtPwd.SetFocus MaxLogin = MaxLogin + 1 Else MsgBox "ANDA BUKAN USER YANG BERHAK!", _ vbCritical + vbOKOnly, "Error" End

  End If End If End If End Sub Private Sub TbTutup_Click() Dim pil As VbMsgBoxResult pil = MsgBox("Anda Yakin untuk keluar?", vbQuestion + vbYesNo, "Exit") If (pil = vbYes) Then Unload Me End Sub

  Form Menu Data Jenis

  Option Explicit Dim GridObjIndex As Byte Dim KodeJenis As String Private Sub Form_Load() Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3 Call BukaDatabase Call TampilGridData Call FormMati TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False End Sub Sub FormKosong() txtKode.Text = "" txtNama.Text = "" End Sub Sub FormHidup() txtKode.Enabled = True txtNama.Enabled = True End Sub Sub FormMati() txtKode.Enabled = False txtNama.Enabled = False End Sub Sub FormNormal()

  FormKosong FormMati TbTambah.Enabled = True TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False TbKeluar.Caption = "Keluar" End Sub Rs_Jenis.Requery Set Rs_Jenis = New ADODB.Recordset Set Rs_Jenis = New ADODB.Recordset Rs_Jenis.Open "SELECT * FROM Jenis_Barang", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic If Rs_Jenis.BOF Then KodeJenis = "K0001" Exit Sub Else Rs_Jenis.MoveLast KodeJenis = Rs_Jenis!Kode_Jenis KodeJenis = Right(KodeJenis, 4) KodeJenis = Val(KodeJenis) + 1 If Len(KodeJenis) > 4 Then MsgBox "Kode jenis baru melewati batas", _ vbCritical, "Error" Exit Sub End If End If KodeJenis = "K" & Format(KodeJenis, "0000") End Sub Sub AktifGridJenis() With GridJenis .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .RowHeightMin = 300 .Col = 1

  .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 800 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "NAMA JENIS" .ColWidth(2) = 6000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridData() Dim Baris As Integer GridJenis.Clear AktifGridJenis GridJenis.Rows = 2 Baris = 0 Call BukaDatabase If Rs_Jenis.BOF Then MsgBox "Tabel Jenis masih kosong!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub Else With Rs_Jenis .MoveFirst Do While Not .EOF On Error Resume Next Baris = Baris + 1 GridJenis.Rows = Baris + 1 GridJenis.TextMatrix(Baris, 0) = Baris GridJenis.TextMatrix(Baris, 1) = !Kode_Jenis GridJenis.TextMatrix(Baris, 2) = !Nama_Jenis .MoveNext Loop End With End If End Sub Private Sub GridJenis_DblClick() TbHapus.Enabled = True TbSimpan.Enabled = False

  TbUbah.Enabled = True TbKeluar.Caption = "Batal" TbTambah.Enabled = False Call FormHidup txtNama.SetFocus GridObjIndex = GridJenis.Row Set Rs_Jenis = New ADODB.Recordset & " WHERE Kode_Jenis='" _ & GridJenis.TextMatrix(GridObjIndex, 1) & "' " _ , KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Jenis.BOF Then MsgBox "Tabel jenis Barang masih kosong!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub Call FormNormal Else Rs_Jenis.MoveFirst Do While Not Rs_Jenis.EOF On Error Resume Next txtKode.Text = Rs_Jenis!Kode_Jenis txtNama.Text = Rs_Jenis!Nama_Jenis Rs_Jenis.MoveNext Loop End If End Sub '# TOMBOL TAMBAH DIKLIK Private Sub TbTambah_Click() Call FormHidup Call BuatKodeJenis txtKode.Text = KodeJenis TbSimpan.Enabled = True TbTambah.Enabled = False TbUbah.Enabled = False TbHapus.Enabled = False TbKeluar.Caption = "Batal" txtNama.SetFocus Call TampilGridData End Sub Private Sub TbSimpan_Click()

  Dim Rs_Jenis As New ADODB.Recordset Set Rs_Jenis = KoneksiDB.Execute("SELECT * " _ & " FROM Jenis_Barang " _ & " WHERE Nama_Jenis='" & txtNama.Text & "' ") If txtNama.Text = "" Then MsgBox "Nama Jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtNama.SetFocus ElseIf Not Rs_Jenis.BOF Then & " " & UCase(txtNama.Text) _ & " sudah tersedia!!", _ vbInformation + vbOKOnly, "Information" txtNama.Text = "" txtNama.SetFocus Exit Sub Else SqlInsert = "INSERT INTO Jenis_Barang " _ & " (Kode_Jenis,Nama_Jenis) " _ & " VALUES('" & txtKode.Text & "','" _ & txtNama.Text & "')" KoneksiDB.Execute SqlInsert, , adCmdText Rs_Jenis.Requery Call FormNormal Call Form_Load MsgBox "Data telah tersimpan dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" End If End Sub '# TOMBOL UBAH DIKLIK Private Sub TbUbah_Click() If txtNama.Text = "" Then MsgBox "Nama jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtNama.SetFocus Else SqlUpdate = "UPDATE Jenis_Barang" _ & " SET Nama_Jenis='" & txtNama.Text & "' " _ & " WHERE Kode_Jenis='" & txtKode.Text & "'" KoneksiDB.Execute SqlUpdate, , adCmdText Rs_Jenis.Requery Call FormNormal MsgBox "Data telah ter_update dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" Call Form_Load End If End Sub '# TOMBOL HAPUS DIKLIK Private Sub TbHapus_Click() Konfirmasi = MsgBox("Anda yakin akan " _ & " menghapus pesan ini?", _ If Konfirmasi = vbYes Then SqlDelete = "DELETE FROM Jenis_Barang WHERE " _ & " Kode_Jenis='" & txtKode.Text & "'" KoneksiDB.Execute SqlDelete, , adCmdText Rs_Jenis.Requery Call FormNormal Call Form_Load Else Call FormNormal End If End Sub '# TOMBOL KELUAR DIKLIK Private Sub TbKeluar_Click() If TbKeluar.Caption = "Keluar" Then Unload Me Else Call FormNormal End If End Sub Private Sub txtNama_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase((Chr(KeyAscii)))) If KeyAscii = vbKeyReturn Then TbSimpan.SetFocus KeyAscii = 0 End If End Sub

  Form Menu Data Barang

  Option Explicit Dim GridObjIndex As Byte Dim Kd_Jenis As String Dim KodeBarang As String Dim KeteranganBarang As String Private Sub Form_Load()

  Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3 Call BukaDatabase Call TampilGridData Call FormMati TbSimpan.Enabled = False TbUbah.Enabled = False Call CmbJenis_Click Call cmbJenis_DropDown End Sub Sub FormKosong() txtKode.Text = "" CmbJenis.ListIndex = -1 txtNama.Text = "" txtHarga.Text = "0" txtStok.Text = "0" txtKeterangan.Text = "" End Sub Sub FormHidup() txtKode.Enabled = True CmbJenis.Enabled = True txtNama.Enabled = True txtHarga.Enabled = True txtStok.Enabled = True txtKeterangan.Enabled = True End Sub Sub FormMati() txtKode.Enabled = False CmbJenis.Enabled = False txtNama.Enabled = False txtHarga.Enabled = False txtStok.Enabled = False txtKeterangan.Enabled = False End Sub Sub FormNormal() Call FormKosong Call FormMati txtStok.Locked = False

  TbTambah.Enabled = True TbHapus.Enabled = False TbSimpan.Enabled = False TbUbah.Enabled = False TbKeluar.Caption = "Keluar" End Sub Private Sub CmbJenis_Click() Kd_Jenis = "" & " Jenis_Barang WHERE " _ & " Nama_Jenis='" & CmbJenis.Text & "'") With Rs_Jenis If .EOF And .BOF Then Exit Sub Else Kd_Jenis = Rs_Jenis!Kode_Jenis txtNama.SetFocus End If End With End Sub Private Sub cmbJenis_DropDown() CmbJenis.Clear Set Rs_Jenis = KoneksiDB.Execute("SELECT * FROM " _ & " Jenis_Barang ORDER BY Nama_Jenis") If Not Rs_Jenis.BOF Then While Not Rs_Jenis.EOF CmbJenis.AddItem Rs_Jenis!Nama_Jenis Rs_Jenis.MoveNext Wend End If End Sub Sub BuatKodeBarang() Rs_Barang.Requery Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _ & " FROM Barang, Jenis_Barang WHERE " _ & " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " ORDER BY Kode_Barang ASC ", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Barang.BOF Then KodeBarang = "B0001" Exit Sub Else

  Rs_Barang.MoveLast KodeBarang = Rs_Barang!Kode_Barang KodeBarang = Right(KodeBarang, 4) KodeBarang = Val(KodeBarang) + 1 If Len(KodeBarang) > 4 Then MsgBox "Kode baru melewati batas", _ vbCritical, "Error" Exit Sub End If KodeBarang = "B" & Format(KodeBarang, "0000") End Sub Sub AktifGridBarang() With GridBarang .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 750 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "JENIS" .CellFontBold = True .ColWidth(2) = 1900 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .Text = "NAMA BARANG" .CellFontBold = True .ColWidth(3) = 3300 .AllowUserResizing = flexResizeColumns

  .CellAlignment = flexAlignCenterCenter .Col = 4 .Row = 0 .Text = "HARGA [Rp.]" .CellFontBold = True .ColWidth(4) = 1600 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Row = 0 .Text = "STOK" .CellFontBold = True .ColWidth(5) = 1600 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 6 .Row = 0 .Text = "KETERANGAN" .CellFontBold = True .ColWidth(6) = 3000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridData() Dim Baris As Integer GridBarang.Clear Call AktifGridBarang GridBarang.Rows = 2 Baris = 0 Call BukaDatabase If Rs_Barang.BOF Then MsgBox "Tabel Barang masih kosong!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub Else With Rs_Barang .MoveFirst Do While Not .EOF On Error Resume Next Baris = Baris + 1

  GridBarang.Rows = Baris + 1 GridBarang.TextMatrix(Baris, 0) = Baris GridBarang.TextMatrix(Baris, 1) = !Kode_Barang GridBarang.TextMatrix(Baris, 2) = !Nama_Jenis GridBarang.TextMatrix(Baris, 3) = !Nm_Barang GridBarang.TextMatrix(Baris, 4) = !Hrg_Satuan GridBarang.TextMatrix(Baris, 5) = !Stok_Barang GridBarang.TextMatrix(Baris, 6) = !Keterangan .MoveNext Loop End If End Sub Private Sub GridBarang_DblClick() TbHapus.Enabled = True TbSimpan.Enabled = False TbUbah.Enabled = True TbKeluar.Caption = "Batal" TbTambah.Enabled = False txtStok.Locked = True Call FormHidup CmbJenis.SetFocus GridObjIndex = GridBarang.Row Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _ & " FROM Barang, Jenis_Barang WHERE " _ & " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Kode_Barang='" _ & GridBarang.TextMatrix(GridObjIndex, 1) _ & "' ORDER BY Kode_Barang ASC ", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Barang.BOF Then MsgBox "Tabel Barang masih kosong!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub Call FormNormal Else Rs_Barang.MoveFirst Do While Not Rs_Barang.EOF On Error Resume Next txtKode.Text = Rs_Barang!Kode_Barang CmbJenis.Text = Rs_Barang!Nama_Jenis txtNama.Text = Rs_Barang!Nm_Barang txtHarga.Text = Rs_Barang!Hrg_Satuan txtStok.Text = Rs_Barang!Stok_Barang txtKeterangan.Text = Rs_Barang!Keterangan Rs_Barang.MoveNext Loop End If End Sub Private Sub Label1_Click() Private Sub TbTambah_Click() Call FormHidup Call BuatKodeBarang txtKode.Text = KodeBarang TbSimpan.Enabled = True TbTambah.Enabled = False TbUbah.Enabled = False TbHapus.Enabled = False TbKeluar.Caption = "Batal" CmbJenis.SetFocus Call TampilGridData End Sub Private Sub TbSimpan_Click() If CmbJenis.ListIndex = -1 Then MsgBox "Jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" CmbJenis.SetFocus ElseIf txtNama.Text = "" Then MsgBox "Nama Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtNama.SetFocus ElseIf txtHarga.Text = "" Or txtHarga.Text = "0" Then MsgBox "Harga Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtHarga.SetFocus ElseIf txtStok.Text = "" Then MsgBox "Stok Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtStok.SetFocus Else If txtKeterangan = "" Then KeteranganBarang = "Tidak ada keterangan" Else KeteranganBarang = txtKeterangan.Text

  End If SqlInsert = "INSERT INTO Barang " _ & " (Kode_Barang,Kode_Jenis, Nm_Barang, " _ & " Hrg_Satuan,Stok_Barang, Keterangan)" _ & " VALUES('" & txtKode.Text & "','" _ & Kd_Jenis & "','" & txtNama.Text & "','" _ & txtHarga.Text & "','" & txtStok.Text & "','" _ & KeteranganBarang & "')" Rs_Barang.Requery Call FormNormal Call Form_Load MsgBox "Data telah tersimpan dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" End If End Sub Private Sub TbUbah_Click() If CmbJenis.ListIndex = -1 Then MsgBox "Jenis Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" CmbJenis.SetFocus ElseIf txtNama.Text = "" Then MsgBox "Nama Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtNama.SetFocus ElseIf txtHarga.Text = "" Or txtHarga.Text = "0" Then MsgBox "Harga Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtHarga.SetFocus ElseIf txtStok.Text = "" Then MsgBox "Stok Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtStok.SetFocus Else If txtKeterangan = "" Then KeteranganBarang = "Tidak ada keterangan" Else KeteranganBarang = txtKeterangan.Text End If SqlUpdate = "UPDATE Barang" _ & " SET Kode_Jenis='" & Kd_Jenis & " ', " _ & " Nm_Barang='" & txtNama.Text & "', " _ & " Hrg_Satuan='" & txtHarga.Text & "', " _ & " Stok_Barang='" & txtStok.Text & "', " _

  & " Keterangan='" & KeteranganBarang & "' " _ & " WHERE Kode_Barang='" & txtKode.Text & "'" KoneksiDB.Execute SqlUpdate, , adCmdText Rs_Barang.Requery Call FormNormal MsgBox "Data telah ter_update dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" End If End Sub Private Sub TbHapus_Click() Konfirmasi = MsgBox("Anda yakin akan " _ & " menghapus pesan ini?", _ vbYesNo + vbQuestion, "Konfirmasi") If Konfirmasi = vbYes Then SqlDelete = "DELETE FROM Barang WHERE " _ & " Kode_Barang='" & txtKode.Text & "'" KoneksiDB.Execute SqlDelete, , adCmdText Rs_Barang.Requery Call FormNormal Call Form_Load Else Call FormNormal End If End Sub Private Sub TbKeluar_Click() If TbKeluar.Caption = "Keluar" Then Unload Me Else FormNormal End If End Sub Private Sub txtHarga_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then txtStok.SetFocus ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep KeyAscii = 0 End If End Sub

  Private Sub txtKeterangan_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then TbSimpan.SetFocus KeyAscii = 0 End If End Sub Private Sub txtNama_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then KeyAscii = 0 End If End Sub Private Sub txtStok_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then txtKeterangan.SetFocus ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Or KeyAscii = vbKeyBack) Then Beep KeyAscii = 0 End If End Sub

  Form Menu Pengguna

  Option Explicit Dim GridBaris As Byte Dim TmpPassword As String Dim NewPassword As String Dim Tanya As String Private Sub Form_Load() Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3 Call BukaDatabase Call TampilGridData cmbStatus.Clear cmbStatus.AddItem ("KASIR") cmbStatus.AddItem ("ADMIN") TbUbah.Enabled = False

  TbSimpan.Enabled = False TbHapus.Enabled = False Call FormMati End Sub Sub FormKosong() txtUserId.Text = "" txtPassword.Text = "" txtNama.Text = "" End Sub Sub FormHidup() txtUserId.Enabled = True txtPassword.Enabled = True txtNama.Enabled = True cmbStatus.Enabled = True txtUserId.BackColor = &HFFFFFF txtPassword.BackColor = &HFFFFFF txtNama.BackColor = &HFFFFFF cmbStatus.BackColor = &HFFFFFF End Sub Sub FormMati() txtUserId.Enabled = False txtPassword.Enabled = False txtNama.Enabled = False cmbStatus.Enabled = False txtUserId.BackColor = &HC0FFFF txtPassword.BackColor = &HC0FFFF txtNama.BackColor = &HC0FFFF cmbStatus.BackColor = &HC0FFFF End Sub Sub FormNormal() Call FormKosong Call FormMati TbBaru.Enabled = True TbUbah.Enabled = False TbHapus.Enabled = False TbSimpan.Enabled = False TbKeluar.Caption = "Keluar" End Sub Sub AktifGridPengguna()

  With GridPengguna .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "USER ID" .CellFontBold = True .ColWidth(0) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1 .Row = 0 .Text = "PASSWORD" .CellFontBold = True .ColWidth(1) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "NAMA PEMILIK" .CellFontBold = True .ColWidth(2) = 3700 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .Text = "STATUS" .CellFontBold = True .ColWidth(3) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridData() Dim Baris As Integer GridPengguna.Clear Call AktifGridPengguna GridPengguna.Rows = 2 Baris = 0 Set Rs_Pengguna = New ADODB.Recordset Rs_Pengguna.Open "SELECT * FROM Pengguna", _ KoneksiDB, adOpenDynamic, adLockOptimistic

  If Rs_Pengguna.BOF Then MsgBox "DATA Pengguna MASIH KOSONG!", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub Else With Rs_Pengguna .MoveFirst Do While Not .EOF On Error Resume Next Baris = Baris + 1 GridPengguna.TextMatrix(Baris, 0) = !UserId GridPengguna.TextMatrix(Baris, 1) = "xxxxxxx" GridPengguna.TextMatrix(Baris, 2) = !Nama GridPengguna.TextMatrix(Baris, 3) = !Status .MoveNext Loop End With End If End Sub Private Sub GridPengguna_DblClick() TbHapus.Enabled = True TbSimpan.Enabled = False TbUbah.Enabled = True TbKeluar.Caption = "Batal" TbBaru.Enabled = False txtUserId.Locked = True Call FormHidup txtPassword.SetFocus GridBaris = GridPengguna.Row Set Rs_Pengguna = New ADODB.Recordset Rs_Pengguna.Open "SELECT * FROM Pengguna " _ & " WHERE UserId='" _ & GridPengguna.TextMatrix(GridBaris, 0) & "'", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Pengguna.BOF Then MsgBox "TABEL MASIH KOSONG", _ vbOKOnly + vbInformation, "Perhatian" Exit Sub Call FormNormal Else Rs_Pengguna.MoveFirst Do While Not Rs_Pengguna.EOF On Error Resume Next txtUserId.Text = Rs_Pengguna!UserId txtNama.Text = Rs_Pengguna!Nama cmbStatus.Text = Rs_Pengguna!Status TmpPassword = Rs_Pengguna!PassId Rs_Pengguna.MoveNext Loop End If End Sub Call FormHidup Call TampilGridData TbSimpan.Enabled = True TbBaru.Enabled = False TbHapus.Enabled = False TbKeluar.Caption = "Batal" txtUserId.Locked = False txtUserId.SetFocus End Sub Private Sub TbSimpan_Click() Set Rs_Pengguna = New ADODB.Recordset Rs_Pengguna.Open "SELECT * FROM Pengguna WHERE " _ & " UserId='" & Trim(txtUserId.Text) & "'", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Len(txtUserId.Text) <= 4 Then MsgBox "USER ID MINIMAL 4 DIGIT", _ vbOKOnly + vbCritical, "Error" txtUserId.SetFocus ElseIf txtNama.Text = "" Then MsgBox "NAMA BELUM DIISI", _ vbOKOnly + vbCritical, "Error" txtNama.SetFocus ElseIf Not Rs_Pengguna.BOF Then MsgBox "Maaf, UserId" _ & " " & UCase(txtUserId.Text) _ & " sudah tersedia!!", _ vbInformation + vbOKOnly, "Information" txtUserId.Text = "" txtUserId.SetFocus Exit Sub Else SqlInsert = "INSERT INTO Pengguna " _ & " (UserId,PassId,Nama,Status) " _ & " VALUES('" & Trim(txtUserId.Text) & "','" _

  & Trim(txtPassword.Text) & "','" _ & Trim(txtNama.Text) & "','" _ & Trim(cmbStatus.Text) & "')" KoneksiDB.Execute SqlInsert, , adCmdText Rs_Pengguna.Requery Call FormNormal Call Form_Load MsgBox "DATA PENGGUNA BARU TELAH TERSIMPAN", _ End If End Sub Private Sub TbUbah_Click() Set Rs_Pengguna = New ADODB.Recordset Rs_Pengguna.Open "SELECT * FROM Pengguna WHERE " _ & " UserId='" & Trim(txtUserId.Text) & "'", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If txtNama.Text = "" Then MsgBox "NAMA BELUM DIISI", _ vbOKOnly + vbCritical, "Error" txtNama.SetFocus Else If Trim(txtPassword.Text) = "" Then NewPassword = TmpPassword Else NewPassword = txtPassword.Text End If Tanya = MsgBox("AKAN MERUBAH DATA PENGGUNA? DARI : " _ & vbCrLf & "" & "NAMA LAMA : " _ & Rs_Pengguna.Fields!Nama + vbCrLf & "" _ & "NAMA BARU : " & txtNama.Text + vbCrLf & "", _ vbYesNo + vbQuestion, "Awass") If Tanya = vbYes Then SqlUpdate = "UPDATE Pengguna" _ & " SET PassId='" & NewPassword & " ', " _ & " Nama='" & Trim(txtNama.Text) & "', " _ & " Status='" & Trim(cmbStatus.Text) & "' " _ & " WHERE UserId='" & Trim(txtUserId.Text) & "'" KoneksiDB.Execute SqlUpdate, , adCmdText End If Rs_Barang.Requery Call FormNormal

  Call Form_Load End If End Sub Private Sub TbHapus_Click() Tanya = MsgBox("YAKIN AKAN MENGHAPUS DATA INI?" _ & vbCrLf & "" & "USER ID : " _ & txtUserId + vbCrLf & "" _ & "NAMA : " & txtNama.Text + vbCrLf & "", _ If Tanya = vbYes Then SQL = "DELETE FROM Pengguna WHERE " _ & " UserId='" & txtUserId.Text & "'" KoneksiDB.Execute SQL, , adCmdText Rs_Pengguna.Requery Call FormNormal Call FormMati Call TampilGridData Else Call FormNormal End If End Sub Private Sub TbKeluar_Click() If TbKeluar.Caption = "Keluar" Then Unload Me Else Call FormNormal End If End Sub Private Sub txtUserId_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then txtPassword.SetFocus KeyAscii = 0 End If End Sub Private Sub txtPassword_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then txtNama.SetFocus KeyAscii = 0 End If End Sub Private Sub txtNama_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase((Chr(KeyAscii))))

  If KeyAscii = vbKeyReturn Then cmbStatus.SetFocus KeyAscii = 0 End If End Sub

  Form Menu Tambah Stok Barang

  Private Sub Form_Load() Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3 Call BukaDatabase Call FormMati SkinLabel7.Visible = False txtStokLama.Visible = False TbCari.Enabled = False TbSimpan.Enabled = False End Sub Sub FormKosong() txtKode.Text = "" txtJenis.Text = "" txtNama.Text = "" txtHarga.Text = "0" txtStok.Text = "0" txtStokLama.Text = "" txtKeterangan.Text = "" End Sub Sub FormHidup() txtKode.Enabled = True txtJenis.Enabled = True txtNama.Enabled = True txtHarga.Enabled = True txtStok.Enabled = True txtKeterangan.Enabled = True End Sub Sub FormMati() txtKode.Enabled = False txtJenis.Enabled = False txtNama.Enabled = False txtHarga.Enabled = False txtStok.Enabled = False txtKeterangan.Enabled = False End Sub Sub FormNormal() Call FormKosong Call FormMati txtStok.Locked = False SkinLabel7.Visible = False TbCari.Enabled = False TbTambah.Enabled = True TbSimpan.Enabled = False TbKeluar.Caption = "Keluar" End Sub Private Sub TbCari_Click() FrmUtama.Enabled = False frmTambahStok.Enabled = False frmCariBarang.Show 1 End Sub Private Sub TbKeluar_Click() If TbKeluar.Caption = "Keluar" Then FrmUtama.Enabled = True Unload Me Else FormNormal End If End Sub Private Sub TbSimpan_Click() If txtStok.Text = "" Or txtStok.Text = "0" Then MsgBox "Stok Barang tidak boleh kosong!", _ vbInformation + vbOKOnly, "Perhatian" txtStok.SetFocus Else SqlUpdate = "" SqlUpdate = "UPDATE Barang" _ & " SET Stok_Barang=Stok_Barang + " _ & Val(txtStok.Text) & "" _ & " WHERE Kode_Barang='" & txtKode.Text & "'" KoneksiDB.Execute SqlUpdate, , adCmdText

  Rs_Barang.Requery Call FormNormal MsgBox "Data telah ter_update dalam database !", _ vbOKOnly + vbInformation, "Konfirmasi" Call Form_Load End If End Sub Call FormHidup TbCari.Enabled = True TbSimpan.Enabled = True TbTambah.Enabled = False TbKeluar.Caption = "Batal" txtKode.SetFocus End Sub Private Sub txtKode_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then If Len(txtKode.Text) < 5 Then MsgBox "KODE BARANG HARUS 5 DIGIT", _ vbCritical, "Error" Exit Sub End If KeyAscii = 0 SkinLabel7.Visible = True txtStokLama.Visible = True Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _ & " FROM Barang, Jenis_Barang WHERE " _ & " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Kode_Barang='" _ & txtKode.Text & "' ", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Barang.BOF Then MsgBox "KODE BARANG TIDAK DIKENALI ..", _ vbInformation, "Info" Else With Rs_Barang txtJenis.Text = !Nama_Jenis txtNama.Text = !Nm_Barang txtHarga.Text = !Hrg_Satuan txtStokLama.Text = !Stok_Barang txtKeterangan = !Keterangan txtStok.SetFocus

  End With End If End If End Sub Private Sub txtStok_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then TbSimpan.SetFocus ElseIf Not (KeyAscii >= Asc("0") _ And KeyAscii <= Asc("9") _ Beep KeyAscii = 0 End If End Sub

  Form Menu Cari Daftar Barang

  Private Sub Form_Load() Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 4 Call BukaDatabase Call TampilGridData End Sub Sub AktifGridBarang() With GridBarang .RowHeightMin = 300 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .RowHeightMin = 300 .Col = 1 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(1) = 750 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter

  .Col = 2 .Row = 0 .Text = "JENIS" .CellFontBold = True .ColWidth(2) = 1900 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .CellFontBold = True .ColWidth(3) = 3300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 4 .Row = 0 .Text = "HARGA [Rp.]" .CellFontBold = True .ColWidth(4) = 1600 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 5 .Row = 0 .Text = "STOK" .CellFontBold = True .ColWidth(5) = 1600 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 6 .Row = 0 .Text = "KETERANGAN" .CellFontBold = True .ColWidth(6) = 3000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Sub TampilGridData() Dim Baris As Integer GridBarang.Clear Call AktifGridBarang

  GridBarang.Rows = 2 Baris = 0 If Rs_Barang.BOF Then MsgBox "Tabel Barang masih kosong!", _ vbInformation + vbOKOnly, "Informasi" Exit Sub Else With Rs_Barang Do While Not .EOF Baris = Baris + 1 GridBarang.Rows = Baris + 1 GridBarang.TextMatrix(Baris, 0) = Baris GridBarang.TextMatrix(Baris, 1) = !Kode_Barang GridBarang.TextMatrix(Baris, 2) = !Nama_Jenis GridBarang.TextMatrix(Baris, 3) = !Nm_Barang GridBarang.TextMatrix(Baris, 4) = !Hrg_Satuan GridBarang.TextMatrix(Baris, 5) = !Stok_Barang GridBarang.TextMatrix(Baris, 6) = UCase(!Keterangan) .MoveNext Loop End With End If End Sub Private Sub GridBarang_DblClick() Dim barisGrid As String barisGrid = GridBarang.Row frmTambahStok.SkinLabel7.Visible = True frmTambahStok.txtStokLama.Visible = True If GridBarang.Rows <> 1 Then With frmTambahStok .txtKode.Text = _ UCase(GridBarang.TextMatrix(barisGrid, 1)) .txtJenis.Text = _ UCase(GridBarang.TextMatrix(barisGrid, 2)) .txtNama.Text = _ UCase(GridBarang.TextMatrix(barisGrid, 3)) .txtHarga.Text = _ UCase(GridBarang.TextMatrix(barisGrid, 4)) .txtStokLama.Text = _ UCase(GridBarang.TextMatrix(barisGrid, 5)) .txtKeterangan.Text = _ UCase(GridBarang.TextMatrix(barisGrid, 6)) End With

  Else Exit Sub End If FrmUtama.Enabled = False frmTambahStok.Enabled = True Unload Me End Sub Private Sub TbNormal_Click() txtCari.Text = "" txtCari.SetFocus End Sub Private Sub TbTutup_Click() FrmUtama.Enabled = False frmTambahStok.Enabled = True Unload Me End Sub Private Sub txtCari_Change() If Option2.Value = True Then Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _ & " FROM Barang, Jenis_Barang WHERE " _ & " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Nm_Barang LIKE '%" _ & txtCari.Text & "%' " _ & " ORDER BY Kode_Barang", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Barang.BOF Then MsgBox "Tidak menemukan nama Barang! " _ & " - " & txtCari.Text & " - dalam tabel", _ vbInformation, "Informasi" txtCari.Text = "" txtCari.SetFocus Else Call TampilGridData End If ElseIf Option1.Value = True Then Set Rs_Barang = New ADODB.Recordset Rs_Barang.Open "SELECT Barang.*, " _ & " Jenis_Barang.Nama_Jenis " _ & " FROM Barang, Jenis_Barang WHERE " _

  & " Jenis_Barang.Kode_Jenis=Barang.Kode_Jenis " _ & " AND Barang.Kode_Barang LIKE '%" _ & txtCari.Text & "%' " _ & " ORDER BY Kode_Barang", _ KoneksiDB, adOpenDynamic, adLockBatchOptimistic If Rs_Barang.BOF Then MsgBox "Tidak menemukan kode Barang! " _ & " - " & txtCari.Text & " - dalam tabel", _ vbInformation, "Informasi" txtCari.Text = "" txtCari.SetFocus Else Call TampilGridData End If End If End Sub

  Form Menu Transaksi Penjualan

  Option Explicit Dim Baris As Integer Dim i As Integer Dim Tanya As String Dim NoNota As String Dim NaikHargaJual As String Private Sub Form_Load() Skin1.LoadSkin App.Path & "/skin/chizh.skn" Skin1.ApplySkin Me.hWnd Move (Screen.Width - Width) / 2, _ (Screen.Height - Height) / 3 Call BukaDatabase Call FormMati TbSimpan.Enabled = False TbCari.Enabled = False TbMasuk.Enabled = False End Sub Sub FormKosong() txtNoNota.Text = "" txtTgl.Text = "__/__/____" txtKode.Text = "" txtNama.Text = "" txtStok.Text = "" txtHarga.Text = "0" txtJumlah.Text = "" txtTotal.Text = "0" txtTotalHarga = "0" txtKembali.Text = "0" txtCash.Text = "0" Baris = 1 GridPenjualan.Clear GridPenjualan.Rows = 2 Call AktifGridJual Sub FormTransKosong() txtTotalHarga.Text = "0" txtCash.Text = "" txtKembali.Text = "0" End Sub Sub FormMati() txtNoNota.Enabled = False txtTgl.Enabled = False txtKode.Enabled = False txtNama.Enabled = False txtStok.Enabled = False txtHarga.Enabled = False txtJumlah.Enabled = False txtTotal.Enabled = False txtTotalHarga.Enabled = False txtCash.Enabled = False txtKembali.Enabled = False End Sub Sub FormHidup() txtNoNota.Enabled = True txtTgl.Enabled = True txtKode.Enabled = True txtNama.Enabled = True txtStok.Enabled = True txtHarga.Enabled = True txtJumlah.Enabled = True txtTotal.Enabled = True txtTotalHarga.Enabled = True txtCash.Enabled = True txtKembali.Enabled = True End Sub Sub FormNormal() FormMati FormKosong

  TbKeluar.Caption = "Keluar" TbSimpan.Enabled = False TbBaru.Enabled = True TbCari.Enabled = False TbMasuk.Enabled = False End Sub Sub BuatNotaJual() Rs_Penjualan.Requery Rs_Penjualan.Open " SELECT * FROM " _ & " Penjualan ORDER BY No_Nota ", _ KoneksiDB, adOpenDynamic, _ adLockBatchOptimistic If Rs_Penjualan.BOF Then NoNota = "JL-00001" Exit Sub Else Rs_Penjualan.MoveLast NoNota = Rs_Penjualan!No_Nota NoNota = Right(NoNota, 5) NoNota = Val(NoNota) + 1 If Len(NoNota) > 5 Then MsgBox "Nomor nota baru melewati batas", _ vbCritical, "Error" Exit Sub End If End If NoNota = "JL-" & Format(NoNota, "00000") End Sub Sub AktifGridJual() With GridPenjualan .Col = 0 .Row = 0 .Text = "KODE" .CellFontBold = True .ColWidth(0) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1 .Row = 0 .Text = "NAMA Barang" .CellFontBold = True .ColWidth(1) = 4200

  .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "HARGA (Rp)" .CellFontBold = True .ColWidth(2) = 1800 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .Text = "JUMLAH" .CellFontBold = True .ColWidth(3) = 1300 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 4 .Row = 0 .Text = "SUBTOTAL (Rp)" .CellFontBold = True .ColWidth(4) = 1800 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End With End Sub Private Sub TbBaru_Click() txtTgl.Text = Format(Date, "dd/MM/yyyy") Call FormHidup Call AktifGridJual Call BuatNotaJual txtNoNota.Text = NoNota TbBaru.Enabled = False TbCari.Enabled = True TbKeluar.Caption = "Batal" TbSimpan.Enabled = True TbMasuk.Enabled = True Baris = 1 End Sub Private Sub TbCari_Click() FrmUtama.Enabled = False frmJual.Enabled = False frmCariStok.Show 1 End Sub Private Sub TbMasuk_Click() If txtKode.Text = "" Then MsgBox "Barang masih kosong! ", _ vbOKOnly + vbCritical, "Konfirmasi" TbCari.SetFocus ElseIf Val(txtJumlah.Text) > _ MsgBox "Maaf..! Stok tidak memadai .", _ vbOKOnly + vbCritical, "Konfirmasi" txtJumlah.Text = "0" txtJumlah.SetFocus ElseIf txtJumlah.Text = "0" _ Or txtJumlah.Text = "" Then MsgBox "Jumlah barang masih kosong! ", _ vbOKOnly + vbCritical, "Konfirmasi" txtJumlah.SetFocus ElseIf GridPenjualan.Rows = 1 Then MsgBox "Belum ada barang yang akan dijual!", _ vbOKOnly + vbCritical, "Konfirmasi" TbCari.SetFocus ElseIf txtStok.Text = "1" Then MsgBox "Stok barang minimum!", _ vbOKOnly + vbCritical, "Konfirmasi" Call BersihBarang ElseIf Val(txtStok.Text) = _ Val(txtJumlah.Text) Then MsgBox "Stok harus disisakan untuk sempel!", _ vbOKOnly + vbCritical, "Konfirmasi" txtJumlah.Text = Val(txtJumlah.Text) - 1 TbMasuk.SetFocus Else With GridPenjualan .Rows = Baris + 1 .TextMatrix(Baris, 0) = txtKode.Text .TextMatrix(Baris, 1) = txtNama.Text .TextMatrix(Baris, 2) = txtHarga.Text .TextMatrix(Baris, 3) = txtJumlah.Text .TextMatrix(Baris, 4) = txtTotal.Text End With txtTotalHarga.Text = _ Val(txtTotalHarga.Text) + Val(txtTotal.Text) Baris = Baris + 1 Call BersihBarang

  End If End Sub Private Sub TbSimpan_Click() Dim i As Integer If txtNoNota.Text = "" Then MsgBox "Nomor transaksi masih kosong !", _ vbOKOnly + vbCritical, "Konfirmasi" txtNoNota.SetFocus MsgBox "Belum ada Barang yang akan dijual!", _ vbOKOnly + vbCritical, "Konfirmasi" TbCari.SetFocus ElseIf txtCash.Text = "" Or txtCash.Text = "0" Then MsgBox "Belum melakukan pembayaran ! ", _ vbOKOnly + vbCritical, "Konfirmasi" txtCash.SetFocus ElseIf Val(txtCash.Text) < _ Val(txtTotalHarga.Text) Then MsgBox "Pembayaran masih kurang", _ vbOKOnly + vbCritical, "Konfirmasi" txtCash.SetFocus Else SqlInsert = "" SqlInsert = "INSERT INTO Penjualan" _ & "(No_Nota,Tgl_Nota,Total_Bayar,UserId)" _ & "VALUES ('" & txtNoNota.Text & "','" _ & Format(Date, "yyyy-MM-dd") & "','" _ & txtTotalHarga.Text & " ','" _ & PenggunaID & "')" KoneksiDB.Execute SqlInsert, , adCmdText Rs_Penjualan.Requery For i = 1 To Baris - 1 SqlInsert = "" SqlInsert = "INSERT INTO Detail_Penjualan" _ & "(No_Nota,Kode_Barang,Harga_Jual, " _ & " Jumlah_Jual,SubTotal)" _ & " VALUES ('" & txtNoNota.Text & "','" _ & GridPenjualan.TextMatrix(i, 0) & "','" _ & GridPenjualan.TextMatrix(i, 2) & "','" _ & GridPenjualan.TextMatrix(i, 3) & "','" _ & GridPenjualan.TextMatrix(i, 4) & "')" KoneksiDB.Execute SqlInsert, , adCmdText SqlUpdate = "" SqlUpdate = "UPDATE Barang SET " _ & " Stok_Barang=Stok_Barang - " _