====== Bölüm 1 - Kahve Kuponu Üreterek ve Satmak ====== Bu örnek promosyon uygulamamız bir çok farklı promosyon uygulamasına temel oluşturacak işlevlere sahip olacaktır. Örneğin; * Müşterililerimize ileride başka ücret ödemeden kahve alabilmeleri için kullanabilecekleri Kahve Kuponları üretip, basacak ve kullandıracağız. * Bu uygulama aynı zamanda toplu bir şekilde yemek fişi (yemek kuponu) olarak da düzenlenebilir, bu şekilde kullanıldığında ise işyerleri personellerine çok sayıda hazır kuponu indirimli olarak alır ve ay boyunca kullandırtabilir. * Toplu bir şekilde Promosyon yapmak isteyen bir işyeri, basacağı tanıtım broşürlerinin üzerine SambaPOS tan ürettiği ikram ürün kuponlarının barkodunu yapıştırarak bu barkodla gelen kişilere ikramlarda bulunarak bunun takibini yapabilir. Örneğimizde biz kahve kuponu üreterek bu kuponun kullanılmasını işleyeceğiz. Adım Adım yapılacaklar listesi - Kuponlar için Varlık Tipi tanımlanacak - Kupon Varlık Tipinin İçeriklerinin Güncellenmesi - Kahve Kuponu Ürünü oluşturulması - Kahve Kuponu Durum Güncelleştirmeleri - Varlık olarak Kahve Kuponu Ürettirilmesi - Yeni Kupon Satış Durumlarının Güncellenmesi - Kupon Ürünü Satılıp Ödendikten Sonraki Durumunu Güncelleme - Kupon Varlığı Oluşturma Kuralları ===== 1. Kuponlar için Varlık Tipi tanımlama ===== SambaPOS içerisinde üreteceğimiz kuponların her birini otomatik olarak oluşturacağımız birer Varlık olarak tanımlayacağız. Bunun için Özel alanlarını ve isteklerimizi karşılayacak yeni bri varlık tipi tanımlıyoruz. Varlık Tipi tanımlama için Yönetim - Varlıklar - Varlık Tipleri menüsünden Varlık Tipi Ekle linkine tıklıyoruz. {{:tr:promosyon_kpn:kupon-promosyon-1.jpg?700|}} **Varlık Tipi Oluştur Ekranı Değerleri** ^ÖZELLİK^DEĞER^ |Adı|Kuponlar| |Varlık Adı|Kupon| |Birincil Alan Adı|Kupon Numarası| |Birincil Alan Biçimi|AAAAA-AAA-AAA| Bu değerleri ekleyerek Adı Kupon olan ve 1. veri alanı da "Kupon Numarası" olan bir varlık tipi oluşturuyoruz. Birincil Alan Biçimine yazdığımız "AAAAA-AAA-AAA" formatı otomatik olarak oluşacak olan kuponun rahat okunabilmesi için alfanumerik değerlerin biçimini bize gösteren alandır. Alan biçimle ile ilgili olarak [[Primary Field Editing Formats]] belgesini inceleyebilirsiniz. **Varlık Tipi Özel Alanları** {{:tr:promosyon_kpn:kupon-promosyon-2.jpg?700|}} **Varlık Tipi Oluştur Ekranı Değerleri** ^Özel ALAN ADI^Alan Tipi^Değerler^ |Menü Ürün Adı|String| | |Kupon Kullanımı|String|Evet, Adisyonda, Hayır| |Son Kullanım Tarihi|Date| | Kupon varlık tipimize ileriki işlemlerimizde kullanmak üzere 3 farklı Özel alan tanımlıyoruz. **Menü Ürün Adı:** Kupon kullanımı sırasında hangi Menüde bulunan hangi ürünün ikram olarak adisyona ekleneceğini belirleyeceğimiz ve ürünün adını yazdıracağımız alandır. **Kupon Kullanımı:** Kuponun kullanılıp kullanıldmadığını veya o anda aktif olan bir adisyonun içinde mi olduğunu sorgulayacağımız Durum değişkenlerinin saklanacağı alandır. **Son Kullanım Tarihi:** Oluşturduğumuz kuponun sok kullanım tarihini saklayacağımız alandır. ===== 2. Kupon Varlık Tipinin İçeriklerinin Güncellenmesi ===== Aşağıda tanımlayacağımız Eylemlerle Varlık Tipi içinde tanımladığımız Özel alanlara ilgili değerlerini yazdıracağız. Örneğin Kupon kullanıldığı zaman, Kupon Kullanımı alanındaki değeri Evet olacak. NOT: Bundan sonra göreceğiniz ekran görüntülerinde **2.1. Menü Ürün İsmi alanını güncelleyen Eylem** Bu eylem Kupon Numarası kontolü ile Varlık Tipindeki "Menü Ürün Adı" alanına değişkenden gelen Ürün adını yazdıracak olan eylemdir. Not:\\ Bundan sonra yapılacak olan örneklerde bu örnekleri ayırt etmek için işlem isimleri önlerine KPN- öneki ile yapılacaktır. {{:tr:promosyon_kpn:kupon-promosyon-3.jpg?700|}} Bu eylem ilgili Kural tarafından çalıştırıldığında, [:] arasına verilen değişken adlarının aldığı değerleri alacaklar. Bu eylem için "Update Entity Data - Varlık Bilgisini Güncelle" eylemini kullanıyoruz. **Eylem Bilgileri** ^Özellik^Değer^ |Eylem Adı|Kupondaki Menu Ürünü adını Güncelle| |Eylem Tipi|Update Entity Data - Varlık Bilgisini Güncelle| ^Parametreler^^ |Parametreler - Entity Type Name|Kuponlar| |Parametreler - Varlık Adı|[:Kupon Numarası]| |Parametreler - Field Name|Menü Ürün Adı| |Parametreler - Field Value|[:Değer]| **2.2. Kupon Kullanımı veri alanının bilgilerinin Güncellenmesi** Yukarıda anlatılan eylemin yaptığı için aynısı yapacak ancak bu sefer Varlık Tipi içindeki "Kupon Kullanımı" adındaki alanı güncelleyecek olan eylemdir. {{:tr:promosyon_kpn:kupon-promosyon-4.jpg?700|}} **Eylem Bilgileri** ^Özellik^Değer^ |Eylem Adı|Kupondaki Kullanım Bilgisini Güncelle| |Eylem Tipi|Update Entity Data - Varlık Bilgisini Güncelle| ^Parametreler^^ |Parametreler - Entity Type Name|Kuponlar| |Parametreler - Varlık Adı|[:Kupon Numarası]| |Parametreler - Field Name|Kupon Kullanımı| |Parametreler - Field Value|[:Değer]| ==== 3. Kahve Kuponu Ürünü Oluşturulması ==== Kahve Kuponu ileride insanların o kuponla gelip alabilmeleri için aslında işletmemizde satılacak fiziki bir üründür. Bu sebepten Kahve Kuponu ürünümüzü tanımlıyoruz. Ürün tanımlama SambaPOS da Yönetim - Ürünler - Ürün Listesi menüsünde Ürün Ekle linkine tıklanarak tanımlanır. {{:tr:promosyon_kpn:kupon-promosyon-5.jpg?700|}} **Kupon Ürünü tanımlamada dikkat edilecek husular.** * Yeni bir Grup Kodu tanımlamamız gerekir Örnekte : Promosyon * Ürün Etiketini bu kopunun verileceği gerçek ürünün adı yazılır. Örnekte : Kahve * Ürün Porsiyon Fiyatı; bu kuponun satılacağı fiyatıdır. **Ürün Özellikleri** ^ÖZELLİK^DEĞER^ |Ürün Adı|Kahve Kuponu| |Grup Kodu|Promosyon| |Etiket|Kahve| |Porsiyon Fiyatı|Normal - Fiyatı| Yukarıdaki benzeri bir Ürün tanımlandıktan sonra kullandığımız Menümüzün içerisinde uygun bir alana eklenir. Menüyede eklendikten sonra Menümüz aşağıdaki gibi yeni bir kategoride bulunan bir tane Kupon Ürünü olacaktır. {{:tr:promosyon_kpn:kupon-promosyon-6.jpg?700|}} ==== 4. Kahve Kuponu Durum Güncelleştirmeleri ==== === 4.1. Kupon Ürünü Durumları Güncelleme Eylemi === Ürünümüzü ve Varlık Tipimizi tanımladıktan sonra sıra geldi, bu ürün adisyona eklendiğinde üzerinde diğer işlemler yapıldığında oluşacak Durumların güncellenmelerine. İlk olarak kahve kuponu satış durumunu güncelleştirebilmek için gerekli olan Eylemi tanımlıyoruz. {{:tr:promosyon_kpn:kupon-promosyon-7.jpg?700|}} **Eylem Bilgileri** ^Özellik^Değer^ |Eylem Adı|Kupon Ürünleri Durumlarını Güncelle| |Eylem Tipi|Sipariş Durumu Değiştir| ^Parametreler^^ |Parametreler - State Name|Kupon Durumu| |Parametreler - Group Order|4| |Parametreler - Current State|[:Mevcut Durum]| |Parametreler - Durum|[:Durum]| |Parametreler - State Order|4| Bu Eylem çalıştığında, (adisyona ürün eklendiğinde) Kupon Durumu adında yeni bir State (Durum) tanımlayacak ve bunu ürünün altında 4 sırada nın 4 değişkeni olarak yazacağını tanımladık. [:] içerisinde girdiğimiz Mevcut Durum ve Durum değişken olarak bu eylemi çalıştıran kural tarafından atanabilecekler. === 4.2. Kupon Ürünü Menü Ürün Adını Güncelleme Eylemi === Hatırlarsanız Varlık Tipimizi tanımlarken Özel Alan olarak Menü Ürün Adı biçiminde bir özel alan açmıştık. Bu alan Kupon adisyona eklendiğinde hangi ürünün verileceğinin adının yazıldığı veri alanıdır. Bu veri alanınıda güncelleştirecek bir eylem daha tanımlıyoruz. {{:tr:promosyon_kpn:kupon-promosyon-8.jpg?700|}} **Eylem Bilgileri** ^Özellik^Değer^ |Eylem Adı|Kupon Ürünleri Menu Urun Adını Güncelle| |Eylem Tipi|Sipariş Durumu Değiştir| ^Parametreler^^ |Parametreler - State Name|Kupon Ürünü| |Parametreler - Group Order|5| |Parametreler - Current State| | |Parametreler - Durum|[:Ürün Adı]| |Parametreler - State Order|5| ==== 5. Varlık olarak Kahve Kuponu Ürettirilmesi ==== Neler yaptığımızı sırayala hatırlayalım; Öncelikle kuponlarımızı tanımlamak için, bir Varlık Tipi oluşturduk, Bu varlık tipimizin kullanabileceği bir ürün oluşturduk ve bu ürün eklendiğinde durumlarının güncellenebilmesi için gerekli eylemleri tanımladık. Şimdi sıra geldi oluşturduğumuz varlık tipinin içine gerekli şartlar oluştuğunda açılacak olan varlıkların otomatik olarak üretilmesine; Bunun için tanımlayacağımız Eylem'in adı Varlık Oluştur. Varlık oluştur eylemi verilen şartlara göre otomatik olarak varlıkların oluşturulmasında kullanılır. {{:tr:promosyon_kpn:kupon-promosyon-9.jpg?700|}} **Eylem Bilgileri** ^Özellik^Değer^ |Eylem Adı|KPN-Random Kupon Oluştur| |Eylem Tipi|Varlık Oluştur| ^Parametreler^^ |Parametreler - Entity Type Name|Kuponlar| |Parametreler - Varlık Adı|KP{RANDOMC:8}| |Parametreler - Custom Data|Kupon Kullanımı=Hayır| |Parametreler - Hesap Oluştur|False| Eylemin çalıştırıldığında yapacağı işlere sırayla bi göz atalım. Eylem Kuponlar Varlık Tipinin içerisinde **KP{RANDOMC:8}** biçiminde bir varlık açacak ve bu varlığın Özel Alanları içinde bulunan Kupon Kullanımı alanını da Hayır olarak güncelleştirecek. Sadece varlık oluşturacak bu varlığa bağlı bir hesap açmayacak. **KP{RANDOMC:8} Parametresinin açıklaması:** {RANDOMC} işareti RamdomC Karakter üretilmesinde kullanabileceğimiz bir fonsiyondur. Sonunda bulunan C karakteri ürettiği random değerin Kontrol Hanesidir. {RANDOMC:8} demek 8 haneli Random bir isim üretilmesi için kullanılır. Sonunda bulunan C yani Kontrol hanesi ile birlikte toplam 9 haneli Random bir isim elde etmiş oluruz. Ürettiğimiz bu kuponları diğer varlıklarla karışmaması için de önüne KP önekini kullanık. Bu eylem bize KP9TGWJ3SMG gibi toplam 11 haneli bir varlık oluşturacaktır. ==== 6. Yeni Kupon Satış Durumlarının Güncellenmesi ==== Bu işlemi bir Kural ile gerçekleştireceğiz, Yukarıdaki adımlarda parametrik değerler yüklediğimiz Eylemleri çağırarak Adisyona Kahve Kuponu siparişi eklendiğinde mevcut durumlarını değiştirmek için kullanacağız. {{:tr:promosyon_kpn:kupon-promosyon-10.jpg?700|}} **Kural Değerleri** ^Özellik^Değer^^ |Kural Adı|KPN-Yeni Kupon Satış Durumunu Güncelle| |Olay Adı|Adisyona Sipariş Eklendi| ^Kısıtlamalar^^^ |Eğer Kural Çalışırsa|EŞLEŞME olmalıdır| ^Özel Kısıtlama Ekle^^^ |Menu Ürünü Grup Kodu|Eşittir|Promosyon| ^Eylemler^^^ |Eylem - 1 |Kupon Ürünleri Durumlarını Güncelle| |:::|Durum|Kupon Siparişte| |Eylem - 2 |KPN-Kupon Ürünleri Menü Ürün Adını Güncelle| |:::|Ürün Adı|{ITEM TAG}| Yukarıda bulunan resimde KISITLAMA alanı olarak belirttiğimiz alan bu kuralın çalışabilmesi için geçerli olan şartların neler olduğunun belirlenmesinde kullanılmaktadır. Kuralımızımı okuyacak olursak, ''Adisyona Şipariş Eklendi'' olayı seçildiğinde adisyona eklenen ürünün ''Menü Grup Kodu'' Promosyona eşitse. (Kahve Kuponu Ürünümüzü eklediğimiz ürün Grubuna) aşağıda bulunan 2 eylemi çalıştıracaktır. Bu eylemlerde sırayla; Kupon Durumunu Kupon Siparişte olarak güncelleyecek ve Menü Ürün adı alanını da ''{ITEM TAG}'' değerinden dolayı //(Bu değer Yazıcı Şablonları başta olmak Ürün Etiketini kullanmamız gerektiği heryerde kullanılabilir)// Kahve olarak değiştirmesini sağlar. Kuralımızı tanımladıktan sonra adisyona, bir Kahve Kuponu ürünü eklendiğinde aşağıdaki gibi görülecektir. {{:tr:promosyon_kpn:kupon-promosyon-11.jpg?700|}} Default kurulımdan sonra tanımladığımız Durumların ekranda ve raporlarda gözükmesini kontrol edebiliyoruz. Bu konu bu linkte anlatılmıştır. bu adreste anlatıldığı gibi Kupon Siparişte durumunu ekleyip ekranda gözükmesini sağladıktan sonra oluşan satış ekranımızın görüntüsü yukarıdadır. ==== 7. Kupon Ürünü Satılıp Ödendikten Sonraki Durumunu Güncelleme ==== Kupon Ürününü adisyona eklediğimizde olması gereken durumlarını bir önceki kuralımızda tanımladık. Şimdi de bu adisyon ödediği zaman bu kuponun Durumlarının değiştirilmesi gerekiyor. Çünkü ileriki aşamalarda Ödemesi tamamlanmış Kahve Kuponları için Barkod yazdırmak dahil yapacağımız işlemlerde kullanacağız. Bunun için yeni bir kural daha tanımlıyoruz. {{:tr:promosyon_kpn:kupon-promosyon-12.jpg?700|}} **Kural Değerleri** ^Özellik^Değer^^ |Kural Adı|KPN-Adisyon Ödendiğinde Kupon Durumlarını Güncelle| |Olay Adı|Belge Kapanmadan Önce| ^Kısıtlamalar^^^ |Eğer Kural Çalışırsa|EŞLEŞME olmalıdır| ^Özel Kısıtlama Ekle^^^ |RemainingAmount|Eşittir|0| ^Eylemler^^^ |Eylem|Kupon Ürünleri Durumlarını Güncelle| |:::|Mevcut Durum|Kupon Siparişte| |:::|Durum|Kupon Ödendi| Belge kapanmadan Önce olayı ile "RemainingAmount" değeri yani adisyon toplam rakamı 0 a eşitse "Kupon Ürünleri Durumlarını Güncelle" eyleminde Mevcut Durumu Kupon Siparişte olan halini Kupon Ödendi olarak değiştirdik. Navigasyonda bulunan Adisyonlardan eski ödenmiş bir adisyona baktığımızda ödemesi yapılmış Kahve Kuponu ürünümüz aşağıdaki gibi gözükecektir. {{:tr:promosyon_kpn:kupon-promosyon-13.jpg?700|}} ==== 8. Kupon Varlığı Oluşturma Kuralları ==== Gerekli ön hazırlıkları yaptıktan sonra artık Kahve Kuponu ürünümüz ödendiği anda otomatik olarak Kupon Varlığımızın oluşturulmasını yapacağız. Bunun için yukarıda tanımladığımız eylemleri uygun şartlar altında çalıştıracak yeni bir Kural daha tanımlıyoruz. Sipariş Durumu Değiştiğinde olayını kullanarak yeni varlıklar oluşturacağız. {{:tr:promosyon_kpn:kupon-promosyon-14.jpg?700|}} **Kural Değerleri** ^Özellik^Değer^^ |Kural Adı|KPN-Kupon Ödendiğinde Kupon Varlığı Oluştur| |Olay Adı|Sipariş Durumu Değişti| ^Kısıtlamalar^^^ |Eğer Kural Çalışırsa|EŞLEŞME olmalıdır| ^Özel Kısıtlama Ekle^^^ |StateName|Eşittir|Kupon Durumu| |Durum|Eşittir|Kupon Ödendi| ^Eylemler^^^ |Eylem -1 |Random Kupon Oluştur| |Eylem -2 |Kupondaki Menü Ürün Adını Güncelle| |:::|Değer|{ORDER STATE:Kupon Ürünü}| Yukarıdaki Kuralımızla Kupon Durumu = Kupon Ödendi olan anlarda çalışacak şekilde kısıtladıktan sonra 2 Eylemi çalıştırmasını istedik. Birinci Eylemde bize random bir Varlık oluşturdu, 2. eylemde ise Kuponda geçen ürün adını Sipariş Durumunda yazan Kupon Ürünü adıyla güncelleştirmiş olduk. //**Durum Gözden Geçirme...**// Kupon Ürünümüz adisyona ekledikten ve satışı yapılarak ödemesi alındığı anda otomatik olarak bir Kuponlar Varlık Tipi altına yeni bir Varlık oluştur. Bu varlığı inceleyecek olursak aşağıdaki gibi görülecektir. {{:tr:promosyon_kpn:kupon-promosyon-15.jpg?700|}}