Bu eğitimde, şirketin bütçe girişlerini, müşteri adaylarını, müşteri adayı durumunu, görev yönetimini ve görev ayrıntılarını yönetmek için bir uygulamanın nasıl geliştirileceği gösterilmektedir.
──────────────────────────────
Hazırlama ve Tasarlama
Bu örnekte, işlevselliği kapsayacak şekilde 5 farklı form oluşturacağız;
Bütçe Girişi: Bütçe değerlerinin girişini kaydeden form
Müşteri Adayları: Müşteri adaylarının bilgilerinin girildiği form
Potansiyel Müşteri Durumu: Potansiyel müşterilerin durumunun gösterildiği form
Görev Yönetimi: Görev yönetiminin gerçekleştirildiği biçim
Görev Detayları: Görev ayrıntılarının gösterildiği form
──────────────────────────────
Lütfen unutmayın, araç çubuğundan “Kaydet” düğmesine tıkladıktan sonra Xpoda Studio veritabanı sağında alanlar oluşturacaktır.
Emin olmak için “Kaydet” düğmesini sık sık kullanın, aksi takdirde verilerinizi kaybedebilirsiniz.
Uygulama Geliştirme
Artık uygulama verilerimizi ve kullanıcı ara yüzümüzü tasarladığımıza göre, Xpoda Studio kullanarak bir uygulama geliştirmenin zamanı geldi. Xpoda Studio'ya giriş yapın ve yeni bir form ekleyin.
──────────────────────────────
Bütçe Girişi
Öncelikle bu formda şirketin bütçe girişlerini kaydetmek istiyoruz.
Tip: Bütçenin alınan-gider seçimi
Tutar: Miktarı belirlemek için
Ay: Hangi ayı seçeceğinizi
Not: Bir not oluşturmak için
Belge: Belge eklemek için
Mevcut Bütçe: Mevcut bütçeyi göstermek için
1- Yeni bir form ekleyin ve adını ''XP_BUTCE_GIRIS'' koyun.
2- Araç çubuğundan DropDown Box ekleyin ve adını ''Tip/Bütçe Tipi'' olarak adlandırın. Bunu yaptıktan sonra sağ panelde Field Style alanını “Constant Value” seçin ve Values alanını aşağıdaki değerler ile doldurun.
Gelir
Gider
3- Ardından Figure Box ekleyin ve ''Tutar'' olarak adlandırın.
4- Araç çubuğundan yeni bir DropDown Box ekleyin ve her iki alana da '' Ay '' adını verin. Values alanına aşağıdaki verileri ekleyelim;
Ocak
Şubat
Mart
Nisan
Mayıs
Haziran
Temmuz
Ağustos
Eylül
Ekim
Kasım
Aralık
5- TextBox ekleyip ve her iki alana da '' Not '' adını verin. Multi Line özelliğini etkinleştirin ve Table Length alanını 250 olarak ayarlayalım.
6- Add File aracını ekleyip adını ''Belge'' olarak adlandırın.
7- Ardından yeni bir Figures Box ekleyin ve “Mevcut Bütçe'' olarak adlandırın. Form Only özelliğini etkinleştirin.
8- Bütçe girişlerini görüntülemek için yeni bir Liste ekleyin. Sağ panelden aşağı kaydırın ve Auto Extention özelliğini aktif hale getirin.
Nihayetinde formunuz bu şekilde görünecektir:
9- Ardından forma aksiyonlar ekleyelim. İlk olarak formu seçip sağ panelden, “When the form is opened / Update Value” ikilisini seçelim ve Value Area alanını “Butce_Listesi” olarak seçin. Böylece form açıldığında listeniz otomatik olarak güncellenecek ve yüklenecek. Fakat listemize sorgu eklemesek de aksiyonumuza eklediğimiz sorgu ile listemize istediğimiz verileri çağırabiliriz. Bunu sağlamak adına sihirbaza tıklayıp XP_BUTCE_GIRISI tablosundan listede görünmesini istediğimiz verileri sürükle bırak yapıyoruz ve aşağıdaki sorguyu hızlı ve kolay bir şekilde oluşturuyoruz.
SELECT
XP_BUTCE_GIRISI.UserTableID,
XP_BUTCE_GIRISI.FormTypeID,
XP_BUTCE_GIRISI.Ay,
XP_BUTCE_GIRISI.Tip,
XP_BUTCE_GIRISI.Tutar,
XP_BUTCE_GIRISI.Aciklama
FROM
dbo.XP_BUTCE_GIRISI WITH (NOLOCK)
10- Gelir ve gider hesaplamalarını yapmak için ikinci aksiyonu ekleyin. lk olarak formu seçip sağ panelden, “When the form is opened / Update Value” ikilisini seçelim ve Value Area alanını ''Mevcut_Butce'' olacak şekilde düzenleyip, sorgu alanına bu sorguyu kullanmamız gerekiyor;
SELECT
ISNULL((SELECT SUM(Tutar)
FROM
dbo.XP_BUTCE_GIRISI WITH (NOLOCK)
WHERE XP_BUTCE_GIRISI.Tip = 'Gelir'),0) -
ISNULL((SELECT SUM(Tutar)
FROM
dbo.XP_BUTCE_GIRISI WITH (NOLOCK)
WHERE XP_BUTCE_GIRISI.Tip = ‘Gider’),0)
12- Son olarak Mevcut Bütçe alanına dışarıdan müdahaleyi engellemek adına yetkilendirme yapmanız gerekmektedir. Bunun için formu seçip Authority alanını seçip Type alanını “Authority of Field” Type of Authority alanını “It can not change fields” olarak seçerek fields alanını da “Mevcut_Butce” seçip All Users’a yetkilendirme yaparak kaydedeceğiz.
13- En sonunda bütün aksiyonları ve araçları kaydettikten sonra Run yaparak uygulamanızı çalıştırın.
──────────────────────────────
Potansiyel Müşteriler
Bu formda, potansiyel müşteri formunu kaydetmek istiyoruz.
İsim: Potansiyel müşterinin adını göstermek için
Tip: Potansiyel Müşteri türünü göstermek için
Bütçe: Bütçe giriş kaydı için
Açıklamalar: Açıklama eklemek için
Telefon: Kişinin telefon bilgisi için
Adres: Kişinin adres bilgisi için
Şimdi yeni bir form ekleyip tablo ismini “XP_POTANSIYEL”, ismini “Potansiyel_Musteriler”, görünen isim alanını da “Potansiyel Müşteriler” olarak adlandıralım.
Ardından İsim, Tip, Açıklamalar, Telefon ve Adres için TextBox, Bütçe girişi için Figures Box araçlarını ekleyelim. Hepsinin isimlendirmesini uygun bir şekilde yapıp aşağıdaki görüntüyü elde edelim.
Telefon alanının Mask’ini “Phone” olarak seçmeyi ve Adres alanının Table Length kısmını 250 yapıp Multi Line özelliğini aktifleştirmeyi unutmayın.
Değişiklikleri/yeni eklenen formları görmek için uygulamamızı çalıştıralım.
──────────────────────────────
Potansiyellik Durumu
Bu formda, müşteri adayının durumunu kaydetmek istiyoruz.
Müşteri: Müşteri adayını göstermek için
Durum: Durumu belirlemek için
Notlar: Not eklemek için
Yeni bir form daha ekleyip tablo ismini “XP_POTANSIYELLIK_DURUMU”, ismini “Musteri_Potansiyellik_Durumu”, görünen isim alanını da “Müşteri Potansiyellik Durumu” olarak adlandırın.
Ardından Müşteri ve Durum bilgileri için iki adet Drop Down Box, Notlar için bir adet Text Box ekleyin.
Müşteri alanına Potansiyel Müşteriler tablosundan isimleri çekmek istediğimiz için öncelikle Filed Style alanını “SQL Query” olarak seçip, sonrasından Sorgu Sihirbazını açıp XP_POTANSIYEL tablosundan UserTableID ve Isim alanlarını sürükle bırak yapıyoruz. Aşağıdaki sorguyu SQL Query alanına ekleyebilirsiniz;
SELECT
XP_POTANSIYEL.UserTableID,
XP_POTANSIYEL.Isim
FROM dbo.XP_POTANSIYEL WITH (NOLOCK)
Durumu olarak adlandırdığımız Drop Down Box alanında bulunmasını istediğimiz sabit değerler için öncelikle Field Style alanını Constant olduğunu kontrol edip, Values alanına aşağıdaki sabit değerleri yazın;
Yeni
İlişki Yapılandırma
İhtiyaç Tespiti
Onaylandı
Tamamlandı
İptal edildi
Notlar olarak adlandırdığımız Text Box aracını seçip Table Length alanını 500 olarak değiştirip, Multi Line özelliğini etkinleştirin.
Son olarak girilen değerleri görüntülemek için Liste aracı ekleyin. Auto Extention özelliğini etkinleştirin ve ardından aşağıdaki sorguyu listenin sorgu alanına ekleyin;
SELECT
XP_POTANSIYELLIK_DURUMU.UserTableID,
XP_POTANSIYELLIK_DURUMU.CreateDate AS [Oluşturulduğu Tarih],
XPODA_CLIENT_USERS.UserFullName AS [Kullanıcı],
XP_POTANSIYELLIK_DURUMU.Durumu,
XP_POTANSIYELLIK_DURUMU.Notlar
FROM dbo.XP_POTANSIYELLIK_DURUMU WITH (NOLOCK)
LEFT OUTER JOIN dbo.XP_POTANSIYEL WITH (NOLOCK)
on XP_POTANSIYELLIK_DURUMU.Musteri = XP_POTANSIYEL.UserTableID
LEFT OUTER JOIN dbo.XPODA_CLIENT_USERS WITH (NOLOCK)
on XP_POTANSIYELLIK_DURUMU.CreateUser = XPODA_CLIENT_USERS.UserID
WHERE Musteri = '$PMusteri$'
Değişiklikleri/yeni eklenen formları görmek için uygulamamızı çalıştıralım.
──────────────────────────────
Görev Yönetimi
Bu formda görev yönetim formunu kaydetmek istiyoruz.
Tip: Müşteri Adayları tipini göstermek için
Müşteri adayı: Müşteri adayını göstermek için
Sorumlu: Sorumluyu göstermek için
Durum: Durumu belirlemek için
Not: Not eklemek için
1- Yeni bir form daha ekleyip tablo ismini “XP_GOREV_YONETIMI”, ismini “Gorev_Yonetimi”, görünen isim alanını da “Görev Yönetimi” olarak adlandırın.
Ardından Müşteri Tipi, Müşteri, Sorumlu ve Durumu alanları için Drop Down Box, Notlar için Text Box ekleyin.
2- Müşteri Tipi Drop Down Box’ı için Field Style alanını “Constant Value” olarak seçip Values alanına aşağıdaki değerleri yazın;
Müşteri Adayı
Diğer
3- Müşteri Drop Down Box alanı için XP_POTANSIYEL veri tabanından müşteri isimlerini çekmeniz gerekmektedir. Öncelikle Field Style alanını “SQL Query” seçip, sorgu alanına aşağıdaki sorguyu yazın;
SELECT
XP_POTANSIYEL.UserTableID,
XP_POTANSIYEL.Isim
FROM dbo.XP_POTANSIYEL WITH (NOLOCK)
4- Sorumlu Drop Down Box alanına firmanıza ait çalışanların gelmesini istediğinizi varsayarak aşağıdaki sorguyu ekleyin;
SELECT
XPODA_CLIENT_USERS.UserID,
XPODA_CLIENT_USERS.UserFullName
FROM dbo.XPODA_CLIENT_USERS WITH (NOLOCK)
5- Durum Drop Down Box için Field Style alanını “Constant Value” olarak seçip Values alanına aşağıdaki değerleri yazın;
Yeni
Bitti
İptal Edildi
6- Notlar için eklediğimiz Text Box’ın Table Length boyutunu 250 yapıp, Multi Line özelliğini etkinleştirin.
7-Sorumlu bilgilerini görüntülemek için yeni bir Liste ekleyin. Auto Extention özelliğini etkinleştirdikten sonra sonra SQL Sorgusu yazmamız gerekir. Sorgu Sihirbazı'nı kullanarak veritabanına gidiyoruz ve bu sorguyu oluşturmanız gerekiyor;
SELECT
XP_GOREV_YONETIMI.UserTableID,
XP_GOREV_YONETIMI.CreateDate,
XP_GOREV_YONETIMI.FormTypeID,
XP_GOREV_YONETIMI.Sorumlu,
XP_GOREV_YONETIMI.Tip,
XP_POTANSIYEL.Isim AS [Müşteri İsmi],
XP_GOREV_YONETIMI.Durumu,
XP_GOREV_YONETIMI.Notlar
FROM dbo.XP_GOREV_YONETIMI WITH (NOLOCK)
LEFT OUTER JOIN dbo.XP_POTANSIYEL WITH (NOLOCK)
on XP_GOREV_YONETIMI.Musteri = XP_POTANSIYEL.UserTableID
LEFT OUTER JOIN dbo.XPODA_CLIENT_USERS WITH (NOLOCK)
on XP_GOREV_YONETIMI.Sorumlu = XPODA_CLIENT_USERS.UserID WHERE Durumu = 'Yeni'
8- Liste seçiliyken sağ panelden, satır değiştirildiğinde değeri güncellemek için yeni bir aksiyon ekleyin. Type of Action ''When double clicked on row'' olmalıdır. Operation alanını ''Update Value'' seçelim. Value Area alanını “All Forms'' yapalım ve sorgu alanına aşağıdaki sorguyu ekleyin;
SELECT '$PUserTableID$' as UserTableID
9- Talepleri tamamlamak adına bir buton ekleyin ve ismini ''Talep Tamamlandı'' koyun. Ardından butonun değer güncellemesi yapması adına butona aksiyon ekleyin. “When Clicked / Update Value” ikilisini seçip Value Area alanını “GridList_1” olarak belirleyin. Aşağıdaki sorguyu SQL Query alanına ekleyin;
SELECT
XP_GOREV_YONETIMI.UserTableID,
XPODA_CLIENT_USERS.CreateDate AS [Tarih],
XP_GOREV_YONETIMI.FormTypeID,
XPODA_CLIENT_USERS.UserFullName AS Sorumlu,
XP_GOREV_YONETIMI.Tip,
XP_POTANSIYEL.Isim AS [Müşteri],
XP_GOREV_YONETIMI.Durumu,
XP_GOREV_YONETIMI.Notlar
FROM dbo.XP_GOREV_YONETIMI WITH (NOLOCK)
LEFT OUTER JOIN dbo.XP_POTANSIYEL WITH (NOLOCK)
on XP_GOREV_YONETIMI.Musteri = XP_POTANSIYEL.UserTableID
LEFT OUTER JOIN dbo.XPODA_CLIENT_USERS WITH (NOLOCK)
on XP_GOREV_YONETIMI.Sorumlu = XPODA_CLIENT_USERS.UserID
WHERE XP_GOREV_YONETIMI.UserTableID IN (SELECT XP_GOREV_DETAY.TaskID
FROM dbo.XP_GOREV_DETAY WITH (NOLOCK)
WHERE XP_GOREV_DETAY.Tamamlandi = '1' ) AND Durumu = 'Yeni'
10- Yeni bir Buton daha ekleyin, adını ''Tüm Görevler'' koyun. Bu buton tıklandığında bütün görevleri listelesin istiyoruz. Bu sebeple “When clicked / Update Value” ikilisini seçip Value Area alanını “GridList_1” olarak belirleyin. Aşağıdaki sorguyu SQL Query alanına ekleyin;
SELECT
XP_GOREV_YONETIMI.UserTableID,
XPODA_CLIENT_USERS.CreateDate AS [Create Date],
XP_GOREV_YONETIMI.FormTypeID,
XPODA_CLIENT_USERS.UserFullName AS Sorumlu,
XP_GOREV_YONETIMI.Tip,
XP_POTANSIYEL.Isim AS [Müşteri İsmi],
XP_GOREV_YONETIMI.Durumu,
XP_GOREV_YONETIMI.Notlar
FROM dbo.XP_GOREV_YONETIMI WITH (NOLOCK)
LEFT OUTER JOIN dbo.XP_POTANSIYEL WITH (NOLOCK) on
XP_GOREV_YONETIMI.Musteri = XP_POTANSIYEL.UserTableID
LEFT OUTER JOIN dbo.XPODA_CLIENT_USERS WITH (NOLOCK) on
XP_GOREV_YONETIMI.Sorumlu = XPODA_CLIENT_USERS.UserID
11- Son olarak forma bir aksiyon daha ekleyelim ve form açıldığında listemiz güncellensin. Bunun için formun özelliklerinden “Add New Action” seçip “When the form is opened / Update Value” ikilisini seçip Value Area kısmını ''GridList_1'' olarak belirleyin.
Formumuzun studio görüntüsü bu şekilde olacaktır.
12- Değişiklikleri/yeni eklenen formları görmek için uygulamamızı çalıştıralım.
──────────────────────────────
Görev Detayları
Bu formda görev detayları formunu kaydetmek istiyoruz.
Faaliyet: Bir aktivite girmek için
Saatler: Kaç saatlik faaliyet olduğunu göstermek için
Yüzde: Faaliyetin yüzde kaçını göstermek için
1- Yeni bir form daha ekleyip tablo ismini “XP_GOREV_DETAY”, ismini “Gorev_Detay”, görünen isim alanını da “Görev Detayları” olarak adlandırın.
Ardından Faaliyet için Text Box, Saat, Yüzde, TaskID alanları için Figures Box, Görev Tamamlandı alanı için Check Box, Detay eklemek için Buton ve iki adet Liste ekleyip isimlendirin.
Faaliyet Text Box’ının Table Length alanını 500 ve Multi Line özelliğini etkinleştirmeyi unutmayın.
2- Butonun adını “Detay Ekle'' olarak adlandırın ve tercihe bağlı olarak bir simge atayın. Bu butonda kullanmak adına bir aksiyon ekleyin ve “When clicked / Save” ikilisini kullanalım.
3- TaskID alanının değeri değiştiği zaman “GridList_2” alanının güncellenmesi için “On Value Change / Update Value” ikilisini kullanıp Value Area alanını “GridList_2” olarak ayarlayın.
4- Detayları görüntülemek için yeni bir Liste ekleyin ve Auto Extension özelliğini etkinleştirin. Sonrasında sorgu sihirbazından aşağıdaki sorguyu liste sorgusuna ekleyin;
SELECT
XP_GOREV_YONETIMI.UserTableID,
XP_GOREV_YONETIMI.Tip,
XP_POTANSIYEL.Isim AS [Müşteri Adı],
XP_GOREV_YONETIMI.Durumu,
XP_GOREV_YONETIMI.Notlar
FROM dbo.XP_GOREV_YONETIMI WITH (NOLOCK)
LEFT OUTER JOIN dbo.XP_POTANSIYEL WITH (NOLOCK) on
XP_GOREV_YONETIMI.Musteri = XP_POTANSIYEL.UserTableID
WHERE XP_GOREV_YONETIMI.Durumu = 'Yeni' AND Sorumlu = '$PActiveUser'
5- Sağ panelden, satır değiştirildiğinde değeri güncellemek için yeni bir aksiyon ekleyin. “When the row is selected / Update Value” ikilisini seçip, Value Area alanını ''TaskID'' olarak belirleyin. Bu sorguyu kullanmamız gerekiyor;
SELECT '$PUserTableID$'
6- Tüm form ayrıntılarını görüntülemek için yeni bir Liste ekleyin ve Auto Extension özelliğini etkinleştirin. Sonrasında sorgu sihirbazından aşağıdaki sorguyu liste sorgusuna ekleyin;
SELECT
CONVERT(DATE, XP_GOREV_DETAY.CreateDate) AS [Date] ,
XPODA_CLIENT_USERS.UserFullName AS [Yaratıcı],
XP_GOREV_DETAY.UserTableID,
XP_GOREV_DETAY.Faaliyet,
XP_GOREV_DETAY.Saat,
XP_GOREV_DETAY.Yuzde
FROM dbo.XP_GOREV_DETAY WITH (NOLOCK)
LEFT OUTER JOIN dbo.XPODA_CLIENT_USERS WITH (NOLOCK) on
XP_GOREV_DETAY.CreateUser = XPODA_CLIENT_USERS.UserID
WHERE XP_GOREV_DETAY.TaskID ='$PTaskID$'
7- Bu forma birkaç Validation aksiyonu ekleyelim.
Öncelikle formumuzu seçelim ve “Before recording / Validation” ikilisini seçip form kaydedilmeden önce Faaliyet, Saat, Yüzde alanlarının boş olup olmadığını kontrol etmek adına aşağıdaki sorguyu kullanın;
SELECT CASE WHEN
'$PFaaliyet$' = '' OR '$PSaat$' <= 0 OR
'$PYuzde$' <= 0 THEN 0 ELSE 1 END
Warning Message alanına “Boşlukları Doldurunuz!” uyarısı ekleyebilirsiniz.
Sonrasında yeniden aksiyon ekleyip “Before recording / Validation” ikilisini seçin ve form kaydedilmeden önce TaskID alanının kontrolü için aşağıdaki sorguyu kullanın;
SELECT CASE WHEN
'$PTaskID$' >0 THEN 1 ELSE 0 END
Warning Message alanına “Görev Seçiniz!” uyarısı ekleyebilirsiniz.
Kayıttan sonra e-posta göndermek için yeni bir aksiyon ekleyin ve “After recording / Send E-mail” ikilisini kullanın. To Whom alanına bu sorguyu ekleyin, kendi mailinize göre mail alanını değiştirin.
SELECT
'admin@xpoda.com'
Subject alanını “İstek Tamamlandı” olarak belirleyin. Aşağıya indiğimizde Content alanına aşağıdaki içeriği ekleyin (Bu alanı kendinize göre özelleştirebilirsiniz.);
Yeni bir tamamlama talebi girildi!
Görev Kimliği: $PTaskID
Not: $PActivity
8- TaskID alanını kullanıcıların göremeyeceği şekilde ayarlamak için Authority ekleyin. Type alanını “Authority of Field”, Type of Authority alanını da “It can not see fields” olarak seçip görünmesini istemediğimiz TaskID alanlarını seçelim ve Users Type kısmını da “All Users” olarak belirleyip yetkiyi kaydedin.
Formunuzun son hali bu şekilde görünecektir:
Değişiklikleri/yeni eklenen formları görmek için uygulamamızı çalıştıralım.