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 [email protected] 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.