Kampanya kartı içerisinde olmayan alanlar yada başka bir tabloda değer getirmek için SQLINFO fonksiyonu kullanılabilir.
Örnek : Sipariş yada Fatura içerisinde birden fazla malzemeye aynı indirimi yapmak için SQLINFO fonksiyonu kullanılması.
Malzeme Kodu Malzeme Adı
---------------------- ----------------------
PG.001 A
PG.002 B
PG.003 C
PG.004 D
PG.005 E
MS Kodu MS Açıklaması
---------------------- ----------------------
PG PG
Ortak kampanya uygulanacak malzeme kartları Malzeme sınıfı açılarak bağlantı yapılmalıdır.
MALZEME – MALZEME SINIF BAĞLANTISINI LISTELEYEN QUERY
SELECT
COUNT(*)
FROM
LG_010_ITEMS I (NOLOCK)
LEFT OUTER JOIN
LG_010_ITMCLSAS C (NOLOCK) ON I.LOGICALREF=C.CHILDREF AND C.UPLEVEL=0
LEFT OUTER JOIN
LG_010_ITEMS S (NOLOCK) ON C.PARENTREF=S.LOGICALREF
WHERE
I.CODE LIKE 'PG.001'
AND S.CODE LIKE 'PG'
QUERY’ NIN FONKSİYON HALİNE GETİRİLMESİ
CREATE FUNCTION [dbo].[FN_MS_KAMPANYA_010] (@MALZ VARCHAR(21), @SINIF VARCHAR(21))
RETURNS FLOAT
AS
BEGIN
DECLARE @LG_FN_LINETOPLAM FLOAT
SET @LG_FN_LINETOPLAM=(
SELECT
COUNT(*)
FROM
LG_010_ITEMS I (NOLOCK)
LEFT OUTER JOIN LG_010_ITMCLSAS C (NOLOCK) ON I.LOGICALREF=C.CHILDREF AND C.UPLEVEL=0
LEFT OUTER JOIN
LG_010_ITEMS S (NOLOCK) ON C.PARENTREF=S.LOGICALREF
WHERE
I.CODE LIKE @MALZ+'%'
AND S.CODE LIKE @SINIF+'%'
)
;
RETURN(@LG_FN_LINETOPLAM)
END
Not : Fonksiyon SQL’ de bir kez çalıştırılarak sql tarafına fonksiyon olarak eklenmesi sağlanmalıdır.
FONKSİYON’ UN QUERY İLE ÇALIŞTIRILMASI
SELECT DBO.FN_MS_KAMPANYA_010('PG.004','PG') FROM L_CAPIFIRM WHERE NR=10
FONKSİYON’ UN SQLINFO HALİNE GETİRİLMESİ
VAL(_SQLINFO("DBO.FN_MS_KAMPANYA_010('"+P101+"','PG')","L_CAPIFIRM","NR=10"))
Kampanya kartı içerisinde SQLINFO fonksiyonunun kullanılması
P101 : Malzeme Kodu bilgisidir.
Koşul alanında IF(V5>0,1,0) fonksiyonu kullanılarak V5 değişkeninden 1 değeri döndüğü zaman kampanya uygulanması sağlanmaktadır.
V5 değişkeni içerisinde bulunan PG alanı yerine malzemelerin bağlı bulunduğu kampanya uygulanacak üst malzeme sınıf kodu belirtilmelidir
Fatura içerisinde kampanya uygulandığı zaman;
şeklinde listelenmektedir.