Aşağıdaki sorgu ile tümü ve aranan kısmı getirmeye çalışıyoruz tümü kısmında sorun yok yalnız aranan kısmında sorun var ve bu durumu yetkilere göre de aynı zamanda getirmem gerekiyor, 0 ve 1 yetkileri tümü 3 olan ise kendi departmanına ait olanları getirecek. Yardımcı olması için tablo scriptlerini de ekledim, şimdiden teşekkür ederim. iyi günler.
https://www.filemail.com/d/nddkrgfgbnrfuio
Kod: Tümünü seç
DECLARE @BIRIMYETKI int=5
DECLARE @YETKI int=0
DECLARE @CIKISKONTROL int=1
DECLARE @TALEPBIRIMI VARCHAR(50)=NULL
DECLARE @TALEPKISI VARCHAR(50)=NULL
DECLARE @URUNACIKLAMA VARCHAR(50)='%masa%'
DECLARE @URUNMODELI VARCHAR(50) =NULL
SELECT SADE.ID
,[dbo].[InitCap](SADE.DEPARTMAN) AS DEPARTMAN
,SADE.FIRMA
,SADE.SICIL
,[dbo].[InitCap](SADE.ADISOYADI) AS ADISOYADI
,SADE.SASID
,SADE.SIRANO
,[dbo].[InitCap](SADE.TALEPEDENBIRIM ) AS TALEPEDENBIRIM
,[dbo].[InitCap](SADE.TALEPEDENKISI) AS TALEPEDENKISI
,SADE.TALEPTARIHI
,SADE.ADET
,[dbo].[InitCap](SADE.TALEPEDILENURUNACIKLAMASI) AS TALEPEDILENURUNACIKLAMASI
,[dbo].[InitCap](SADE.MARKAMODEL) AS MARKAMODEL
,SADE.FIYAT
,SADE.KDVDAHILHARIC
,SADE.DTIPI1
,SADE.DURUMU
,SADE.ALTDURUMU
,D.ALTDURUMACIKLAMA
,D.DURUMTIPI
,SADE.ANLIKTARIH
,SADE.GENEL_IP
,SADE.LOCAL_IP
,SADE.BILGISAYARADI
,SADE.BIRIMAMIRI
,PE.YETKI
,SADE.KOD1,SADE.KOD2,SADE.KOD3,SADE.KOD4,SADE.KOD5, SADE.KARTID
FROM SASDETAY SADE
left JOIN DURUMTIPLERI D ON (D.ALTDURUMU=SADE.ALTDURUMU) AND D.TURUTIPI=4
left join PERSONEL PE ON (PE.SICIL=SADE.SICIL) AND (SADE.FIRMA=PE.FIRMA)
WHERE
SADE.BIRIMAMIRI=
(case WHEN @YETKI=1 THEN
(select distinct SADE.BIRIMAMIRI from SASDETAY SADE
WHERE SADE.BIRIMAMIRI>=1 AND SADE.ALTDURUMU=3 AND SADE.FIRMA=PE.FIRMA AND @CIKISKONTROL=0)
WHEN @YETKI=3 THEN
(select distinct SADE.BIRIMAMIRI from SASDETAY SADE
WHERE SADE.BIRIMAMIRI=@BIRIMYETKI AND SADE.ALTDURUMU=1 AND SADE.FIRMA=PE.FIRMA AND @CIKISKONTROL=0 )
WHEN @YETKI=0 THEN
(select distinct SADE.BIRIMAMIRI from SASDETAY SADE
WHERE SADE.BIRIMAMIRI>=0 AND SADE.ALTDURUMU=2 AND SADE.FIRMA=PE.FIRMA AND @CIKISKONTROL=0 )
END)
AND
SADE.ALTDURUMU=
(case when @YETKI=1 THEN
(select distinct SADE.ALTDURUMU from SASDETAY SADE
WHERE SADE.ALTDURUMU=3 AND SADE.BIRIMAMIRI>=0
AND @CIKISKONTROL=0)
WHEN @YETKI=3 THEN
(select distinct SADE.ALTDURUMU from SASDETAY SADE
WHERE SADE.ALTDURUMU=1 AND SADE.BIRIMAMIRI=@BIRIMYETKI AND SADE.FIRMA=PE.FIRMA AND @CIKISKONTROL=0)
WHEN @YETKI=0 THEN
(select distinct SADE.ALTDURUMU from SASDETAY SADE
WHERE SADE.ALTDURUMU=2 AND SADE.BIRIMAMIRI>=0 AND SADE.FIRMA=PE.FIRMA AND @CIKISKONTROL=0)
END)
OR ( @YETKI=0 and SADE.BIRIMAMIRI>=0 AND @CIKISKONTROL=1 )
OR ( @YETKI=1 and SADE.BIRIMAMIRI>=0 AND @CIKISKONTROL=1 )
OR ( @YETKI=3 and SADE.BIRIMAMIRI=@BIRIMYETKI AND @CIKISKONTROL=1 )
AND SADE.TALEPEDILENURUNACIKLAMASI LIKE '%' +@URUNACIKLAMA+ '%'
AND SADE.MARKAMODEL LIKE '%'+ @URUNMODELI + '%'
AND SADE.TALEPEDENKISI LIKE '%'+ @TALEPKISI + '%'
AND SADE.TALEPEDENBIRIM LIKE '%'+ @TALEPBIRIMI + '%'