Hal yang mesti kita perhatikan dalam pembuatan Invoice/Faktur.
1. Invoice faktur dibuat sesuai dengan dengan barang yang telah diserahkan/diterima dengan baik oleh customer. Adakalanya barang yang telah dikirim, ditolak/ditolak sebagian/diterima bersyarat oleh customer. Karena itu Invoice faktur dibuat setelah Delivery Order ditandatangani oleh penerima.
2. Satu Order pembelian dapat direalisasikan dalam satu transaksi (satu kali Do/Sj) dan dapat juga direalisasikan secara bertahap (beberapa kali Do/Sj). Banyak kebijakan perusahaan yang menetapkan bahwa pembayaran akan dilakukan setelah order pembelian telah terealisasikan secara keseluruhan sehingga apabila terdapat beberapa kali Do/Sj, maka invoice/Faktur hanya dibuat apabila order penjualan telah dipenuhi secara keseluruhan. Untuk itu diperlukan informasi ringgkas mengenai dokumen-dokumen yang terkait dengan tagihan tersebut. Keperluan tersebut dibutuhkan baik bagi penerima tagiahan maupun pembuat invoice.
3. Dalam kontrak Order dalam jangka waktu tertentu kebijakan poin 2 tidak berlaku sehingga Invoice dibuat setiap Delivery Order telah ditandatangani oleh penerima.
4. Pembuatan Invoice secara automatis akan mengupdate buku piutang dagang. Dengan ini dapat diartikan pembuat invoice adalah bagian yang juga mencatat piutang.
5. Dalam prosedur internal kontrol system akuntansi metode manual disarankan untuk membuat invoice di atas formulir dengan nomor urut tercetak namun dengan sistem akuntansi komputer semakin banyak perusahaan menggunakan nomor komupterisasi. Keunggulan penggunaan nomor tercetak menjamin tidak terjadinya nomor ganda dalam pembuatan Invoice namun apabila terjadi kegagalan, nomor transaksi dicatat pada nomor berikutnya sesuai dengan nomor urut dokumen tercetak. Bila menggunakan nomor urut yang di create komputer perlu pengawasan lebih ketat karena memungkinan terjadinya invoice ganda yang dapat menimbulkan kerugian perusahaan.
Untuk lebih jelasnya mari kita perhatikan screen shot berikut :
sekarang kita menuliskan kode program alias source-code untuk form tersebut. Namun sebelum kita mulai mulai dengan kontrol-kontrol yang ada pada form tersebut, ada beberapa fungsi tambahan yang harus kita buat. Yang pertama adalah fungsi Pads(), yang berguna untuk memberikan angka “0” di depan angka yang akan kita olah. Bingung ya? Hehe, saya juga sebenarnya bingung untuk menerangkannya. Tapi nanti juga akan jelas kok, saat sudah mulai dan melihat hasilnya. Fungsi kedua adalah fungsi untuk menghasilkan Nomor Faktur. Jadi, kita namakan saja fungsi tersebut dengan nama NomorFaktur(). Dan fungsi ke tiga yang bernama IsiKodeBarang, sesuai dengan namanya, adalah untuk mengisi combobox cbKodeBarang, dengan data KodeBarang yang sudah ada pada tabel master Barang.
Langsung saja, buka form penjualan yang telah kita buat, lalu klik kanan di sembarang area kosong (yang tidak berisi kontrol) pada form penjualan, dan pilih View Code pada popmenu yang muncul.
Nah, tekan Enter satu kali untuk memberi ruang satu spasi di bawah tulisan tersebut, lalu ketikkan kode berikut:
Function Pads(nAngka) As String
'kita akan menetapkan batas panjang angka maksimal 3 digit
'jika lebih dari 3 digit, tiga angka pertama yang akan dipakai
If Len(Trim(Str(nAngka))) > 3 Then
Pads = Left(Trim(Str(nAngka)), 3)
Exit Function
'jika panjangnya hanya 3 digit, angka itulah yang dipakai
ElseIf Len(Trim(Str(nAngka))) = 3 Then
Pads = Trim(Str(nAngka))
Exit Function
'jika hanya 2 digit, tambahkan satu "0" (nol) di depannya
ElseIf Len(Trim(Str(nAngka))) = 2 Then
Pads = "0" & Trim(Str(nAngka))
Exit Function
'jika hanya 1 digit, tambahkan dua "0" (nol) di depannya
ElseIf Len(Trim(Str(nAngka))) = 1 Then
Pads = "00" & Trim(Str(nAngka))
Exit Function
End If
End Function
Berikan lagi satu spasi di bawah fungsi ini, dan ketikkan fungsi ke dua ini di bawahnya:
Function NomorFaktur() As String
Dim sNF As String
Dim nUrut As Single
nUrut = 1
Ulang:
'tetapkan dulu format nomor faktur di sini
'(4 digit tahun + 2 digit bulan + 3 digit nomor urut)
sNF = Format(dtpTanggal.Value, "yyyymm") & Pads(nUrut)
'kemudian cari record dengan nomor faktur tersebut
datPenjualan.RecordSource = "SELECT * FROM Penjualan WHERE No_Faktur = '" & sNF & "'"
datPenjualan.Refresh
'jika tidak ada, tetapkan ini sebagai nomor faktur
If datPenjualan.Recordset.RecordCount = 0 Then
NomorFaktur = sNF
'jangan lupa untuk mengembalikan posisi awal
'dari 'RecordSource' tabel penjualan ini...
datPenjualan.RecordSource = "SELECT * FROM Penjualan"
datPenjualan.Refresh
Exit Function
'jika tidak, maka sudah ada record lama,
'jadi tambahkan saja nomor urutnya, dan ulangi pencarian
Else
nUrut = nUrut + 1
GoTo Ulang
End If
End Function
Sekali lagi, berikan lagi satu spasi di bawahnya untuk menambahkan fungsi ke tiga ini:
Sub IsiKodeBarang()
cbKodeBarang.Clear
datBarang.RecordSource = "SELECT * FROM Barang ORDER BY Kode_Barang"
datBarang.Refresh
If datBarang.Recordset.RecordCount = 0 Then
MsgBox "Data Master Barang masih kosong. Isi dulu datanya!", vbCritical
Unload Me
Exit Sub
End If
Do While Not datBarang.Recordset.EOF
cbKodeBarang.AddItem datBarang.Recordset.Fields("Kode_Barang")
datBarang.Recordset.MoveNext
Loop
cbKodeBarang.ListIndex = 0
End Sub
Tampilan pada jendela source-code, kira-kira akan seperti di bawah ini:
Tidak ada komentar:
Posting Komentar