Diskon 10% untuk Pembayaran QRIS
Nikmati potongan harga 10% untuk semua transaksi yang dibayar menggunakan QRIS selama bulan ini.
Aplikasi kasir lengkap dengan fitur pembayaran tunai, QRIS, EDC, laporan lengkap, dan sistem member otomatis. Mudah digunakan, cepat, dan dapat diakses multi user serta multi outlet.
Lihat DashboardKami adalah penyedia solusi kasir berbasis web yang mengutamakan kemudahan, kecepatan, dan integrasi penuh dengan berbagai metode pembayaran. Sistem kami mendukung multi user dan multi outlet, serta dilengkapi fitur laporan lengkap dan sistem member otomatis untuk meningkatkan loyalitas pelanggan.
Dengan teknologi ringan berbasis PHP native dan MySQL, aplikasi kami mudah di-deploy di hosting umum dan dapat diakses kapan saja tanpa hambatan.
Nikmati potongan harga 10% untuk semua transaksi yang dibayar menggunakan QRIS selama bulan ini.
Daftar sebagai member saat pemesanan dan dapatkan poin ganda untuk pembelian pertama Anda.
Dapatkan cashback tunai hingga Rp50.000 untuk pembayaran tunai di outlet kami.
Menampilkan ringkasan transaksi harian, termasuk bruto, netto, dan keuntungan bersih.
Pembayaran tunai, QRIS, dan mesin EDC bank dengan proses yang sesuai.
Member otomatis dengan inisial nama dan nomor urut, akumulasi poin per transaksi.
Customer memberikan nama dan nomor WhatsApp, otomatis terdaftar sebagai member dengan kode unik.
Pembayaran via tunai, QRIS langsung bayar, atau EDC. Pesanan tunai/EDC muncul di kasir setelah pembayaran.
Struk kasir dicetak dan dapat dikirim via WhatsApp langsung ke customer.
| Modul / Komponen | Sub Komponen | Status | Estimasi Waktu | Tanggal Target Selesai | Progres |
|---|---|---|---|---|---|
| Struktur Folder & Database | Desain schema, struktur folder, koneksi DB | Selesai | 3 Hari | 24 Agustus 2025 | 100% |
| Modul Kasir | Input order, sistem member, metode pembayaran | Selesai | 4 Hari | 26 Agustus 2025 | 100% |
| Modul Laporan | Laporan harian, mingguan, neraca, keuntungan | Dalam Proses | 5 Hari | 31 Agustus 2025 | 75% |
| Fitur Cetak & Kirim Struk | Cetak struk, integrasi WhatsApp | Dalam Proses | 4 Hari | 2 September 2025 | 60% |
| Multi User & Multi Outlet | Pengaturan akses, autentikasi, manajemen outlet | Dalam Proses | 6 Hari | 29 Agustus 2025 | 70% |
| Sistem Keluhan & Saran | Input keluhan, tampilan dashboard, notifikasi email | Dalam Proses | 5 Hari | 30 Agustus 2025 | 50% |
| Sistem Login Mitra & Surat Kerjasama | Autentikasi mitra, manajemen surat kerjasama | Belum Mulai | 4 Hari | 15 September 2025 | 0% |
| Dokumentasi & Deployment | Dokumentasi lengkap, pelatihan, deploy hosting | Belum Mulai | 4 Hari | 19 September 2025 | 0% |
Email: info@cafeherbalcantik.id
Nama Outlet: Rempah Cantik
Alamat: Jl. H. Juhri No.41, RT.4/RW.8, Meruya Sel., Kec. Kembangan, Kota Jakarta Barat, Daerah Khusus Ibukota Jakarta 11650
/aplikasi-kasir
├── /assets
│ ├── /css
│ ├── /js
│ └── /images
├── /config
│ └── database.php
├── /modules
│ ├── kasir.php
│ ├── laporan.php
│ ├── member.php
│ ├── pembayaran.php
│ └── user.php
├── /public
│ ├── index.php
│ ├── login.php
│ └── logout.php
├── /templates
│ ├── header.php
│ ├── footer.php
│ └── navbar.php
└── /vendor
└── (library dependencies)
-- Tabel users (multi user)
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
role ENUM('admin','kasir','manager') NOT NULL DEFAULT 'kasir',
outlet_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabel outlets (multi outlet)
CREATE TABLE outlets (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
address TEXT,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabel members
CREATE TABLE members (
id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(10) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
whatsapp VARCHAR(20) NOT NULL,
points INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabel orders
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
outlet_id INT NOT NULL,
user_id INT NOT NULL,
total DECIMAL(12,2) NOT NULL,
payment_method ENUM('tunai','qris','edc') NOT NULL,
payment_status ENUM('pending','paid') NOT NULL DEFAULT 'pending',
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
barcode VARCHAR(50) UNIQUE,
FOREIGN KEY (member_id) REFERENCES members(id),
FOREIGN KEY (outlet_id) REFERENCES outlets(id),
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- Tabel order_items
CREATE TABLE order_items (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_name VARCHAR(100) NOT NULL,
quantity INT NOT NULL,
price DECIMAL(12,2) NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id)
);
-- Tabel payments
CREATE TABLE payments (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
amount DECIMAL(12,2) NOT NULL,
method ENUM('tunai','qris','edc') NOT NULL,
payment_date DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES orders(id)
);
// modules/kasir.php
<?php
require_once '../config/database.php';
function createOrder($memberId, $outletId, $userId, $items, $paymentMethod) {
global $db;
$db->beginTransaction();
try {
$total = 0;
foreach ($items as $item) {
$total += $item['price'] * $item['quantity'];
}
$stmt = $db->prepare("INSERT INTO orders (member_id, outlet_id, user_id, total, payment_method, payment_status, barcode) VALUES (?, ?, ?, ?, ?, 'pending', ?)");
$barcode = generateBarcode();
$stmt->execute([$memberId, $outletId, $userId, $total, $paymentMethod, $barcode]);
$orderId = $db->lastInsertId();
$stmtItem = $db->prepare("INSERT INTO order_items (order_id, product_name, quantity, price) VALUES (?, ?, ?, ?)");
foreach ($items as $item) {
$stmtItem->execute([$orderId, $item['product_name'], $item['quantity'], $item['price']]);
}
$db->commit();
return ['success' => true, 'order_id' => $orderId, 'barcode' => $barcode];
} catch (Exception $e) {
$db->rollBack();
return ['success' => false, 'error' => $e->getMessage()];
}
}
function generateBarcode() {
return 'ORD' . strtoupper(bin2hex(random_bytes(4)));
}
?>
// modules/laporan.php
<?php
require_once '../config/database.php';
function getDailyReport($date, $outletId) {
global $db;
$stmt = $db->prepare("
SELECT
SUM(total) AS bruto,
SUM(total) - SUM(total * 0.1) AS netto, -- contoh potongan 10%
SUM(total * 0.1) AS keuntungan
FROM orders
WHERE DATE(order_date) = ? AND outlet_id = ? AND payment_status = 'paid'
");
$stmt->execute([$date, $outletId]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
?>
<?php include 'templates/header.php'; ?>
<?php include 'templates/navbar.php'; ?>
<section id="landing">
<!-- Konten landing page seperti di atas -->
</section>
<?php include 'templates/footer.php'; ?>