📒 Veresiye Açılan Hesaplar — {{ handoverData.credits.length }} adet
⏰ Saat
Fiş No
Müşteri
Telefon
Borç
{{ fmtTime(c.created_at) }}
{{ c.sale_no }}
{{ c.customer_name }}
{{ c.customer_phone || '-' }}
{{ fmt(c.grand_total) }}
🏆 En Çok Satılan Ürünler (Top 10)
#
Ürün
Miktar
Tutar
{{ i + 1 }}
{{ p.name }}
{{ parseFloat(p.qty).toFixed(2) }}
{{ fmt(p.total) }}
🕐 Saatlik Satış Dağılımı
{{ String(h.hour).padStart(2, '0') }}:00
{{ h.cnt }} adet · {{ fmt(h.total) }}
TESLİM EDEN (Kasiyer)
{{ handoverData.cashier.full_name }}
İmza: ___________________
TESLİM ALAN (Yönetici)
{{ user.full_name }}
İmza: ___________________
Bu tutanak {{ new Date().toLocaleString('tr-TR') }} tarihinde sistemden otomatik üretilmiştir.
👥 Kullanıcı Yönetimi
Ad Soyad
Kullanıcı Adı
Rol
Durum
İşlem
{{ u.full_name }}
{{ u.username }}
{{ u.role==='admin'?'Yönetici':'Kasiyer' }}
{{ u.is_active==1?'Aktif':'Pasif' }}
⚙ Ayarlar
Satış ekranı grup & ürün kısayolları
Grup adlarını düzenleyin (örn. «Çok satılan ürünler»). Her grupta 20 ürün kısayolu (4×5). Satış ekranında da «Grup / Kısayol Ayarla» ile düzenlenebilir.
{{ g.name }}
{{ (g.slots||[]).filter(Boolean).length }} / 20 dolu
Fiş alt mesajı ve fiş görünümü için sekmesine gidin.
🖼
Görsel Yükleme Sınırı
Ürün ve logo görsel dosyaları için maksimum boyut. "Sınırsız" seçerseniz sadece sunucunuzun PHP upload_max_filesize ayarı geçerli olur.
⚠ Eğer 10 MB'tan büyük görsel yüklemek istiyorsanız hosting yöneticinizden veya .htaccess üzerinden upload_max_filesize ve post_max_size değerlerini yükseltmesini isteyin.
🔐 Kullanıcı Adı & Şifre Değiştir
Giriş yaptığınız hesabın kullanıcı adını ve/veya şifresini buradan güvenle değiştirebilirsiniz.
💡 İpucu: Test ve Canlı portalları ayrı hesaplardır. Test ortamı için API Key'i Test portalından, Canlı için Canlı portalından almalısın. Sistem aşağıdaki "Test Modu" kutusuna göre doğru API endpoint'ini otomatik seçer.
⚠ Önemli: Nilvera Kullanıcı Adı + Parola ile API erişimi kabul etmiyor. Sadece API Key (Bearer Token) çalışır. Eski sürümdeki "HTTP 405" hatası bu yüzdendi — şimdi düzeltildi.
🧪 ŞU AN GIB TEST MODU AKTİF
Faturalar SİMÜLE UUID ile "kabul edildi" görünür ama GERÇEKTEN GIB'e gönderilmez. Gerçek mağaza için bu kutuyu kapatın.
🚫 GERÇEK MOD AÇIK FAKAT KONFİGÜRASYON EKSİK
Test modu kapalı ama Nilvera API Key girilmemiş. Yukarıdaki kutuya app.nilvera.com'dan aldığınız anahtarı yapıştırın.
Test modu kapalı ama API URL veya kullanıcı/şifre girilmemiş. Aşağıyı doldurun ya da Test modunu açın.
✅ GERÇEK GIB MODU — CANLI FATURA AKTİF
Faturalar gerçek GIB entegratoruna gönderilir. Bağlantı testini bir kez çalıştırıp yeşil onay aldıktan sonra mağaza kullanımına hazırsınız.
❌ Test başarısız
🧪 TEST: Simülasyon Başarılı (GERÇEK GIB değil)
✅ GERÇEK GIB Bağlantısı Başarılı
{{ gibTestResult.message }}
UUID: {{ gibTestResult.uuid }}
⚠ Gerçek faturalama için Test Modu'nu kapatın ve sağlayıcı bilgilerini girin.
🔓 Son başarılı bağlantı: {{ settingsForm.gib_verified_at }}
💡 Sağlayıcı Önerileri
Nilvera: 0-100 fatura/ay ÜCRETSİZ, üstü ucuz. Yeni başlayanlara ideal.
Foriba: Büyük şirketler için. Logo/Mikro ile kolay entegre.
İzibiz: Aylık 50 TL, küçük işletmeye uygun.
GIB Portal: Direkt portal kullanımı 3000 belge/ay ücretsiz, manuel.
🏛 Maliye / VKN Bilgileri
Bu bilgiler her fatura ve fişte yer alır. Vergi mükellefi iseniz mutlaka doldurun.
💳 POS Cihaz Entegrasyonu
İsteğe bağlı. Açıkken kart/karışık ödemede tutar otomatik POS cihazına gönderilir. Kapalıyken kart satışı yine yapılabilir (harici terminal).
📟 Profilo İnpos M530 — Cihaz Ayarları
Statik IP önerilir
Yaygın: 4242 / 8080
Sözleşmede mevcut
📚 Inpos M530 Kurulum Adımları
Cihazı elektriğe takın, açın. Banka ile sözleşmeniz olduğundan emin olun (ECR ID + Terminal ID alın).
Cihazı ağa bağlayın: Menü → Ayarlar → Ağ → LAN/Wi-Fi. Statik IP atayın (örn 192.168.1.50).
Cihaz menüsünde "ECR Modu" aktif edin. (Genelde "Yönetici Menü → Bağlantı → ECR Aç")
Bilgisayardan cihaza ping atın: ping 192.168.1.50. Cevap gelmeli.
İki entegrasyon modu var:
HTTP Agent (önerilen): Banka size yerel agent yazılımı verir. Kurun (örn http://localhost:4242) ve aşağıdaki API URL'ye yazın.
TCP Direkt: Agent yokken cihazın IP+Port'una direkt bağlanır. Cihaz IP ve TCP Port'u girin, API URL'yi boş bırakın.
ECR ID ve Terminal ID'yi girin (banka POS sözleşmenizde yazıyor).
Aşağıdan "🔌 Bağlantı Testi"ne basın. Yeşil ✅ görünmeli.
İşlem yaparken cihaz ekranında "KART OKUTUNUZ" uyarısı görünmeli. Olmadıysa ECR modu kapalıdır → adım 3'ü tekrarlayın.
⚠ Gerçek mağaza kullanımına geçmek için Test Modu'nu kapatın ve cihaz/agent bilgilerini girin.
🔓 Son başarılı bağlantı: {{ settingsForm.pos_verified_at }}
📋 Çalışma Akışı
Test mod açık: Mock simülasyon (geliştirme/eğitim)
Test mod kapalı + API URL girilmiş: Gerçek POS REST API çağrısı
POS başarılı → satış kaydedilir + REF saklanır
POS reddetti → satış iptal, kullanıcı uyarılır
📷 USB Barkod Okuyucu
Klavye emülasyonlu (HID) tüm barkod okuyucular için. Kaydettikten sonra POS’ta anında geçerli olur.
HID tipik <50ms. Yavaş adaptörde 120–150 deneyin.
Kurulum: Okuyucu USB’ye takılı, “klavye” olarak görünmeli. POS açıkken barkodu okutun — sepete düşer. F3 ile barkod kutusuna odaklanın.
⚖ Terazi Entegrasyonu
USB terazi bağlantısı ile kg birimli ürünlerde ağırlık otomatik çekilir ve fiyat hesaplanır. Kapalıyken terazi POS ekranında görünmez.
Desteklenen teraziler: CAS, Dibal, Mettler Toledo, Şafak, Baykon ve USB-Serial (COM) çıkışlı teraziler.
Chrome veya Edge (HTTPS) kullanın. İlk bağlantıda port seçin; sonraki açılışlarda otomatik bağlanır.
📚 Terazi Kurulum Adımları
Teraziyi USB (veya USB-Serial dönüştürücü) ile bilgisayara bağlayın. Windows’ta “Aygıt Yöneticisi → Bağlantı Noktaları (COM)” görünmeli.
Yukarıdan Baud Rate seçin (çoğu terazi 9600). Gerekirse terazi menüsünden aynı hızı ayarlayın.
Protokol: emin değilseniz Otomatik bırakın. CAS / Dibal-Şafak / Mettler markaya göre seçilebilir.
Terazi Ayarlarını Kaydet → Satış (POS) ekranına gidin.
Ürünü teraziye koyun; ağırlık panelde görünmeli. Ürün kartında birim kg olmalı → sepete ekleyince ağırlık otomatik alınır.
Ağırlık gelmiyorsa: baud/protokolü değiştirin, Chrome/Edge kullandığınızdan emin olun, başka programın COM portunu kullanmadığını kontrol edin.
💾 Tam Sistem Yedekleme
Satışlar, ürünler, stok, veresiye, müşteriler, giderler, kategoriler, satış ekranı grup ayarları, işletme bilgileri, kullanıcılar, ayarlar ve yüklenen görseller dahil tüm sistem yedeklenir. ZIP yedek PC uygulamasına da yüklenebilir (tam değişim).
Tam paket kapsamı:
kullanıcılar · ayarlar · satış / POS ekranı · satış geçmişi · gruplar/kısayollar · ürünler · stok · müşteriler · veresiyeler · giderler · raporlar (gün sonu / kasa teslimi satışlardan hesaplanır) · barkod etiket ürünleri + etiket profilleri · logo / işletme bilgileri · tüm görseller.
Yükleyince eski veri silinir; yedekteki veriler anında görünür.
✓ Cron job gerekmez. Günlük yedekleme açıkken gece 00:00 geçip yeni gün başladığında, o gün uygulama ilk kez açıldığında 1 kez arka planda yedek alınır. Saat/dakika bazlı kontrol yok — satış ekranı asla yavaşlamaz.
⏰ Otomatik Yedekleme
Son otomatik yedek: {{ formatBackupDate(backupSettings.backup_last_run) }}
⚠ Dikkat: Geri yükleme mevcut tüm veriyi seçilen yedekle değiştirir. İşlem öncesi güncel bir yedek almanız önerilir. Geri yükleme sonrası sayfa otomatik yenilenir.
🏷 Barkod Etiket Yazdırma
📐 Etiket Şablonu{{ Object.keys(labelTemplates).length }} stil
🔥 Görsel İndirim Etiketi: Ürün fiyatı değişmez. Üstte zamlı fiyat üstü çizili, altta gerçek satış fiyatı indirimli gibi gösterilir. Gerçek indirim (ürün formunda) tanımlıysa o kullanılır.
%10%30%50%70%80
⚙ Etiket İçeriği
Kapalıyken orijinal şablon görüntüsü aynen korunur. Açtığınızda her şeyi (renk, boyut, pozisyon) istediğiniz gibi ayarlayabilirsiniz.
{{ productModal.id ? '✏ Ürün Düzenle' : '+ Yeni Ürün' }}
⚠ İndirimli fiyat normal fiyattan küçük olmalı
İndirim aktifken POS'ta otomatik bu fiyat geçerli olur. İndirim Etiketi şablonunda eski/yeni fiyat görünür.
❌'">
⚡ Hızlı Ürün Ekle
Barkodu okutun ya da elle yazın, ardından adı ve fiyatı girin.
💡 USB barkod cihazınız varsa direkt okutmanız yeterli — Enter'a basınca ad alanına geçer
{{ quickAddMsg.text }}
💰 Toplu Fiyat Güncelleme
⚠ Bu işlem seçilen kategorideki tüm ürünlerin satış fiyatını %{{ bulkPrice.percent || 0 }} {{ bulkPrice.direction === 'up' ? 'arttıracak' : 'azaltacak' }}. Geri alınamaz!