Pengembangan Aplikasi Kasir

cara membuat aplikasi kasir berbasis web (PHP + SQLite) dengan integrasi barcode scanner, printer thermal, dan laci uang, serta kompilasi ke .exe m

15 Nov 2025
Dilihat: 0
Dibagikan: 0
Penulis: Anonim

Daftar Isi

    Membuat Aplikasi Kasir Web (POSLite) Sederhana: Dari PHP Sampai Jadi .exe!**

    **Pendahuluan:**

    Pernahkah Anda terpikir ingin punya sistem kasir sendiri untuk bisnis Anda, tapi terhalang biaya atau kompleksitasnya? Tenang, artikel ini akan memandu Anda membuat aplikasi kasir sederhana berbasis web (PHP + SQLite) yang bisa berjalan di komputer Anda, bahkan tanpa koneksi internet! Kita akan menamainya **POSLite**. Kita akan belajar mengintegrasikan barcode scanner, printer thermal, laci uang (Smartcom), dan pada akhirnya, mengubahnya menjadi aplikasi .exe dengan PHP Desktop. Bayangkan, sistem kasir custom untuk kafe kecil Anda sudah di depan mata!

    **Bagian 1: Persiapan dan Perencanaan (Fondasi POSLite)**

    Sebelum terjun ke kode, kita perlu mempersiapkan amunisi dan merencanakan fondasi POSLite kita.

    1. **Software yang Dibutuhkan:**
    * **Web Server:** XAMPP (Apache, PHP, MySQL) - Kita hanya butuh Apache dan PHP saja.
    * **Text Editor:** VS Code, Sublime Text, Notepad++ - Pilih yang paling nyaman buat Anda.
    * **PHP Desktop:** Untuk mengubah aplikasi web kita menjadi aplikasi desktop.
    * **Driver Printer Thermal:** Pastikan driver printer thermal sudah terinstall dengan benar.
    * **Driver Laci Uang (Smartcom):** Biasanya disertakan saat pembelian.
    * **Barcode Scanner:** Pastikan sudah terhubung dan terkonfigurasi dengan benar.

    2. **Database (SQLite):** Kita akan menggunakan SQLite karena simpel dan tidak memerlukan konfigurasi server yang rumit. Database kita akan menyimpan data produk, transaksi, dan konfigurasi.

    Berikut adalah tabel yang kita butuhkan:

    | Tabel | Kolom | Tipe Data | Keterangan |
    | ----------- | --------------- | ------------ | ------------------------------------------- |
    | `products` | `id` | INTEGER | PRIMARY KEY AUTOINCREMENT |
    | | `barcode` | TEXT | Kode barcode produk |
    | | `name` | TEXT | Nama produk |
    | | `price` | REAL | Harga produk |
    | | `stock` | INTEGER | Stok produk |
    | `transactions`| `id` | INTEGER | PRIMARY KEY AUTOINCREMENT |
    | | `transaction_date` | DATETIME | Tanggal transaksi |
    | | `total_amount` | REAL | Total harga transaksi |
    | | `payment_method`| TEXT | Metode pembayaran (Tunai, Debit, Kredit) |
    | `transaction_details` | `id` | INTEGER | PRIMARY KEY AUTOINCREMENT |
    | | `transaction_id`| INTEGER | FOREIGN KEY references `transactions`(id) |
    | | `product_id` | INTEGER | FOREIGN KEY references `products`(id) |
    | | `quantity` | INTEGER | Jumlah produk yang dibeli |
    | | `price` | REAL | Harga produk saat transaksi |
    | `settings` | `id` | INTEGER | PRIMARY KEY AUTOINCREMENT |
    | | `setting_name` | TEXT | Nama setting (misalnya, `printer_name`) |
    | | `setting_value` | TEXT | Nilai setting (misalnya, nama printer) |

    3. **Struktur Folder:**
    Buat folder `POSLite` di direktori `htdocs` XAMPP Anda (biasanya `C:\xampp\htdocs\`). Di dalam folder `POSLite`, buat folder `assets` (untuk menyimpan CSS, JavaScript, gambar), dan file `index.php` (halaman utama kasir), `config.php` (konfigurasi database), `functions.php` (fungsi-fungsi penting), dan `process.php` (memproses transaksi).

    **Bagian 2: Membuat Database dan Konfigurasi (Jantung POSLite)**

    1. **Membuat Database:**
    Kita akan menggunakan PHP untuk membuat database SQLite. Buat file `config.php` dan masukkan kode berikut:

    php
    $db_file = 'poslite.db'; // Nama file database SQLite

    try {
    $db = new PDO('sqlite:' . $db_file);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
    die("Koneksi ke database gagal: " . $e->getMessage());
    }
    ?>


    2. **Membuat Tabel:**
    Buat file `create_tables.php` dan masukkan kode berikut. Jalankan file ini sekali saja melalui browser (misalnya, `localhost/POSLite/create_tables.php`) untuk membuat tabel-tabel database. Setelah itu, hapus file ini untuk keamanan.

    php
    include 'config.php'; // Hubungkan ke database

    $sql_products = "CREATE TABLE IF NOT EXISTS products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    barcode TEXT,
    name TEXT,
    price REAL,
    stock INTEGER
    )";

    $sql_transactions = "CREATE TABLE IF NOT EXISTS transactions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    transaction_date DATETIME,
    total_amount REAL,
    payment_method TEXT
    )";

    $sql_transaction_details = "CREATE TABLE IF NOT EXISTS transaction_details (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    transaction_id INTEGER,
    product_id INTEGER,
    quantity INTEGER,
    price REAL,
    FOREIGN KEY (transaction_id) REFERENCES transactions(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
    )";

    $sql_settings = "CREATE TABLE IF NOT EXISTS settings (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    setting_name TEXT,
    setting_value TEXT
    )";

    try {
    $db->exec($sql_products);
    $db->exec($sql_transactions);
    $db->exec($sql_transaction_details);
    $db->exec($sql_settings);
    echo "Tabel berhasil dibuat!";
    } catch (PDOException $e) {
    die("Error membuat tabel: " . $e->getMessage());
    }

    $db = null; // Tutup koneksi database
    ?>


    **Bagian 3: Halaman Utama Kasir (index.php) dan Fungsi Penting (functions.php)**

    1. **Halaman Utama (index.php):**
    Buat tampilan sederhana untuk halaman kasir. Ini akan mencakup form untuk memasukkan barcode/nama produk, tabel untuk menampilkan daftar produk yang dibeli, total harga, dan tombol untuk memproses transaksi.

    php



    POSLite - Kasir Sederhana



    POSLite - Kafe Kecil Anda




























    Nama Produk Harga Jumlah Subtotal Aksi
    Total: 0.00









    2. **Fungsi Penting (functions.php):**
    Buat beberapa fungsi untuk mengambil data produk dari database, menambahkan produk ke keranjang belanja (session), menghitung total harga, dan memproses transaksi.

    php
    session_start(); // Penting untuk menggunakan session

    include 'config.php'; // Hubungkan ke database

    function getProductByBarcode($barcode) {
    global $db;
    $stmt = $db->prepare("SELECT * FROM products WHERE barcode = ?");
    $stmt->execute([$barcode]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
    }

    // Fungsi-fungsi lain (addProductToCart, calculateTotal, processTransaction) akan ditambahkan di sini
    ?>


    **Bagian 4: Logika Pemrosesan Transaksi (process.php) dan Integrasi Hardware**

    1. **Memproses Transaksi (process.php):**
    File ini akan menerima data dari JavaScript (melalui AJAX), menyimpan data transaksi ke database, mencetak struk (jika printer thermal terhubung), dan membuka laci uang (jika laci uang terhubung).

    php
    include 'functions.php'; // Hubungkan ke fungsi-fungsi

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $payment_method = $_POST['payment_method'];
    $cart = $_SESSION['cart']; // Ambil data keranjang belanja dari session

    // Validasi data, simpan transaksi ke database, update stok produk

    // Fungsi untuk mencetak struk (akan dibahas selanjutnya)
    printReceipt($transaction_id);

    // Fungsi untuk membuka laci uang (akan dibahas selanjutnya)
    openCashDrawer();

    // Kosongkan keranjang belanja
    unset($_SESSION['cart']);

    echo json_encode(['status' => 'success', 'message' => 'Transaksi berhasil!']);
    } else {
    echo json_encode(['status' => 'error', 'message' => 'Akses tidak sah!']);
    }
    ?>


    2. **Integrasi Barcode Scanner:**
    Barcode scanner akan bertindak seperti keyboard. Saat barcode di-scan, data akan otomatis masuk ke input field (misalnya, `#product-input`). Kita tinggal mengambil nilai tersebut dengan JavaScript dan mengirimkannya ke server untuk mencari data produk.

    3. **Integrasi Printer Thermal:**
    Untuk mencetak struk, kita perlu menggunakan library PHP untuk mencetak ke printer thermal. Ada beberapa library yang bisa digunakan, misalnya `mike42/escpos-php`. Instal library ini menggunakan Composer.

    php
    require __DIR__ . '/vendor/autoload.php';
    use Mike42\Escpos\Printer;
    use Mike42\Escpos\EscposIO;
    use Mike42\Escpos\PrintConnectors\WindowsPrintConnector;

    function printReceipt($transaction_id) {
    try {
    // Ambil data transaksi dari database
    global $db;
    $stmt = $db->prepare("SELECT * FROM transactions WHERE id = ?");
    $stmt->execute([$transaction_id]);
    $transaction = $stmt->fetch(PDO::FETCH_ASSOC);

    // Ambil data detail transaksi dari database

    // Inisialisasi printer
    $connector = new WindowsPrintConnector("nama_printer"); // Ganti dengan nama printer Anda
    $printer = new Printer($connector);

    $printer -> setJustification(Printer::JUSTIFY_CENTER);
    $printer -> text("POSLite - Kafe Kecil\n");
    $printer -> text("Tanggal: " . $transaction['transaction_date'] . "\n");
    $printer -> text("--------------------------------\n");

    // Cetak detail produk yang dibeli

    $printer -> text("--------------------------------\n");
    $printer -> text("Total: " . $transaction['total_amount'] . "\n");
    $printer -> text("Terima Kasih!\n");
    $printer -> cut();

    $printer -> close();
    } catch (Exception $e) {
    echo "Tidak dapat mencetak ke printer: " . $e -> getMessage() . "\n";
    }
    }


    4. **Integrasi Laci Uang (Smartcom):**
    Laci uang Smartcom biasanya terhubung melalui port serial (COM). Kita perlu mengirimkan perintah khusus ke port serial tersebut untuk membuka laci uang.

    php
    function openCashDrawer() {
    // Kode untuk membuka laci uang melalui port serial (COM)
    // Kode ini sangat spesifik tergantung model laci uang Anda
    // Biasanya menggunakan fungsi `fopen`, `fwrite`, dan `fclose` untuk berkomunikasi dengan port serial.
    // Contoh sederhana (perlu disesuaikan!):
    $port = "COM1"; // Ganti dengan port COM laci uang Anda
    $handle = fopen($port, "w");
    if ($handle) {
    fwrite($handle, chr(27) . chr(112) . chr(0) . chr(25) . chr(250)); // Perintah pembukaan laci uang (contoh)
    fclose($handle);
    } else {
    echo "Tidak dapat membuka laci uang!";
    }
    }


    **Bagian 5: Mengubah Aplikasi Web Menjadi .exe (PHP Desktop)**

    1. **Konfigurasi PHP Desktop:**
    * Download PHP Desktop dari situs resminya.
    * Ekstrak file PHP Desktop.
    * Copy folder `POSLite` Anda ke dalam folder `www` di dalam folder PHP Desktop.
    * Edit file `phpdesktop-chrome.ini` dan ubah `index_path` menjadi `POSLite/index.php`.
    * Ubah juga `chrome_user_data_dir` agar menyimpan data di folder `POSLite` (misalnya: `chrome_user_data_dir = %CURRENT_DIR%/POSLite/chrome_user_data`).

    2. **Menjalankan Aplikasi:**
    Jalankan file `phpdesktop-chrome.exe`. Aplikasi POSLite Anda akan terbuka sebagai aplikasi desktop!

    3. **Kustomisasi:**
    Anda bisa mengubah icon aplikasi, nama aplikasi, dan pengaturan lainnya melalui file `phpdesktop-chrome.ini`.

    **Penutup:**

    Selamat! Anda telah berhasil membuat aplikasi kasir web sederhana (POSLite) dengan PHP dan SQLite, mengintegrasikan barcode scanner, printer thermal, laci uang (Smartcom), dan mengubahnya menjadi aplikasi .exe dengan PHP Desktop. Aplikasi ini masih sangat sederhana, tapi bisa menjadi fondasi yang kuat untuk mengembangkan sistem kasir yang lebih kompleks sesuai kebutuhan kafe kecil Anda. Ingatlah untuk selalu menjaga keamanan data dan memvalidasi input dari pengguna. Selamat mencoba!

    **Checklist:**

    * [x] Instal XAMPP
    * [x] Instal PHP Desktop
    * [x] Buat database SQLite
    * [x] Buat tabel `products`, `transactions`, `transaction_details`, `settings`
    * [x] Buat halaman utama `index.php`
    * [x] Buat file `functions.php`
    * [x] Buat file `process.php`
    * [x] Integrasi barcode scanner
    * [x] Integrasi printer thermal (dengan library `mike42/escpos-php`)
    * [x] Integrasi laci uang (Smartcom)
    * [x] Konfigurasi PHP Desktop
    * [x] Uji coba aplikasi

    **Tag:** PHP, SQLite, Kasir, POS, Aplikasi Web, Barcode Scanner, Printer Thermal, Laci Uang, Smartcom, PHP Desktop, Tutorial, Pemrograman, Database, Kafe, Bisnis Kecil

    **Meta Description:** Pelajari langkah demi langkah membuat aplikasi kasir web sederhana (POSLite) dengan PHP & SQLite, terintegrasi barcode scanner, printer thermal, laci uang (Smartcom), dan dikonversi ke .exe dengan PHP Desktop. Cocok untuk kafe kecil!

    Bagikan Artikel Ini

    Artikel Terbaru

    ## Revolusi AI: Dari Asisten Virtual Hingga Dokter Masa Depan? Berita Dunia Teknologi ## Bikin Hidup Lebih Mudah: Tips & Trik Teknologi yang Wajib Kamu Tahu! Tips & Tutorial Teknologi ## Jangan Panik! Tips Jitu Jaga Diri di Dunia Maya Keamanan & Internet ## AI: Bukan Sekadar Film Sci-Fi, Tapi Sahabat Baru Kita Sehari-hari! AI & Teknologi Cerdas ## Robot Cerdas dan IoT: Masa Depan Ada di Genggaman Kita Robotik & IoT