Yeni raporların oluşturulması ve mevcut raporların değiştirilmesi "Logo Wms\reportdesigner" klasöründe bulunan "ReportDesigner.exe" uygulaması ile yapılmaktadır.

Uygulama çalıştırıldığında ilk olarak login ekranı karşımıza gelmektedir.

Kullanıcı adına "logoadmin" şifre alanına da "logo" yazarak "Giriş Yap" butonu ile giriş yapabiliriz.

Giriş yaptıktan sonra karşımıza mevcut raporların olduğu bir tablo ile ana ekran gelmektedir.

Bu ekranda butonu ile yeni raporlar oluşturabiliriz.

Butonu ile de seçmiş olduğumuz raporu açıp düzenleyebiliriz.

Ayrıca rapor satırına çift tıklayarak raporu düzenleyebiliriz.

Yeni butonu ile soldaki gibi boş bir rapor ekranı açılır.

Rapor Adı alanına rapora vereceğimiz ad yazılır.

Açıklama alanına ise raporu özetleyen bir açıklama yazabiliriz.

Rapor açıklaması kullanıcıların anlayacağı seviyede detaylı olmalıdır.

Rapor sorgusu bölümüne ise sql sorgularımızı yazabiliriz.


Sql sorgularımızı bu ekranda yazmadan önce "SQL Server Management Studio" ortamında yazıp çalıştığından emin olmalıyız. Hazırlanan sorgumuzu bu ekrana kopyalayıp çalıştır butonu ile çalıştırabiliriz.


Raporu çalıştırdığımızda aşağıdaki gibi çıktı ekranında gelen verileri görebiliriz.

Rapor başlıklarını genişletip daraltarak uygun genişliğe ayarlayabiliriz. 
"Kaydet" butonu ile raporumuzu kaydedebiliriz.



Rapora parametre ile bir değer vermek için parametre tanımı yapmamız gerekir.

Bunun için parametreler butonuna basıyoruz. Karşımıza aşağıdaki gibi parametre tanım ekranı "Parametreler" geliyor. Bu ekranda yeni butonu ile "Parametre" ekranını açıp yeni parametre tanımlamaya başlayabiliriz.


Aşağıdaki örnekte girilen parametrenin rapora yazdırıldığı bir rapor görmekteyiz. "Palet" adı ile tanımlanan parametre sorgu içinde ":Palet" olarak kullanılır. "Where" koşuluna yazıldığında da ":Plaet" şeklinde kullanılmaktadır.

Parametre Adı: Sorgu içinde kullanılacak ad tanımlamasını yaptığımız alandır. Boşluksuz olarak tanımlanması gerekir.

Parametre Görünen Ad: Rapor çalıştırıldığında parametre girişi için açılan ekranda parametrenin kullanıcıya görünecek olan adıdır.

Parametre Tipi: Parametrenin çalışma şeklini belirlediğimiz alandır. Metin seçtiğimizde aşağıdaki üç veri tipinde girişe olanak verir.

Statik liste seçtiğimizde ise bir liste tanımlamamıza ve bu listeden bir değeri rapor çalıştığında açılır kutu menü şeklinde seçim yapmamıza olanak verir.

Dinamik liste ise sorgu ile listeyi oluşturmamıza olanak verir. İlerleyen sayfalarda birer örnek ile statik ve dinamik parametre türlerini işleyeceğiz.

Veri Tipi: Belirlediğimiz parametrenin sayısal, metin(alfanümerik) ya da tarih mi olduğunu belirttiğimiz alandır. 

Metin seçtiğimizde harf ya da sayı değerleri girebiliriz. Girdiğimiz değer metin olarak yani sqldeki varchar gibi işlem görür. Sayısal değerini seçtiğimizde sadece rakam girişine izin verir ve rakam haricinde değer girilirse aşağıdaki gibi uyarı verir.
Tarih değeri seçildiğinde ise tarih seçmemiz için takvim açılır.

Statik Liste Örneği.

Parametre tipi olarak statik liste seçtiğimizde aynı satırda butonu ortaya çıkar.

Bu butona tıklayıp açılan "Statik Liste" ekranında Anahtar ve Değer alanlarını doldurabiliriz.

Açılır kutu ile kaç seçenek sunmak istiyorsak o kadar satır girebiliriz.

Aşağıdaki ekranda L_CAPIWHOUSE tablosundan FIRMNR değeri vererek hazırlanan raporu görülmektedir. Bu raporda statik listedeki "Anahtar" değeri sorguya parametre olarak gönderilir. "Değer" Alanına ise ekranda listede görmek istediğimiz değerler yazılır.

Bu statik listenin çalışma anındaki görünümü aşağıdaki gibidir.

Görüldüğü üzere "Anahtar" tanımı arka planda parametre olarak gönderilmiş ve ekranda listede yer almamıştır.

Dinamik Liste Örneği.
 Yukarıdaki raporu bir de dinamik liste ile çalıştırmak için aşağıdaki gibi dinamik listeyi oluşturan bir sorgu yazmamız gerekecektir. 
Bunun için parametre tipini "Dinamik Liste" olarak seçiyoruz.

Sonrasında "Gözat"  butonuna tıklayarak sorgu yazacağımız sağdaki ekrana ulaşıyoruz.

Bu ekranda herhangi bir parametre girişi yapılamamaktadır. Sorgu içinde "where" koşulu yazabiliriz fakat değerleri çalışma anında kullanıcı giremez. Yine bu ekranda yazacağımız sorgunun öncelikle çalıştığından emin olmalıyız. Bunun için sql management editöründe denemeliyiz.

Sonrasında kaydet butonu ile dinamik listeyi kaydediyoruz.

Raporu çalıştırdığımızda sağdaki ekrandaki gibi bir seçim ekranı karşımıza gelecektir.

Bu ekranda gördüğümüz gibi sorguda yazdığımız "NR" alanı gizlenmiş.

Dinamik liste sorgusuna yazılan ilk alan parametre anahtarı olarak sorguya gönderilir. Diğer 2. Ve sonraki alanlar da ekranda dinamik listede kullanıcıya gösterilir.

Parametre olarak gönderdiğimiz değeri aynı samanda ekranda da görmek istersek sorguya iki kez yazmamız gerekecektir. İlki parametre olarak gönderildiği için gizlenecektir. İkincisi ise kullanıcıya listede soldaki gibi gösterilecektir.

Bunu elde etmek için yazılan sorgu "SELECT NR PRM,NR,NAME,TITLE from L_CAPIFIRM" şekildedir. NR alanı iki kez kullanıldığından birini farklı isimlendirmek gerekmektedir.

Logo Wms Varsayılan (Ürün ile kurulan) Raporların Özelleştirilmesi

Logo Wms'te raporların bazıları ürün kurulumunda hazır olarak gelmektedir.

Bunlardan bazıları ItemBarcode, Paketleme Listesi, Fiş Detaylarını Yazdır raporlarıdır.

Bu raporların sorguları üzerinde değişiklik yaparak istediğimiz ilave bilgilerin veri tabanından rapora aktarılmasını sağlayabiliriz.

Bu raporlardan birini birlikte özelleştirelim.

Hazır raporları özelleştirirken dikkat edilmesi gereken noktalar şunlardır:

  1. Hazır raporda değişiklik yapmadan içindeki sorgu ve parametreler ile yeni bir rapor oluşturulup bu yeni rapor üzerinde değişiklikler yapılmalıdır.
  2. Rapor sorgusundaki parametrelerin değiştirilmemesi gereklidir. Logo Wms bu parametrelerle çalışacak şekilde ayarlandığından yeni eklenen parametreyi tanımaz ve mevcut oluşta çıkarılan parametreyi de bulamayınca hata verir.
  3. Rapor sorgusundaki alanları değiştirmeden kendi alanlarımızı ilave etmemiz gerekir.


Yukarıdaki raporun sorgusunu değiştirmeden mevcut tablolar haricinde yeni bir tablo daha ekleyip bu tablodan da bilgi çekebiliriz.
Aşağıdaki örnekte Logo Wms'in stoklarını getiren "WM_StockView" left join ile eklenmiş ve "stock" değeri alınıp listelenmiştir.
Bu sorguyu Sql Management üzerinde ":Itemcode" yerine bir değer yazarak ya da sorgudan çıkararak kalan kısmını çalıştırıp sorguda hata olmadığından emin oluruz.
Sonrasında raporumuza kopyalayıp bir kez çalıştırırız ve butonu ile tasarım ekranına girip yeni eklediğimiz alanı da etiket üzerinde konumlandırabiliriz.
SELECT
IT.CODE Itemcode,
IT.NAME Itemname,
IT.SPECODE SPECODE,
IT.PRODUCERCODE PRODUCERCODE,
IT.STGRPCODE STGRPCODE,
IT.GTIPCODE GTIPCODE,
IT.NAME3 NAME3,
BCD.BARCODE Barcode1,
SL.CODE Barcode,
SW.Stock
FROM LG_001_ITEMS IT
LEFT JOIN LG_001_UNITBARCODE BCD ON BCD.ITEMREF = IT.LOGICALREF
LEFT JOIN LG_001_01_SERILOTN SL ON SL.ITEMREF=IT.LOGICALREF
LEFT JOIN WM_StockView SW ON SW.ItemCode=IT.CODE
WHERE
(ACTIVE=0 AND IT.CODE <>'ÿ' and SL.CODE=:Itemcode)


Karşımıza aşağıdaki gibi bir tasarım ekranı gelecektir.

Dizayn ekranında satır verileri "detailBand" alanında konumlandırılır.

Soldaki barkod nesnesi  ile tasarıma 1D ve 2D tiplerinde barkod ekleyebilirsiniz.

Tabi bu barkod tipini depoda kullanılan barkod okuyucuya ve barkod içine gömülecek veri tiplerine göre seçmek gerekecektir.

Tasarım ekranının sağında ise solda gördüğünüz alan listesi ekranı mevcuttur. Ekranın alt kısmından "Field List" seçerek sorguda çektiğimiz alanları görebiliriz.
İstediğimiz alanları sürükle/bırak yöntemi ile tutup tasarıma taşıyabiliriz.



Stock alanını tasarıma taşıdıktan sonra resimdeki ok tuşu ile soldaki özellik ekranını açabiliriz.

Bu ekranda "Expression" ile adlandırılan alan Label nesnesi ile sql sorgusundan gelen alanların bağlantısının yapıldığı alandır. İstersek bu Label nesnesini başka bir sql alanı ile ilişkilendirebiliriz.

"Auto With" otomatik genişlik nesnenin içindeki veriye göre genişlik almasını sağlar.

"Can Grow" seçeneği ise nesnenin büyüyebilme yetkisidir

"Can Shrink" seçeneği ise Label nesnesinin alanının yeterli olmadığı durumlarda verinin kırpılmasına izin verir.

"Multiline" seçeneği ile birden fazla satır veri girmemize olanak sağlar.

"Word Wrap" ise nesne genişliğine sığmayan kelimeyi bir alt satıra kaydırır. Bu seçenek seçili ise "Auto With" devre dışı kalır. Label nesnesinin yüksekliği ikinci satıra yetecek kadar bırakılmadıysa "Can Grow" seçeneği seçilmelidir.

Barkod nesnesinde eklemek için soldaki araç çubuğundaki "Bar Code" nesnesi kullanılmalıdır. Sağdaki alanları sürükle bırak ile barkod nesnesi oluşturulamaz.

Bu nesnenin özellikleri;
"Symbology" özelliği ile 1D , 2D barkod tiplerinden birini seçebiliriz. Rakam veya harf kullanılacaksa "Code93Extended" kullanılabilir. Bunun yerine 2D tip barkod olarak "QRCode" tipi de kullanılabilir. En yaygın kullanılan barkod tipi ise "Code 128"dir
"Auto-Module" barkodun nesne genişliğine göre otomatik ayarlanmasını sağlar.
"Expression" ise tüm nesnelerde aynıdır ve sql sorgusundan gelen alanların bağlantısının yapıldığı alandır. İstersek başka bir sql alanı ile ilişkilendirebiliriz.
"Orientation" ile de barkodun sola veya sağa dayalı olmasını ve tersyüz olmasını sağlayabiliriz.
"Text" alanını ile nesneyi herhangi bir alana bağlamadan ise elle bir değer verip etikette sabit bir barkod yazılmasını sağlayabiliriz. Tüm etiketlerde olmasını istediğimiz barkod tipi bir verimiz varsa bu şekilde tasarıma ekleyebiliriz.

Etiket Boyutunun Ayarlanması.

Etiket boyutunu ayarlamak için beyaz tasarım alanının dışındaki gri alana fare ile tıklarız. Sonrasında sağ altta "Property Grid" özellikleri gelir.

Gelen özellik listesinde "Page Settings" bölümünde "Paper Kind" özelliği ile listeden tanımlı bir etiket ya da kağıt seçebilir veya "custom" seçeneği ile de etiket boyutlarını elle girebiliriz.

Custom" seçildiğinde "Page Height" ve "Page Width" özelliklerine gerçek etiket boyutunu yükseklik ve genişlik olarak yazabiliriz.

Etiket boyutunu ayarladıktan sonra çalışma alanının üst ve solundaki cetveller yardımıyla yazılacak verileri alanın içinde tutmaya çalışmalıyız.

Bu örnekteki gibi yüksekliği 800 mm olan bir etiket için "Stock" verisi etiketin dışında kalacağından yazıcıdan 2. Sayfa olarak çıkartılacaktır.

Genellikle tek etiket beklerken 2. Etiketin de çıkmasının nedeni budur.


Çıktı aşağıdaki gibi olacaktır.

Çıktıda görüldüğü gibi "Logo Wms Miktar 4" satırı 2. Etikete taşmış ve 2. Etiketteki verileri de kaydırmıştır.

Bunun yaşanmaması için "Logo Wms Miktar 4" satırının 800 mm lik yükseklik dahilinde olması gerekir.

Bunun yanında, Yukarıda bahsettiğimiz verinin ikinci sayfada çıkmasını istediğimiz durumlar da olabilir. Sonraki etiketin verilerini kaydırmaması için etiket sonuna "page break" eklersek sonuç aşağıdaki gibi olacaktır.

Sürükle bırak ile nesneyi sayfanın bitmesini istediğimiz noktaya bırakırız. Bu noktada ilk etiket biter 2. Etiket sonraki sayfadan itibaren yazdırılır. "Page Break" kendinden sonraki verileri sonraki sayfaya kaydırır. Tasarımda birden fazla kez kullanılabilir. Örneğin tasarımda 3 page break varsa tasarım 3 sayfada yazdırılır.

Aşağıda görüldüğü üzere, normalde yukarıdaki gibi görünen çıktı sayfamız page break kullanılarak bir sayfanın iki etikette görünmesi ve sonraki sayfanın da 3. Etiketten itibaren görünmesi sağlanmıştır.


İleri seviye rapor kullanımı için arama motoruna "xtrareport" yazarak bu konuda hazırlanmış birçok içeriğe ulaşabilirsiniz.

Aşağıdaki link ile "xtrareport" raporlama aracının resmi doküman sayfasına ulaşabilirsiniz.

https://docs.devexpress.com/XtraReports/DevExpress.XtraReports.UI.XtraReport._properties