Kampanya Kartlarında SQLINFO Kullanımı

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

 

kampanyasql01
Ortak kampanya uygulanacak malzeme kartları Malzeme sınıfı açılarak bağlantı yapılmalıdır.
MALZEME – MALZEME SINIF BAÐLANTISINI LISTELEYEN QUERYSELECTCOUNT(*)

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″))

kampanyasql02
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
kampanyasql03
Fatura içerisinde kampanya uygulandığı zaman;
kampanyasql04
şeklinde listelenmektedir.