{{ posCategory === 'fav' ? 'Henüz favori ürün yok. ☆ simgesiyle ekleyin.' : 'Bu kategoride ürün yok' }}
Toplam {{ productsTotal }} ürün
| Görsel | Barkod | Ürün | Kategori | Alış | Satış | Stok | İşlem |
|---|---|---|---|---|---|---|---|
|
|
{{ p.barcode || '-' }} |
{{ p.name }}
🔥 -%{{ getDiscountPercent(p) }}
⭐ Favori
|
{{ p.category_name || '-' }} | {{ fmt(p.purchase_price) }} |
{{ fmt(p.sale_price) }}
{{ fmt(getEffectivePrice(p)) }}
|
{{ p.stock }} | 🔒 |
| Ürün bulunamadı | |||||||
| No | 📅 Tarih · Saat | 👥 Kasiyer | 📄 Belge | 👤 Müşteri | Toplam | Ödeme | Durum | İşlem |
|---|---|---|---|---|---|---|---|---|
| Bu kriterlerde satış bulunamadı. | ||||||||
| #{{ s.sale_no }} | {{ formatDate(s.created_at) }} |
{{ s.cashier_name || '—' }}
@{{ s.cashier_username }}
|
📑 {{ s.invoice_no }} 🧾 Fiş |
{{ s.customer_name }}
{{ s.customer_tax_no }}
—
|
{{ fmt(s.grand_total) }} | {{ s.payment_method==='cash'?'💵 Nakit':s.payment_method==='card'?'💳 Kart':s.payment_method==='credit'?'📒 Veresiye':'🔀 Karışık' }} | {{ s.status==='completed'?'✓ Tamamlandı':'✗ İptal' }} | |
| {{ reportFilter.group_by==='hour'?'Saat':reportFilter.group_by==='product'?'Ürün':reportFilter.group_by==='category'?'Kategori':reportFilter.group_by==='cashier'?'Kasiyer':'Tarih' }} | Miktar | Satış | Toplam |
|---|---|---|---|
| {{ row.label }} | {{ row.qty }} | {{ row.sale_count }} | {{ fmt(row.total) }} |
| Bu aralıkta veri yok | |||
| Ürün | Adet | Tutar |
|---|---|---|
| {{ tp.product_name }} | {{ tp.total_qty }} | {{ fmt(tp.total_amount) }} |
| # | Ürün | Adet | Ciro | ||
|---|---|---|---|---|---|
| {{ i<3 ? ['🥇','🥈','🥉'][i] : '#'+(i+1) }} | {{ p.product_name }} | {{ parseFloat(p.total_qty).toFixed(0) }} | {{ fmt(p.total_revenue) }} | ||
| Bu aralıkta satış verisi yok | |||||
| # | Ürün | Ciro | Kar | Marj % | ||
|---|---|---|---|---|---|---|
| {{ i<3 ? ['🥇','🥈','🥉'][i] : '#'+(i+1) }} | {{ p.product_name }} | {{ fmt(p.revenue) }} | {{ fmt(p.profit) }} | {{ parseFloat(p.margin_percent || 0).toFixed(1) }}% | ||
| Bu aralıkta veri yok | ||||||
| Barkod | Ürün | Stok | Birim Fiyat | Bağlı Tutar |
|---|---|---|---|---|
| {{ p.barcode || '-' }} | {{ p.name }} | {{ parseFloat(p.stock).toFixed(0) }} | {{ fmt(p.sale_price) }} | {{ fmt(p.stock_value) }} |
| Tüm ürünler son 30 günde satıldı 🎉 | ||||
Stok girişi, çıkışı ve hareket takibi
| Görsel | Ürün | Stok | Toplam ₺ | İşlem | |||
|---|---|---|---|---|---|---|---|
|
|
{{ p.name }}
{{ p.barcode || '-' }}
|
{{ parseFloat(p.stock).toFixed(0) }} | {{ fmt(parseFloat(p.stock) * parseFloat(p.sale_price)) }} | 🔒 | |||
| Eşleşen ürün yok | |||||||
| Tarih | Ürün | İşlem | Miktar | |||
|---|---|---|---|---|---|---|
| {{ formatDate(m.created_at) }} | {{ m.product_name }} | {{ {sale:'Satış',purchase:'Giriş',adjustment:'Düzeltme',return:'İade'}[m.type] }} | {{ m.type === 'sale' ? '-' : '+' }}{{ Math.abs(m.quantity) }} | |||
| Hareket yok | ||||||
Toplam {{ customerList.length }} müşteri · {{ customerDebtCount }} kişide borç var
| İsim | Toplam Borç | İşlem | |||
|---|---|---|---|---|---|
|
{{ (c.name || '?').charAt(0).toUpperCase() }}
{{ c.name }}
{{ c.note }}
|
{{ fmt(c.total_credit) }} |
|
|||
|
👥
{{ customerFilter.only_debt ? 'Borçlu müşteri yok' : 'Henüz müşteri yok' }}
| |||||
İşletme giderlerini takip edin (kira, fatura, vb.)
| Tarih | Kategori | Tutar | İşlem | |
|---|---|---|---|---|
| {{ formatDate(e.created_at) }} | {{ e.category }} | {{ fmt(e.amount) }} | 🔒 | |
| Bu aralıkta gider kaydı yok | ||||
Günlük detaylı kapanış raporu
Kasiyerin yaptığı tüm satışlar, iadeler ve ödeme detayları — kasa teslimi tutanağı
| ⏰ Saat | Fiş No | Tip | Müşteri | Ödeme | Nakit | Kart | Toplam | Durum | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ fmtTime(sale.created_at) }} | {{ sale.sale_no }} | {{ sale.document_type === 'invoice' ? '📄 Fatura' : '🧾 Fiş' }} {{ sale.invoice_no }} | {{ sale.customer_name || '-' }} | {{ sale.payment_method === 'cash' ? '💵 Nakit' : sale.payment_method === 'card' ? '💳 Kart' : sale.payment_method === 'mixed' ? '🔀 Karışık' : sale.payment_method === 'credit' ? '📒 Veresiye' : sale.payment_method }} | {{ parseFloat(sale.cash_amount) > 0 ? fmt(sale.cash_amount) : '-' }} | {{ parseFloat(sale.card_amount) > 0 ? fmt(sale.card_amount) : '-' }} | {{ fmt(sale.grand_total) }} | {{ sale.status === 'completed' ? '✓ Tamam' : '✗ İptal' }} | ||||||||||||
|
Kalemler:
📝 {{ sale.note }}
|
||||||||||||||||||||
| ⏰ Saat | Fiş No | Ürün | Miktar | Birim Fiyat | İade Tutarı | Ödeme | Not |
|---|---|---|---|---|---|---|---|
| {{ fmtTime(r.created_at) }} | {{ r.sale_no || '-' }} | {{ r.product_name }} ({{ r.barcode }}) | {{ r.quantity }} | {{ fmt(r.unit_price) }} | {{ fmt(r.amount) }} | {{ r.payment_method === 'cash' ? '💵' : r.payment_method === 'card' ? '💳' : r.payment_method === 'credit' ? '📒' : '🔀' }} {{ r.payment_method }} | {{ r.note || '-' }} |
| ⏰ Saat | Fiş No | Müşteri | Telefon | Borç |
|---|---|---|---|---|
| {{ fmtTime(c.created_at) }} | {{ c.sale_no }} | {{ c.customer_name }} | {{ c.customer_phone || '-' }} | {{ fmt(c.grand_total) }} |
| # | Ürün | Miktar | Tutar |
|---|---|---|---|
| {{ i + 1 }} | {{ p.name }} | {{ parseFloat(p.qty).toFixed(2) }} | {{ fmt(p.total) }} |
| 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' }} | 🔒 |
Ü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.
.htaccess üzerinden upload_max_filesize ve post_max_size'ı yükseltmesini isteyin.
Sidebar, giriş ekranı ve fişlerde görünür. PNG/JPG/WEBP/SVG · {{ String(settingsForm.image_upload_limit_mb || '10') === '0' ? 'Sınırsız (sunucu PHP limiti geçerli)' : 'Maks. ' + (settingsForm.image_upload_limit_mb || 10) + ' MB' }}
🔒 Demo modda logo değiştirilemez
Seçtiğiniz tema anında tüm sisteme uygulanır.
Kendi renklerinizi seçin — anında uygulanır, otomatik kaydedilir.
🔒 Demo modda tema kaydedilmez
Fatura kestiğinizde otomatik üretilen numaralandırma. Format: [Önek][Seri][6 hane] · Örn: FTR2026000001
Max 5 hane · Boşluksuz
Yıl başında değiştirin
Bir sonraki fatura no
Açıkken her satış e-Fatura/e-Arşiv olarak kesilir; GIB yapılandırması zorunludur. Kapalıyken hızlı fiş satışı yapılabilir.
Her satışta fatura sorulsun mu? Belirli müşterilere otomatik fatura kesimi ayarı.
Faturayı otomatik GIB'e gönderen entegrator. Test mod açıkken sadece simülasyon çalışır.
EsnafPOS Entegrasyonu · Süre: Sınırsız bırakportaltest.nilvera.comapitest.nilvera.comportal.nilvera.comapi.nilvera.comBu bilgiler her fatura ve fişte yer alır. Vergi mükellefi iseniz mutlaka doldurun.
Açık olduğunda kart/karışık ödemede tutar otomatik olarak POS cihazına gönderilir.
Statik IP önerilir
Yaygın: 4242 / 8080
Sözleşmede mevcut
ping 192.168.1.50. Cevap gelmeli.http://localhost:4242) ve aşağıdaki API URL'ye yazın.Bankanızın POS SDK / Web Service URL'si
Bearer token ya da `user:pass` (Basic Auth otomatik dönüşür)
{{ zReportResult.z_report_text }}
Kapalıyken orijinal şablon görüntüsü aynen korunur. Açtığınızda her şeyi (renk, boyut, pozisyon) istediğiniz gibi ayarlayabilirsiniz.