ORKESTRA

ORKESTRA

  orkestra orkestra.com.tr
  Sohbet   İndirme Merkezi

Faydalı Yardımcı Fonksiyonlar Nasıl Kullanılır?

Faydalı Yardımcı Fonksiyonlar Nasıl Kullanılır?


 

Faydalı yardımcı fonksiyonlar 3 ana başlık altında toplanmıştır. Bunlar

 

* MathUtil
* DateUtil
* StringUtil 

 

MathUtil


 

Eğer bir şey sayısal işlemlerle alakalıysa kullanılacak olan fonksiyon MathUtil Fonksiyonudur. En kaba tabir ile Matematik ile ilgili işlemler, sayılar vb. MathUtil Fonksiyonu aracılığı ile kullanılabilir. 

 

MathUtil.(Noktadan sonraki bu bölüme gelecek birçok değişik operatör mevcuttur) En çok kullanılanlardan birisi BigDecimaldir. 

 

MATHUTIL.BigDecimal(value)

 

Nereden geldiği önemli olmayan bir integer'ı bu komut aracılığı ile BigDecimal'a dönüştürebilmekteyiz. Bu işlem String,integer,double veya long formattaki bilgileri BigDecimal formatına dönüştürür. 

 

Örneğin String formatındaki bir Metine Büyük Ondalık Sayı cinsinden bir değer tanımlamak istediğimizde;

BigDecimal buyuk_ondalik = MathUtil.BigDecimal(1);

şeklinde yazabiliriz. Bu durumda bir alt satırda return buyuk_ondalik; Şeklinde bir komut yazarsak rapor çalıştırıldığında, buyuk_ondalık Metini yerine karşımıza değeri 1 olan bir büyük ondalık sayı gelecektir. 

 

MathUtil Fonksiyonu sayesinde, elimizde zaten BigDecimal cinsinden bulunan bir sayıyı formatlayabiliriz. 

 

Şekil 40

 


Satış Faturaları nesnesinde yeni bir rapor açıyoruz ve Veri bandına bir Metin Bileşeni ekliyoruz. Veri Bağlantısı olarak Betik Alanını seçiyoruz ve açılan ekranda çok basit olarak return $F{netTotal}; yazıyoruz. Raporu şu an ön izleme yaparsak karşımıza fatura tutarları döküm halde gelecektir. 

 

Şekil 41

 

Veri Bandına bir adet daha Metin Bileşeni ekliyoruz ve bunuda Betik alanı olarak ayarlıyoruz. Burada da yine $F{netTotal} verisini kullanacağız fakat MathUtil ile formatlayarak gösterilmesini sağlayacağız. 

return MathUtil.format($F{netTotal},"#,###.00");

şeklinde kodumuzu yazıyoruz. 

 

MathUtil.format fonksiyonu parantez içerisinde girilecek ilk alana alacağı sayısal değeri, ikinci alana ise hangi formatta göstermek istediğimizi sormaktadır. Görmek istediğimiz format 0.000,00 olduğu için "#,###.00" şeklinde yazıyoruz. 

 

Şekil 42

 

Raporumuzu ön izleme yaptığımızda [ Şekil 42 ] deki görüntüyü elde ediyoruz. Sol taraftaki tutarlar 78459.07 şeklinde görüntülenirken, sağ taraftakiler 78.459,07 şeklinde gösterilmiştir. 

Kullanmış olduğumuz $F{netTotal} alanının rapor dövizi ne olursa olsun her zaman TL cinsinden geldiğiniz bildiğimizden sonuna "TL" ibaresini formülsüz olarak direkt String formatında ekleyebiliriz. 

 

Şekil 43

 

[ Şekil 43 ] de görüntülendiği gibi kodumuzun sonuna +" "+ ekliyoruz ve sonrasında "TL"; yazarak kodumuzu bitiriyoruz. Daha önceden bahsettiğimiz gibi +" "+ bölümü iki veri arasında bir boşluk bırakmaya yarar. " " işareti arasına gelen yazılar ise String formatında görünürler. 

 

Raporumuzu ön izleme yaptığımızda,

 

Şekil 44

 

[ Şekil 44 ] karşımıza geliyor. Görüldüğü üzere 1. sütunda "78459,07" şeklinde, 2. sütunda "78.459,07" şeklinde ve 3. sütunda "78.459,07 TL" şeklinde görüntülenmektedir.

Not: Normal durumlarda, faturalar üzerindeki tutar gösterimlerini $C{format}.currency kodumuz ile göstermekteyiz. Bu örnekte hem örnek olması adına hemde farklı durumlarda MathUtil.format kodu ile nasıl fatura tutarı gösterebileceğimizden bahsettik. 

 

 

DateUtil


 

DateUtil fonksiyonları, tarih ile alakalı işlemler için geçerlidir ve kullanılırlar. Veri bandına yeni bir Metin Bileşeni ekliyoruz ve Betik tanımı alanına return DateUtil. yazdıktan sonra CTRL + SPACE Kısayoluna başvuruyoruz ve karşımıza kullanabileceğimiz tüm nesneler [ Şekil 45 ] deki gibi çıkıyor. 

 

Şekil 45

 

Biz bu örneğimizde Verilen tarihteki günün, yılın kaçıncı günü olduğunu gösteren dayOfYear komutunu kullanacağız. 

return DateUtil.dayOfYear($F{voucherTime); 

 

Şekil 46

 

[ Şekil 46 ] da görüldüğü gibi, orkestradan biraz daha detaylı bir veri vermesini istedik. 

return DateUtil.format

yazdığımızda, vereceğimiz tarihi bizim belirttiğimiz formatta göstermesini söylüyoruz. $F{voucherTime} bölümü gelecek olan tarih verisi, "dd.MM.yyy" bölümü iste göstereceği tarihi "Gün.Ay.Yıl" olarak görmek istediğimizi söylediğimiz format alanıdır. Devamında;

 

+"\n"+ sonraki basılacak olan verilerin bir satır altta yazılmasını istediğimizi söyledik. 

 

Not:

 
DateUtil.dayOfYear($F{voucherTime})
kodu bize 1 ile 365 arasında bir sayı verecektir. Faturamızın tarihi örneğin 5 ocak ise, buradan gelecek olan sayı 5 olacaktır. 

 

Yılın x. günü şeklinde yazmasını istediğimiz için

+"Yılın"+" "+ DateUtil.dayOfYear($F{voucherTime) +". günü";

şeklinde kodu bitiriyoruz. 

Raporumuzu ön izlediğimizde;

 

Şekil 47

 

 [ Şekil 47 ] de Normal olarak Fatura Tarihi seçmek ile DateUtil fonksiyonu ile Tarihi isteğimiz şeklinde formatlamak arasındaki fark görüntülenmektedir.  

 

StringUtil


 

Metinler ile alakalı işlemler bu fonksiyon ile gerçekleştirilmektedir. Orkestranın tüm alanlarında geçerli olan CTRL + SPACE Kısayoluna başvuruyoruz ve karşımıza kullanabileceğimiz tüm StringUtil komutları geliyor. 

 

Şekil 48

 

Örneğin $F{XX} bölümünün boş veya dolu olup olmadığını sorgulamak istiyorsak, StringUtil.lenght(value) ile sorgulayabiliriz. Örneğin satış faturalarındaki cari hesabın Açıklamasında bilgi varsa getirmek istiyorsak,

 

Şekil 49

 

return StringUtil.length($F{party.description})>0 ? $F{party.description} : $F{party.code};

kodu ile bu kontrolü sağlayabiliriz. 

Not: ( ? ) anlamının  "ise", ( : )  anlamının "değilse" olduğunu hatırlayalım)

StringUtil.Lenght($F{party.decsription})>0

  bölümünde, Cari Hesap açıklamasında bulunan harf sayısı 0 dan büyük mü diye orkestraya soruyoruz.  Dolayısıyla;

Kodun devamında eğer Cari hesap Açıklamasında bir bilgi var ise, Bu bilgiyi göster. Eğer burada bilgi yok ise Cari hesabın Kodunu göster demiş oluyoruz. 

 

Raporu ön izleme yaptığımızda;

 

Şekil 50

 

Görüntüsü karşımıza geliyor. Cari hesaplarımızın hepsinin açıklama kısmında bilgi olduğu için, hepsinin açıklama bölümü dolu geliyor. Eğer açıklaması olmayan bir Cari hesabımız olsaydı, o zaman Açıklaması yerine kodu gelecekti.