YK Portal Yardım Merkezi

YK Portal kullanım kılavuzu

Tüm modüller için adım adım kullanım talimatları, ekran açıklamaları, alan tanımları ve sık karşılaşılan durumlar tek yerde.

Dizin

CRM Modülü

Amaç ve Kimler Kullanır

CRM modülü; müşteri adaylarının (potansiyel müşteri) takibi, satış fırsatlarının (pipeline/kanban) yönetimi, görüşme/arama/not gibi aktivitelerin kaydı ve müşteriye gönderilecek teklif belgelerinin hazırlanmasını sağlar. Modül, kullanıcının AktifModuller yetkisinde Crm claim'i bulunması şartıyla görünür.

  • Satış temsilcisi / plasiyer: kendi müşteri adaylarını, fırsatlarını, aktivitelerini ve tekliflerini yönetir.
  • Satış yöneticisi / süper admin: tüm kullanıcıların kayıtlarını görür, tanım ekranlarını (etiket, ünvan, pipeline aşaması, kayıp sebebi) düzenler, teklif şablonlarını hazırlar.
  • Kısıtlı kullanıcı ("CRM sadece kendi kayıtları"): Şirket ayarında bu kısıt açık olan kullanıcılar (SuperAdmin hariç) sadece kendilerine atanmış veya kendilerinin plasiyer olduğu cari/fırsat/aktivite/teklif kayıtlarını görebilir ve düzenleyebilir; sistem bunu ekranlarda otomatik filtreler, ayrıca sunucu tarafında da zorlar.
  • Müşteri (dış kullanıcı): CRM'e giriş yapmaz; kendisine e-posta/WhatsApp ile gönderilen teklif linkini tarayıcıdan açarak teklifi görür ve kabul/red kararı verir (bkz. "Müşterinin Teklifi Görüntülemesi" bölümü).

Menüden Erişim

Sol menüde CRM bölümü (yalnız Crm modülü aktifse görünür):

  • Dashboard
  • Haber Akışı
  • Satışlar alt menüsü:
    • Potansiyel Müşteriler
    • Fırsatlar
    • Pipeline (Kanban)
    • Teklifler
    • Teklif Şablonları
  • Mahal Girişi (cariye bağlı mahal listeleri)
  • Aktiviteler alt menüsü:
    • Aktiviteler
    • Takvim
  • Tanımlar alt menüsü:
    • Kişiler
    • Şirketler
    • Ürünler
    • Etiketler
    • Ünvanlar
    • Pipeline Aşamaları
    • Kayıp Sebepleri

Bazı alt menü öğeleri (Potansiyel Müşteriler, Teklifler, Aktiviteler, Mahal Girişi) ayrıca Menu.CrmPotansiyel, Menu.CrmTeklif, Menu.CrmAktivite, Menu.CrmMahal rol yetkisine tabidir; yetkisi olmayan kullanıcıda o satır menüde görünmez. (Kurulum sırasında Menu.CrmMahal, Menu.CrmTeklif yetkisi olan rollere otomatik atanır.)

Ana Ekranlar

Ekran Görüntüsü

Ekran Ne işe yarar
Dashboard Seçilen kullanıcıya (veya tüm şirkete) ait CRM özet göstergeleri; üstte kullanıcı seçici dropdown (kısıtlı kullanıcıda kilitli/gizli).
Haber Akışı Şirket içi CRM olaylarının (yeni potansiyel, fırsat açıldı/aşama değişti, teklif gönderildi, not, e-posta) kronolojik akışı; beğenme/yorum yapılabilir, serbest metin paylaşım da eklenebilir. Sağ sütunda "Beni Bekleyenler" ve kişisel aktivite kuyruğu gösterilir.
Potansiyel Müşteriler Cari kartı HesapTipi = Potansiyel Müşteri olan kayıtların listesi; filtre, Excel'e aktarma, panelden hızlı kayıt/düzenleme.
Fırsatlar (Liste) Tüm satış fırsatlarının tablo görünümü; filtre, toplu işlem (aşama/plasiyer değiştir, sil), Excel içe/dışa aktarma.
Pipeline (Kanban) Fırsatların aşama sütunlarına göre kart (drag&drop) görünümü; KPI bandı, kart sürükleyerek aşama değiştirme.
Teklifler (Liste) Hazırlanan tekliflerin listesi; durum filtreleri, toplu durum değiştirme/silme, Excel'e aktarma, satıra tıklayınca hızlı önizleme paneli.
Teklif Şablonları Kapak/sunum mektubu/ön metin/dip metin HTML şablonları ve yeniden kullanılabilir içerik blokları tanımı.
Aktiviteler Görüşme/arama/e-posta/ziyaret/görev kayıtlarının listesi; tarih aralığı ve kullanıcı filtresi.
Takvim Aktivitelerin aylık/haftalık takvim (FullCalendar tarzı) görünümü; her etkinliğe tıklayınca düzenleme sayfasına gider.
Kişiler / Şirketler Cari bazlı iletişim kişileri ve şirket (cari) kartlarının ayrı listeleri (TeamGram tarzı "Veritabanı" görünümü).
Ürünler Stok kartlarının CRM görünümü; bir ürüne tıklayınca o ürünün geçtiği açık fırsatlar ve teklifler listelenir.
Etiketler / Ünvanlar / Pipeline Aşamaları / Kayıp Sebepleri Şirket bazlı tanım (master data) yönetim ekranları.

Adım Adım Kullanım

Yeni Potansiyel Müşteri Kaydetme

Ekran Görüntüsü

İki yol vardır: tam sayfa form veya liste ekranındaki hızlı panel.

A) Tam sayfa form

  1. CRM > Satışlar > Potansiyel Müşteriler ekranına gidin.
  2. Sağ üstteki "Yeni" benzeri butonla yeni kayıt sayfasını açın.
  3. Formda şu alanları doldurun: İsim/Unvan (zorunlu), Kod, Durum, Telefon, E-posta, İl, İlçe, Adres, Vergi No, Vergi Dairesi, Kaynak Kanal, Bölge, Saha, Notlar.
  4. Kaydet butonuna basın → kayıt oluşturulur ve doğrudan carinin Detay sayfasına yönlendirilirsiniz. Ekranda "Potansiyel müşteri oluşturuldu." mesajı görünür.

B) Liste ekranındaki panel (AJAX, hızlı ekleme)

  1. Potansiyel Müşteriler listesinde "Yeni" ikonuna tıklayın; sağdan kayan bir panel (offcanvas) açılır.
  2. Panelde şirkete özel olarak açılıp kapatılabilen alan seti doldurulur (Ayarlar'dan hangi alanların gösterileceği/zorunlu olacağı yönetilebilir — bkz. "Alanları Düzenle").
  3. Aynı panelde birden fazla iletişim kişisi satırı (ünvan + ad soyad + telefon) eklenebilir; boş bırakılan satırlar dikkate alınmaz.
  4. Kaydet ile panel kapanır, liste otomatik yenilenir ve "Yeni potansiyel: ..." başlığıyla Haber Akışı'na otomatik kayıt düşer.

Not: Panelde gizlenmiş (Göster=Hayır yapılmış) alanlar forma hiç konulmadığından, düzenleme sırasında bu alanların mevcut veritabanı değeri korunur, silinmez.

Potansiyeli Müşteriye Dönüştürme

Ekran Görüntüsü

  1. İlgili potansiyelin panelini/detayını açın, "Müşteriye Dönüştür" işlemini başlatın (potansiyel panelindeki dönüştürme aksiyonu bir onay modalı açar).
  2. Modalda uyarı görülebilir: potansiyel henüz "Nitelikli" durumda değilse sarı uyarı gösterilir (kayıt yine de dönüştürülebilir).
  3. "Yeni satış fırsatı oluştur" anahtarı açıksa: Yetki sahibi (fırsatı kimin sahipleneceği), Fırsatın konusu (varsayılan: "<Müşteri adı> satışı") ve isteğe bağlı Tahmini tutar girilir.
  4. Devam butonuna basınca: carinin hesap tipi "Müşteri" olur, potansiyel durumu "Kazanıldı" işaretlenir, anahtar açıksa yeni bir fırsat da otomatik açılır. Haber Akışı'na "Müşteriye dönüştürüldü: ..." kaydı düşer.

Aktivite (Görüşme/Arama/Not) Ekleme

Ekran Görüntüsü

Aktivite tipleri: Ziyaret, Görev, Telefon, Email, Toplantı.

A) Tam sayfa form

  1. CRM > Aktiviteler > Aktiviteler ekranından "Yeni Aktivite" ile yeni aktivite formu açılır (bir carinin detayından açılırsa Cari alanı otomatik dolu gelir).
  2. Alanlar: Tip*, Başlık*, Cari* (Select2 arama), Atanan* (varsayılan: oturum açan kullanıcı), Başlangıç*, Bitiş, Süre (dk), Durum, Konum (harita üzerinden adres seçme desteği — "Haritadan Seç" butonu OpenStreetMap/Leaflet ile açılır), Açıklama, Sonuç.
  3. Başlangıç tarihi girilince bitiş boşsa otomatik +1 saat önerilir; süre girilirse bitiş buna göre hesaplanır. Bitiş tarihi başlangıçtan önce olamaz — hem tarayıcıda hem sunucuda doğrulanır.
  4. Kaydet → listeye döner, "Aktivite oluşturuldu." mesajı görünür, Haber Akışı'na otomatik kayıt düşer (istenirse "Haber akışında göster" kutusu kapatılabilir).

B) Hızlı panel (cari detay/kanban üzerinden)

  1. İlgili carinin sayfasında veya Pipeline/Fırsat panelinde aktivite ekle simgesine tıklayın; sağdan panel açılır.
  2. Aynı alanlar AJAX ile kaydedilir; yeni kayıtta Cari seçimi zorunludur, düzenlemede Cari alanı salt-okunurdur (mevcut kayıttaki cari korunur).
  3. Aktivite listesinde veya panelde "Tamamla" aksiyonuyla bir aktivite sonuç notu girilerek Tamamlandı durumuna alınabilir.

Takvim görünümü: Takvim sayfasında tüm aktiviteler renk kodlu (Tamamlandı=yeşil, İptal=gri, Devam Ediyor=mavi, diğerleri=sarı) takvim etkinliği olarak görünür; bir etkinliğe tıklamak düzenleme formunu açar.

Cari Zaman Çizelgesi (İşlem Geçmişi)

Bir carinin detay sayfasındaki (CRM görünümü açık cariler) Zaman Çizelgesi bölümü, o cariye ait aktivite, teklif ve notların kronolojik akışını gösterir. Artık yalnız kayıtların mevcut hali değil, üzerlerinde yapılan işlemler de olay olarak listelenir:

  • Oluşturuldu (yeşil): yeni aktivite / teklif / not eklendiğinde.
  • Güncellendi (mavi): kayıt düzenlendiğinde (aktivitede durum da değiştiyse "eski → yeni" olarak belirtilir).
  • Durumu değişti (turuncu): teklif durum geçişlerinde (ör. Taslak → Gönderildi, kabul/red, müşterinin weblink'ten verdiği karar) ve aktivite Tamamlandı yapıldığında; eski ve yeni durum birlikte gösterilir.
  • Silindi (kırmızı): aktivite / teklif / not silindiğinde.

Her olayda kim (işlemi yapan kullanıcı; müşterinin weblink kararında kullanıcı boş görünür), ne zaman ve hangi işlem bilgisi yer alır. Silinen bir kaydın olay geçmişi çizelgeden kaybolmaz. Bu özellik devreye girmeden önce oluşturulmuş eski kayıtlar da çizelgede görünmeye devam eder. Bölüm sayfa açıldığında otomatik yüklenir; koyu tema dahil her iki temada okunur. Mahal girişi belgelerinde yapılan oluşturma / güncelleme / silme işlemleri de bu çizelgeye "Mahal girişi ..." olayı olarak düşer. Aynı şekilde, bir cariye bağlı Saha kayıtlarındaki oluşturma / güncelleme / silme işlemleri "Saha kaydı ..." olayı olarak çizelgeye düşer.

Mahal Girişi (Cariye Bağlı Mahal Listeleri)

Mahal Girişi; bir cariye bağlı, teklifden bağımsız bir mahal listesi belgesidir. Fiyat/tutar içermez ve teklif tutarlarıyla hiçbir ilişkisi yoktur.

Ön koşul — stok kartında "Tip": Bir stok kartının mahal satırında seçilebilmesi için Stok > Kart ekranında Stok Tipi alanının Mahal seçilmiş olması gerekir; grup başlığı satırında kart seçmek isterseniz Mahal Başlık tipli bir kart gerekir. Tip alanının değerleri: Malzeme (varsayılan; mevcut tüm kartlar), Ürün, Hizmet, Mahal, Mahal Başlık. Mahal ve Mahal Başlık seçenekleri yalnızca CRM modülü aktif olan şirketlerde görünür. Sadece "Mahal" tipli kartlar mahal satırında, sadece "Mahal Başlık" tipli kartlar başlık satırının kart seçiminde listelenir.

Menü: CRM > Mahal Girişi.

Yeni belge oluşturma

  1. CRM > Mahal Girişi listesinde "Yeni Mahal Girişi" ile form açılır.
  2. Cari* (Select2 arama) ve Belge Adı* girilir; istenirse Açıklama eklenir.
  3. Satırlar iki türde eklenir:
    • Grup Başlığı Ekle: listeyi bölümlere ayıran başlık satırı (ör. "ZEMİN KAT"). Başlık, Mahal Başlık tipli bir stok kartından seçilebilir (kart seçilince başlık metni kartın adıyla otomatik doldurulur, dilerseniz elle değiştirebilirsiniz) veya doğrudan serbest metin olarak yazılabilir; ikisinden en az biri zorunludur.
    • Mahal Satırı Ekle: bir Mahal tipli kart seçilir, Miktar ve Çarpan girilir. Toplam = Miktar × Çarpan anlık hesaplanıp satırda gösterilir (ör. 40,5 × 12 = 486). Çarpan boş bırakılırsa 1 kabul edilir.
  4. Satırlar yukarı/aşağı oklarıyla sıralanır, çöp kutusuyla silinir.
  5. Kaydet → belge detayına yönlendirilir; işlem carinin CRM zaman çizelgesine düşer.

Önemli davranışlar

  • Her satırın birimi, seçilen kartın kendi ölçü birimidir (5 oda, 3 lamba, 3 düğme gibi). Bu yüzden belge geneli tek toplam gösterilmez — farklı birimler toplanmaz; yalnız satır toplamları görünür.
  • Mahal satırında yalnız Tip=Mahal stoklar seçilebilir; bu kural sunucuda da doğrulanır.
  • Düzenle/Sil işlemleri liste ve detaydan yapılır; silme yumuşak silmedir (kayıt arşivlenir, çizelge geçmişi korunur).

Saha (Sahadan Konum + Fotoğraf + Açıklama)

Saha; sahadaki ekibin bir açıklama, konum (GPS) ve fotoğraf(lar) girerek oluşturduğu, takip edilebilen bir kayıttır. Bir saha kaydı bağımsız oluşturulabilir; istenirse bir cariye bağlanır ve o carinin bir fırsatına veya teklifine de ilişkilendirilebilir.

Menü: üst menüde ayrı Saha bölümü (Saha Kayıtları / Yeni Saha Kaydı). Bölüm CRM modülü kapsamında sunulur; görünmesi için Menu.Saha rol yetkisi gerekir (kurulumda Menu.CrmTeklif yetkisi olan rollere otomatik atanır).

Yeni saha kaydı (mobil öncelikli)

  1. Saha > Yeni Saha Kaydı ile form açılır.
  2. Açıklama* (zorunlu) ve istenirse Başlık girilir.
  3. Konum (GPS): "Konumumu Al" butonuna basıldığında tarayıcı konum izni ister; alınan Enlem/Boylam değerleri görünür alanlara yazılır ve haritada işaretlenir. İşaret sürüklenerek veya haritaya tıklanarak düzeltilebilir; enlem/boylam alanları elle de değiştirilebilir (harita anında güncellenir). Temizle ile konum kaldırılır. Konum girmek zorunlu değildir; girilecekse enlem ve boylam birlikte girilmelidir.
  4. Fotoğraflar: "Fotoğraf Çek / Seç" ile birden fazla fotoğraf eklenir; mobilde kamera ile anında çekilebilir. Seçilenler küçük önizleme olarak listelenir.
  5. Bağlantılar (opsiyonel): Cari seçilir; cari yoksa yandaki + ile Hızlı Cari Ekle penceresinden (telefon mükerrer kontrolü ile) anında oluşturulur. Cari seçilince o cariye ait Fırsat ve Teklif listeleri açılır ve seçilebilir.
  6. Kaydet → kayıt detayına yönlendirilir.

Liste ve harita

  • Saha Kayıtları listesi tarih aralığı, cari ve metin (başlık/açıklama/cari) ile filtrelenir. Her satırda konum var/yok ve fotoğraf sayısı göstergesi bulunur.
  • Konumlu kayıtlar için Harita Görünümü kutusu açıldığında tüm işaretler (pin) haritada gösterilir; pine tıklayınca kaydın detayına gidilir. Harita koyu tema dahil her iki temada okunur.

Detay ve düzenleme

  • Detay ekranında açıklama, fotoğraf galerisi (tıklayınca büyütme), konum haritası, "Haritada Aç" bağlantısı ve cari/fırsat/teklif bağlantıları görünür.
  • Düzenle ekranından açıklama/konum/fotoğraf güncellenir ve bağlantılar sonradan kurulabilir (bağımsız açılan bir kayıt burada cariye, fırsata veya teklife bağlanır). Mevcut fotoğraflar tek tek silinebilir.
  • Sil yumuşak silmedir; fotoğraf dosyaları diskte korunur.

Önemli davranışlar

  • Fırsat/Teklif yalnız seçili carinin kayıtlarından listelenir; seçilen fırsat/teklifin gerçekten o cariye ait olduğu sunucuda doğrulanır. Fırsat/Teklif seçebilmek için önce cari seçilmelidir.
  • Enlem -90…90, Boylam -180…180 aralığında olmalıdır; kurallar sunucuda ve veritabanında da doğrulanır.
  • Bir cariye bağlı saha kaydının oluşturma / güncelleme / silme işlemleri, ilgili carinin CRM zaman çizelgesine "Saha kaydı ..." olayı olarak düşer. Cari bağlı değilse çizelgeye olay yazılmaz.

Fırsat (Satış Pipeline) Oluşturma ve Yönetme

Ekran Görüntüsü

Yeni fırsat — tam form

  1. CRM > Satışlar > Fırsatlar listesinden "Yeni" ile yeni fırsat formu açılır (bir cariden açılırsa Cari önceden seçili gelir).
  2. Alanlar: Başlık* (ör. "ABC Endüstri 2026 yıllık bakım sözleşmesi"), Aşama* (varsayılan: sıradaki ilk aktif aşama), Cari*, İletişim Kişisi, Beklenen Tutar (TRY), Beklenen Kapanış*, Atanan Kullanıcı* (varsayılan: oturum sahibi), Açıklama, Notlar (iç not, müşteriye gösterilmez).
  3. Kaydet → Fırsat Detay sayfasına yönlendirilir; Haber Akışı'na "Fırsat açıldı: ..." kaydı düşer.

Pipeline (Kanban) üzerinden hızlı kart ekleme

  1. Pipeline sayfasında her aşama bir kolondur (KPI bandında toplam/ağırlıklı tutar gösterilir).
  2. Kolon başlığındaki "+ Hızlı kart" ile sadece Başlık + Cari + Tutar girilerek fırsat oluşturulur; aşama, kartın eklendiği kolon olur.
  3. Kartlar sürükle-bırak ile başka bir aşama kolonuna taşınabilir:
    • Kart bir "Kazandı" işaretli aşamaya bırakılırsa açılan modalda hangi teklif ile kazanıldığı seçilir (opsiyonel).
    • Kart bir "Kaybetti" işaretli aşamaya bırakılırsa açılan modalda kayıp sebebi seçilir ve kapanış notu girilebilir.
    • Modal iptal edilirse kart eski kolonuna geri döner.
  4. Karta tıklayınca sağdan detay paneli (offcanvas) açılır; buradan gidişat (İyi/Kötü/Belirsiz) ve ara aşamalar arası geçiş de yapılabilir.

Fiyatlama (ürün/kalem satırları)

  1. Fırsat panelinde/detayında "Fiyatlama" modalını açın.
  2. Satır tipi (ürün/başlık), Stok, Miktar, Birim Fiyat, İskonto %, KDV %, Döviz girilir; birden çok döviz kullanılıyorsa kur alanları (1 XXX = ___ TL) ayrıca girilir, Genel İndirim % uygulanabilir.
  3. Kaydedilen bu satırlar, aynı fırsattan teklif oluşturulurken ("fırsattan devir") sihirbaza otomatik aktarılabilir.

Toplu işlemler ve içe/dışa aktarma

  • Liste ekranında birden fazla fırsat seçip toplu aşama değiştirme, toplu plasiyer atama veya toplu silme yapılabilir.
  • "Excel Şablon" ile içe aktarma şablonu indirilir (CariKod/CariAd, Başlık, Açıklama, Beklenen Tutar, Beklenen Kapanış, Aşama Adı, Atanan E-posta, Notlar sütunları); doldurulup "İçe Aktar" ile toplu fırsat oluşturulur (Başlık zorunlu; Aşama boşsa ilk aktif aşama, Atanan boşsa içe aktaran kullanıcı atanır).
  • "Excel" butonuyla filtrelenmiş listenin tamamı dışa aktarılır.

CRM Teklif Sihirbazı — Adım Adım

Ekran Görüntüsü

Teklif hazırlamanın iki yolu vardır: klasik form (şablonsuz basit teklifler için) ve Sihirbaz (şablonlu/gelişmiş teklifler için — önerilen yöntem). Bir teklif şablonla veya "başlık satırı"/"Toplam İş Adedi" kullanılarak oluşturulduysa, düzenlemeye her zaman otomatik olarak Sihirbaz açılır (klasik form bu alanları taşımadığından veri kaybını önlemek için).

Sihirbaza giriş

  • CRM > Satışlar > Teklifler listesinden "Yeni Teklif" (Sihirbaz) ile açılır; bir fırsattan veya cariden açılırsa ilgili alanlar önceden dolu gelir.
  • Sihirbaz 4 adımlı bir sayfa: üstte adım göstergesi 1. Müşteri → 2. Bilgiler → 3. İçerik → 4. Gözden Geçir, sağ tarafta ise formla eş zamanlı güncellenen canlı PDF önizlemesi (iframe) bulunur.

Adım 1 — Müşteri

  1. Şablon seçilir (boş bırakılırsa "Şablonsuz (klasik PDF)" — QuestPDF ile sabit düzende üretilir). Şablon seçilince kapak/mektup/ön metin/dip metin otomatik ön dolar (3. adımda serbestçe düzenlenebilir). Sağdaki dişli ikonu ile şablon yönetim ekranı yeni sekmede açılabilir.
  2. Müşteri* (arama kutulu dropdown) seçilir; seçilince o cariye ait İlgili Kişi listesi ve açık fırsatları otomatik yüklenir.
  3. Bağlı Fırsat (opsiyonel) seçilebilir; yanındaki "Yeni fırsat" linkiyle küçük bir modalda (Başlık*, Tutar, Aşama) hızlıca yeni fırsat açılıp otomatik seçilebilir. Fırsatın fiyatlama satırları varsa bunlar 3. adımda "Fırsattan fiyatlama devri" kutusunda teklife aktarılmak üzere önerilir.
  4. Konu* girilir (fırsat seçilince Konu boşsa fırsat başlığı otomatik kopyalanır).

Adım 2 — Bilgiler

  1. Teklif Tarihi otomatik atanır ve değiştirilemez (salt-okunur).
  2. Geçerlilik tarihi, Döviz göstergesi (3. adımda ürün seçilince otomatik güncellenir), Kur, Şartlar/Notlar, Teslimat Adresi (müşteri seçilince cari adresinden otomatik doldurulur, elle değiştirilebilir; yalnız yeni teklifte otomatik doldurma yapılır, düzenlemede dokunulmaz).
  3. "Teklifi Sunan — Ünvan/İmza" kartı: buraya girilen Ünvan ve imza (canvas üzerine Çiz sekmesinde çizerek ya da Resim Yükle sekmesinden PNG/JPG — en fazla 1 MB — yükleyerek) her zaman oturum açan kullanıcının profiline kaydedilir ve bu kullanıcının hazırladığı tüm tekliflerde kullanılır (teklife özel değildir). "Ünvan / İmzayı Kaydet" butonuyla anında AJAX ile kaydedilir; "İmzayı Sil" ile kaldırılabilir.

Adım 3 — İçerik

  1. Kapak Sayfası, Sunum Mektubu, Ön Metin, Dip Metin için zengin metin editörleri (TinyMCE) bulunur; her birinde "Merge" menüsünden hazır placeholder alanlar (müşteri adı, teklif no vb.) ve "Blok" menüsünden önceden tanımlı içerik blokları eklenebilir.
  2. Fırsattan fiyatlama devri varsa ekranda özel bir kutu çıkar; önizleme tablosu gösterilir, "Aktar" ile satırlar teklife kopyalanır veya "Vazgeç" ile atlanır.
  3. Ürün/Hizmet Satırları tablosu: "Satır Ekle" ile ürün/hizmet kalemi (Stok, Açıklama, Miktar, Birim Fiyat, İskonto%, KDV%, Döviz) eklenir; "Grup Başlığı" ile satırları gruplayan bir başlık bandı eklenebilir (opsiyonel "Toplam İş Adedi" girilirse, başlık miktarları toplamı bununla karşılaştırılıp uyuşmazsa sarı bilgilendirme uyarısı çıkar — kayıt engellenmez).
  4. Birden fazla döviz kullanılan satır varsa kur girişi alanları ve Genel İndirim % burada görünür; TL cinsinden genel toplam otomatik hesaplanır.
  5. Teklif zaten kaydedilmişse (ID mevcutsa) bu adımda Ek Dosyalar bölümünden dosya yüklenip silinebilir (yeni/henüz kaydedilmemiş teklifte önce "Kaydet" ile teklif oluşturulmalıdır).

Adım 4 — Gözden Geçir

  1. Girilen bilgilerin özeti gösterilir; sağdaki önizleme PDF çıktısıyla birebir aynıdır (şablon seçiliyken). Şablonsuz + tek dövizli tekliflerde önizleme yalnızca bilgilendirme amaçlıdır (gerçek PDF QuestPDF ile farklı sabit düzende üretilebilir).
  2. Yeni teklifte "Haber akışında göster" kutusu işaretli gelir.
  3. Kaydet ile teklif Taslak durumunda kaydedilir ve Detay sayfasına geçilir (gönderim buradan yapılır).
  4. Finalize Et butonu Kaydet ile aynı kaydı yapar; ayrıca bağlı bir fırsat varsa ve fırsatın tutarı/ürün tablosu teklifle farklıysa bir "Fırsatı Güncelle" modalı sunar — "Fırsat tutarını güncelle" ve/veya "Ürün tablosunu güncelle" seçenekleriyle fırsat senkronize edilebilir.
  5. Her adımda Geri/Sonraki ile gezinilir; sayfa üstündeki adım numaralarına doğrudan tıklayarak da geçiş yapılabilir. "Kapat" ile listeye dönülür (kayıt yapılmaz).

Teklifi Müşteriye Gönderme

Ekran Görüntüsü

Teklif Detay sayfasında, sadece Taslak durumundaki teklifler için:

  1. "Mail Gönder" aksiyonu bir modal açar; varsayılan alıcı (önce iletişim kişisinin, yoksa carinin e-postası), Cc/Bcc, Konu (varsayılan: "<Şirket Ünvanı> - Teklif <No>") ve gövde önizlemesi (iframe) gösterilir; gövde metni özelleştirilebilir. Gönderilince teklif PDF'i otomatik üretilip mail ekine konur, teklifin durumu Gönderildi'ye çevrilir ve Haber Akışı'na kayıt düşer.
  2. "Web Linki" butonu (Üret/Görüntüle) tıklandığında bir erişim token'ı üretilir (daha önce üretildiyse aynısı döner — idempotent) ve müşterinin login olmadan açabileceği link modalda gösterilir; "Kopyala" ile panoya alınabilir. Bu link taslak veya gönderilmiş her durumda üretilebilir.
  3. "WhatsApp ile Gönder" aksiyonu, önce web linkini üretir, sonra iletişim kişisinin (öncelik: cep telefonu) veya carinin telefonuna hazır mesaj metniyle WhatsApp Web/uygulamasını açar.
  4. PDF linkiyle teklifin QuestPDF/HTML çıktısı yeni sekmede (inline) görüntülenir/indirilir.
  5. Teklifin Erişim sekmesinde/panelinde, web linkinin kim tarafından ne zaman görüntülendiği (IP, tarayıcı bilgisiyle) loglanmış olarak izlenebilir.
  6. "Revize Et": mevcut teklifin yeni bir taslak revizyonunu (Rev N) oluşturur; şablonlu teklifse doğrudan Sihirbaz'a, değilse klasik Form'a yönlendirir. Eski teklif üzerinde "Bu teklifin yerini Rev N aldı" notu görünür.
  7. Detay sayfasındaki durum dropdown'undan (yalnızca yönetim amaçlı, admin tarafında) teklif manuel olarak Kabul Edildi / Reddedildi ve diğer durumlara da elle taşınabilir; kapanış notu istenebilir.
  8. Bağlı bir fırsat varsa ve teklif tutarıyla fırsat tutarı arasında fark oluşmuşsa, Detay sayfasında bir uyarı şeridi ile "Fırsatı Güncelle" (tutar senkronu) aksiyonu sunulur.

Müşterinin Teklifi Görüntülemesi ve Kabul/Red Etmesi (Public Sayfa)

Ekran Görüntüsü

Bu akış tamamen oturum açmadan erişilebilen genel bir sayfa üzerinden çalışır; müşteri hiçbir kullanıcı adı/şifre girmez.

  1. Müşteri, kendisine mail/WhatsApp ile gönderilen linke tıklar.
  2. Token geçersiz/boşsa veya bilinmiyorsa "Bağlantı Geçersiz" sayfası gösterilir.
  3. Geçerliyse: şirket ünvanı, Teklif No, müşteri adı, geçerlilik tarihi uyarısı ve teklifin tam belge önizlemesi (kaydedilmiş/gönderilmiş halinin PDF ile birebir aynı HTML render'ı, iframe içinde) gösterilir. Her görüntüleme otomatik olarak erişim logu (IP, tarayıcı, zaman) olarak kaydedilir.
  4. Teklif "Gönderildi" veya "Beklemede" durumundaysa, süresi geçmemişse ve teklifin daha yeni bir revizyonu yoksa, sayfanın altında bir karar formu görünür:
    • İsteğe bağlı "Notunuz" alanı,
    • "Kabul Ediyorum" (yeşil) ve "Reddediyorum" (kırmızı, tıklanınca onay istenir) butonları.
    • Formun üstünde şu uyarı metni sabit gösterilir: "Bu onay bir ön kabul niteliğindedir; sipariş ve sözleşme koşulları ayrıca teyit edilecektir."
  5. Karar formu koşulları sağlanmıyorsa (süre dolmuş / daha yeni revizyon var / zaten karar verilmiş) karar formu yerine ilgili bilgilendirme mesajı gösterilir (ör. "Bu teklifin geçerlilik süresi dolmuştur.", "Bu teklif güncellendi. Lütfen satış temsilcinizden güncel teklif bağlantısını isteyin.").
  6. Müşteri Kabul veya Red seçip formu gönderdiğinde bir sonuç sayfasına yönlenir: "Teklif Kabul Edildi" veya "Teklif Reddedildi" başlığıyla bir kapanış ekranı gösterilir ve alt yazıda "Bu bağlantı kapanmıştır." uyarısı yer alır (karar tekrar değiştirilemez).
  7. Admin tarafında bu karar, teklifin Detay sayfasına otomatik yansır (durum KabulEdildi/Reddedildi olur) ve Haber Akışı'na işlenir.

Teklif Maliyet Raporu (Hassas — Yetki Gerektirir)

Teklifin kârlılığını satır bazında gösteren, yalnızca "CRM > Teklif Maliyet Raporu" (Menu.CrmTeklifMaliyet) yetkisine sahip kullanıcılara açık bir rapordur. Bu yetki hassas ticari veri (tedarikçi maliyeti, kâr, marj) içerdiğinden hiçbir role otomatik verilmez; süper admin dışındaki kullanıcılara Roller > Menü Yetkileri ekranından bilinçli olarak atanır.

Nasıl açılır: Teklif Detay sayfasında, yetkili kullanıcıya görünen "Maliyet Raporu" butonu ile yeni sekmede açılır. Yetkisiz kullanıcı bu butonu görmez; adres çubuğundan doğrudan erişmeye çalışsa da sunucu erişimi reddeder.

Maliyet nasıl hesaplanır:

  • Birim alış maliyeti = stok kartındaki satış fiyatı × (1 − Alış İskonto %), stok kartının kendi para biriminde. Alış iskontosunun varsayılanı stok kartından gelir (Stok > Alış İskonto %); teklif satırı girilirken satıra kopyalanır ve satır bazında değiştirilebilir. Müşteriye verilen satır fiyatını sonradan değiştirseniz de maliyet değişmez (tedarikçi iskontosu her zaman liste/satış fiyatı üzerinden hesaplanır). Para birimi: stok kartının satış dövizi ile teklif satırının dövizi aynıysa çevrim yapılmaz (ör. EUR fiyat EUR olarak kalır — yanlışlıkla TL sayılıp çevrilmez); farklıysa güncel kurla satırın dövizine çevrilir; kur yoksa "—" gösterilir (1:1 uydurma değerleme yapılmaz).
  • Alış iskontosu girilmemiş (0 / boş) satırlarda alış maliyeti hesaplanmaz. Bir satırın efektif alış iskontosu (satır değeri varsa o, yoksa stok kartı varsayılanı) 0 veya boş ise, o satırın alış (birim) maliyeti = 0 kabul edilir — satış fiyatının tamamı maliyet sayılmaz. Sebep: iskonto girilmediğinde maliyet = satış fiyatı çıkar ve o satır kârı sıfırlayıp marjı yanlış (düşük) gösterir. Gerçek bir alış maliyeti görmek istiyorsanız satıra (ya da stok kartına) alış iskontosu % girin.
  • Hizmet / Mahal tipli kartlarda alış maliyeti hesaplanmaz. Stok kartının Tip alanı Hizmet veya Mahal ise o satırın alış (birim) maliyeti = 0 kabul edilir (yukarıdaki iskonto kuralıyla aynı gerekçe). Teklif giriş formunda Hizmet/Mahal kartı seçilince Alış İsk% alanı otomatik pasifleşir ve boşalır.
  • Ortak gösterim: Alış maliyeti hesaplanmayan (yukarıdaki iki durumdan biri) satırların Alış İsk%, Br. Maliyet ve Alış Mal. kolonları nötr "—" ile gösterilir; bu, "maliyeti yok" (0) anlamındadır ve stok fiyatı/kuru eksik olduğunda çıkan (kırmızı) "—" uyarısıyla karıştırılmaz (o satırlar için eksik-maliyet uyarısı çıkmaz). İşçilik/barem bundan etkilenmez — bu satırlarda barem doluysa işçilik yine hesaplanır.
  • İşçilik (barem) maliyeti = stok kartındaki Barem adedi × Barem birim değeri × satır miktarı. Barem birim değeri ve dövizi Ayarlar > Barem Tanımlama ekranından tanımlanır. Bu, teklife elle girdiğiniz işçilik satırlarından tamamen ayrı bir hesaptır. Not: Hizmet/Mahal kartına Barem girilmişse işçilik maliyeti bu satırda da normal hesaplanır (alış maliyeti 0 kalır, yalnız işçilik gelir); yani bir hizmet için işçilik yansıtmak isterseniz stok kartına Barem tanımlamanız yeterlidir.
  • Satır toplam maliyeti = alış maliyeti + işçilik. Belge toplamında toplam maliyet, teklif tutarı, kâr ve kâr marjı (%) gösterilir. Kâr/marj her zaman KDV hariç net tutar üzerinden hesaplanır (maliyet de KDV hariçtir); belge geneli indirim varsa tabana uygulanır.
  • Kârlılık Özetinde KDV dahil bilgi satırları: Toplam Alış Maliyeti, Toplam İşçilik ve Toplam Maliyet satırları (KDV hariç) olarak etiketlenir ve her birinin altında ikincil bir "KDV dahil: …" satırı gösterilir (her satırın kendi KDV oranı alış+işçilik tutarına uygulanır). Teklif Net Tutarı (kâr tabanı) satırının altındaki "KDV dahil" değer, teklifin genel toplamıyla (KDV dâhil) birebir aynıdır — iki farklı yerden farklı KDV toplamı çıkmaz. Bu satırlar yalnız bilgi amaçlıdır; kâr ve marj değişmez (KDV hariç net üzerinden hesaplanır).
  • Ekran düzeni — Satır Detayları: Satır bazlı maliyet tablosu, rapor açıldığında varsayılan olarak kapalıdır; üstteki "Satır Detayları (… kalem)" başlığına tıklayarak açıp kapatabilirsiniz. Kârlılık Özeti ve Kâr / Kâr Marjı panelleri her zaman görünür kalır. Yazdırırken (Yazdır butonu) satır tablosu, ekrandaki aç/kapa durumundan bağımsız olarak çıktıda her zaman açık gelir.
  • Rapor para birimi: Teklifin tüm ürün satırları aynı para biriminde ise (en yaygın durum) rapor o para biriminde gösterilir — kolonlar (Alış Mal., İşçilik, Satır Maliyet) ve kârlılık özeti teklif dövizindedir. İşçilik, barem birim değerinin dövizinden (genelde TL) teklif dövizine teklifin kendi kuruyla çevrilir (ör. 1.000 TL / 53 = 18,87 EUR). Toplam maliyet ve kâr için ayrıca TL karşılığı ikincil satır olarak, kullanılan kur ibaresiyle ("1 EUR = 53,00 TL") verilir. Kâr marjı (%) oran olduğundan para biriminden bağımsızdır, değişmez. Satırlar farklı para birimlerinde ise (karışık döviz) rapor TL olarak gösterilir (tutarlar tek dövizde toplanamaz) ve raporun üstünde bu durum belirtilir. TL tekliflerde görünüm değişmez.

Açık / Kapalı teklif farkı (önemli):

  • Teklif açıkken (Taslak / Gönderildi / Beklemede) rapor; birim alış maliyetini, barem adedini ve işçilik değerlerini güncel tanımlardan canlı okur (stok kartındaki güncel satış fiyatı + para birimi + güncel kur, güncel Barem adedi, güncel barem birim değeri). Böylece stok kartı fiyatı/kuru güncellenince rapor da güncel kalır.
  • Teklif kapandığında (Kabul Edildi / Reddedildi / Terk Edildi / Geri Çekildi) hem barem değerleri hem birim alış maliyeti o anki hâliyle teklife dondurulur (snapshot); kapalı teklifin raporu her zaman bu dondurulmuş değerleri gösterir. Böylece geçmiş bir teklifin kârlılığı, aradan zaman geçip tanımlar değişse de kapanış anındaki gerçeği yansıtır.
  • Teklif terminal durumdan geri açılırsa (ör. toplu durum değiştirme ile) barem snapshot'ı temizlenir ve rapor yeniden güncel tanımlardan (alış maliyeti dâhil) canlı hesaplar; yeniden kapandığında tekrar dondurulur. Rapor üst kısmında, değerlerin "güncel tanımlardan" mı yoksa "kapanış anı"ndan mı geldiği açıkça belirtilir.
  • Teklif zarardaysa (satış tutarı toplam maliyetin altında) rapor bunu belirgin (kırmızı "ZARARDA" uyarısı ve negatif kâr/marj) gösterir.

Not: Maliyeti hesaplanamayan (stok kartında satış fiyatı olmayan veya geçerli kur bulunamayan) satırlar toplama katılmaz ve raporda "—" ile gösterilerek uyarılır — yanlış (1:1) bir değerleme yapılmaz.

CRM Ayarları — Teklif Fiyatları KDV Dahil / Hariç

Menü: Ayarlar > CRM Ayarları (Şirket Ayarları yetkisi — Menu.SirketAyarlari — gerektirir).

Teklif hazırlarken girdiğiniz birim fiyatların KDV içerip içermediğini şirket bazında belirlersiniz:

  • KDV Hariç (varsayılan): Girilen fiyatlar KDV içermez; hesapta fiyatların üstüne KDV eklenir. Örn. 100 ₺ + %20 KDV → 120 ₺. Bu, teklif modülünün bugüne kadarki tek davranışıdır — bu ayarı hiç açmadıysanız hiçbir teklifiniz etkilenmez.
  • KDV Dahil: Girilen fiyatlar KDV içerir; hesapta fiyatların içinden KDV ayrıştırılır (iç yüzde). Örn. 120 ₺ dahil, %20 → 100 ₺ mal + 20 ₺ KDV. Genel toplam her iki modda da KDV dâhildir; kâr/marj her iki modda da KDV hariç net üzerinden hesaplanır. Satır bazlı farklı KDV oranları ve genel indirim iki modda da desteklenir.

Önemli — damgalama: Seçilen mod, teklif oluşturulurken o teklife işlenir (damgalanır). Ayarı sonradan değiştirseniz de daha önce oluşturulmuş tekliflerin rakamları değişmez — her teklif kendi damgasıyla hesaplanır. Bu, geçmiş belgelerin tutarlılığı ve denetlenebilirliği içindir. Aktif mod; teklif hazırlama ekranında, PDF çıktısında ve müşteriye giden web bağlantısında küçük bir ibareyle ("Fiyatlara KDV dâhildir/dâhil değildir") gösterilir.

Not: Bu ayar yalnız CRM tekliflerini ilgilendirir; Satış Faturası / Sipariş / Hızlı Satış modüllerinin ayrı Fiyatlar_KdvDahil ayarından bağımsızdır.

Yetkisiz kullanıcı davranışı: Alış iskonto ve maliyet alanları teklif formunda da yalnızca yetkili kullanıcıya görünür. Yetkisi olmayan kullanıcı teklifi kaydettiğinde maliyet yine sunucuda otomatik hesaplanır (stok kartı varsayılan iskontosuyla); veri bütünlüğü bozulmaz. Ancak yetkisiz bir kullanıcı taslağı düzenleyip kaydederse, satır bazlı iskonto override'ları stok kartı varsayılanına geri döner.

Doküman Ekleme (Teklif / Fırsat / Cari)

Ekran Görüntüsü

  1. İlgili kaydın (potansiyel/cari, fırsat veya teklif) panelinde/detayında "Dokümanlar" sekmesine gidin.
  2. Dosya Seç ve isteğe bağlı bir açıklama girip Yükle butonuna basın (tek dosya en fazla 20 MB).
  3. Yüklenen dosyalar listede görünür; satırdaki göze tıklayınca dosya (PDF/görsel için) tarayıcı içinde açılır, indirme linkiyle indirilebilir, çöp kutusu ile silinebilir.

Tanımlar

Ekran Görüntüsü

  • Etiketler (Tag): Cari veya tekliflere serbestçe atanabilen, renk seçilebilen etiketler; ilgili tanım sayfasından eklenir/düzenlenir/silinir.
  • Ünvanlar: İletişim kişisi kayıtlarında kullanılan unvan (ör. "Satın Alma Müdürü") listesi.
  • Pipeline Aşamaları: Fırsatların geçtiği aşamalar (ör. Yeni, Görüşülüyor, Teklif Verildi, Kazanıldı, Kaybedildi); her aşamaya sıra no, renk, olasılık % ve "Kazandı"/"Kaybetti" bayrağı atanır — bu bayraklar Pipeline kanban'da hangi kolona bırakılınca hangi modalın (kazanma/kayıp) açılacağını belirler.
  • Kayıp Sebepleri: Bir fırsat "Kaybedildi" aşamasına taşınırken seçilebilecek sebep listesi.
  • Teklif Şablonları ve İçerik Blokları: İlgili tanım sayfasından yönetilir — her şablonun kendi vurgu rengi, logosu, kapak/mektup/ön-dip metin HTML'i vardır; "Şablon Düzenle" ekranında merge alanları (placeholder) kullanılabilir. Ayrıca burada tekrar kullanılabilir içerik blokları da tanımlanır (Sihirbaz Adım 3'teki "Blok" menüsünde listelenir).
  • Alanları Düzenle (Potansiyel formu): Potansiyel panelindeki alan ayarları ekranından, şirket bazında hangi potansiyel formu alanının gösterileceği ve zorunlu olacağı özelleştirilebilir.

Alan Açıklamaları

Potansiyel Müşteri Formu

Alan Açıklama
İsim/Unvan * Firma veya kişi adı; zorunlu.
Kod Serbest referans kodu.
Durum Yeni, İletişim Kuruldu, Değerlendirilmede, Nitelikli, Niteliksiz, Kazanıldı, Kaybedildi (huni sırasıyla).
Telefon / E-posta İletişim bilgileri.
İl / İlçe / Adres Konum bilgileri.
Vergi No / Vergi Dairesi Kurumsal kimlik bilgisi.
Kaynak Kanal Web, Fuar, Referans, Soğuk Arama, Diğer.
Bölge / Saha Serbest metin, satış bölgesi/saha sınıflandırması.
Notlar Serbest not alanı.
Web Sitesi / Facebook / LinkedIn / Instagram / X Yalnız http(s) ile başlayan geçerli adresler kabul edilir.
IYS İzin Tarihi / Kaynağı Pazarlama izni takibi.

Fırsat Formu

Alan Açıklama
Başlık * Fırsatın kısa tanımı.
Aşama * Pipeline aşaması; varsayılan sıradaki ilk aktif (kazanma/kayıp olmayan) aşama.
Cari * Fırsatın bağlı olduğu müşteri/potansiyel.
İletişim Kişisi Cariye bağlı kişi (opsiyonel).
Beklenen Tutar TRY cinsinden tahmini tutar (fiyatlama satırları ayrıca girilebilir).
Beklenen Kapanış * Tahmini kapanış tarihi.
Atanan Kullanıcı * Fırsatın sorumlusu; varsayılan oturum sahibi.
Açıklama Fırsatın detayı/müşteri talebi.
Notlar İç not, müşteriye gösterilmez.

Aktivite Formu

Alan Açıklama
Tip * Ziyaret, Görev, Telefon, Email, Toplantı.
Başlık * Aktivitenin kısa açıklaması.
Cari * Yeni kayıtta zorunlu; düzenlemede değiştirilemez.
Atanan * Aktiviteden sorumlu kullanıcı.
Başlangıç * / Bitiş Tarih-saat; bitiş başlangıçtan önce olamaz.
Süre (dk) Girilirse bitiş otomatik hesaplanır.
Durum Planlandı, Devam Ediyor, Tamamlandı, İptal.
Konum Serbest metin veya haritadan seçilen adres.
Açıklama / Sonuç Aktivite detayı ve (tamamlandığında) sonuç notu.

Teklif Sihirbazı — Önemli Alanlar

Alan Açıklama
Şablon Boşsa "şablonsuz" klasik PDF; seçilirse kapak/mektup/metinler otomatik ön dolar.
Müşteri * / İlgili Kişi / Bağlı Fırsat Teklifin muhatabı; fırsat seçilince satırlar/kur devredilebilir.
Konu * Teklif başlığı; mailin/PDF'in konusuna yansır.
Teklif Tarihi Otomatik atanır, değiştirilemez.
Geçerlilik Tarihi Müşterinin karar verebileceği son tarih; süresi geçince müşteri linki karar formu göstermez.
Döviz / Kur Ürün satırındaki stoktan otomatik güncellenir; karışık dövizde satır bazlı kur girilir.
Teslimat Adresi Boşsa müşteri seçilince cari adresinden otomatik doldurulur.
Teklifi Sunan (Ünvan/İmza) Oturum sahibi kullanıcıya özel, tüm tekliflerinde kullanılır.
Kapak/Sunum Mektubu/Ön Metin/Dip Metin Zengin metin, merge alanı ve içerik bloğu destekli.
Ürün/Hizmet Satırları Stok, Açıklama, Miktar, Birim Fiyat, İskonto%, KDV%, Döviz; Grup Başlığı ile bantlanabilir.
Alış İsk% (satır) Yalnız "Teklif Maliyet Raporu" yetkisi olan kullanıcıya görünür. Stok kartındaki alış iskonto varsayılanı önerilir, satır bazında değiştirilebilir; birim alış maliyeti hesabında kullanılır (bkz. Teklif Maliyet Raporu). Boş bırakılırsa stok kartı varsayılanı geçerlidir.
Toplam İş Adedi Opsiyonel; başlık miktarları toplamıyla karşılaştırılıp uyarı verir (engellemez).
Genel İndirim % Tüm satırlara uygulanan ek indirim.

Sık Karşılaşılan Durumlar / İpuçları / Uyarılar

  • Sadece Taslak teklifler düzenlenebilir/gönderilebilir: Gönderildi/Beklemede/Kabul Edildi vb. durumdaki bir teklifi düzenlemek için önce "Revize Et" ile yeni bir taslak revizyon oluşturmak gerekir.
  • Şablonlu veya başlık/Toplam İş Adedi içeren teklifler klasik formda düzenlenemez: sistem otomatik olarak Sihirbaz'a yönlendirir; aksi halde bu alanlar sessizce silinebilirdi.
  • "CRM sadece kendi kayıtları" kısıtı: bu ayar açık kullanıcılar başka bir plasiyerin/atananın carisine, fırsatına, aktivitesine veya teklifine erişemez; dashboard, liste, Excel çıktısı ve AJAX uçları dahil her yerde sunucu tarafında zorlanır (arayüzde gizlense de bypass edilemez).
  • Müşteri teklif linkini yalnızca bir kez kararlaştırabilir: Kabul/Red verildikten sonra "Bu bağlantı kapanmıştır." mesajı görünür, tekrar karar değiştirilemez. Yeni bir teklif revizyonu gönderilirse eski link üzerinden karar alınamaz, müşteriye yeni link verilmelidir.
  • Genel İndirim % ve satır İskonto/KDV % değerleri 0-100 aralığında olmalıdır; aralık dışı değerler hem sihirbazda hem fiyatlama modalında reddedilir.
  • İmza/logo yükleme sınırları: potansiyel logosu ve teklif imzası PNG/JPG(/WEBP logo için) ile sınırlıdır, imza en fazla 1 MB, logo en fazla 2 MB; doküman eki en fazla 20 MB.
  • Web linki idempotent üretilir: aynı teklif için "Web Linki" tekrar tekrar üretilse de (silinmediği sürece) aynı token/URL döner — müşteriye birden fazla farklı link göndermekten çekinmeye gerek yoktur.
  • Aktivite bitiş tarihi kontrolü: hem form hem panel (AJAX) kaydında sunucu tarafında da doğrulanır; tarayıcı doğrulaması atlatılsa bile kayıt reddedilir.
  • Excel içe aktarımda en az CariKod veya CariAd'dan biri ve Başlık zorunludur; boş satırlar otomatik atlanır, hata veren satırlar (en fazla 10 tanesi) mesaj olarak gösterilir.