# POS SaaS - Sistem Point of Sale Berlangganan

Sebuah aplikasi Point of Sale (POS) modern dengan sistem SaaS berlangganan bulanan sesuai dengan kebutuhan bisnis retail, toko, atau warung untuk mengelola penjualan, stok produk, dan keuangan.

## Fitur Utama

### 1. **Sistem Autentikasi**
- Pendaftaran pengguna baru dengan email verification
- Login dengan password terenkripsi
- Session management dan timeout otomatis
- Logout dengan clear history

### 2. **Manajemen Produk**
- Tambah/edit/hapus produk
- Tracking stok produk real-time
- Kategori produk
- SKU dan barcode support
- Notifikasi stok rendah

### 3. **Sistem Kasir**
- Interface kasir yang user-friendly
- Pencarian produk cepat
- Keranjang belanja dinamis
- Perhitungan tax dan diskon otomatis
- Multiple payment methods (Cash, Card, Transfer)
- Print receipt

### 4. **Manajemen Transaksi**
- Riwayat penjualan lengkap
- Invoice number otomatis
- Item detail per transaksi
- Status pembayaran tracking
- Cetak ulang struk

### 5. **Sistem Berlangganan**
- Trial gratis 7 hari
- Paket bulanan Rp 50.000
- Paket tahunan Rp 500.000 (hemat 17%)
- Manajemen pembayaran
- Invoice pembayaran otomatis
- Status langganan real-time

### 6. **Laporan & Analytics**
- Laporan penjualan harian/periode
- Total penjualan dan transaksi
- Rata-rata transaksi
- Filter by date range
- Export data

### 7. **Management User**
- Profile management
- Update data perusahaan
- Address dan contact info
- Role management (owner, manager, cashier)

## Struktur Folder

```
pos-saas/
├── app/                    # Core PHP classes
│   ├── Database.php       # Database abstraction
│   ├── Auth.php          # Authentication
│   ├── Subscription.php   # Subscription management
│   ├── Transaction.php    # Transaction handling
│   ├── Product.php       # Product management
│   └── Helper.php        # Helper functions
├── config/               # Configuration files
│   ├── database.php      # Database connection
│   └── constants.php     # Application constants
├── database/             # Database files
│   └── schema.sql       # Database schema
├── public/              # Web root
│   ├── index.php       # Landing page
│   ├── init.php        # Initialization
│   ├── auth/           # Authentication pages
│   ├── dashboard.php   # Main dashboard
│   ├── pos/            # Point of Sale pages
│   ├── products/       # Product management
│   ├── subscription/   # Subscription pages
│   ├── reports/        # Reports
│   ├── layout/         # Layout templates
│   ├── assets/         # CSS, JS, Images
│   └── .htaccess       # URL rewrite rules
└── views/              # (For future use)
```

## Requirements

- PHP 7.4 atau lebih tinggi
- MySQL 5.7 atau lebih tinggi
- Apache dengan mod_rewrite enabled
- Browser modern (Chrome, Firefox, Safari, Edge)

## Instalasi

### 1. Download & Extract
```bash
# Extract file ke folder htdocs
cd d:\xampp7\htdocs\pos-saas
```

### 2. Setup Database
```bash
# Buka MySQL command line atau phpmyadmin
# Create database
CREATE DATABASE pos_saas CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Import schema
mysql -u root -p pos_saas < database/schema.sql
```

### 3. Konfigurasi Database
Edit file `config/database.php`:
```php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', ''); // Sesuaikan dengan password MySQL Anda
define('DB_NAME', 'pos_saas');
```

### 4. Akses Aplikasi
- **URL**: http://localhost/pos-saas/public/
- **Landing Page**: http://localhost/pos-saas/public/index.php

## Cara Penggunaan

### Pendaftaran
1. Klik "Daftar Gratis" di halaman utama
2. Isi data lengkap (Nama, Email, Password, Nama Toko)
3. Klik tombol Daftar
4. Login dengan akun yang telah dibuat
5. Nikmati trial gratis 7 hari

### Menggunakan POS
1. Masuk ke Dashboard
2. Klik tombol "Buka Kasir"
3. Cari produk yang akan dijual
4. Masukkan quantity
5. Konfirmasi pembayaran
6. Cetak receipt

### Mengelola Produk
1. Dari menu, pilih "Produk" → "Daftar Produk"
2. Klik "Tambah Produk" untuk produk baru
3. Isi data produk (Nama, SKU, Harga, Stok)
4. Simpan

### Upgrade Langganan
1. Dari profile dropdown, pilih "Status Langganan"
2. Klik "Upgrade Paket"
3. Pilih paket (Bulanan atau Tahunan)
4. Ikuti instruksi pembayaran
5. Langganan akan aktif setelah pembayaran dikonfirmasi

## Harga

| Paket | Harga | Fitur |
|-------|-------|-------|
| Trial | Gratis | 7 hari akses penuh tanpa bayar |
| Bulanan | Rp 50.000 | Akses penuh, support email |
| Tahunan | Rp 500.000 | Hemat 17%, support prioritas |

## Payment Methods

Sistem mendukung berbagai metode pembayaran:
- Tunai (Cash)
- Kartu Kredit
- Transfer Bank

*Integrasi payment gateway (Midtrans, etc) dapat ditambahkan di kemudian hari*

## Security Features

- Password hashing dengan bcrypt
- SQL injection prevention dengan prepared statements
- Session security dengan timeout
- CSRF protection ready
- Input sanitization
- User authentication checks

## Database Schema

### Users Table
Menyimpan data pengguna dan info perusahaan

### Subscriptions Table
Manajemen langganan dan trial period

### Payments Table
Riwayat pembayaran dan invoice

### Products Table
Katalog produk per user

### Transactions Table
Riwayat penjualan

### Transaction Items Table
Detail item per transaksi

### Stock History Table
Audit trail perubahan stok

### Activity Logs Table
Log aktivitas user

## Troubleshooting

### Database Connection Error
- Pastikan MySQL running
- Cek username dan password di config/database.php
- Pastikan database `pos_saas` sudah dibuat

### 404 Not Found
- Pastikan mod_rewrite enabled di Apache
- Cek file .htaccess ada di folder public

### Login Gagal
- Pastikan email dan password benar
- Cek apakah akun sudah diverifikasi

### Langganan Kadaluarsa
- Upgrade pada halaman "Status Langganan"
- Ikuti instruksi pembayaran

## Development

### Menambah Fitur Baru
1. Create controller/class di `app/`
2. Create view template di `public/`
3. Update routing di `.htaccess` jika perlu

### Database Migration
Tambahkan script di `database/` folder untuk changes

### Updates
Cek `CHANGELOG.md` untuk history updates

## Support

Untuk pertanyaan atau support, hubungi melalui:
- Email: support@pos-saas.com
- Website: www.pos-saas.com

## License

POS SaaS © 2026 - Semua hak dilindungi

## Notes

- Sistem ini sudah production-ready namun pastikan untuk melakukan testing keamanan tambahan sebelum go-live
- Backup database secara berkala
- Update PHP dan MySQL untuk security patches
- Monitor activity logs untuk keamanan
