Panduan dan Contoh Program Python Kasir

Sistem kasir (Point of Sale/POS) adalah tulang punggung operasional banyak bisnis ritel. Meskipun sistem komersial seringkali kompleks, membangun contoh program python kasir sederhana adalah cara yang fantastis untuk memahami dasar-dasar logika pemrograman, manajemen data (walaupun sederhana), dan alur transaksi.

Python sangat cocok untuk tugas ini karena sintaksnya yang bersih dan keterbacaannya yang tinggi. Dalam artikel ini, kita akan membahas langkah-langkah membuat program kasir berbasis konsol yang dapat menghitung total belanja, menerapkan diskon, dan menampilkan struk sederhana.

Mengapa Membuat Program Kasir dengan Python?

Program kasir membutuhkan kemampuan untuk:

  1. Menyimpan daftar produk dan harganya.
  2. Menerima input barang yang dibeli pelanggan.
  3. Melakukan perhitungan (subtotal, pajak, total akhir).
  4. Menghasilkan output yang terstruktur (struk pembelian).

Python memungkinkan kita merepresentasikan data produk menggunakan struktur seperti dictionary (kamus) atau list, yang sangat intuitif untuk diimplementasikan.

Ilustrasi sederhana tampilan antarmuka kasir (berbasis teks)

Contoh Program Python Kasir Sederhana

Berikut adalah contoh kode dasar yang mengimplementasikan logika utama kasir menggunakan Python murni:


# 1. Definisi Data Produk
# Format: {'kode': [nama_produk, harga]}
DATA_PRODUK = {
    'A001': ['Buku Tulis', 5000],
    'B002': ['Pensil 2B', 2500],
    'C003': ['Penghapus', 1500],
    'D004': ['Penggaris 30cm', 4000]
}

def tampilkan_menu():
    """Menampilkan daftar produk yang tersedia."""
    print("\n--- DAFTAR PRODUK ---")
    print("Kode | Nama Barang       | Harga")
    print("------------------------------------")
    for kode, data in DATA_PRODUK.items():
        nama = data[0]
        harga = data[1]
        print(f"{kode:<4} | {nama:<17} | Rp{harga:,.0f}")
    print("------------------------------------")

def proses_transaksi():
    """Fungsi utama untuk memproses input pelanggan dan menghitung total."""
    keranjang = {}
    
    print("\n>>> MASUKKAN KODE PRODUK (Ketik 'SELESAI' untuk mengakhiri)")
    
    while True:
        kode = input("Masukkan kode produk: ").upper()
        
        if kode == 'SELESAI':
            break
        
        if kode in DATA_PRODUK:
            nama_produk = DATA_PRODUK[kode][0]
            harga_satuan = DATA_PRODUK[kode][1]
            
            while True:
                try:
                    jumlah = int(input(f"Jumlah '{nama_produk}': "))
                    if jumlah > 0:
                        break
                    else:
                        print("Jumlah harus lebih dari nol.")
                except ValueError:
                    print("Input jumlah tidak valid. Masukkan angka.")

            # Menambahkan ke keranjang atau memperbarui jumlah jika sudah ada
            if kode in keranjang:
                keranjang[kode]['jumlah'] += jumlah
            else:
                keranjang[kode] = {'nama': nama_produk, 'harga': harga_satuan, 'jumlah': jumlah}
            
            print(f"{nama_produk} ({jumlah} pcs) ditambahkan.")
        else:
            print("Kode produk tidak ditemukan. Silakan coba lagi.")
            
    return keranjang

def cetak_struk(keranjang_belanja):
    """Menghitung dan mencetak struk akhir."""
    if not keranjang_belanja:
        print("\nKeranjang kosong. Transaksi dibatalkan.")
        return

    subtotal = 0
    
    print("\n" + "="*35)
    print("        STRUK PEMBELIAN")
    print("="*35)
    print(f"{'Item':<15} {'Qty':>4} {'Total':>10}")
    print("-" * 35)

    for kode, item in keranjang_belanja.items():
        total_item = item['harga'] * item['jumlah']
        subtotal += total_item
        print(f"{item['nama'][:15]:<15} {item['jumlah']:>4} {total_item:,.0f}")

    # Asumsi sederhana: Diskon 5% jika total belanja di atas Rp 50.000
    DISKON_MINIMAL = 50000
    PERSEN_DISKON = 0.05
    
    diskon = 0
    if subtotal >= DISKON_MINIMAL:
        diskon = subtotal * PERSEN_DISKON
        print("-" * 35)
        print(f"{'DISKON (5%)':<25} -{diskon:,.0f}")
        
    total_bersih = subtotal - diskon
    
    print("-" * 35)
    print(f"{'SUBTOTAL':<25} {subtotal:,.0f}")
    print(f"{'TOTAL BAYAR':<25} {total_bersih:,.0f}")
    print("="*35)
    print("    Terima Kasih Telah Berbelanja!")
    print("="*35)

# --- Jalankan Program ---
if __name__ == "__main__":
    tampilkan_menu()
    
    belanjaan = proses_transaksi()
    
    cetak_struk(belanjaan)

Penjelasan Komponen Kode

Kode di atas terdiri dari tiga fungsi utama:

  1. DATA_PRODUK: Ini adalah representasi *database* mini kita, disimpan sebagai dictionary Python. Setiap barang memiliki kode unik sebagai kunci, dan nilainya adalah list yang berisi nama dan harga.
  2. proses_transaksi(): Fungsi ini bertugas berinteraksi dengan pengguna (melalui input konsol). Ia terus meminta kode produk hingga pengguna mengetik 'SELESAI'. Data yang dibeli disimpan dalam variabel keranjang. Terdapat validasi sederhana untuk memastikan input jumlah adalah angka positif.
  3. cetak_struk(): Setelah semua barang dimasukkan, fungsi ini menghitung subtotal. Dalam contoh ini, ditambahkan sedikit logika bisnis, yaitu memberikan diskon 5% jika total belanja mencapai batas tertentu (Rp 50.000). Output diformat agar terlihat seperti struk asli, menggunakan format string f-string untuk perataan kolom.

Pengembangan Lebih Lanjut

Contoh program python kasir ini masih sangat mendasar dan berbasis konsol. Untuk menjadikannya sistem yang lebih fungsional, Anda bisa mengembangkannya dengan menambahkan:

Memahami kerangka dasar ini akan mempermudah Anda saat beralih ke sistem POS yang lebih canggih di masa depan, membuktikan bahwa Python adalah alat yang kuat untuk otomasi bisnis sederhana.