Cara Membuat Program Kasir dengan Python

Ilustrasi Program Kasir Sederhana

Membuat program kasir (Point of Sale/POS) sederhana menggunakan Python adalah proyek yang sangat baik untuk pemula hingga menengah. Python menawarkan sintaks yang bersih dan banyak modul yang dapat dimanfaatkan, meskipun untuk aplikasi kasir dasar, kita sering kali hanya membutuhkan fungsionalitas inti seperti input, perhitungan, dan output (cetak struk).

Artikel ini akan memandu Anda melalui langkah-langkah dasar untuk membangun sistem kasir berbasis teks (command-line interface/CLI) yang mencatat transaksi penjualan, menghitung total, dan menampilkan kembalian. Ini adalah fondasi kuat sebelum beralih ke antarmuka grafis (GUI) menggunakan Tkinter atau PyQT.

Persiapan Awal: Struktur Data Barang

Langkah pertama dalam membuat program kasir adalah mendefinisikan data barang dagangan. Dalam contoh sederhana, kita akan menggunakan struktur data Python seperti dictionary (kamus) untuk menyimpan nama produk beserta harganya. Jika skala bisnis Anda besar, Anda mungkin akan menggunakan database seperti SQLite atau PostgreSQL, namun untuk CLI, dictionary sudah cukup.

Berikut adalah contoh data barang:


barang = {
    "A001": {"nama": "Buku Tulis", "harga": 5000},
    "A002": {"nama": "Pensil 2B", "harga": 2500},
    "B010": {"nama": "Penghapus Besar", "harga": 1500},
    "C005": {"nama": "Stiker Motivasi", "harga": 1000}
}
        

Logika Utama Program Kasir

Sebuah sistem kasir harus mampu melakukan beberapa tugas utama:

  1. Menampilkan menu barang yang tersedia.
  2. Menerima input kode barang dari kasir.
  3. Menghitung subtotal berdasarkan kuantitas.
  4. Menghitung total akhir transaksi.
  5. Memproses pembayaran dan menghitung kembalian.
  6. Mencetak ringkasan struk.

Kita akan menggunakan loop tak terbatas (while True) agar kasir dapat melayani pelanggan berikutnya tanpa perlu me-restart program.

Contoh Implementasi Dasar dengan Python

Berikut adalah kerangka kode Python yang menggabungkan struktur data di atas dengan logika transaksi:


def buat_transaksi():
    keranjang = []
    total_belanja = 0
    
    print("--- APLIKASI KASIR SEDERHANA ---")
    
    while True:
        kode = input("Masukkan Kode Barang (atau 'SELESAI' untuk hitung): ").upper()
        
        if kode == 'SELESAI':
            break
            
        if kode in barang:
            nama = barang[kode]['nama']
            harga = barang[kode]['harga']
            
            try:
                qty = int(input(f"Berapa kuantitas {nama}? "))
                if qty <= 0:
                    print("Kuantitas harus lebih dari nol.")
                    continue
                
                subtotal = harga * qty
                total_belanja += subtotal
                keranjang.append((nama, qty, harga, subtotal))
                print(f"--> {nama} ditambahkan. Subtotal: Rp{subtotal}")
                
            except ValueError:
                print("Input kuantitas tidak valid.")
        else:
            print("Kode barang tidak ditemukan. Silakan coba lagi.")

    if not keranjang:
        print("Transaksi dibatalkan.")
        return

    # Proses Pembayaran
    print("\n==================================")
    print("RINCIAN PEMBAYARAN")
    for nama, qty, harga, subtotal in keranjang:
        print(f"{nama} ({qty}x @Rp{harga}): Rp{subtotal}")
    
    print("----------------------------------")
    print(f"TOTAL BELANJA: Rp{total_belanja}")
    
    while True:
        try:
            bayar = int(input("Uang Tunai Pembayaran: Rp"))
            if bayar < total_belanja:
                print("Uang kurang! Silakan masukkan jumlah yang cukup.")
                continue
            
            kembalian = bayar - total_belanja
            print(f"Kembalian Anda: Rp{kembalian}")
            print("--- TERIMA KASIH TELAH BERBELANJA ---")
            break
        except ValueError:
            print("Input pembayaran tidak valid.")

# Mulai Program
buat_transaksi()
        

Mengembangkan Lebih Lanjut

Kode di atas adalah inti dari sistem kasir berbasis CLI. Untuk menjadikannya sistem yang lebih tangguh, Anda perlu menambahkan beberapa fitur penting. Pertama, pengelolaan stok. Setiap kali barang terjual, stok harus dikurangi dari database (atau dictionary). Kedua, kemampuan untuk mengedit atau menghapus item dari keranjang sebelum pembayaran. Ketiga, validasi input yang lebih ketat untuk menghindari crash program.

Jika Anda berencana untuk melangkah ke GUI, Python dan pustaka seperti Tkinter atau PyQt akan sangat membantu. Namun, pemahaman mendalam tentang logika transaksi seperti yang dijelaskan di sini adalah fondasi utama yang tidak boleh dilewatkan. Dengan Python, pembuatan sistem kasir yang efisien dan mudah dikelola menjadi lebih terjangkau.