Alışveriş
Alıcının gördüğü “sipariş ver” düğmesi aslında birkaç hizmeti sırayla çağırır. Bu sayfa o sırayı anlatır.
1. Katalog ve arama
Alıcının seçili teslimat adresi, hangi depodan alışveriş yapacağını belirler. Arama MeiliSearch product indeksinde çalışır; filtreler depo, şirket tipi ve kategoridir. Sonuçlar o deponun fiyat kademeleriyle doldurulur.
Favori Prisma ProductFavorite tablosundadır. Ürün talebi Mongo productRequests koleksiyonuna düşer.
2. Sepet
Sepete ekleme Prisma ProductBasket satırını yazar veya günceller (kullanıcı + ürün tektir). Sepet henüz sipariş değildir; stok rezervasyonu bu adımda anlatılan kod yolunda yoktur.
3. Önizleme
Satın alma önizlemesi siparişi kaydetmeden şunları kurar:
- Alıcı, teslimat adresi, fatura adresi
- Depo kararı ve asgari sepet kuralı
- Cari bakiye
- Aktif sepet satırları ve depo fiyatları
- Kargo, indirim, içeride taşıma, cari kullanımı
- Teslimat bloğu (tarih, tür, mesafe)
Sonuç, henüz kaydedilmemiş bir sipariş belgesi görünümüdür.
4. Sipariş oluşturma
Aynı kullanıcı için kilit alınır. Ödeme bekleyen eski siparişler iptal edilebilir. Sonra Mongo’da buyerOrders belgesi oluşur.
İlk durum ödeme yöntemine bağlıdır:
| Yöntem | İlk durum | Neden |
|---|---|---|
Kart (CARD) | PAYMENT_FAILED | Henüz sağlayıcıdan başarı gelmedi; ödeme bekler |
Havale (TRANSFER) | PAYMENT_WAITING | Operasyon onayı bekler |
Cari (ACCOUNT) veya çevrimdışı / sıfır tutar | PENDING | Tahsilat sipariş anında kapanmış sayılır |
Cari kullanıldıysa USE_BALANCE_FOR_PURCHASE hareketi yazılır. PENDING olan sipariş buyer-order.created olayını üretir ve sepet temizlenir. Kart/havale siparişinde bu olay ödeme düşünce üretilir.
Sipariş oluşunca ne olur?
buyer-order.created dinleyicisi (kodda) şunları yapar:
- Bölge kilidi bildirimi (kapsama alanı)
- Yönetici e-postası ve alıcı push
- Telegram uyarısı
AdminBuyersipariş sayacı- Favori upsert
- BigQuery sipariş ve kalem satırları
- Sipariş notundan AI çıkarımı
- CRM notlarının yetkili notuna aktarımı
- Satış raporu kuyruğu
Sipariş durumları
Sipariş belgesi ve kalemler aynı enum’u paylaşır. Aşağıdakiler sipariş düzeyi yaşam çizgisidir.
| Durum | Anlamı |
|---|---|
PAYMENT_WAITING | Havale bildirimi / onay bekleniyor |
PAYMENT_FAILED | Kart henüz başarılı değil |
PAYMENT_TIMEOUT | Ödeme süresi doldu |
PENDING | Depo kuyruğunda |
APPROVED | Onaylandı |
IN_PROGRESS | Hazırlanıyor |
READY | Teslime hazır |
SHIPPED | Yola çıktı; stok çıkışı bu adımda |
DELIVERED | Teslim edildi |
CANCELLED | İptal |
RETURNED | İade tamam |
Kalem üzerindeki RETURN_PENDING, RETURN_APPROVED, RETURN_IN_PROGRESS, RETURN_REJECTED değerleri açık bir iade talebinin yansımasıdır; siparişin ana durumundan ayrı tutulur.
Sonraki adım: Ödeme veya Hazırlık ve teslimat. Belge alanları: Sipariş ve iade.