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:
- Menyimpan daftar produk dan harganya.
- Menerima input barang yang dibeli pelanggan.
- Melakukan perhitungan (subtotal, pajak, total akhir).
- 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:
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.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 variabelkeranjang. Terdapat validasi sederhana untuk memastikan input jumlah adalah angka positif.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:
- Persistent Storage: Mengganti
DATA_PRODUKstatis dengan membaca data dari file CSV atau database (seperti SQLite) agar data produk tidak hilang setiap kali program di-restart. - Manajemen Stok: Mengurangi jumlah stok secara otomatis setelah transaksi berhasil.
- Metode Pembayaran: Meminta input jumlah uang yang dibayarkan pelanggan dan menghitung kembalian.
- Antarmuka Grafis (GUI): Menggunakan library seperti Tkinter atau PyQt untuk membuat tampilan yang lebih visual daripada sekadar teks di konsol.
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.