--Stok Kartında Tanımlanan Alış Fiyatları Baz Alınarak Hesaplanan Kar Oranı %80 ve Üzeri Olduğunda
--Satış Yapan Personelin Pirim Oranında Prim Hesaplayan Sql Sorgusu




SELECT TARIH [Tarih], SAAT [Saat], STOKBARKOD [Barkodu], STOKKODU [Stok Kodu], STOKADI [Stok Adı],
ANAGRUPADI [AnaGrup], ALTGRUPADI [AltGrup], CARIKODU [Cari Kodu], CARIADI [Cari Adı],
PERSONELKODU [Personel Kodu ],PERSONELADI [Personel Adı],PRORAN [Prim Oranı], HARTIPI [Normal/İade],
ESERINO [SeriNo], ESIRANO [SıraNo],KDV [Kdv Oranı], ALISF1 [Birim Maliyet],
MIKTAR [Miktar], FIYAT [Fiyat], TUTAR [Tutar],
ARATOPLAM [Ara Toplam], INDTOPLAM [İndirim Toplam], KDVTUTARI [Kdv Toplam],
NETTUTAR [Net Satış Toplamı], DTURU [Döviz], DKURU [Kur], NETTLTUTAR [Net Satış Toplamı TL],
ALISF1*MIKTAR [Toplam Maliyet TL],

NETTLTUTAR-(ALISF1*MIKTAR)[Kar/Zarar TL],

--Maliyet Büyükse Sıfırdan Kar/Maliyet*100 = Kar Oranı
( CASE WHEN (ALISF1*MIKTAR )>0 THEN
((NETTLTUTAR-(ALISF1*MIKTAR)) / (ALISF1*MIKTAR )) *100 ELSE 0 END) [Kar Oranı],
--Kar ORanı %80 den Büyükse Net Satış Tutarından Personele Tanımlı Oran Kadar Prim Ver
--(Maliyet Girilmemişse Verme)
(CASE WHEN
( CASE WHEN (ALISF1*MIKTAR )>0 THEN
((NETTLTUTAR-(ALISF1*MIKTAR)) / (ALISF1*MIKTAR )) *100 ELSE 0 END) >=80 THEN
(NETTLTUTAR/100)*PRORAN ELSE 0 END) [Personel Primi TL]


FROM (
SELECT

SH.TARIH TARIH, dbo.fn_SaatBul (SH.SAAT) SAAT,
SH.BARKODNO STOKBARKOD,
ST.KODU STOKKODU,ST.ADI STOKADI,
STA.ADI ANAGRUPADI,
STAL.ADI ALTGRUPADI,
C.KODU CARIKODU,C.ADI CARIADI,
P.KODU PERSONELKODU,P.ADI PERSONELADI,P.PRORAN,
S.STURU,SH.HARTIPI,
S.ESERINO,S.ESIRANO,SH.KDV,
ST.ALISF1,
SH.MIKTAR,
SH.FIYAT,
SH.TUTAR,
SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ARATOPLAM,
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3) INDTOPLAM,
((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1)) -(
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3)))
* SH.KDV/100
KDVTUTARI,
(((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))* SH.KDV/100 )
+
(((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))) NETTUTAR
,SH.DTURU,SH.DKURU,
(((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))* SH.KDV/100 )
+
(((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))) NETTLTUTAR
FROM SATIS AS S
INNER JOIN SATISHAR AS SH ON S.COUNTER=SH.FCOUNTER
LEFT JOIN STOK AS ST ON SH.STOK=ST.KODU
LEFT OUTER JOIN STOKANAGRUP STA ON ST.ANAGRUP=STA.KODU
LEFT OUTER JOIN STOKALTGRUP STAL ON ST.ALTGRUP=STAL.KODU
LEFT OUTER JOIN CARI AS C ON S.CARIKODU=C.KODU
LEFT OUTER JOIN PERSONEL AS P ON SH.PLASIYER1=P.KODU
WHERE S.STURU='Satış' AND SH.HARTIPI='N'

UNION ALL
select
SH.TARIH TARIH, dbo.fn_SaatBul (SH.SAAT) SAAT,
SH.BARKODNO STOKBARKOD,
ST.KODU STOKKODU,ST.ADI STOKADI,
STA.ADI ANAGRUPADI,
STAL.ADI ALTGRUPADI,
C.KODU CARIKODU,C.ADI CARIADI,
P.KODU PERSONELKODU,P.ADI PERSONELADI,P.PRORAN,
S.STURU,SH.HARTIPI,
S.ESERINO,S.ESIRANO,SH.KDV,
ST.ALISF1,
SH.MIKTAR,
SH.FIYAT,
SH.TUTAR,
SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ARATOPLAM,
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3) INDTOPLAM,
((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1)) -(
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3)))
* SH.KDV/100
KDVTUTARI,
(((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))* SH.KDV/100 )
+
(((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))) NETTUTAR
,SH.DTURU,SH.DKURU,
(((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))* SH.KDV/100 )
+
(((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1))-
[dbo].[fn_SatisIndToplam] ((SH.TLTUTAR/(dbo.fn_Bolme(SH.KDV,100)+1) ),SH.IND1,SH.IND2,S.IND1,S.IND2,S.IND3))) NETTLTUTAR
FROM SATIS AS S
INNER JOIN SATISHAR AS SH ON S.COUNTER=SH.FCOUNTER
LEFT JOIN STOK AS ST ON SH.STOK=ST.KODU
LEFT OUTER JOIN STOKANAGRUP STA ON ST.ANAGRUP=STA.KODU
LEFT OUTER JOIN STOKALTGRUP STAL ON ST.ALTGRUP=STAL.KODU
LEFT OUTER JOIN CARI AS C ON S.CARIKODU=C.KODU
LEFT OUTER JOIN PERSONEL AS P ON SH.PLASIYER1=P.KODU
WHERE S.STURU='Satış' AND SH.HARTIPI='I'

) AS TBL ORDER BY TARIH,SAAT