Persediaan barang dagangan merupakan salah satu komponen yang penting dalam sebuah perusahaan yang bergerak dalam bidang perdagangan. Pada keadaan tertentu, perusahaan selalu membutuh nilai beli yang terjual. Perusahaan yang barang dagangannya berupa barang yang sangat mudah diidentifikasi seperti perdagangan mobil, sepeda motor, dan lain sebagainya mungkin masih mudah untuk mengatahui harga beli dari barang-barang yang terjual.
Bagaimana jika barang-barang tersebut merupakan barang-barang yang tidak mudah diidentifikasi dan jumlahnya sangat besar serta harga beli barang dagang yang sama bervariasi, maka akan membutuhkan tenaga dan waktu yang banyak untuk mengetahui nilai beli barang yang terjual (harga pokok penjualan).
Dalam akuntansi, dikenal beberapa metode untuk menentukan nilai beli barang yang terjual:
1. Metode rata-rata, metode ini beranggapan bahwa nilai perunit barang dagangan yang terjual adalah merupakan rata-rata harga beli dari semua barang dagangan, sehingga untuk mengetahui nilai beli keseluruhan barang yang terjual, hanya mengalikan jumlah unit yang dijual dikalikan rata-rata harga beli barang daganagn.
2. Metode FIFO (Fisrt In First Out), metode ini beranggapan bahwa bahwa barang yang pertama kali dibeli maka pertama kali juga dijual (sekalipun dalam realitanya tidak demikian). Sehingga untuk mengetahui nilai beli barang dagangan yang terjual dapat dilakukan dengan melakukan pengurutan barang-barang yang dibeli dari yang pertama kali dibeli sampai yang terakhir. Berdasarkan urutan tersebut maka diambil nilai-nilai barang yang dibeli, hingga jumlah unit yang diambil sesuai dengan jumlah unit yang terjual.
3. Metode LIFO (Last In First Out), metode ini merupakan kontra dari metode FIFO, yang beranggapan bahwa barang yang pertama dijual adalah barang yang terakhir masuk. Sehingga untuk mengetahui nilai beli barang dagangan yang terjual dapat dilakukan dengan melakukan pengurutan barang-barang yang dibeli dari yang terakhir dibeli sampai yang pertama. Berdasarkan urutan tersebut maka diambil nilai-nilai barang yang dibeli, hingga jumlah unit yang diambil sesuai dengan jumlah unit yang terjual.
Pada kesempatan ini Saya akan memberikan logika sederhana dan contohnya dengan menggunakan Ms. Access, adapun contohnya merupakan model transaksi yang dalam setiap transaksi hanya satu jenis barang yang dibeli, demikian juga pada proses penjualan. Dengan contoh ini rekan-rekan pembaca dapat mengembangkan ke model transaksi yang setiap transaksi baik pembelian maupun penjualan tidak hanya satu jenis barang dagangan.
1. Tabel untuk penyimpanan transaksi pembelian dan penjualan dibuat secara terpisah.
2. Dibuat pula sebuah table bantu yang akan menampung detail dari barang keluar, table ini akan menampung dari pembelian mana saja yang digunakan untuk setiap barang yang dijual.
Contoh table BarangMasuk dan isinya
BarangMasuk | ||||
NoBeli | Tgl | KodeBrg | Unit | Harga |
1 | 01/01/2008 | A | 3 | 1000 |
2 | 02/01/2008 | B | 20 | 1022 |
3 | 03/01/2008 | A | 30 | 1222 |
Contoh table BarangMasuk dan isinya
BarangKeluar | ||||
NoJual | Tgl | KodeBrg | Unit | Harga |
1 | 05/01/2008 | A | 22 | 1000 |
2 | 05/01/2008 | A | 11 | 1500 |
Contoh table LogBarangKeliar
LogBarangKeluar | |||
NoJual | NoBeli | KodeBrg | Unit |
| | | |
3. Tabel LogBarangKeluar dapat diisi pada saat setiap transaksi penjualan disimpan (direcord), namun dapat diga dilakukan pada waktu-waktu tertentu (jika akan mengetahui nilai beli barang yang terjual. Jika dilakukan pada setiap terjadi transaksi penjualan, tentunya lebih bagus karena nilai beli barang yang dijual dapat diketahui tanpa melakukan proses perbaikan nilai beli tetapi kelemahaanya adalah jika ada transaksi-transaksi sebelum yang mengalami perbaikan maka nilai tersebut tidak relevan lag. Pada kali ini saya akan menggukan cara yang kedua, yaitu dengan menginput semua transaksi baik pembelian maupun penjualan terlebih dahulu, kemudian melakukan proses perhitungan harga pokok (nilai beli barang yang terjual)
Penyelesaian:
1. Buat query yang akan merekap (RekapLogKeluar) jumlah unit dari table LogBarangKeluar berdasrkan nomor pembelian dan kode barang
SELECT LogBarangKeluar.NoBeli, LogBarangKeluar.KodeBrg, Sum(LogBarangKeluar.Unit) AS Unit FROM LogBarangKeluar GROUP BY LogBarangKeluar.NoBeli, LogBarangKeluar.KodeBrg |
2. Buat query yang akan menghitung sisa setiap barang yang dibeli untuk setiap transaksi pembelian (Selisih), pada query ini tampilkan semua transaksi pembelian sekalipun tidak memiliki pada pada query RekapLogKeluar yang telah dibuat sebelumnya.
SELECT BarangMasuk.NoBeli, BarangMasuk.Tgl, BarangMasuk.KodeBrg, BarangMasuk.Harga, BarangMasuk.Unit AS UniBeli, IIf(IsNull(RekapLogKeluar!Unit),0,RekapLogKeluar!Unit) AS UnitKeluar, BarangMasuk!Unit-[UnitKeluar] AS SISA FROM BarangMasuk LEFT JOIN RekapLogKeluar ON (BarangMasuk.NoBeli = RekapLogKeluar.NoBeli) AND (BarangMasuk.KodeBrg = RekapLogKeluar.KodeBrg) |
3. Buat Query untuk mengetahui nilai harga beli (HPPLogKeluar) dari setiap data pada table LogBarangKeluar
SELECT LogBarangKeluar.NoJual, LogBarangKeluar.NoBeli, LogBarangKeluar.KodeBrg, LogBarangKeluar.Unit, BarangMasuk.Harga, LogBarangKeluar!Unit*BarangMasuk!Harga AS HPP FROM LogBarangKeluar INNER JOIN BarangMasuk ON (LogBarangKeluar.KodeBrg = BarangMasuk.KodeBrg) AND (LogBarangKeluar.NoBeli = BarangMasuk.NoBeli) ORDER BY LogBarangKeluar.NoJual, LogBarangKeluar.NoBeli |
4. Buat query yang akan merekap dari HPPLogKeluar berdasarkan no penjualan (HPPPerNoPenjualan)
SELECT HPPLogKeluar.NoJual, Sum(HPPLogKeluar.HPP) AS HPPPerPenjulan FROM HPPLogKeluar GROUP BY HPPLogKeluar.NoJual |
5. Buat query lengap yang akan menampilkan data penjualan dan harga pokok penjualannya
SELECT BarangKeluar.NoJual, BarangKeluar.Tgl, BarangKeluar.KodeBrg, BarangKeluar.Unit, BarangKeluar.Harga, BarangKeluar!Unit*BarangKeluar!Harga AS NilaiPenjualan, IIf(IsNull(HPPPerNoPenjualan!HPPPerPenjulan),0,HPPPerNoPenjualan!HPPPerPenjulan) AS HPPPerPenjulan, [NilaiPenjualan]-[HPPPerPenjulan] AS LabaKotor FROM BarangKeluar LEFT JOIN HPPPerNoPenjualan ON BarangKeluar.NoJual = HPPPerNoPenjualan.NoJual |
6.
Berikut ini adalah kode yang dibuat pada VBA
Option Compare Database Dim con As ADODB.Connection Dim rskeluar As ADODB.Recordset Dim rsSisa As ADODB.Recordset |
Private Sub Form_Load() Set con = CurrentProject.Connection Me.NavigationButtons = False Me.DividingLines = False Me.RecordSelectors = False End Sub |
Private Sub tbpros_Click() Dim sqhapuslog As String sqhapuslog = "delete from LogBarangKeluar" con.Execute (sqhapuslog) Dim sqkeluar As String sqkeluar = "select * from barangkeluar order by tgl,nojual" Set rskeluar = con.Execute(sqkeluar) If Not rskeluar.EOF Then rskeluar.MoveFirst End If Dim kb As String Dim nojual As String Dim jmlunit As Integer Do While Not rskeluar.EOF pb1.Value = pb1.Value + 1 kb = rskeluar!kodebrg jmlunit = rskeluar!unit nojual = rskeluar!nojual Dim sqsisa sqsisa = "select * from selisih where kodebrg='" & kb & "' and sisa >'0' order by tgl,nobeli" Set rsSisa = con.Execute(sqsisa) Dim sqmasuklog As String If Not rsSisa.EOF Then rsSisa.MoveFirst End If Dim unitmasuklog As Integer Dim nbelimasuklog As Integer Do While jmlunit > 0 If rsSisa.EOF Then If jmlunit > 0 Then MsgBox "Jumlah barang " & kb & " tidak cukup, kurang: " & jmlunit Exit Do End If End If nbelimasuklog = rsSisa!nobeli If jmlunit <= rsSisa!sisa Then unitmasuklog = jmlunit Else unitmasuklog = rsSisa!sisa End If jmlunit = jmlunit - unitmasuklog sqmasuklog = "insert into logbarangkeluar (nojual,nobeli,kodebrg,unit) " & _ "values('" & nojual & "','" & nbelimasuklog & "','" & kb & "','" & unitmasuklog & "')" con.Execute (sqmasuklog) If Not rsSisa.EOF Then rsSisa.MoveNext End If Loop If Not rskeluar.EOF Then rskeluar.MoveNext End If Loop 'MsgBox "Proses telah selesai" & Chr(10) & Chr(13) & "Silahkan buka Query HPPPenjualanAkhir untuk melihat HPP penjualan" End Sub |
|