4.103. Farklı Kategorilerdeki Ürünleri Birlikte Farklı Yazıcılara Yazdırmak
Bu dokümanda, SambaPOS’ta farklı ürün gruplarındaki ürünlerin belirli senaryolara göre aynı veya farklı mutfak yazıcılarına nasıl yazdırılacağı anlatılmaktadır.
Bu yapı özellikle mutfaklar arası koordinasyon ihtiyacı olan işletmeler için kullanılır. Normalde her ürün kendi mutfak yazıcısına gönderilir. Ancak aynı adisyon içinde birden fazla ana mutfak kategorisinden ürün varsa, bu ürünlerin ilgili mutfak yazıcılarının tamamından birlikte yazdırılması sağlanır.
Örneğimizde aşağıdaki ana ürün grupları kullanılacaktır:
DÖNERKEBAPDÜRÜMKİREMİTPİDE
Bu ürün grupları birlikte kontrol edilecek ana mutfak gruplarıdır.
Senaryolar
- Sadece Döner ürünleri varsa, yalnızca Döner yazıcısından yazdırılır.
- Sadece Kebap ürünleri varsa, yalnızca Kebap yazıcısından yazdırılır.
- Aynı adisyon içinde Döner ve Kebap varsa, her iki ürün de hem Döner hem Kebap yazıcısından yazdırılır.
- Aynı adisyon içinde Döner, Kebap, Pide gibi birden fazla ana grup varsa, ilgili tüm ana mutfak yazıcılarında bu ürünler birlikte yazdırılır.
- İçecek, tatlı, salata, çorba gibi diğer ürünler kendi mutfak yazıcısından ayrıca yazdırılır.
- İade alınan ürünler karma yazdırma döngüsüne dahil edilmez. İade ürünleri yalnızca kendi yazıcısına
**İade**bilgisiyle yazdırılır.
1. Ürün Etiketi Başlığının Eklenmesi
Ana Menü > Yönetim > Ayarlar > Program Ayarları > Ürün Etiketi Başlıkları > Burada, Yazıcı adında bir Ürün Etiketi Başlığı oluşturalım.
Bu etiket başlığı, hangi ürünlerin karma yazdırma sistemine dahil edileceğini belirlemek için kullanılacaktır.
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
2. Ürün Etiketi Editörünün Düzenlenmesi
Ana Menü > Yönetim > Ürünler > Ürün Etiketi Editörü > Burada, Yazıcı sütununa Döner – Pide ve Kebap kategorilerine ait olan ürünlerin karşısına DPK yazın.
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
3. Yazıcıların Eklenmesi
Ana Menü > Yönetim > Yazdırma > Yazıcılar > Burada Yazıcı Ekle‘ye tıklayın.
Buradaki işlemi Pide ve Döner yazıcıları için de uygulayıp onları da ekleyin.
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
4. Karma Mutfak Sipariş Şablonunun Eklenmesi
Ana Menü > Yönetim > Yazdırma > Yazıcı Şablonları > Burada, Yazıcı Şablonu Ekle’ye tıklayın.
Şablon Adı: Döner Pide Kebap Mutfak Sipariş Şablonu
Şablon: Aşağıdaki kod grubunu kopyalayıp Şablon alanına yapıştırın;
[ORDERS:İade]<J00>- {QUANTITY} {NAME}|**Iade**{ORDER TAGS}[ORDERS:ITEM TAG:Yazıcı=DPK]<L00>- {QUANTITY} {NAME}{ORDER TAGS}[ORDER TAGS]-- Format for order tags<L00> * {ORDER TAG NAME} |
Burada dikkat edilmesi gereken en kritik nokta şudur:
[ORDERS:İade] bölümü, [ORDERS:ITEM TAG:Yazıcı=DPK] bölümünün üstünde olmalıdır.
Aksi halde iade edilen ürün önce ürün etiketi bölümüne yakalanır ve sağ tarafta yazması gereken **İade** bilgisi çıkmayabilir.
Özellikle aynı anda birden fazla iade alındığında bu sorun görünür hale gelir.
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
5. Diğer Ürünler Yazdırma Görevinin Düzenlenmesi
Ana Menü > Yönetim > Yazdırma > Yazdırma Görevleri bölümüne girin.
Varsayılan Siparişleri Mutfağa Yazdır görevini diğer ürünler için kullanabilirsiniz.
Adını Diğer Ürünleri Mutfağa Yazdır olarak değiştirin, Döner Pide ve Kebap kategorileri dışındakileri seçip Yazıcısını Mutfak Yazıcısı, Şablonu da Mutfak Sipariş Şablonu olarak ayarlayın.
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
6. Birleşik Yazdırma Görevlerinin Eklenmesi
6.1. Siparişleri Dönere Yazdır Birleşik Yazdırma Görevinin Eklenmesi
Ana Menü > Yönetim > Yazdırma > Yazdırma Görevleri > Burada Yazdırma Görevi Ekle‘ye tıklayın.
Yazıcı: Döner
Yazıcı Şablonu: Döner Pide Kebap Mutfak Sipariş Şablonu
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
6.2. Siparişleri Pideye Yazdır Birleşik Yazdırma Görevinin Eklenmesi
Ana Menü > Yönetim > Yazdırma > Yazdırma Görevleri > Burada Yazdırma Görevi Ekle‘ye tıklayın.
Yazıcı: Pide
Yazıcı Şablonu: Döner Pide Kebap Mutfak Sipariş Şablonu
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
6.3. Siparişleri Kebaba Yazdır Birleşik Yazdırma Görevinin Eklenmesi
Ana Menü > Yönetim > Yazdırma > Yazdırma Görevleri > Burada Yazdırma Görevi Ekle‘ye tıklayın.
Yazıcı: Kebap
Yazıcı Şablonu: Döner Pide Kebap Mutfak Sipariş Şablonu
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
6.4. Siparişleri Mutfağa Yazdır Ayrı Ayrı Yazdırma Görevinin Eklenmesi
Ana Menü > Yönetim > Yazdırma > Yazdırma Görevleri > Burada Yazdırma Görevi Ekle‘ye tıklayın.
Ürün Grubu: Kebaplar Yazıcı: Kebap Yazıcı Şablonu: Mutfak Sipariş Şablonu
Ürün Grubu: Pideler Yazıcı: Pide Yazıcı Şablonu: Mutfak Sipariş Şablonu
Ürün Grubu: Döner Yazıcı: Döner Yazıcı Şablonu: Mutfak Sipariş Şablonu
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
7. Varsayılan Siparişleri Mutfağa Yazdır Eyleminin Düzenlenmesi
Ana Menü > Yönetim > Otomasyon > Eylemler > Burada, Siparişleri Mutfağa Yazdır Eylemini seçin, adını Siparişleri Mutfağa Yazdır Diğer Ürünler olarak değiştirin ve Print Job Name kısmında Siparişleri Mutfağa Yazdır Diğer Ürünler seçin.
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
8. Eylemlerin Eklenmesi
8.1. Siparişleri Dönere Yazdır Birleşik Eyleminin Eklenmesi
Ana Menü > Yönetim > Otomasyon > Eylemler > Burada, Eylem Ekle‘ye tıklayın.
Eylem Adı: Siparişleri Dönere Yazdır Birleşik
Eylem Tipi: Yazdırma Görevini Çalıştır
Print Job Name: Siparişleri Dönere Yazdır Birleşik
Order State Name: Status
Sipariş Durumu: Yeni
Ignore Selected Orders: True
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
8.2. Siparişleri Pideye Yazdır Birleşik Eyleminin Eklenmesi
Ana Menü > Yönetim > Otomasyon > Eylemler > Burada, Eylem Ekle‘ye tıklayın.
Eylem Adı: Siparişleri Pideye Yazdır Birleşik
Eylem Tipi: Yazdırma Görevini Çalıştır
Print Job Name: Siparişleri Pideye Yazdır Birleşik
Order State Name: Status
Sipariş Durumu: Yeni
Ignore Selected Orders: True
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
8.3. Siparişleri Kebaba Yazdır Birleşik Eyleminin Eklenmesi
Ana Menü > Yönetim > Otomasyon > Eylemler > Burada, Eylem Ekle‘ye tıklayın.
Eylem Adı: Siparişleri Kebaba Yazdır Birleşik
Eylem Tipi: Yazdırma Görevini Çalıştır
Print Job Name: Siparişleri Kebaba Yazdır Birleşik
Order State Name: Status
Sipariş Durumu: Yeni
Ignore Selected Orders: True
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
8.4. Siparişleri Mutfağa Yazdır Ayrı Ayrı Eyleminin Eklenmesi
Ana Menü > Yönetim > Otomasyon > Eylemler > Burada, Eylem Ekle‘ye tıklayın.
Eylem Adı:Siparişleri Mutfağa Yazdır Ayrı Ayrı
Eylem Tipi: Yazdırma Görevini Çalıştır
Print Job Name:Siparişleri Mutfağa Yazdır Ayrı Ayrı
Order State Name: Status
Sipariş Durumu: Yeni
Ignore Selected Orders: True
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
9. Adisyon Kapanıyor Kuralının Düzenlenmesi
Ana Menü > Yönetim > Otomasyon > Kurallar > Adisyon Kapanıyor Kuralı > Kuralı aşağıdaki gibi düzenleyin.
Kural Adı: Adisyon Kapanıyor Kuralı
Olay Adı: Adisyon Kapanıyor
Eğer Kural Çalışırsa: Eşleşmeler
Eylem Seç:
Eylem-1: Siparişleri Mutfağa Yazdır Diğer Ürünler
Bu eylem yalnızca ana karma gruplardan en az iki farklı grup aynı adisyonda varsa çalışmalıdır.
Constraint:
(((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0)) >= 2
Bu constraint’in amacı şudur:
- Sadece içecek + tatlı varsa bu eylem çalışmaz.
- Döner + Kebap varsa bu eylem çalışır.
- Döner + Kebap + içecek varsa bu eylem çalışır ve diğer ürünlerin yazdırılmasını sağlar.
- İade ürünleri karma kategori sayımına dahil edilmez.
Eylem-2: Siparişleri Mutfağa Yazdır Ayrı Ayrı
Bu eylem, ana karma gruplardan en az iki farklı grup yoksa çalışmalıdır.
Constraint:
!((((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0)) >= 2)
Bu eylem sayesinde:
- Sadece Döner varsa Döner yazıcısından çıkar.
- Sadece Kebap varsa Kebap yazıcısından çıkar.
- Sadece içecek/tatlı varsa ilgili yazıcıdan tek kere çıkar.
- Sadece iade ürünleri varsa ürünler kendi yazıcısına iade olarak çıkar.
Eylem-3: Siparişleri Dönere Yazdır Birleşik
Bu eylem, ana karma gruplardan en az iki farklı grup varsa ve adisyonda Döner grubu ürünü varsa çalışır.
Constraint:
(((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0)) >= 2 && (TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0
Eylem-4: Siparişleri Kebaba Yazdır Birleşik
Bu eylem, ana karma gruplardan en az iki farklı grup varsa ve adisyonda Kebap grubu ürünü varsa çalışır.
Constraint:
(((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0)) >= 2 && (TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0
Eylem-5: Siparişleri Pideye Yazdır Birleşik
Bu eylem, ana karma gruplardan en az iki farklı grup varsa ve adisyonda Pide grubu ürünü varsa çalışır.
Constraint:
(((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KEBAP) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÖNER) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=DÜRÜM) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=KİREMİT) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0) + ((TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0 ? 1 : 0)) >= 2 && (TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni)}') - TN('{ORDER DETAILS:O.Quantity.sum:(MG=PİDE) AND (OS.Status=Yeni) AND (OS.GStatus=İade)}')) > 0
Eylem-5: Belge Durumunu Değiştir
Status: Ödenmedi
Current Status: Yeni Siparişler
Eylem-6: Sipariş Durumu Güncelle
Status:Gönderildi
Current Status: Yeni
Gerekli düzenlemeleri tamamladıktan sonra Kaydet e tıklayın.
Bu iki eylem ( Belge Durumunu Değiştir ve Sipariş Durumu Güncelle ) , yazdırılan siparişlerin tekrar tekrar mutfağa gitmesini engellemek için önemlidir.
10. Önemli Notlar
10.1. Diğer Ürünler Eylemini Boş Constraint ile Bırakmayın
Siparişleri Mutfağa Yazdır Diğer Ürünler eylemi boş constraint ile bırakılırsa, sadece içecek veya tatlı girilen adisyonlarda ürünler iki kere yazdırılabilir.
10.2. İade Bölümü Şablonda Üstte Olmalıdır
Şablonda şu bölüm:
[ORDERS:İade]
<J00>- {QUANTITY} {NAME}|**İade**
{ORDER TAGS}
şu bölümden önce gelmelidir:
[ORDERS:ITEM TAG:Yazıcı=DPK]
<L00>- {QUANTITY} {NAME}
{ORDER TAGS}
Aksi halde iade ürünleri önce ürün etiketi bölümüne yakalanabilir ve **İade** bilgisi yazdırılmayabilir.
11. Test Senaryoları
Kurulum tamamlandıktan sonra aşağıdaki testler yapılmalıdır.
| Senaryo | Beklenen Sonuç |
|---|---|
| Sadece 1 Döner | Sadece Döner yazıcısından çıkar. |
| Sadece 1 Kebap | Sadece Kebap yazıcısından çıkar. |
| 1 Döner + 1 Kebap | Hem Döner hem Kebap yazıcısından iki ürün birlikte çıkar. |
| 1 Döner + 1 Kebap + 1 İçecek | Döner ve Kebap birleşik çıkar, içecek kendi yazıcısından çıkar. |
| Sadece Coca Cola + Fuse Tea | Tek yazıcıdan, tek kere çıkar. |
| 1 Döner iade | Sadece Döner yazıcısından **İade** olarak çıkar. |
| 1 Döner iade + 1 Kebap iade | Her ürün sadece kendi yazıcısından **İade** olarak çıkar. |
| 1 Döner + 1 Kebap + 1 Pide iade | Normal ürünler birleşik çıkar, iade ürün kendi yazıcısından **İade** olarak çıkar. |
12. Kısa Mantık Özeti
Bu kurulumda sistem şu mantıkla çalışır:
- Ana mutfak gruplarından yalnızca bir tanesi varsa, ürünler ayrı ayrı kendi yazıcısına gider.
- Ana mutfak gruplarından iki veya daha fazlası aynı adisyonda varsa, ilgili mutfak yazıcıları aynı ürünleri birlikte basar.
- Diğer ürünler, karma senaryoda ayrıca kendi yazıcısından yazdırılır.
- İade ürünleri karma kategori sayımına dahil edilmez.
- İade ürünleri sadece kendi yazıcısından ve
**İade**etiketiyle çıkar.
Bu yapı gereksiz çift yazdırmayı engeller, iade ürünlerini doğru yönetir ve mutfaklar arası koordinasyonu bozmadan çalışır.
















