
e-Ticaret Sistemi

Biliyorsunuz bir ürünün birçok rengi, boyutu vs olabiliyor. Örneğin bir tshirtün S, M, L, XL boylarının olduğunu ve siyah, beyaz, baskılı şeklinde de 3 adet renk seçeneğinin olduğunu varsayalım. Bu durumda 12 adet ürün varyantı oluşmuş oluyor. Beyaz S, Beyaz L, Siyah S, Siyah L.... vs. Bunların stoklarının ve fiyatlarının ayrı tutulması gerekiyor çünkü Beyaz rengin L'si tükenebilir, XL siyahtan sadece 5 tane kalabilir, M beyaz %10 indirimli olabilir, bunların resimleri ve diğer bazı özellikleri de farklı olacaktır elbette. Burada esnek bir stok ve ürün yapısı oluşturmada kullanılan yöntem ise (SKU - Stok Keeping Unit diye geçer) her bir varyanta ürün kodu oluşturup sisteme alt ürün olarak ekletmek. Bu şekilde bir sistem kurduğunuzda üstteki örnek için 12 adet ürün kodu (SKU kodu) oluşmuş oluyor. Bu durumda 12 adet stok, fiyat, resim vs girmeniz gerekiyor. Buradaki önerim şu: Sistemi bu şekilde yazacaksanız ana ürüne stok ve fiyat bilgisi özelliği eklemeyin, ürün tek bile olsa, varyantı olmasa bile onun için bir varyant oluşturun. Yani ana ürün kaydı sadece tutucu/ana olarak işlev görsün, fiyat stok resim özellik ayrıntı vs varyanttan gelsin. Bu ileride yaşanacak bir çok karışıklığa ve soruna engel olacaktır.
Biz yandık zamanında, siz yanmayın


Kesinlikle önerinizi dikkate alacağımmgsmus yazdıBir de ürün varyantı konusunda bilgi sahibi misiniz bilmiyorum ama bu konuda bir öneride bulunmak isterim.
Biliyorsunuz bir ürünün birçok rengi, boyutu vs olabiliyor. Örneğin bir tshirtün S, M, L, XL boylarının olduğunu ve siyah, beyaz, baskılı şeklinde de 3 adet renk seçeneğinin olduğunu varsayalım. Bu durumda 12 adet ürün varyantı oluşmuş oluyor. Beyaz S, Beyaz L, Siyah S, Siyah L.... vs. Bunların stoklarının ve fiyatlarının ayrı tutulması gerekiyor çünkü Beyaz rengin L'si tükenebilir, XL siyahtan sadece 5 tane kalabilir, M beyaz %10 indirimli olabilir, bunların resimleri ve diğer bazı özellikleri de farklı olacaktır elbette. Burada esnek bir stok ve ürün yapısı oluşturmada kullanılan yöntem ise (SKU - Stok Keeping Unit diye geçer) her bir varyanta ürün kodu oluşturup sisteme alt ürün olarak ekletmek. Bu şekilde bir sistem kurduğunuzda üstteki örnek için 12 adet ürün kodu (SKU kodu) oluşmuş oluyor. Bu durumda 12 adet stok, fiyat, resim vs girmeniz gerekiyor. Buradaki önerim şu: Sistemi bu şekilde yazacaksanız ana ürüne stok ve fiyat bilgisi özelliği eklemeyin, ürün tek bile olsa, varyantı olmasa bile onun için bir varyant oluşturun. Yani ana ürün kaydı sadece tutucu/ana olarak işlev görsün, fiyat stok resim özellik ayrıntı vs varyanttan gelsin. Bu ileride yaşanacak bir çok karışıklığa ve soruna engel olacaktır.
Biz yandık zamanında, siz yanmayın :)

Structure'ım şöyle idi varyantları farklı bir tabloda tutuyordum sürekli oradan çekiyordum standart ürün kartlarınıda nonVariant olarak o tablodan çekiyordum. Sanırım aynı kapıya çıkıyor. ama ben amazon ile entegre çalışan bir sistem hazırladığım için farklı sku olması benim için ekstra 5$ maaliyet demek



+----+------+---------------+
| id | code | name |
+----+------+---------------+
| 1 | P001 | Basic T-shirt |
+----+------+---------------+
Bu da o ürünün seçenekleri, yani varyantları, variants tablosunda yer alıyorlar. Her birinin kendine ait kodu, fiyatı stok bilgisi var:
+----+------------+------------+-----------------------+-------+-------+
| id | product_id | code | name | stock | price |
+----+------------+------------+-----------------------+-------+-------+
| 1 | 1 | P001-BYZ-M | Beyaz M Basic T-shirt | 10 | 15.99 |
| 2 | 1 | P002-BYZ-L | Beyaz L Basic T-shirt | 8 | 15.99 |
| 3 | 1 | P003-SYH-L | Siyah L Basic T-shirt | 2 | 13.99 |
+----+------------+------------+-----------------------+-------+-------+
Bu sayede her ürünün ayrı varyantını satabiliyorsunuz. XL bitti sadece L var, L'nin de sadece beyazı ve kırmızısı kaldı ama kırmızı olan %10 indirimli vs vs gibi çeşitlendirme yapabiliyorsunuz. Buna Stock Keeping Unit deniyor, kısaca SKU diye geçer. Benim tabloda code dediğim aslında SKU code olmuş oluyor. Onu oluşturmanın, kontrol etmenin yolları var.Benim üstteki tavsiyem şu:
Bu şekilde diyelim ki kupa/mug satıyorsunuz. Her hangi bir seçeneği renk boyut vs yok, düz kupa, tek ürün. Bu durumda eğer products tablosuna stock price diye alan ekleyip varyantı olmayan ürünlerde stok ve fiyat gibi bilgileri products tablosuna ekletirseniz ileride işler karışıyor. Ben de diyorum ki ürün tek bile olsa ona bir tane varyant ekleyin. Yani şöyle olacak:
+----+------+------+
| id | code | name |
+----+------+------+
| 1 | P001 | Mug |
+----+------+------+
+----+------------+---------+------+-------+-------+
| id | product_id | code | name | stock | price |
+----+------------+---------+------+-------+-------+
| 1 | 1 | P001-1 | Mug | 15 | 33.69 |
+----+------------+---------+------+-------+-------+
Sattığınız products tablosunda kodu P001 olan ürün değil, variants tablosunda yer alan P001-1 kodlu ürün olmalı, products tablosundaki hiç bir ürün satılmamalı çünkü asıl satılan varyant.laravel.io doğrudur, bilmiyorum, her yerde bir şeyler yazıyorum gördükçe.
@mgsmus hocam ben bu glide paketini projeme bir türlü entegre edemedim. Kurulumda bilmem gereken ekstra birşey var mı acaba?mgsmus yazdıBenim bu tip sistemlerde en zorlandığım nokta her zaman hiyerarşik veridir, yani e-ticaret adına konuşursak sınırsız kategori-alt kategori sistemi. Ne yazık ki bu konuya bir paket dışında oturaklı bir çözüm bulabilmiş değilim. Hala SQL sorguları ve PHP düzeyinde neler yapılabilir araştırıyorum. Bu konuda kullandığım ve tavsiye etttiğim bu paket ise:
https://github.com/lazychaser/laravel-nestedset
Ürünler için resim işlemleri yapmanız gerekecek. Bunun için tavsiyelerim:
https://github.com/Intervention/image
https://github.com/thephpleague/glide
Bunların dışında bir paket önermiyorum, geri kalanını sizin yapabileceğinizi düşünüyorum. Bu tür sistemlerde çok fazla paket bağımlılığını sağlıklı bulmuyorum.
https://github.com/spatie/laravel-medialibrary
mgsmus hocam bilgilendirmeleriniz için çok teşekkür ederim. SKU konusunda https://laracasts.com/discuss/channels/general-discussion/custom-ecommerce-dynamic-product-variants linkindeki gibi şema daha mı mantıklı olur. Ayrıca stok takibi konusunda tavsiyeniz nedir. ilgili ürün varyantının stok adeti her seferinde göncellensin mi? Ya da +stok veya -stok olarak eklenip çıkarılabilsin mi? Umarım açıklayabilmişimdir. Saygılarımla
Buradaki şema benim anlattığıma benzer bir şema. Benim bahsetmediğim ise buradaki SKU_VALUES isimli tablo. sku_id üzerinden SKU kodunun oluşturulduğu değerlere ulaşmanızı sağlayan güzel bir yapı. Bu şemadan yola çıkabilirsiniz. Bende VARIANTS ve SKUS şeklinde iki tablo yok, bunları tek tabloda tutuyorum. Örnekte neden ayrı tabloda tuttuğunu anlamadım çünkü bir variant bir sku demek, birden fazla olması sözkonusu değil. Belki bir sebebi vardır.
Eğer ürünlerinizin barkodu yoksa mecburen +-stok yapacaksınız ya da sayı tutmak yerine var/yok şeklinde kontrol edeceksiniz. Ürünlerin barkodu varsa bunları ayrı bir tabloda product_id ve variant_id ile tutup satıldı/satılmadı şeklinde işaretlerek dinamik stok tutmanız lazım çünkü barkod demek satılan/satılacak her ürünün varlığını bilmeniz demek.
mgsmus Örnekte neden ayrı tabloda tuttuğunu anlamadım
Senin kadar laravel bilgim yok Abi ama yazdıklarından ve gördüğüm sistemlere dayanarak yazıyorum :
Orda aslında name vermiş type yazabilirdi. Muhtemelen senin anlattığın yapıya göre ve gördüğüm sistemlerde şöyle
varyant tablosu id varyant adı = [1,Size]
varyanlar [ id,variant_id,variant_name] =
[1,1,S]
[1,1,M]
[1,1,L]
gibi bu şekilde admin panelinde ürün eklerken örneğin giysi ekleyecekse varyan tipini size seçiyor alta bedenler geliyor mutlaka görmüşşündür. Aslında otomatize yapmayı düşünmüş diye düşünüyorum. Saygılarımı sunuyorum
mgsmus Geçtiğimiz aylarda bir projede sizin bu yorumda önerdiğiniz noktaya çile çekerek geldim. Keşke o zaman rastlasaydım yorumunuza. Yine de içim rahatladı görünce yorumu, çok teşekkürler
selam kolay gelsin
sku işlemini burda anlatıldıgı yöntem ile yaptım ama ürün detay kısmında takıldım mesela
1-Beden
XL, L, M
2-Renk
Kırmızı Sarı Yeşil
ürün detay kısmında xl bastıgında renklerde hangisinin stokda var yada yok ve o ilgili seçilen varyantın fiyat bilgisi vs çektirmemiz gerek tam burada kafam karıştı
kısaca: XL bastıgımda hangi renklerin oldugunu nasıl anlıycam tablolar ile ilişkiyi nasıl kurucam onu sormak istedim