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ÖNER
  • KEBAP
  • DÜRÜM
  • KİREMİT
  • PİDE

Bu ürün grupları birlikte kontrol edilecek ana mutfak gruplarıdır.

Senaryolar

  1. Sadece Döner ürünleri varsa, yalnızca Döner yazıcısından yazdırılır.
  2. Sadece Kebap ürünleri varsa, yalnızca Kebap yazıcısından yazdırılır.
  3. 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.
  4. 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.
  5. İçecek, tatlı, salata, çorba gibi diğer ürünler kendi mutfak yazıcısından ayrıca yazdırılır.
  6. İ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;

 

[LAYOUT]
Adisyon
Tarih:{TICKET DATE}
Saat:{TIME}
Masa:{ENTITY NAME:Masa}
Adisyon No:{TICKET NO}
<F>-
{ORDERS}
[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.