Ana içeriğe geç

Müşteri Alanları

Bu dokümantasyon, Serenay\B2B\Data\User nesnesinin tüm erişilebilir alanlarını ve metodlarını içerir. User nesnesi bg_uyeler tablosundaki her satıra (müşteri/kullanıcı) karşılık gelir ve Twig şablonlarında user değişkeni olarak kullanılabilir.

Tüm Müşteri Özellikleri

🔍

Alan AdıArama KelimeleriTipAçıklamaTwig Kullanımı
idid, kimlik, uniqueintKullanıcı benzersiz ID'si{{ user.id }}
firmafirma, şirket, companystringFirma adı{{ user.firma }}
yetkiliyetkili, isim, ad soyadstringYetkili kişi adı{{ user.yetkili }}
nameisim, name, adstringKullanıcı adı (yetkili ile aynı){{ user.name }}
titleünvan, title, başlıkstringKullanıcı ünvanı (yetkili ile aynı){{ user.title }}
company_namefirma adı, company namestringFirma adı (firma ile aynı){{ user.company_name }}
mailmail, email, e-postastringE-posta adresi{{ user.mail }}
bayi_kodbayi kodu, müşteri kodu, seller codestringMüşteri/bayi kodu{{ user.bayi_kod }}
seller_codesatıcı kodu, seller codestringSatıcı kodu (bayi_kod ile aynı){{ user.seller_code }}
kullaniciadikullanıcı adı, login, usernamestringKullanıcı adı (login){{ user.kullaniciadi }}
avatar_characteravatar, baş harf, initialsstringYetkili adının (yetkili) kelime baş harflerinden oluşan avatar metni{{ user.avatar_character }}

Public Metodlar

MetodParametrelerDönüşAçıklama
isSuperAdmin()-boolyetki == ADMIN_USER_VALUE ve maili murat@serenay.net.tr olan tek hesap için true
generateToken()-stringid + mail + sifre + time() üzerinden token üretir (kaydetmez)
generateAndSaveToken()-stringToken üretip token alanına kaydeder, başarısızsa boş string döner
getOrderNo($prfx = '')string $prfxstringSipariş numarası üretir, aynı prefiks için istek içinde cache'lenir
customValue($key)string $keystringÖzel alan değerini getirir
addPermission($permission_name)stringstaticbg_yetkiler'e yetki tanımlar (upsert)
removePermission($permission_name)stringstaticTanımlı bir yetkiyi kaldırır
getPaymentTypes($cart)CartPaymentType[]Kullanıcı ve sepet için geçerli ödeme yöntemlerini döner (formüle göre filtreler)
isValidPayment($paymentId, $cart)int, CartboolBelirli bir ödeme yönteminin bu kullanıcı/sepet için geçerli olup olmadığını kontrol eder
completeBasket($type, $others, $disableFix)string, array, boolvoidKullanıcının sepetini siparişe dönüştürür
logData()-arrayLog için id, name, email döner

Twig Kullanım Örnekleri

Kullanıcı Profil Kartı

<div class="user-profile">
<div class="avatar">{{ user.avatar_character }}</div>
<h2>{{ user.name }}</h2>
<p>{{ user.company_name }}</p>
<p>Müşteri Kodu: {{ user.bayi_kod }}</p>
<p>{{ user.mail }}</p>
</div>

Hesap Durumu ve Rozetler

<div class="account-status">
{% if user.is_active %}
<span class="badge badge-success">Aktif</span>
{% else %}
<span class="badge badge-danger">Pasif</span>
{% endif %}

{% if user.is_admin %}
<span class="badge badge-info">Yönetici</span>
{% endif %}

{% if user.ozelbayi %}
<span class="badge badge-warning">Özel Bayi</span>
{% endif %}
</div>

İstatistik Paneli

<div class="user-stats">
<div class="stat-card">
<h4>Toplam Sipariş</h4>
<p>{{ user.order_count }}</p>
</div>
<div class="stat-card">
<h4>Sepetteki Ürün</h4>
<p>{{ user.basket_item_count }}</p>
</div>
<div class="stat-card">
<h4>Favoriler</h4>
<p>{{ user.favorite_count }}</p>
</div>
</div>

Adres ve Kargo Seçimi

<form action="/checkout/save_address" method="post">
<input type="text" name="firma" value="{{ user.address.firma }}">
<input type="text" name="adres" value="{{ user.address.adres }}">

{% if user.region_cargos %}
<select name="cargo_id">
{% for cargo in user.region_cargos %}
<option value="{{ cargo.id }}">{{ cargo.title }}</option>
{% endfor %}
</select>
{% endif %}
</form>

Önemli Notlar

sehir/ulke vs city/country

sehir ve ulke DB'de ham ID değerleridir; gösterim için city/country ilişkili nesnelerini kullanın.

Para Birimi

currency, company_group'un bağlı olduğu fiyat listesinden gelir, tanımlı değilse sistem para birimine düşer.

  1. min_order_amount: Admin kullanıcılar için her zaman 0; diğerleri için order_limit_group'tan hesaplanır ve gerekiyorsa kullanıcının para birimine çevrilir.
  2. order_count / basket_item_count: Veritabanı sütunu değildir, nesne başına bir kez sorgulanıp önbelleğe alınır.
  3. favorite_count: Önbelleksizdir; her erişimde FavoriteProducts::favoriteCount() ile yeni sayım sorgusu atar — döngü içinde tekrar tekrar okumaktan kaçının.
  4. address: hasOne ile siparis_adres.id DESC sırasında ilk (en son eklenen) adres döner; "varsayılan adres" bayrağı yoktur. Kayıtlı adres yoksa CheckoutAddress::createFromUser() ile boş bir adres nesnesi üretilir, DB'ye yazılmaz.
  5. Özel Alanlar: CustomFieldType::USER tipiyle tanımlı özel alanlar custom ve custom_field_{key} üzerinden erişilir.
  6. Şifre Alanı: sifre her zaman hash'li tutulur; kayıt sırasında 32 karakter değilse otomatik hashlenir.
  7. Yetki Sistemi: Basit yetki alanının (1=kullanıcı, admin sabiti=admin) yanında bg_yetkiler tablosu üzerinden ayrıntılı izin sistemi vardır.

Sıkça Sorulan Sorular (SSS)

telefon ile sabittel/gsm arasındaki fark nedir?

telefon, sabittel alanını döndürür; yalnızca sabittel null ise gsm'e düşer. sabittel sütunu veritabanında NOT NULL olduğundan pratikte telefon her zaman sabittel değerini verir. Cep telefonuna özel erişmek için doğrudan user.gsm kullanın.

is_active ve durum arasındaki fark nedir?

durum, veritabanındaki ham değerdir (0=pasif, 1=aktif). is_active, bu değeri DURUM_AKTIF sabitiyle karşılaştıran hazır bir bool döner. Şablonlarda koşul yazarken durum yerine is_active kullanmak daha okunaklıdır.

order_count her seferinde veritabanına mı gidiyor?

Hayır. order_count ve basket_item_count nesne başına bir kez hesaplanıp önbelleğe alınır; aynı user nesnesi üzerinde tekrar okumak ek sorgu oluşturmaz. Ancak favorite_count önbelleksizdir, her erişimde yeni sorgu çalıştırır.

Özel alanlara (custom fields) nasıl erişilir?

CustomFieldType::USER tipiyle tanımlı alanlara user.custom.alan_adi veya user.custom_field_alan_adi şeklinde erişilebilir. Ham değerler için user.customFieldValues kullanılabilir.

Kullanıcının adresine nasıl erişilir, varsayılan adres var mı?

user.address, kullanıcının en son eklediği sipariş adresini (siparis_adres.id DESC) döner. Ayrı bir "varsayılan adres" bayrağı yoktur. Hiç adres kaydı yoksa boş bir CheckoutAddress nesnesi üretilir (veritabanına yazılmaz).


Kaynaklar


İletişim ve Destek

Herhangi bir sorunla karşılaşırsanız veya yardıma ihtiyaç duyarsanız, destek ekibimizle iletişime geçebilirsiniz.