Widget | Dinamik Rapor

Tanım

Veritabanındaki istenilen bilgiyi SQL tipi ile sorgusu girilerek rapor çekmeye yarayan ve istenen tüm sayfalara eklenebilen widget eklentisidir. Gösterilmek istenen kolonlar "Kolonlar" kısmından ayarlanabilen, kısıt olarak "Parametreler" kısmından filtrelenebilen ve kullanıcıya bu bilgileri ekrana dökme ya da Excel, Word, Pdf olarak alabilme özelliği sunan bir widgettır.

Kullanımı

Özelleştirilebilir sistem sayfalarına ya da yeni oluşturulan sayfalara widget olarak eklenmektedir. Eklendikten sonra test amaçlı en altta verilen test girdileri ile kullanım sağlanabilinmektedir.
"Tasarım Modu" açıldığında "Sayfa Tasarımı Düzenle" özelliği ile sayfa layout üzerinden "Yeni Widget Ekle" ile eklenebilir.

Ekran

Görünüm

Tüm sayfalara eklenebilir widget bileşenidir. Belirlenen ayarlara göre cari rapor bilgisini vermektedir. Örnek raporumuz Stored Procedure ile çalışmaktadır. Parametre olarak Cari Kodu, Başlangıç ve Bitiş Tarihi alıp bu kısıtlara göre arama yapmaktadır. Ayarlar kısmında belirtilen 6 adet kolon bu kısıtlara göre dolmaktadır.


Ayarlar

Yetkiniz dahilinde Tasarım modu ile "Ayarlar" kısmından eklentinin parametre ekranı açılmaktadır.

  • Başlık Widget başlık bilgisi
  • SQL Sorgu Tipi SQL'de birden fazla; Store Procedure,View gibi sorgu tipleri vardır.Raporda gösterilmesini istediğiniz tip burada belirtilmektedir.
  • SQL Sorgu Kullanılacak olan sorgu burada belirtilmektedir. NOT: Bu kısımda where kısıtı kullanılmalıdır. (yoksa bile where 1=1 şeklinde yazılmalıdır. Aksi halde sorgu varsayılan olarak TBLCASABIT içinden çeker.)
  • Parametreler Veri filtresi için burada kısıtlar belirtilmektedir.
  • Kolonlar Raporda gösterilmek istenilen kolonlar burada belirtilmektedir. NOT: ColumnType değeri için 1 normal yazı, 2 buton ile yeni sekmede, 3 buton ile pop up olarak açılmayı sağlar.
  • NDS Tutar kısmınnda virgülden sonra gösterilmek istenen rakam sayısı burada belirlenmektedir.


SQL Sorgu

SQL sorgu kısmında kullanılan stored procedure ya da view ın içeriğinde;

  • StoreId,
  • BranchId,
  • UserId,
  • CurrentAccountCode,
  • FormData Xml bulunmalıdır.


StoreId kullanıcının o an ki mağaza bilgisini, BranchId şube bilgisini, UserId kullanıcı bilgisini, CurrentAccountCode o an ki carinin kodunu almaktadır. FormData parametresi ise birbiriyle senkron çalışan işlemler için gerekli parametreyi sağlamaktadır.
CREATE PROCEDURE [dbo].[procedure_name]
@StoreId VARCHAR(35),
@BranchId VARCHAR(35),
@UserId VARCHAR(35),
@CurrentAccountCode VARCHAR(35),
@FormData Xml
Şeklinde yaratılmaktadır.

Parametreler

  • Name kısıtı stored proceduredeki parametreyi etkilemektedir. 

    **Dinamik rapor ve Parametre (Kısıt) widget ayarlarında; verilen tarih kısıtları için "Parametreler" bölümünde "Name" alan isminin içinde büyük ya da küçük harflerle "TARIH" veya "DATE" kelimeleri geçmesi gerekmektedir. Aksi durumda, bu kısıtlar tarih formatında algılanmaz.
    **Dinamik rapor ve Parametre (Kısıt) widget ayarlarında; verilen ondalık kısıtları için "Parametreler" bölümünde "Name" alan isminin içinde büyük ya da küçük harflerle "ONDALIK" veya "DOUBLE" kelimeleri geçmesi gerekmektedir. Aksi durumda, bu kısıtlar ondalık formatında algılanmaz.

  • ColumnName ise veritabanındaki ilgili kolon adıdır. Örnekte geçirilen CARI_KOD parametresi parametreler kısmında CARI_KOD olarak verilmiş olup, veritabanındaki ilgili kolon ismi de CARI_KOD olduğundan bu şekilde kullanılmıştır.
  • Label parametresi raporda gösterilecek olan kolon başlığıdır. Buraya dil kodu da basılabilir.
  • DefaultValue alanına verilen değer boş gelen veriyi doldurmaya yönelik kullanılmaktadır.
  • Required true ise o kolonun boş bırakılamayacağı anlamındadır. False değeri alırsa boş bırakılabilir.
  • DataType kolon verisinin tipinin belirlendiği alandır. Bu alanlar ;
    • String(Metin) = 1,
    • Int(Tamsayı) = 2,
    • Date(Tarih) = 3,
    • Boolean(Doğru/Yanlış) = 4,
    • CurrentAccount (Cari)= 5,
    • ResellerCode(Plasiyer Kodu) = 6,
    • ResellerId (Plasiyer ID)= 7,
    • Inventory(Stok) = 8,
    • ProjectCode (Proje Kodu)= 9,
    • Salesman (Satıcı)= 10,
    • Invoice (Fatura)= 11,
    • WarehouseCode(Depo) = 12,
    • ReturnInvoices (İade Faturası)= 13,
    • SpecialCode1(Özel Kod1) = 14,
    • SpecialCode2 (Özel Kod2)= 15,
    • ConditionalCode (Koşul Kodu)= 16,
    • AllCurrentAccounts (Tüm Cariler)= 17,
    • Double (Ondalık) = 18

şeklinde tanımlanmıştır.

  • Operator veritabanında yapılan aramalarda kullanılan büyüklük, küçüklük, ya da eşitlik işlemlerinin belirlendiği alandır. Bunların kullanımı ise;
  • Eşitlik=1,
  • BüyükEşit=2,
  • KüçükEşit=3,
  • İçerir=4

şeklinde tanımlanmıştır. Örnek olarak cari kodu kolonunda "12" numarası geçen carileri aramak istiyorsanız operatör alanında 4'ü kullanırsak bu işlemi gerçekleştirecektir. Örneğimizde bitiş tarih kolonunda operatör=3 kullanılmıştır. Bu tarihe eşit ve küçük olan tarihleri getirmektedir. Başlangıç tarihinde ise büyük eşit görevi olan 2 numaralı alan başlangıç tarihine eşit ve büyük tarihleri getirmektedir.

Kolonlar

Kolonlar kısmında kolonun veritabanındaki karşılığı ve raporda görülen kolon başlık adı girilmiştir.

  • DisplayName dil kodu olarak da verilebilmektedir.
  • ColumnType ;
  • DataType=1,
  • Link=2,
  • ModalLink=3

Şeklinde tanımlanmıştır. Bu şekilde kolondaki veriye link verilmesi ya da modalda açılması sağlanmaktadır. Bunun için ColumnType alanına belirtilen değerlerin girilmesi yeterlidir. Kolonlara buton da eklenebilmektedir.

  • Url link alan kolonlara ya da eklenen butonlara gideceği adresin belirtildiği alandır. Eğer adres için parametre gerekiyorsa parametre ve değer ColumnData dizisi ile yollanmaktadır.
  • ColumnData parametre dizisidir. Url için gereken parametre "ParamName" ile belirlenir. Değer ise kolonlardaki ya da veritabanında hangi kolonda bulunuyorsa o kolon adını "ColumnName" ile belirtmek yeterlidir. Örneğin; "ColumnData": [{ "ParamName": "id", "ColumnName": "PAYMENT_ORDER_NO" } ]
  • IconStyle bu butonlara görünümü değiştirmek için kullanılmaktadır.
  • IsHidden ise "true" iken kolonu gizlemektedir.

 

Veritabanı İşlemleri


Uyarlamaya açık Sql sorguları kullanılmaktadır. Herhangi bir veritabanı sorgusu kullanılabilir.

Bağlı Modüller

  • Özelleştirilebilir sistem sayfaları ve yeni oluşturulan tüm sayfalara eklenip çalışabilmektedir.

 

Ornek 1


Örnek, cari kodu zorunlu olarak girilmekle birlikte, başlangıç ve bitiş tarihi filtreleri alarak arama yapan dinamik rapordur. Cari kodu alanı 'DataType' alanı 5 verilmiştir. Bu da bize cari rehberi kullanmamızı sağlamaktadır.

SQL Sorgu

exec PRTSP_TEST_CARI_HAREKETCARI_KOD,@FormData

Parametreler

[{
"Name": "CARI_KOD",
"ColumnName": "CARI_KOD",
"Label": "3D957E9",
"DefaultValue": "",
"Required": true,
"DataType": 5,
"Operator": 1
},



{
"Name": "TARIH1",
"ColumnName": "TARIH",
"Label": "7D83F15E",
"DefaultValue": "",
"Required": false,
"DataType": 3,
"Operator": 2
},
{
"Name": "TARIH2",
"ColumnName": "TARIH",
"Label": "4574AD00",
"DefaultValue": "",
"Required": false,
"DataType": 3,
"Operator": 3
}]

Kolonlar


[{"ColumnName":"CARI_KOD","DisplayName":"Cari Kodu"}]

View


CREATE PROCEDURE PRTSP_TEST_CARI_HAREKET
@BranchId  VARCHAR(35),
@CARI_KOD  VARCHAR(35),
@FormData Xml
AS
SELECT CARI_KOD,TARIH,BELGE_NO,ACIKLAMA,HKA,BORC,ALACAK FROM DENEME_VIEW_CARIHAREKET (NOLOCK) WHERE SUBE_KODU = @BranchId and CARI_KOD  = @CARI_KOD

Ornek 2


Bu örnek ise müşteri, durum, sipariş no, proje kodu, stok kodu, depo, başlangıç tarihi, bitiş tarihi filtreleri alıp buna göre raporlama yapmaktadır. Müşteri filtresi 'DataType' 5 olarak girildiği için cari rehber açılmaktadır. Aynı şekilde proje kodu, stok kodu, depo için de rehber kullanılmıştır.

SQL Sorgu

SELECT FATIRS_NO,CARI_KODU,CARI_ISIM, TARIH, GENELTOPLAM, STOK_KODU, STOK_ADI, DEPO_KODU, DURUM, KALEMDURUM FROM DENEME_DINAMIK_RAPOR2 (NOLOCK) WHERE SUBE_KODU = @BranchId

Parametreler

[{
"Name": "CARI_KODU",
"ColumnName": "CARI_KODU",
"Label": "Müşteri",
"DefaultValue": "",
"Required": true,
"DataType": 5,
"Operator": 1
},




{
"Name": "DURUM",
"ColumnName": "DURUM",
"Label": "Durum",
"DefaultValue": "",
"Required": false,
"DataType": 1,
"Operator": 1,
"DataSource" : [{"Text":" Hepsi", "Value":""},{"Text":"Beklemede", "Value":"Beklemede"},{"Text":"Faturalasmis", "Value":"Faturalasmis"},{"Text":"Kismi Yüklendi.", "Value":"Kismi Yüklendi."}]
},
{
"Name": "FATIRS_NO2",
"ColumnName": "FATIRS_NO",
"Label": "Sipariş No",
"DefaultValue": "",
"Required": false,
"DataType": 1,
"Operator": 1
},
{
"Name": "PROJE_KODU",
"ColumnName": "PROJE_KODU",
"Label": "Proje Kodu",
"DefaultValue": "",
"Required": false,
"DataType": 9,
"Operator": 1
} ,
{
"Name": "STOK_KODU",
"ColumnName": "STOK_KODU",
"Label": "Stok Kodu",
"DefaultValue": "",
"Required": false,
"DataType": 8,
"Operator": 1
},
{
"Name": "DEPO_KODU",
"ColumnName": "DEPO_KODU",
"Label": "Depo",
"DefaultValue": "",
"Required": false,
"DataType": 12,
"Operator": 1
},

{
"Name": "TARIH1",
"ColumnName": "TARIH",
"Label": "Başlangıç Tarihi",
"DefaultValue": "",
"Required": false,
"DataType": 3,
"Operator": 2
},
{
"Name": "TARIH2",
"ColumnName": "TARIH",
"Label": "Bitiş Tarihi",
"DefaultValue": "",
"Required": false,
"DataType": 3,
"Operator": 3
}]

Kolonlar


[{"ColumnName":"CARI_KOD","DisplayName":"Cari Kodu"}]

View


CREATE VIEW DENEME_DINAMIK_RAPOR2
AS
SELECT S.SUBE_KODU, S.FATIRS_NO, S.CARI_KODU, S.GENELTOPLAM,  S.TARIH TARIH, S.ODEMEGUNU, C.CARI_ISIM, C.PLASIYER_KODU, T.STOK_KODU, ST.STOK_ADI, S.PROJE_KODU ,T.DEPO_KODU,
(CASE WHEN (T.STHAR_GCMIK = T.FIRMA_DOVTUT) THEN 'Faturalaşmış'
                WHEN (T.FIRMA_DOVTUT = 0) THEN 'Beklemede'
                ELSE 'Kısmi Yüklendi.' END) as DURUM, CONCAT(CONVERT(varchar(20),CONVERT(int,T.STHAR_GCMIK)),'/',CONVERT(varchar(20),CONVERT(int,T.FIRMA_DOVTUT ))) AS KALEMDURUM
FROM TBLSIPAMAS S (NOLOCK)
JOIN TBLSIPATRA T (NOLOCK) ON S.FATIRS_NO = T.FISNO
JOIN TBLCASABIT C (NOLOCK) ON S.CARI_KODU = C.CARI_KOD
JOIN TBLSTSABIT ST (NOLOCK) ON ST.STOK_KODU = T.STOK_KODU

Ornek 3


3. örneğimiz de yine cari kodu,başlangıç ve bitiş tarihi filtreleri alıp, buna göre raporlama yapmaktadır. Son kolona ise buton eklenmiştir. Bu buton tıklanılan ödemenin detayını açmaktadır. Url kısmında adres belirtilmiştir. Butona tıklandığı zaman bu adrese gidecektir. Aldığı parametreler ise DataColumn'da verilmektedir.




SQL Sorgu

SELECT ACCOUNT_NAME,CC_NUMBER, CC_INSTALLMENT, CC_AMOUNT, PAYMENT_ORDER_NO FROM PRTV_PAYMENTREPORT (NOLOCK)
WHERE REQUEST_TYPE = 'GET'

Parametreler

[{
"Name": "ACCOUNT_CODE",
"ColumnName": "ACCOUNT_CODE",
"Label": "Cari Kodu",
"DefaultValue": "",
"Required": false,
"DataType": 5,
"Operator": 1
},



{
"Name": "TARIH1",
"ColumnName": "DATE",
"Label": "Başlangıç Tarihi",
"DefaultValue": "",
"Required": false,
"DataType": 3,
"Operator": 2
},
{
"Name": "TARIH2",
"ColumnName": "DATE",
"Label": "BitişTarihi",
"DefaultValue": "",
"Required": false,
"DataType": 3,
"Operator": 3
}]

Kolonlar


[{
"ColumnName": "PAYMENT_ORDER_NO",
"DisplayName": " Bilgi",
"ColumnType": 3,
"ColumnData": [{
"ParamName": "id",
"ColumnName": "PAYMENT_ORDER_NO"
} ],
"Url": "../../OrderFlow/Payment/PaymentDetail",
"IconStyle": "icon-info",
"LinkText": ""
}]

Ornek 4


Son örneğimizde ise cari kodu girerek tablodan veri çekilmektedir. Aynı sayfaya eklediğimiz grafik rapor da bu cari kodunu prosedure un içinde yazdığımız 'FormData' parametresi ile almaktadır. Bu parametre ile aldığı cari kodla raporu dinamik raporla birlikte senkron şekilde çizdirmektedir.Örnek olarak;
set @CurrentAccountCode= @FormData.value('(/WidgetFormParam/DataForm/
FormElement[@name="CARI_KOD"]/@formvalue)[1]','varchar(max)')

"Name" alanı için gerekli kısmı "Profiler" yardımıyla doldurabilirsiniz.

Rapora bastıktan sonra grafik rapor da yukarıda girilen kodu alıp buna göre raporlama yapmaktadır. Senkron bir şekilde raporlar çizilmektedirler.


SQL Sorgu

Rapor oluşturulduğu zaman otomatik olarak gelen sorgu.

Parametreler

Rapor oluşturulduğu zaman otomatik olarak gelen parametreler.

Kolonlar


Rapor oluşturulduğu zaman otomatik olarak gelen kolonlar.
Grafik raporda ise PRTSP_BORA_CHART_SALES_REPORT_DAILY kullanılarak 'Pie' çizdirilmiştir.

 

Ornek 5



NOT:
Dinamik Rapor içerisinde Javascript sahası (JS) desteklenmiştir.
Bu JS 'Rapor' butonuna tıklandığında çalışır.

ÖR:

$(document).ready(function ()
{
var StokDurum = 0.0;
$(".item-row").each(function( index ) {

var newval = parseFloat($( $( this ).find("td")[5]).text().replace('.','').replace(',','.'));
if(newval < 0.0){ $( $( this ).find("td")[5]).html("<div style='color:red;'><b>"+$($( this ).find("td")[5]).text()+"</b></div>"); }
if(newval == 0.0){ $( $( this ).find("td")[5]).html("<div style='color:#E07F2C;'><b>"+$($( this ).find("td")[5]).text()+"</b></div>"); }
if(newval > 0.0){ $( $( this ).find("td")[5]).html("<div style='color:green;'><b>"+$($( this ).find("td")[5]).text()+"</b></div>"); }

});

});



Page viewed 4052 times by 3 users since Nov 30, 2016