Ahenk TekelKasa (POS) programı
Bakkal ve tekel bayileri için barkodlu satış, stok, kasa ve cari (veresiye) programı. Windows'ta Electron ile masaüstü uygulaması olarak çalışıyor ve veriyi dükkân bilgisayarındaki yerel PostgreSQL'de tutuyor; internet gitse de satış durmuyor. İkinci monitör takıldığında müşteri ekranı kendiliğinden açılıyor.
- 1.045 ürün
- hazır katalog, 35 kategori
- 456
- gerçek barkodla gelen ürün
- 0
- internet bağımlılığı
Sorun
Mahalle bakkalı ve tekel bayileri için satılan kasa programlarının çoğu ya eski ve hantal ya da internet kesildiği an duran abonelikli bulut yazılımları. Dükkân sahibi hızlı bir satış ekranı, doğru stok ve güvenilir bir veresiye defteri istiyor; ayrıca yüzlerce ürünü tek tek sisteme girmekle uğraşmak istemiyor.
Ne yaptım
- Satış ekranı (POS): 1366×768 dokunmatik ekrana göre tasarlandı. USB barkod okuyucu klavye gibi davrandığı için ekranda hangi alan seçili olursa olsun okutma yakalanıyor. Beklet, iade, indirim, müşteri seçimi ve yönetici PIN onayı.
- Müşteri ekranı: ikinci monitörde sepet ve toplam. Sigara ve alkol ürünleri satış noktası tanıtım kısıtı nedeniyle vitrinde gösterilmiyor.
- Stok: ürünler, mal kabul, sayım ve sipariş önerisi ekranları. Koli barkodu "okutma başına kaç adet" seçilerek bağlanabiliyor.
- Hazır katalog: 35 kategoride 1.045 ürünlük başlangıç kataloğu, her üründe görsel. Barkodu bilinmeyen ürün ilk okutmada "mevcut ürüne bağla" ile öğretiliyor.
- Dashboard: ciro, kâr, ortalama sepet, ödeme dağılımı, kritik stok ve veresiye özeti.
Teknik kararlar
Para asla ondalıklı sayı değil
Tutarlar veritabanında numeric(14,2), uygulamada kuruş cinsinden tamsayı olarak tutuluyor. Kayan noktalı sayıdaki yuvarlama hatası, kasada gün sonunda açık demek.
Satış tek transaction
Bir satış; fiş, satırlar (fiyat, maliyet ve KDV'nin o anki kopyası), ödemeler, stok hareketi, kasa hareketi, cari borç ve outbox kaydını tek transaction'da yazıyor. Ya hepsi olur ya hiçbiri.
Çift satış olmaz
Satış uç noktası Idempotency-Key istiyor. Ağ takılıp istek iki kez gitse bile ikinci fiş oluşmuyor; hem kodda hem veritabanında UNIQUE index ile korunuyor.
Kurulumu dükkâna göre
PostgreSQL uygulamayla gelen dosyalardan başlatılıyor, Docker gerekmiyor. Türkçe Windows'un yerel ayar adını reddeden initdb sorununa karşı küme C locale ve ICU tr-TR sıralamasıyla kuruluyor.
Durum
Arayüz tarayıcıda demo veriyle incelenebiliyor; API ve veritabanı hazır ve testli. Sıradaki aşama arayüzün API'ye bağlanması ve bir dükkânda pilot kullanım.


