WooCommerce'te elle girilen siparişler neden stok düşmüyor?
WooCommerce stoku sipariş oluşturulduğunda değil, sipariş Processing, On hold ya da Completed durumuna geçtiğinde düşer. Elle girilen bir satışın bu hareketi kaçırmasının beş yolu ve tezgâh satışını hafızaya güvenmeden kaydetmenin nasıl bir şey olduğu.
Bir müşteri askıdan bir kazak alır, yirmilik uzatır ve çıkar. On dakika sonra biri, kayıtlar tutarlı kalsın diye satışı WooCommerce’e elle girer. Bir hafta sonra raf iki diyor, ekran beş diyor ve o iki sayının hangi anda birbirinden ayrıldığını kimse söyleyemiyor.
İşin içine bir tezgâh girdiğinde bir WooCommerce mağazasının stok rakamı en çok bu şekilde bozulur ve bu bir hata değildir. WooCommerce’in stoku hareket ettirdiği kesin bir an vardır; wp-admin içinde sipariş oluşturmak o an değildir. Aşağıda: stokun ne zaman hareket ettiği, elle girilen bir satışın bu anı kaçırmasının beş yolu ve dükkân içi bir satışı hafızaya güvenmeden kaydetmenin nasıl bir şey olduğu.
Belirti: satışı girdiniz ama raf ile ekran uyuşmuyor#
Sapma genellikle tek yönde ilerler. Ekran yüksek, raf düşüktür; çünkü eksik kalan hareket, hiçbir zaman düşülmemiş bir satıştır. Bu yazının ilerisindeki iki istisna bir rakamı ters yöne iter: aynı satışın iki kez girilmesi ve satışın yanlış varyasyon üzerinden kesilmesi.
Pahalıya patlayan yön budur: site, dükkânda artık bulunmayan bir ürünü satar ve birileri özür e-postasını yazar. Bir stok sayımı durumu görünür kıldığında sapma, haftalara yayılmış küçük atlamalardan ibarettir ve tek bir adet için bile suçlanacak bir sipariş yoktur. Aynı anda birden fazla neden işliyorsa, WooCommerce stok rakamlarınız neden sürekli yanlış yazımız bunları bir bütün olarak ele alıyor; buradaki konu ise yüz yüze satış.
WooCommerce stoku oluşturmada değil, durum geçişinde hareket ettirir#
Mekanizma şu ve bu yazıdaki hemen her şeyi açıklıyor. WooCommerce, bir sipariş oluşturulduğunda stok düşmez. Stoku, sipariş Processing, On hold ya da Completed durumuna geçtiğinde düşer. Çekirdeğin stok düşümünü bağladığı yegâne kancalar bu geçişler ve bir de ödemenin tamamlanmasıdır. Geri yükleme ters yönde çalışır: Pending payment, Cancelled ve Failed durumlarında ve yalnızca stok daha önce düşülmüşse.
| Sipariş durumu | O duruma girildiğinde WooCommerce stoka ne yapar |
|---|---|
| Pending payment | Stoku geri yükler, ama yalnızca daha önce düşülmüşse |
| Processing | Stok düşer (bir kez) |
| On hold | Stok düşer (bir kez) |
| Completed | Stok düşer (bir kez) |
| Cancelled | Düşülmüşse stoku geri yükler |
| Failed | Düşülmüşse stoku geri yükler |
| Refunded | Otomatik hiçbir şey; stoka geri ekleme, iade panelindeki bir onay kutusudur |
O tablodaki “bir kez” ifadesi gerçek bir iş görüyor. WooCommerce bir siparişin stokunu düştüğünde, dokunduğu her satır kalemine düştüğü miktarı kaydeden bir işaret yazar ve siparişi düşülmüş olarak damgalar. Sonraki her geçişte bu işareti taşıyan satırları atlar, damgalanmış siparişlerde ise erkenden çıkar. Bir siparişi yeniden kaydetmenin çift saymamasının nedeni bu korumadır.
Yine de yönetim ekranında hikâye bununla bitmiyor. Kalemler panelini kaydetmek ikinci ve ayrı bir kod parçasını çalıştırır: her satır için siparişte şu an duran miktarı o satırın işaretindeki miktarla karşılaştırır, aradaki farkı hareket ettirir ve “Adjusted stock” ile başlayan bir sipariş notu yazar. Bunu iki koşul kısıtlıyor. Bu düzeltme yalnızca Processing, On hold ya da Completed durumundaki siparişlerde çalışır; panel ise yalnızca Pending payment, On hold ve taslak durumunda düzenlenebilir. İkisini birden karşılayan tek durum On hold. Diğer her yerde, stoku zaten düşülmüş bir siparişe eklenen satır sayılmadan kalır.
Yani varsayılan Pending payment durumunda bırakılmış yeni bir siparişte bozulan bir şey yoktur: stoku hareket ettiren bir duruma geçiş yoksa stok hareketi de yoktur.
“Stok düş” diye bir düğme yok ve insanlar buna takılıyor#
Pek çok forum cevabı ve eski rehber, siparişi açıp Reduce stock düğmesine basmanızı söyler. Gidip bakın. Sipariş düzenlenebilir durumdayken kalemler paneli Add item(s), kuponlar açıksa Apply coupon ve Recalculate düğmelerini sunar; iade edilecek bir şey kaldığı sürece yanlarında Refund, her satırda da bir kalem simgesi ile bir silme çarpısı bulunur. Sipariş Processing ya da Completed olduğunda bunların çoğu kaybolur: panel “This order is no longer editable.” der, ekleme, düzenleme ve satır bazlı stok denetimleri ortadan kalkar. Refund düğmesi ayrı olarak basılır ve yerinde durur. Oradaki tek stok denetimi, iade panelindeki Restock refunded items onay kutusudur; o da ters yönde çalışır ve yalnızca genel stok yönetimi açıkken görünür.
O rehberler artık var olmayan bir ekranı anlatıyor. Bugünkü cevap durum açılır menüsü: siparişi Completed yapın ve Update düğmesine basın. Bu işe yarar. Ama her satışta bir insanın atması gereken bir adımdır ve o sırada tezgâhın önünde kuyruk oluşur.
Elle girilen bir satış stok hareketini beş şekilde kaybeder#
1. Sipariş Pending payment durumundan hiç çıkmıyor#
Açık ara en yaygını. Yönetim panelinde açılan yeni siparişler varsayılan olarak Pending payment gelir. Biri satırları ekler, bir sonraki müşteri araya girer, kaydeder ve sonra dönmeyi düşünür. Sipariş başka her açıdan doğrudur: ürünler doğru, tutar doğru, gün doğru. Ama hiç stok hareket ettirmemiştir.
2. Satır, stok zaten düşüldükten sonra eklendi#
Önce WooCommerce’in yapmanıza izin vermediği şeyden başlayalım. Bir sipariş Processing ya da Completed olduğunda satır kalemlerine dokunamazsınız; dolayısıyla unutulan bir ürün, önce siparişi geriye almadan eklenemez. Panelin kullanılabilir olduğu yerde ise davranışı iyidir: On hold durumundaki bir siparişte kaydetmek her satırın işaretini okur, farkı hareket ettirir ve ne yaptığını not düşer.
Hiç düşülmeyen şey, o panel dışında bir yolla damgalanmış bir siparişe eklenen satırdır: bir içe aktarıcı, bir yenileme, birinin yazdığı bir kod parçacığı. Bu satır hiçbir işaret taşımaz; sipariş düzeyindeki damga da WooCommerce’in sonraki her geçişte siparişi atlamasına yol açar. Sipariş tamammış gibi görünürken bir adet sayılmadan öylece durur.
3. Ürün stok yönetmiyor#
Stok düşümü yalnızca stok yönetimi açık ürünlere dokunur ve zaten yalnızca WooCommerce’in Ürünler → Envanter altındaki genel “Stok yönetimi” seçeneği etkinken çalışır. Hiç stok miktarı girilmemiş bir ürün sessizce eksiye düşmüyordur; o ürün hiç sayılmıyordur.
4. Stok varyasyonda değil, ana üründe duruyor#
Varyasyonlu ürünlerde bir rakamın durabileceği iki yer vardır. Varyasyon kendi stokunu yönetiyorsa o varyasyonun rakamı hareket eder. Yönetmiyor ama ana ürün yönetiyorsa hareket, ortak ana havuzdan düşer. İkisi de yönetmiyorsa hiçbir şey hareket etmez. Beden bazında stok tuttuğunu sanan ama aslında ana havuz kullanan dükkânlar tam olarak bu sapmayı yaşar. Bu tercihi varyasyonlarınız tek bir stok havuzunu paylaşmalı mı yazımızda ele aldık.
5. Yanlış varyasyon ve mükerrer kayıt#
Son ikisi insan kaynaklıdır ve bir rakamı ters yöne iten de bu ikisidir. Büyük beden yerine orta bedeni keserseniz, orta bedenler hâlâ askıdayken orta beden düşük, büyük beden yüksek görünür ve ikisini de ancak beden bazlı bir sayım yakalar. Ya da vardiya sonunda aynı satış iki kez girilir. Tutarlı varyasyon SKU’ları birincisini çok daha seyrek hale getirir; elle girmenin ise ikincisini seyrekleştiren hiçbir yanı yoktur.
Kimsenin bir şey hatırlamak zorunda olmadığı bir nakit satış kaydı nasıl görünür#
Yukarıdaki nedenlerin son ikisi dışında hepsi, birinin baskı altında hatırlaması gereken bir adımdır. Çözüm daha iyi bir hatırlatıcı değildir. Çözüm, satışı bitirmenin kendisinin o adım olduğu bir ekrandır.
Bir kasanın yaptığı iş budur. Ürünü okutur ya da ararsınız, sepete düşer, parayı alırsınız, tek bir düğmeye basarsınız; sipariş oluşturulur, durumu verilir ve stoku sunucuda düşülür. Retail POS eklentimiz tam bu biçimde bir kasadır; zaten giriş yaptığınız WooCommerce yönetim panelinin içinde çalışır ve WordPress.org üzerinde ücretsizdir. WooCommerce’in tezgâh başında kendi başına neyi karşıladığını yerleşik satış noktası rehberimizde bulabilirsiniz.

Tezgâh satışı bir WooCommerce siparişidir ve stok hareketi WooCommerce’in kendi hareketidir#
Bu döngünün önemli yanı yapmadığı şeydir. İkinci bir katalog tutmaz ve bir satış stok miktarını kendisi yazmaz. Eklentinin bir miktarı doğrudan belirlediği yalnızca iki yer vardır: adetleri geri koyan bir iade ve satış ekranındaki hızlı düzenleme kutusu. Tamamlanan bir satış wc_create_order() ile oluşturulur ve stoku WooCommerce’in kendi wc_reduce_stock_levels() fonksiyonuyla düşülür: aynı satır bazlı işaretler, aynı action’lar, dinleyen her şey için aynı davranış.
Bir POS satışının alacağı durum bir ayardır; varsayılanı Completed, seçenekler arasında Processing ve On hold da var. Satışın stoka hiç dokunup dokunmayacağı ise ikinci bir ayardır. Bu ayar iki yönü birden belirler: kapalıyken satış hiçbir şey düşmez, iade de hiçbir şey geri koymaz. Çünkü çıkışta ve girişte farklı anlama gelen bir ayar, her sat-sonra-iade et turunda envanter uydururdu.

Herhangi bir şey kurmadan önce bilmeye değer iki yan etki. POS satışları müşteriye olağan WooCommerce sipariş e-postalarını göndermez; müşteri zaten basılı fişini almıştır. Yöneticiye giden New order bildirimi de POS siparişleri için bastırılır; böylece günde iki yüz satış kesen bir tezgâh, sahibine başında durduğu satışlar için iki yüz kez e-posta atmaz. İkisinin de ayarlar ekranında bir anahtarı yoktur. WooCommerce’in düşük stok, stok yok ve ön sipariş bildirimlerine dokunulmaz; onlar siparişten değil üründen tetiklenir.
Fazla satış: sepet sınırlar, sunucu reddetmez#
Sepette, stok yönetilen bir satır, ekranın o ürün için tuttuğu stok rakamının üzerine çıkarılamaz: artı düğmesine bir fazla basın ya da daha büyük bir sayı yazın, eldeki stokta durur ve rakamı söyleyerek uyarır. Bilerek konmuş tek bir istisna var: ilk adet her zaman içeri girer, stokta yok olarak işaretlenmiş bir ürün için bile; sınır ikinci adetten itibaren işler. Çünkü ürünü elinde tutan bir kasiyerin onu kesebilmesi gerekir. Stok yönetmeyen ürünlerde sınır yoktur.
Sunucu tarafı bilerek daha yumuşaktır. Talebi sepetin tamamında ürün bazında toplar (ürün bazında, yani iki sepet satırındaki aynı ürün bir kez sayılır ve bir kez uyarılır), bunu stokla karşılaştırır ve sepet açık veriyorsa satışı yine de tamamlar; açık veren her ürünü, stokunu ve satılan miktarı belirten bir uyarı döndürür. Stok eksiye düşebilir. Doğru varsayılan budur: müşteri ürünü elinde tutarak orada duruyorsa, yanlış olan kayıttaki sayıdır, satış değil.
İki taraf da size garanti vermez. İki kasa da bir dakika önce çekilmiş bir rakamı tutuyor olabilir ve ikisi de son adedi satabilir. Birden fazla satış noktanız varsa bu sınırı bir kilit değil, yazım hatası yakalayıcı olarak görün.
Rakamın hareket ettiğini kanıtlamak#
Bir kasaya güvenmenin diğer yarısı, sonucu ekrandan ayrılmadan görmektir. Satış tamamlandığında onay ekranı sipariş numarasını, toplamı ve az önce satılan ürünler için bir kalan stok bloku gösterir. Her ürünün yalnızca kesilen varyasyonunu değil bütün varyasyonlarını listeler, satılanları işaretler ve hepsini stok düşümü çalıştıktan sonra okur.

Asıl mesele beden bazındaki rakamlar. Büyük beden satan ve orta bedenin düştüğünü gören bir kasiyer, yanlış okutmayı müşteri hâlâ oradayken fark eder. Otuz saniye sonra aynı hata, kimsenin yeniden kuramayacağı bir destek talebine dönüşür.

Hâlâ hareket etmiyor mu? Şunları sırayla gözden geçirin#
Her biri bir sonrakini anlamsız kıldığı için sırayla kontrol edin.
- Genel stok yönetimi. WooCommerce → Ayarlar → Ürünler → Envanter. “Stok yönetimi” kapalıysa aşağıdakilerin hiçbirinin önemi yoktur.
- Ürün ya da varyasyon. Ürünün kendisinde “Stok yönetimi” işaretli mi ve kutuda bir miktar var mı? Boş bir miktar sıfır değildir, “sayılmıyor” demektir.
- Varyasyonlu bir üründe rakamı hangi nesnenin tuttuğu: varyasyon mu, ana havuz mu.
- Siparişin durumu. Pending payment hiçbir şey hareket ettirmez. Siparişin Processing, On hold ya da Completed durumuna ulaştığını doğrulayın.
- O satırlar eklenmeden önce siparişin stokunun zaten düşülüp düşülmediği. Kalemler panelini yeniden kaydetmek farkı sizin yerinize hareket ettirir; bu da pratikte On hold durumundaki bir sipariş demektir. İçe aktarmadan ya da özel koddan gelen bir satır hareket etmez, o yüzden miktarı elle düzeltin ve nedenini not düşün.
- Bir kasa kullanıyorsanız eklentinin kendi stok ayarı: stok düşümü bilerek kapatılmış olabilir.
Sapma haftalar öncesine dayanıyorsa bunların hiçbiri onu geri getirmez. Bir düzeltmeye değil, bir sayıma ihtiyacınız var. Dükkânı kapatmadan stok sayımı bunu satış günü içinde yapmayı, kör sayımlar ise beklenen sayıyı göstermenin sonucu neden bozduğunu anlatıyor.
Bunun çözmediği şeyler#
Bir kasa yeni sapmayı durdurur. Eski sapmayı onarmaz ve bilerek yapmadığı şeyler vardır. Stokta olmayan ürünleri satış ekranından gizlemez: onları soluklaştırır, rakamın olacağı yere “Out of stock” yazar ve yine de kesmenize izin verir; çünkü bir dükkân, veritabanının tükendiğini söylediği ürünü sıklıkla gerçekten satar. Ne ücretsiz sürümde ne Pro’da çevrimdışı çalışır: her okutma, her arama ve her satış WordPress sitenize giden bir istektir. Fişler tarayıcınızın kendi yazdırma penceresinden geçer, dolayısıyla tarayıcının erişebildiği her yazıcı iş görür (termal rulo yazıcı dahil), ama sürücü düzeyinde ya da ESC/POS entegrasyonu yoktur. Ücretsiz sürümde tek bir ödeme yöntemi toplamın tamamını kapatır; bir satışı nakit ve kart arasında bölmek bir Pro özelliğidir, her türlü marj ya da kâr rakamı da öyle. Yine de ücretsiz sürüm, girdiğinizde birim maliyeti kaydeder.
Stokun ters yöne gitmesinin kendi tuzağı var; fişsiz iade almak yazısına bakın. Uyuşmazlık adette değil parada ise teşhis farklıdır: satış raporunuz kasayla neden tutmuyor. Satırlar sepete daha en baştan yanlış düşüyorsa bir okuyucu neden “ürün bulunamadı” diyor yazısından başlayın. Her ekran ve her ayar Retail POS belgelerinde anlatılıyor.
Sıkça sorulan sorular#
Bir siparişi elle oluşturduğumda WooCommerce neden stok düşmüyor?#
Çünkü stok düşümü siparişin oluşturulmasına değil, sipariş durumuna bağlıdır. WooCommerce stoku, sipariş Processing, On hold ya da Completed durumuna girdiğinde düşer. Yönetim panelinde açılan yeni bir sipariş varsayılan olarak Pending payment gelir ve bu durum hiçbir şey hareket ettirmez. Yani sipariş tümüyle doğru olabilir ve yine de rafla ekranı birbiriyle uyuşmaz halde bırakabilir.
WooCommerce siparişinde Reduce Stock düğmesi nerede?#
Güncel WooCommerce’te böyle bir düğme yok. Düzenlenebilir bir siparişin kalemler paneli size Add item(s), Apply coupon ve Recalculate düğmelerini, yanlarında da Refund düğmesini verir; tek stok denetimi iade panelindeki “Restock refunded items” seçeneğidir. Bir stok düğmesi anlatan rehberler eski bir ekranı anlatıyor. Onun yerine durumu değiştirin.
Bir siparişi Completed yapmak stok düşer mi?#
Evet, bir kez: genel stok yönetimi açıksa, ürünler stok yönetiyorsa ve siparişin stoku daha önce düşülmemişse. WooCommerce düşürdüğü her satırı aldığı miktarla işaretler, siparişi damgalar ve sonraki geçişlerde ikisini de atlar.
Unuttuğum bir ürünü siparişe ekleyip stokun da bunu izlemesini sağlayabilir miyim?#
Kalemler panelini kaydetmek, orada eklediğiniz ya da miktarını değiştirdiğiniz satırlar için stoku gerçekten hareket ettirir: WooCommerce, satırın miktarı ile işaretindeki miktar arasındaki farkı hareket ettirir. Ama bu yalnızca Processing, On hold ya da Completed durumundaki siparişlerde çalışır ve panel yalnızca Pending payment, On hold ya da taslak durumunda düzenlenebilir. Yani ikisinin birden doğru olduğu yer On hold’dur. Stoku zaten düşülmüş bir siparişe içe aktarmayla ya da özel kodla eklenen satır hiçbir işaret taşımaz ve sonraki her geçiş onu atlar.
Ürün varyasyonları basit ürünlerle aynı şekilde mi stok düşer?#
Evet, ama hareket, rakamı hangi nesne tutuyorsa onu izler. Varyasyon kendi stokunu yönetiyorsa kendi rakamı düşer. Yalnızca ana ürün yönetiyorsa düşüm ortak havuzdan olur ve sonrasında her beden birbirinin aynısı görünür. İkisi de yönetmiyorsa hiçbir şey hareket etmez.
Personelin son adedi iki kez satmasını engelleyebilir miyim?#
Kesin bir garantiyle değil; aksini vaat eden her şeye de temkinli yaklaşın. Kasamız, stok yönetilen bir sepet satırının eldeki stokun ötesine itilmesini engeller ve rakamı söyleyerek uyarır; bu da yanlış tuşlanmış miktarı yakalar. Yine de ilk adet her zaman içeri girer ve sunucu, stokun yetmediği bir satışı yine de tamamlar.
Dükkânda yapılan bir satış WooCommerce raporlarımda diğer siparişler gibi görünür mü?#
Evet. Bu şekilde yapılan bir tezgâh satışı, bir POS işareti ve “Store POS — Cash” gibi bir ödeme yöntemi başlığı taşıyan sıradan bir WooCommerce siparişidir; dolayısıyla o durumdaki bir sipariş nerede sayılıyorsa orada sayılır ve entegrasyonlarınıza olduğu gibi ulaşır. Mutabakat edilecek ikinci bir sistem yoktur.