Studi Kasus CSV Files: Manajemen Inventaris Toko Elektronik

Studi Kasus CSV Files: Manajemen Inventaris Toko Elektronik

Studi Kasus: Manajemen Inventaris Toko Elektronik

1. Analisis Kebutuhan

Problem Statement:
Toko elektronik “Maju Jaya” kesulitan melacak stok barang karena masih menggunakan pencatatan manual. Perlu sistem untuk:

  • Melacak stok barang masuk/keluar
  • Mencatat transaksi pembelian/pengembalian
  • Generate laporan stok minimum

Data yang Harus Disimpan:

  1. Data Barang (barang.csv)
    • ID_Barang, Nama, Kategori, Harga, Stok, Stok_Minimum
  2. Data Transaksi (transaksi.csv)
    • ID_Transaksi, Tanggal, ID_Barang, Jenis (Masuk/Keluar), Qty, Supplier/Pelanggan

2. Struktur File CSV

barang.csv

csv
ID_Barang,Nama,Kategori,Harga,Stok,Stok_Minimum
EL001,TV LED 32",Televisi,3500000,15,5
EL002,Kulkas 2 Pintu,Alat Rumah Tangga,4500000,8,3
EL003,Blender,Mesin Dapur,250000,20,10

transaksi.csv

csv
ID_Transaksi,Tanggal,ID_Barang,Jenis,Qty,Keterangan
TRX001,2023-11-01,EL001,Masuk,10,Supplier A
TRX002,2023-11-02,EL002,Keluar,2,Pelanggan B

3. Implementasi Program Python

a. Fungsi Tambah Barang Baru

python
import csv
from datetime import datetime

def tambah_barang():
    print("\nTAMBAH BARANG BARU")
    data = [
        input("ID Barang: "),
        input("Nama Barang: "),
        input("Kategori: "),
        int(input("Harga: ")),
        int(input("Stok Awal: ")),
        int(input("Stok Minimum: "))
    ]
    
    with open('barang.csv', 'a', newline='') as file:
        writer = csv.writer(file)
        writer.writerow(data)
    print("Data barang berhasil disimpan!")

b. Fungsi Update Stok (Transaksi)

python
def update_stok():
    print("\nPROSES TRANSAKSI")
    id_barang = input("ID Barang: ")
    jenis = input("Jenis (Masuk/Keluar): ").capitalize()
    qty = int(input("Quantity: "))
    keterangan = input("Keterangan: ")
    
    # 1. Update transaksi.csv
    trx_data = [
        f"TRX{datetime.now().strftime('%Y%m%d%H%M')}",
        datetime.now().strftime("%Y-%m-%d"),
        id_barang,
        jenis,
        qty,
        keterangan
    ]
    
    with open('transaksi.csv', 'a', newline='') as file:
        writer = csv.writer(file)
        writer.writerow(trx_data)
    
    # 2. Update stok di barang.csv
    with open('barang.csv', 'r') as file:
        reader = csv.reader(file)
        rows = list(reader)
    
    for row in rows:
        if row[0] == id_barang:
            if jenis == "Masuk":
                row[4] = str(int(row[4]) + qty)  # Stok + Qty
            else:
                row[4] = str(int(row[4]) - qty)  # Stok - Qty
    
    with open('barang.csv', 'w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(rows)
    
    print("Stok berhasil diperbarui!")

c. Fungsi Cek Stok Minimum (Menggunakan Pandas)

python
import pandas as pd

def cek_stok_minimum():
    df = pd.read_csv('barang.csv')
    stok_kritis = df[df['Stok'] < df['Stok_Minimum']]
    
    if stok_kritis.empty:
        print("\nTidak ada stok kritis")
    else:
        print("\nDaftar Stok Kritis:")
        print(stok_kritis[['ID_Barang', 'Nama', 'Stok', 'Stok_Minimum']])
        stok_kritis.to_csv('stok_kritis.csv', index=False)
        print("\nFile 'stok_kritis.csv' telah dibuat!")

4. Contoh Output Program

Menu Utama:

SISTEM INVENTARIS TOKO ELEKTRONIK
1. Tambah Barang Baru
2. Proses Transaksi
3. Cek Stok Kritis
4. Keluar

Pilihan: 2

PROSES TRANSAKSI
ID Barang: EL002
Jenis (Masuk/Keluar): Keluar
Quantity: 1
Keterangan: Pelanggan C
Stok berhasil diperbarui!

Isi transaksi.csv setelah transaksi:

ID_Transaksi,Tanggal,ID_Barang,Jenis,Qty,Keterangan
TRX001,2023-11-01,EL001,Masuk,10,Supplier A
TRX002,2023-11-02,EL002,Keluar,2,Pelanggan B
TRX202311031415,2023-11-03,EL002,Keluar,1,Pelanggan C

Output Stok Kritis:

Daftar Stok Kritis:
  ID_Barang              Nama  Stok  Stok_Minimum
1     EL002  Kulkas 2 Pintu     5              3

5. Challenge/Tugas Lanjutan

Tugas:

  1. Buat fungsi untuk melihat riwayat transaksi per barang
  2. Implementasikan sistem alert via email jika stok kritis
  3. Buat laporan penjualan bulanan

Contoh Solusi (No.1):

python
def riwayat_barang():
    id_barang = input("Masukkan ID Barang: ")
    
    try:
        df_transaksi = pd.read_csv('transaksi.csv')
        df_barang = pd.read_csv('barang.csv')
        
        riwayat = df_transaksi[df_transaksi['ID_Barang'] == id_barang]
        nama_barang = df_barang[df_barang['ID_Barang'] == id_barang]['Nama'].values[0]
        
        print(f"\nRiwayat Transaksi untuk {nama_barang}:")
        print(riwayat[['Tanggal', 'Jenis', 'Qty', 'Keterangan']])
        
        # Hitung total masuk/keluar
        print("\nSummary:")
        print(f"Total Masuk: {riwayat[riwayat['Jenis']=='Masuk']['Qty'].sum()}")
        print(f"Total Keluar: {riwayat[riwayat['Jenis']=='Keluar']['Qty'].sum()}")
        
    except Exception as e:
        print(f"Error: {e}")

6. Kesimpulan

Studi kasus ini menunjukkan:

  1. Penggunaan CSV sebagai database sederhana
  2. Teknik baca/tulis file CSV dengan Python
  3. Integrasi library Pandas untuk analisis data
  4. Manajemen stok dengan sistem real-time

Keunggulan Solusi CSV:

  • Mudah diimplementasikan
  • Tidak perlu server database
  • Kompatibel dengan berbagai tools (Excel, Google Sheets)

Keterbatasan:

  • Tidak cocok untuk data sangat besar
  • Tidak ada transaksi atomic
  • Tidak mendukung multiple user concurrent

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *