Integrated POS System (Point of Sale)

Integrated POS System, Point of Sale

Integrated POS System: Arsitektur POS (Point of Sale) Berbasis PostgreSQL, Inventory Ledger, COGS Snapshot, dan Asynchronous Processing.

Banyak Integrated POS System (Point of Sale) dimulai dari kebutuhan sederhana: mencatat transaksi penjualan. Namun seiring bertambahnya jumlah transaksi, menu, bahan baku, dan metode pembayaran, kebutuhan operasional berkembang jauh melampaui fungsi kasir.

Restoran, café, lounge, dan bisnis hospitality modern membutuhkan lebih dari sekadar pencatatan order. Mereka memerlukan pengelolaan inventory, recipe management, costing, production task, settlement pembayaran, cashflow, membership, voucher, hingga laporan profit yang dapat ditelusuri kembali ke sumber transaksinya.

Ketika POS System (Point of Sale) Tidak Lagi Sekadar Kasir.

Integrated POS System (Point of Sale) dikembangkan dengan pendekatan tersebut. Fokus utama sistem bukan pada jumlah fitur yang ditampilkan di halaman kasir, melainkan pada bagaimana seluruh domain bisnis tetap konsisten saat saling berinteraksi setiap hari.

Integrated POS System (Point of Sale) ini digunakan untuk mengelola transaksi, inventory, produksi, costing, cashflow, settlement merchant, dan reporting melalui satu platform terintegrasi yang dibangun menggunakan PHP, Yii Framework, PostgreSQL, Redis, dan arsitektur modular berbasis domain.

Infrastruktur Teknologi.

Backend Runtime.

Integrated POS System (Point of Sale) berjalan pada lingkungan produksi:

  • PHP 8.4.21
  • Apache Web Server
  • Debian 13
  • Linux Kernel 6.12

Pendekatan ini dipilih untuk menjaga stabilitas jangka panjang sekaligus mempermudah deployment dan maintenance.

Database.

Seluruh transaksi bisnis menggunakan PostgreSQL 18 sebagai sumber data utama. Database tidak hanya digunakan untuk penyimpanan data operasional, tetapi juga menjadi pusat konsistensi transaksi pada berbagai domain seperti:

  • Order
  • Inventory
  • Income
  • Cashflow
  • Settlement
  • Analytics
  • Membership
  • Voucher
  • JSONB Storage
  • Transaction Management
  • Row Locking
  • Aggregation Query
  • Composite Index
  • Snapshot Reporting Pattern

Pendekatan ini memungkinkan sistem tetap konsisten meskipun banyak proses berjalan secara paralel.

Redis Layer.

Redis 8 digunakan sebagai cache dan runtime state layer. Implementasi Redis digunakan untuk:

  • Cache API
  • Availability Status
  • Operational Lookup
  • Temporary Runtime State
  • Reporting Optimization

Pada lingkungan produksi saat ini, Redis berjalan secara standalone dengan konsumsi memori yang relatif kecil namun tetap memberikan peningkatan performa signifikan pada proses pembacaan data.

Arsitektur Modular Berbasis Domain.

Secara deployment, Integrated POS System (Point of Sale) berjalan sebagai aplikasi monolith. Namun secara desain, sistem dipisahkan menjadi domain-domain independen yang memiliki tanggung jawab masing-masing.

Contohnya:

  • Order Domain
  • Inventory Domain
  • Income Domain
  • Cashflow Domain
  • Settlement Domain
  • Production Domain
  • Analytics Domain
  • Member Domain
  • Voucher Domain
  • Business Session Domain

Alih-alih saling mengakses tabel secara langsung, komunikasi dilakukan melalui Internal API Contract yang terdefinisi dengan jelas. Pendekatan ini membantu menjaga batas tanggung jawab setiap domain sekaligus mempermudah pengembangan jangka panjang.

Internal API Sebagai Kontrak Antar Domain.

Salah satu keputusan arsitektur utama dalam Integrated POS System (Point of Sale) adalah penggunaan Internal API sebagai media komunikasi antar domain. Sebagai contoh, ketika Income Domain membutuhkan informasi costing sebuah order, domain tersebut tidak langsung membaca tabel order. Sebaliknya Income Domain meminta data kepada Analytics Domain melalui kontrak payload resmi.

Pendekatan ini memberikan beberapa keuntungan:

  • Mengurangi coupling antar modul
  • Mempermudah refactoring
  • Menjaga konsistensi payload
  • Mempermudah debugging
  • Mempermudah pengujian domain secara independen

Inventory Berbasis Ledger.

Inventory merupakan salah satu area yang paling sering menjadi sumber masalah dalam aplikasi POS. Untuk mengurangi risiko inkonsistensi, Integrated POS System (Point of Sale) menggunakan pendekatan inventory ledger. Setiap perubahan inventory dicatat sebagai movement:

  • Receive
  • Consume
  • Adjustment
  • Transfer
  • Void

Balance inventory dihitung berdasarkan akumulasi movement tersebut.

  • Audit trail lengkap
  • Histori tidak hilang
  • Mudah ditelusuri
  • Mendukung rebuild balance
  • Mendukung investigasi operasional

Multi Scope Inventory.

Inventory dapat dipisahkan berdasarkan scope operasional. Contohnya:

  • Main Kitchen
  • Bar
  • Barista
  • Shared Inventory

Setiap scope memiliki balance, threshold, recipe, dan costing masing-masing. Pendekatan ini membantu bisnis dengan lebih dari satu area produksi dalam menjaga akurasi stok.

Recipe Engine dan Inventory Consumption.

Setiap menu dapat memiliki recipe yang menghubungkan menu dengan bahan baku inventory.

Contoh menu makanan dapat mengonsumsi:

  • Nasi
  • Protein
  • Telur
  • Bumbu
  • Pelengkap

Sedangkan menu steak dapat mengonsumsi:

  • Daging
  • Kentang
  • Sayuran
  • Saus

Saat pembayaran berhasil, sistem secara otomatis menghasilkan payload inventory consumption berdasarkan recipe yang telah didefinisikan sebelumnya. Dengan pendekatan ini, pengurangan stok tidak dilakukan secara manual.

Bundle dan Composite Product.

Selain recipe, sistem mendukung bundle atau paket penjualan. Contoh:

  • 2x Signature Fried Rice
  • 2x Premium Sirloin Steak

Pada saat transaksi diproses, bundle akan dipecah menjadi item produksi aktual. Kitchen dan inventory tidak perlu memahami harga paket. Mereka hanya menerima item yang benar-benar harus diproduksi dan dikonsumsi dari inventory. Pendekatan ini membantu memisahkan domain penjualan dari domain produksi.

Cost of Goods Sold (COGS) Snapshot.

Perhitungan Cost of Goods Sold merupakan bagian penting dalam laporan profit. Integrated POS System (Point of Sale) menggunakan pendekatan snapshot. Saat order selesai dibayar, sistem membuat snapshot COGS berdasarkan costing yang berlaku pada saat transaksi terjadi.

Keuntungan pendekatan ini:

  • Laporan lebih cepat
  • Histori tetap konsisten
  • Tidak perlu menghitung ulang seluruh transaksi
  • Cocok untuk kebutuhan audit

Asynchronous Postpaid Processing.

Ketika pembayaran berhasil, sistem tidak langsung menjalankan seluruh proses bisnis secara synchronous. Sebaliknya Integrated POS System (Point of Sale) menggunakan pendekatan asynchronous processing.

Setelah payment success, sistem dapat menjalankan:

  • Inventory Consume
  • COGS Snapshot
  • Income Snapshot
  • Voucher Consume
  • Member Visit Record
  • Analytics Update

Semua proses Postpaid tersebut dijalankan melalui mekanisme background processing. Pendekatan ini membantu menjaga waktu respons kasir tetap cepat meskipun proses bisnis yang terjadi di belakang layar cukup kompleks.

Cron Orchestrator.

Untuk mengelola proses asynchronous, Integrated POS System (Point of Sale) memiliki Cron Orchestrator internal.

Setiap job memiliki metadata seperti:

  • Job Code
  • Run Key
  • Attempt
  • Scheduled Time
  • Started Time
  • Finished Time
  • Status

Contoh job:

  • order.postpaid.finalize
  • businesssession.auto.tick

Dengan pendekatan ini, proses retry, monitoring, dan audit menjadi lebih mudah dilakukan.

Idempotent Processing.

Seluruh proses penting menggunakan idempotency key. Contoh:

  • order:125:payment:consume
  • order:125:paid
  • order:125:voucher:apply

Jika proses yang sama dijalankan kembali karena retry atau gangguan jaringan, sistem dapat mengenali bahwa pekerjaan tersebut sudah pernah diproses sebelumnya. Pendekatan ini sangat penting pada domain inventory, payment, dan cashflow.

Snapshot Analytics dan Reporting.

Alih-alih menghitung ulang seluruh histori transaksi setiap kali laporan dibuka, Integrated POS System (Point of Sale) menggunakan snapshot analytics.

Beberapa snapshot yang digunakan antara lain:

  • Income Snapshot
  • COGS Snapshot
  • Cashflow Snapshot

Pendekatan ini menghasilkan:

  • Query lebih ringan
  • Dashboard lebih responsif
  • Laporan historis lebih stabil

Penutup.

Integrated POS System (Point of Sale) dikembangkan dengan fokus pada konsistensi data operasional, bukan sekadar pencatatan transaksi penjualan. Melalui kombinasi PostgreSQL 18, Redis 8, Yii Framework, inventory ledger, snapshot reporting, internal API contract, asynchronous processing, dan cron orchestrator, sistem ini dirancang untuk membantu mengelola proses bisnis yang saling terhubung mulai dari order hingga laporan profit.

Karena dalam operasional sehari-hari, tantangan sebenarnya bukan hanya mencatat transaksi. Tantangannya adalah memastikan seluruh proses yang terjadi setelah transaksi tetap akurat, dapat ditelusuri, dan menghasilkan data yang dapat dipercaya.

Scroll to Top