SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER   PROCEDURE [dbo].[ITEMFIYATOKU]
(
@ItemID int,
@SubeID int,
@CariID int,
@HYatiyor bit,
@Tarih datetime,
@KrmPaketi bit,
@SGKurulusuVar bit,
@FiyatProfilID int,
@TarifeID int OUTPUT,
@DovizKodu nvarchar(5) OUTPUT,
@TarifeFiyat decimal(19,4) OUTPUT,
@OdemeFiyat decimal(19,4) OUTPUT,
@KurumFiyat decimal(19,4) OUTPUT,
@TrfIndTutar decimal(19,4) OUTPUT,
@KrmIndTutar decimal(19,4) OUTPUT,
@SGFiyat decimal(19,4) OUTPUT,
@MaliyetFiyat decimal(19,4) OUTPUT,
@TemelFiyatBirim decimal(19,4) OUTPUT,
@SigortaliTuru smallint,
@DrID int,
@SGTamamlayici bit OUTPUT
)
AS
DECLARE 
   @ItemGrupID int, 
   @ItemTuruID smallint, 
   @IFYTHASTANEFYTSINIRLI bit, 
   @HastaneFiyat decimal(19,4), 
   @ProfilFiyat decimal(19,4), 
   @YINDYUZDE decimal(5,2), 
   @AINDYUZDE decimal(5,2), 
   @PINDYUZDE decimal(5,2), 
   @YKRMINDYUZDE decimal(5,2), 
   @AKRMINDYUZDE decimal(5,2), 
   @PKRMINDYUZDE decimal(5,2), 
   @YFRKINDYUZDE decimal(5,2), 
   @AFRKINDYUZDE decimal(5,2), 
   @PFRKINDYUZDE decimal(5,2),
   @YFRKEKTUTAR decimal(19,4), 
   @AFRKEKTUTAR decimal(19,4), 
   @PFRKEKTUTAR decimal(19,4),
   @YKRMODEYUZDE decimal(5,2), 
   @AKRMODEYUZDE decimal(5,2),
   @PKRMODEYUZDE decimal(5,2),
   @YSGODEYUZDE decimal(5,2), 
   @ASGODEYUZDE decimal(5,2),
   @PSGODEYUZDE decimal(5,2),
   @UygFiyatTurID int, 
   @KrmFiyatTurID int, 
   @SGFiyatTurID int,
   @UYGFYKATSAYI decimal(19,4), 
   @KRMFYKATSAYI decimal(19,4),  
   @SGFYKATSAYI decimal(19,4),
   @UygFiyatDovizKodu nvarchar(5), 
   @KurumFiyatDovizKodu nvarchar(5),
   @SGFiyatDovizKodu nvarchar(5),
   --@TemelFiyatBirim decimal(19,4), 
   @TemelKrmFiyatBirim decimal(19,4),
   @TemelSGFiyatBirim decimal(19,4), 
   @YUygFiyat decimal(19,4), 
   @AUygFiyat decimal(19,4), 
   @PUygFiyat decimal(19,4),
   @YKurumFiyat decimal(19,4), 
   @AKurumFiyat decimal(19,4), 
   @PKurumFiyat decimal(19,4),
   @YSGFiyat decimal(19,4), 
   @ASGFiyat decimal(19,4),
   @PSGFiyat decimal(19,4),
   @YOdemeFiyat decimal(19,4), 
   @AOdemeFiyat decimal(19,4),
   @POdemeFiyat decimal(19,4),
   @ItemFiyat decimal(19,4), 
   @ItemFiyat1 decimal(19,4), 
   @ItemFiyat2 decimal(19,4), 
   @ItemFiyat3 decimal(19,4), 
   @ItemFiyat4 decimal(19,4), 
   @ItemFiyat5 decimal(19,4),
   @ItemFiyat6 decimal(19,4),
   @ItemMaliyetFiyat decimal(19,4),
   @HSTFYKATSAYI decimal(19,4), 
   @NegatifHstFiyat bit, 
   @Kur Float, 
   @Kur1 Float, 
   @Kur2 Float,
   @KutuIciAdet decimal(9,2),
   @IndirimliFiyat bit, 
   @Saat datetime,
   @HaftaSonu bit,
   @MedulaKullaniyor bit,
   @UygFiyatFormul nvarchar(100),
   @KrmFiyatFormul nvarchar(100),
   @SGFiyatFormul nvarchar(100),
   @SigortaliTuruFarkliFiyat bit,
   @DrFarkliFiyat bit,
   @TarifeItemSayi smallint, 
   @TarifeItemGrupSayi smallint
   
SELECT @ItemFiyat = ITEMFIYATI, @ItemFiyat1 = ITEMFIYATI1, @ItemFiyat2 = ITEMFIYATI2, 
       @ItemFiyat3 = ITEMFIYATI3, @ItemFiyat4 = ITEMFIYATI4, @ItemFiyat5 = ITEMFIYATI5, 
       @ItemFiyat6 = ITEMFIYATI6, @ItemGrupID = ITEMGRUPID, @KutuIciAdet = KUTUICIADET, 
       @ItemTuruID = ITEMTURUID, @ItemMaliyetFiyat = MALIYET 
   From TITEM 
   Where ITEMID = @ItemID
IF @@ROWCOUNT = 0 
BEGIN
   RAISERROR('İşlem kaydı bulunamadı',16,1)
   RETURN 1
END

IF @ItemTuruID NOT IN (3, 5)
  SET @KutuIciAdet = 1

SET @HastaneFiyat = @ItemFiyat

IF @KutuIciAdet IS NULL OR @KutuIciAdet <= 0 
BEGIN
   RAISERROR('İşlemin kutu içi adedi hatalı!',16,1)
   RETURN 2
END

SET @MaliyetFiyat = @ItemMaliyetFiyat / ISNULL(@KutuIciAdet,1) 

SET @Saat = @Tarih - FLOOR(CAST(@Tarih AS FLOAT)) - 2  
-- Delphi de saatlerin tarihi 1899-12-30 olduğu için 2 çıkarılıyor.

SET DATEFIRST 1 -- Pazartesi haftanın ilk günü

if DatePart(dw,@Tarih) = 7 
   SET @HaftaSonu = 1
ELSE
   SET @HaftaSonu = 0

SELECT @TarifeID = KURUMTARIFE.TARIFEID, @IndirimliFiyat = INDIRIMLIFYT 
FROM KURUMTARIFE INNER JOIN CARI ON KURUMTARIFE.KURUMID = CARI.CARIID
WHERE KURUMID = @CariID AND SUBEID = @SubeID AND HAFTASONU = @HaftaSonu AND
      (((BASLAMASAAT < BITISSAAT) AND (BASLAMASAAT <= @SAAT AND BITISSAAT > @SAAT)) OR 
       ((BASLAMASAAT > BITISSAAT) AND (BASLAMASAAT <= @SAAT OR  BITISSAAT > @SAAT))) 

IF @@ROWCOUNT =0
BEGIN
   SELECT @TarifeID = TARIFEID, @IndirimliFiyat = INDIRIMLIFYT from CARI Where CARIID= @CariID 
   IF @@ROWCOUNT = 0
   BEGIN
      RAISERROR('Kurum kaydı bulunamadı',16,1)
      RETURN 3
   END
END 

IF @TarifeID IS NULL
BEGIN
   RAISERROR('Kurum için tarife girilmemiş',16,1)
   RETURN 4
END 

SELECT @UygFiyatTurID = FIYATTURID, @KrmFiyatTurID = KRMFIYATTURID, @SGFiyatTurID = SGFIYATTURID, @DovizKodu = DOVIZKODU, @IFYTHASTANEFYTSINIRLI = IFYTHASTANEFYTSINIRLI, @MedulaKullaniyor = MEDULA, 
       @UygFiyatFormul = FIYATFORMUL, @KrmFiyatFormul = KURUMFIYATFORMUL, @SGFiyatFormul = SGFIYATFORMUL, @SigortaliTuruFarkliFiyat = SIGORTALITURUFARKLIFIYAT, @DrFarkliFiyat = DRFARKLIFIYAT,
       @SGTamamlayici = SGTAMAMLAYICI
from TTARIFE 
Where TARIFEID=@TarifeID
IF @@ROWCOUNT = 0 
BEGIN
   RAISERROR('Tarife kaydı bulunamadı',16,1)
   RETURN 5
END
-- Fiyat Profili varsa okunsun
IF (@MedulaKullaniyor=0) AND (ISNULL(@FiyatProfilID,0)<>0) 
   EXEC dbo.ITEMFIYATOKUPROFIL @ItemId,@ItemGrupId,@FiyatProfilID,@ProfilFiyat OUTPUT
 
IF @IFYTHASTANEFYTSINIRLI = 1 
BEGIN
   SET @Kur = 1
   IF @DovizKodu <> 'TL'
   BEGIN
      SELECT @Kur = KUR3 FROM DOVIZISL WHERE KODU = @DovizKodu AND TARIH = dbo.TARIHAL(@Tarih)
      IF @@ROWCOUNT = 0 
      BEGIN
         RAISERROR('Günlük kur girilmemiş!',16,1)   
         RETURN 6
      END
      IF @Kur = 0 
      BEGIN
         RAISERROR('Günlük kur girilmemiş!',16,1)   
         RETURN 6
      END
   END
   SET @HastaneFiyat =  @HastaneFiyat / @Kur
   SET @Kur = NULL
END

IF ((@UygFiyatTurID IS NULL) OR (@UygFiyatTurID<0) OR (@UygFiyatTurID>6)) AND (@UygFiyatFormul IS NULL)
BEGIN
   RAISERROR('Varsayılan Toplam Fiyat Baz Fiyat Türü Hatalı',16,1)
   RETURN 7
END

IF ((@KrmFiyatTurID IS NULL) OR (@KrmFiyatTurID<0) OR (@KrmFiyatTurID>6)) AND (@KrmFiyatFormul IS NULL)
BEGIN
   RAISERROR('Varsayılan Kurum Fiyatı Baz Fiyat Türü Hatalı',16,1)
   RETURN 8
END

IF (@SGKurulusuVar = 1) AND ((@SGFiyatTurID IS NULL) OR (@SGFiyatTurID<0) OR (@SGFiyatTurID>6)) AND (@SGFiyatFormul IS NULL)
BEGIN
   RAISERROR('Varsayılan Sosyal Güvenlik Fiyatı Baz Fiyat Türü Hatalı',16,1)
   RETURN 9
END

SET @Kur = 1

SET @TarifeItemSayi = 0

IF @SigortaliTuruFarkliFiyat = 1 AND @SigortaliTuru IS NOT NULL AND (@DrFarkliFiyat = 0 OR @DrId IS NULL)
BEGIN
	SELECT @YUygFiyat=TIYFIYAT,  
		   @AUygFiyat =TIAFIYAT,
		   @PUygFiyat =TIPFIYAT,
		   @YKurumFiyat=TIYKRMFIYAT, 
		   @AKurumFiyat=TIAKRMFIYAT,
		   @PKurumFiyat=TIPKRMFIYAT,
		   @YOdemeFiyat=TIYKRMFIYAT * TIYKRMODEYUZDE/100, 
		   @AOdemeFiyat=TIAKRMFIYAT * TIAKRMODEYUZDE / 100,
		   @POdemeFiyat=TIPKRMFIYAT * TIPKRMODEYUZDE / 100,
		   @YSGFiyat=TIYSGFIYAT, 
		   @ASGFiyat=TIASGFIYAT,
		   @PSGFiyat=TIPSGFIYAT,
		   @NegatifHstFiyat = TINEGHSTFIYAT  
	from TARIFEITEM 
	Where TARIFEID = @TarifeID AND ITEMID=@ItemID AND 
		  DRID IS NULL AND SIGORTALITURU = @SigortaliTuru
	SET @TarifeItemSayi = @@ROWCOUNT 
END		 
ELSE	 
IF (@SigortaliTuruFarkliFiyat = 0 OR @SigortaliTuru IS NULL) AND @DrFarkliFiyat = 1 AND @DrId IS NOT NULL
BEGIN
	SELECT @YUygFiyat=TIYFIYAT,  
		   @AUygFiyat =TIAFIYAT,
		   @PUygFiyat =TIPFIYAT,
		   @YKurumFiyat=TIYKRMFIYAT, 
		   @AKurumFiyat=TIAKRMFIYAT,
		   @PKurumFiyat=TIPKRMFIYAT,
		   @YOdemeFiyat=TIYKRMFIYAT * TIYKRMODEYUZDE/100, 
		   @AOdemeFiyat=TIAKRMFIYAT * TIAKRMODEYUZDE / 100,
		   @POdemeFiyat=TIPKRMFIYAT * TIPKRMODEYUZDE / 100,
		   @YSGFiyat=TIYSGFIYAT, 
		   @ASGFiyat=TIASGFIYAT,
		   @PSGFiyat=TIPSGFIYAT,
		   @NegatifHstFiyat = TINEGHSTFIYAT  
	from TARIFEITEM 
	Where TARIFEID = @TarifeID AND ITEMID=@ItemID AND 
		 DRID = @DrId AND SIGORTALITURU IS NULL
	SET @TarifeItemSayi = @@ROWCOUNT 
END		 
ELSE
IF @SigortaliTuruFarkliFiyat = 1 AND @SigortaliTuru IS NOT NULL AND @DrFarkliFiyat = 1 AND @DrId IS NOT NULL
BEGIN
	SELECT @YUygFiyat=TIYFIYAT,  
		   @AUygFiyat =TIAFIYAT,
		   @PUygFiyat =TIPFIYAT,
		   @YKurumFiyat=TIYKRMFIYAT, 
		   @AKurumFiyat=TIAKRMFIYAT,
		   @PKurumFiyat=TIPKRMFIYAT,
		   @YOdemeFiyat=TIYKRMFIYAT * TIYKRMODEYUZDE/100, 
		   @AOdemeFiyat=TIAKRMFIYAT * TIAKRMODEYUZDE / 100,
		   @POdemeFiyat=TIPKRMFIYAT * TIPKRMODEYUZDE / 100,
		   @YSGFiyat=TIYSGFIYAT, 
		   @ASGFiyat=TIASGFIYAT,
		   @PSGFiyat=TIPSGFIYAT,
		   @NegatifHstFiyat = TINEGHSTFIYAT  
	from TARIFEITEM 
	Where TARIFEID = @TarifeID AND ITEMID = @ItemID AND 
	      DRID = @DrId AND SIGORTALITURU = @SigortaliTuru
	SET @TarifeItemSayi = @@ROWCOUNT 
	
	IF @TarifeItemSayi = 0
	BEGIN
		SELECT @YUygFiyat=TIYFIYAT,  
			   @AUygFiyat =TIAFIYAT,
			   @PUygFiyat =TIPFIYAT,
			   @YKurumFiyat=TIYKRMFIYAT, 
			   @AKurumFiyat=TIAKRMFIYAT,
			   @PKurumFiyat=TIPKRMFIYAT,
			   @YOdemeFiyat=TIYKRMFIYAT * TIYKRMODEYUZDE/100, 
			   @AOdemeFiyat=TIAKRMFIYAT * TIAKRMODEYUZDE / 100,
			   @POdemeFiyat=TIPKRMFIYAT * TIPKRMODEYUZDE / 100,
			   @YSGFiyat=TIYSGFIYAT, 
			   @ASGFiyat=TIASGFIYAT,
			   @PSGFiyat=TIPSGFIYAT,
			   @NegatifHstFiyat = TINEGHSTFIYAT  
		from TARIFEITEM 
		Where TARIFEID = @TarifeID AND ITEMID = @ItemID AND 
			  DRID = @DrId AND SIGORTALITURU IS NULL
		SET @TarifeItemSayi = @@ROWCOUNT 
	END
	
	IF @TarifeItemSayi = 0
	BEGIN
		SELECT @YUygFiyat=TIYFIYAT,  
			   @AUygFiyat =TIAFIYAT,
			   @PUygFiyat =TIPFIYAT,
			   @YKurumFiyat=TIYKRMFIYAT, 
			   @AKurumFiyat=TIAKRMFIYAT,
			   @PKurumFiyat=TIPKRMFIYAT,
			   @YOdemeFiyat=TIYKRMFIYAT * TIYKRMODEYUZDE/100, 
			   @AOdemeFiyat=TIAKRMFIYAT * TIAKRMODEYUZDE / 100,
			   @POdemeFiyat=TIPKRMFIYAT * TIPKRMODEYUZDE / 100,
			   @YSGFiyat=TIYSGFIYAT, 
			   @ASGFiyat=TIASGFIYAT,
			   @PSGFiyat=TIPSGFIYAT,
			   @NegatifHstFiyat = TINEGHSTFIYAT  
		from TARIFEITEM 
		Where TARIFEID = @TarifeID AND ITEMID = @ItemID AND 
			  DRID IS NULL AND SIGORTALITURU = @SigortaliTuru 
		SET @TarifeItemSayi = @@ROWCOUNT 
	END
END	

IF @TarifeItemSayi = 0
BEGIN
	SELECT @YUygFiyat=TIYFIYAT,  
		   @AUygFiyat =TIAFIYAT,
		   @PUygFiyat =TIPFIYAT,
		   @YKurumFiyat=TIYKRMFIYAT, 
		   @AKurumFiyat=TIAKRMFIYAT,
		   @PKurumFiyat=TIPKRMFIYAT,
		   @YOdemeFiyat=TIYKRMFIYAT * TIYKRMODEYUZDE/100, 
		   @AOdemeFiyat=TIAKRMFIYAT * TIAKRMODEYUZDE / 100,
		   @POdemeFiyat=TIPKRMFIYAT * TIPKRMODEYUZDE / 100,
		   @YSGFiyat=TIYSGFIYAT, 
		   @ASGFiyat=TIASGFIYAT,
		   @PSGFiyat=TIPSGFIYAT,
		   @NegatifHstFiyat = TINEGHSTFIYAT  
	from TARIFEITEM 
	Where TARIFEID = @TarifeID AND ITEMID=@ItemID AND 
		 SIGORTALITURU IS NULL AND DRID IS NULL
	SET @TarifeItemSayi = @@ROWCOUNT 
END

IF @TarifeItemSayi > 0
BEGIN
   IF (@KrmPaketi=1)
   BEGIN
      SET @TarifeFiyat = @PUygFiyat / @KutuIciAdet
      SET @KurumFiyat = @PKurumFiyat / @KutuIciAdet
      SET @OdemeFiyat = @POdemeFiyat / @KutuIciAdet
      SET @SGFiyat = @PSGFiyat / @KutuIciAdet
   END
   ELSE
      IF (@HYatiyor=1)
      BEGIN
         SET @TarifeFiyat = @YUygFiyat / @KutuIciAdet
         SET @KurumFiyat = @YKurumFiyat / @KutuIciAdet
         SET @OdemeFiyat = @YOdemeFiyat / @KutuIciAdet
         SET @SGFiyat = @YSGFiyat / @KutuIciAdet
      END
      ELSE
      BEGIN
         SET @TarifeFiyat = @AUygFiyat / @KutuIciAdet
         SET @KurumFiyat = @AKurumFiyat / @KutuIciAdet
         SET @OdemeFiyat = @AOdemeFiyat / @KutuIciAdet
         SET @SGFiyat = @ASGFiyat / @KutuIciAdet
      END
   
   IF @SGKurulusuVar = 0  
      SET @SGFiyat = 0

   IF (@NegatifHstFiyat IS NULL OR @NegatifHstFiyat=0) AND @KurumFiyat > @TarifeFiyat
   BEGIN
      RAISERROR('Kurum Fiyatı, Toplam fiyattan yüksek! Tarifenizi kontrol ediniz. ',16,1)   
      RETURN 10
   END

   IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1) AND (@SGFiyat > @KurumFiyat)
   BEGIN
      RAISERROR('Sosyal Güvenlik Fiyatı, kurum fiyatından yüksek! Tarifenizi kontrol ediniz. ',16,1)   
      RETURN 11
   END
      
   IF @IFYTHASTANEFYTSINIRLI = 1
   BEGIN
      IF @TarifeFiyat > @HastaneFiyat 
         SET @TarifeFiyat = @HastaneFiyat
      IF @KurumFiyat > @HastaneFiyat
      BEGIN 
         SET @OdemeFiyat = @HastaneFiyat * @OdemeFiyat / @KurumFiyat
         SET @KurumFiyat = @HastaneFiyat
      END
   END

   IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
   BEGIN
	  IF @SGFiyat >= @KurumFiyat 
	  BEGIN
		SET @KurumFiyat = 0
		SET @OdemeFiyat = 0
	  END
	  ELSE 
	  BEGIN
		SET @OdemeFiyat = (@KurumFiyat - @SGFiyat) * @OdemeFiyat / @KurumFiyat
		SET @KurumFiyat = @KurumFiyat - @SGFiyat
	  END
   END

   IF (@MedulaKullaniyor=0) AND (ISNULL(@FiyatProfilID,0)<>0) AND (@ProfilFiyat IS NOT NULL) 
     SET @TarifeFiyat=@ProfilFiyat

   IF (@MedulaKullaniyor=0) AND (ISNULL(@FiyatProfilID,0)<>0) AND (@ProfilFiyat IS NOT NULL) 
     SET @TemelFiyatBirim=@ProfilFiyat
   ELSE IF LTRIM(@UygFiyatFormul)<>''	
   BEGIN
     EXEC dbo.ITEMFIYATOKUTARIFEFORMUL @UygFiyatFormul,@ItemId,@TemelFiyatBirim OUTPUT			
     SET @UYGFYKATSAYI=1
   END
   ELSE IF (@UygFiyatTurID=0) SET @TemelFiyatBirim=@ItemFiyat 
   ELSE IF (@UygFiyatTurID=1) SET @TemelFiyatBirim=@ItemFiyat1 
   ELSE IF (@UygFiyatTurID=2) SET @TemelFiyatBirim=@ItemFiyat2 
   ELSE IF (@UygFiyatTurID=3) SET @TemelFiyatBirim=@ItemFiyat3 
   ELSE IF (@UygFiyatTurID=4) SET @TemelFiyatBirim=@ItemFiyat4 
   ELSE IF (@UygFiyatTurID=5) SET @TemelFiyatBirim=@ItemFiyat5 
   ELSE IF (@UygFiyatTurID=6) SET @TemelFiyatBirim=@ItemFiyat6 
   
   IF @IndirimliFiyat = 0
   BEGIN
      -- Normal fiyatları bulmak gerekli
      --SELECT @UYGFYKATSAYI = FTKATSAYI, @UygFiyatDovizKodu = DOVIZ from TFIYATTURU Where FIYATTURID=@UygFiyatTurID
      SELECT @UYGFYKATSAYI = KATSAYI, @UygFiyatDovizKodu = DOVIZ FROM TFIYATTURU INNER JOIN TFIYATTURUDETAY ON 
            TFIYATTURUDETAY.FIYATTURID=TFIYATTURU.FIYATTURID Where TFIYATTURU.FIYATTURID=@UygFiyatTurID AND 
            (TFIYATTURUDETAY.BASLAMATARIH<=dbo.TARIHAL(@Tarih) AND (TFIYATTURUDETAY.BITISTARIH IS NULL OR (TFIYATTURUDETAY.BITISTARIH>=dbo.TARIHAL(@Tarih))))
      IF @@ROWCOUNT = 0
      BEGIN
         RAISERROR('Varsayılan Toplam Fiyat Baz Fiyat Türü Kaydı Bulunamadı!',16,1)
         RETURN 12
      END
         
      -- Eğer item grup bazında farklı bir kat sayı uygulanıyorsa o katsayı kulanılmalı
      SELECT @UYGFYKATSAYI = FTIGKATSAYI from FIYATTURUITEMGRUP Where FIYATTURID=@UygFiyatTurID AND ITEMGRUPID = @ItemGrupID
      
      IF @KrmFiyatTurID IS NOT NULL
      BEGIN
         IF @UygFiyatTurID = @KrmFiyatTurID
         BEGIN
            SET @KRMFYKATSAYI = @UYGFYKATSAYI
            SET @KurumFiyatDovizKodu = @UygFiyatDovizKodu
         END
         ELSE
         BEGIN
            --SELECT @KRMFYKATSAYI = FTKATSAYI, @KurumFiyatDovizKodu = DOVIZ FROM TFIYATTURU Where FIYATTURID=@KrmFiyatTurID
            SELECT @KRMFYKATSAYI = KATSAYI,  @KurumFiyatDovizKodu = DOVIZ FROM TFIYATTURU INNER JOIN TFIYATTURUDETAY ON 
            TFIYATTURUDETAY.FIYATTURID=TFIYATTURU.FIYATTURID Where TFIYATTURU.FIYATTURID=@KrmFiyatTurID AND 
            (TFIYATTURUDETAY.BASLAMATARIH<=dbo.TARIHAL(@Tarih) AND (TFIYATTURUDETAY.BITISTARIH IS NULL OR (TFIYATTURUDETAY.BITISTARIH>=dbo.TARIHAL(@Tarih))))
            IF @@ROWCOUNT = 0
            BEGIN
               RAISERROR('Varsayılan Kurum Fiyat Baz Fiyat Türü Kaydı Bulunamadı!',16,1)
               RETURN 13
            END
            
            -- Eğer item grup bazında farklı bir kat sayı uygulanıyorsa o katsayı kulanılmalı
            SELECT @KRMFYKATSAYI = FTIGKATSAYI from FIYATTURUITEMGRUP Where FIYATTURID=@KrmFiyatTurID AND ITEMGRUPID = @ItemGrupID
         
            IF @UygFiyatDovizKodu <> @KurumFiyatDovizKodu
            BEGIN
               RAISERROR('Varsayılan Kurum Baz Fiyat Türünün Dövizi,  Varsayılan Toplam Fiyat Baz Fiyat Türünün Dövizinden Farklı Olamaz!',16,1)
               RETURN 14
            END
         END
      END
      ELSE
         SET @KRMFYKATSAYI=0
            	  
      IF @KrmFiyatTurID IS NOT NULL
      BEGIN
		 IF LTRIM(@KrmFiyatFormul)<>''	
		 BEGIN
		   EXEC dbo.ITEMFIYATOKUTARIFEFORMUL @KrmFiyatFormul,@ItemId,@TemelKrmFiyatBirim OUTPUT			
		   SET @KRMFYKATSAYI=1
		 END
    	 ELSE IF (@KrmFiyatTurID=0) SET @TemelKrmFiyatBirim=@ItemFiyat 
         ELSE IF (@KrmFiyatTurID=1) SET @TemelKrmFiyatBirim=@ItemFiyat1 
         ELSE IF (@KrmFiyatTurID=2) SET @TemelKrmFiyatBirim=@ItemFiyat2 
         ELSE IF (@KrmFiyatTurID=3) SET @TemelKrmFiyatBirim=@ItemFiyat3 
         ELSE IF (@KrmFiyatTurID=4) SET @TemelKrmFiyatBirim=@ItemFiyat4 
         ELSE IF (@KrmFiyatTurID=5) SET @TemelKrmFiyatBirim=@ItemFiyat5 
         ELSE IF (@KrmFiyatTurID=6) SET @TemelKrmFiyatBirim=@ItemFiyat6 
         
         IF @TemelKrmFiyatBirim IS NULL 
         BEGIN
              RAISERROR('Fiyat Listesindeki İşlem Kurum Fiyatı Hatalı',16,1)
            RETURN 15
         END
      END
      ELSE      
         SET @TemelKrmFiyatBirim=0
      
      -- PRINT 'Temel Kurum Fiyat Tür ID: ' + str(@KrmFiyatTurID)
      -- PRINT 'Temel Kurum Fiyatı: ' + str(@TemelKrmFiyatBirim)
      IF @DovizKodu <> @UygFiyatDovizKodu
      BEGIN
         IF @DovizKodu = 'TL' 
            SET @Kur1 = 1
         ELSE
         BEGIN
            SELECT @Kur1 = KUR3 FROM DOVIZISL WHERE KODU = @DovizKodu AND TARIH = dbo.TARIHAL(@Tarih)
            IF @@ROWCOUNT = 0 
            BEGIN

               RAISERROR('Günlük kur girilmemiş!',16,1)   
               RETURN 16
            END
         END
         IF @UygFiyatDovizKodu = 'TL' 
            SET @Kur2 = 1
         ELSE
         BEGIN
            SELECT @Kur2 = KUR3 FROM DOVIZISL WHERE KODU = @UygFiyatDovizKodu AND TARIH = dbo.TARIHAL(@Tarih)
            IF @@ROWCOUNT = 0 
            BEGIN
               RAISERROR('Günlük kur girilmemiş!',16,1)   
               RETURN 16
            END
         END
         SET @Kur = @Kur1 / @Kur2
         SET @TemelFiyatBirim = @TemelFiyatBirim  / @Kur
         SET @TemelKrmFiyatBirim  = @TemelKrmFiyatBirim / @Kur
      END
            
      -- Fiyatlar indirimsiz döndürülecek
      -- İndirimleri hesapla
      SET @TrfIndTutar = @TemelFiyatBirim * @UYGFYKATSAYI / @KutuIciAdet - @TarifeFiyat
      IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
        SET @KrmIndTutar = @TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet - @KurumFiyat - @SGFiyat
      ELSE
        SET @KrmIndTutar = @TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet - @KurumFiyat
   
      -- Fiyatları indirimsiz fiyatlar yap
      SET @TarifeFiyat = @TemelFiyatBirim * @UYGFYKATSAYI / @KutuIciAdet 
      IF @SGTamamlayici = 1 
        SET @KurumFiyat  = @TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet - @SGFiyat
      ELSE
        SET @KurumFiyat  = @TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet
   END
   ELSE
   BEGIN
      SET @KrmIndTutar = 0
      SET @TrfIndTutar = 0
   END
   
   RETURN
END

SET @YFRKINDYUZDE = 0 
SET @AFRKINDYUZDE = 0
SET @PFRKINDYUZDE = 0
SET @YFRKEKTUTAR = 0 
SET @AFRKEKTUTAR = 0
SET @PFRKEKTUTAR = 0
    
-- Eğer tarifeitem kaydı yoksa fiyatları tarifeitemgrup oranlarına göre hesapla
SET @TarifeItemGrupSayi = 0

IF @SigortaliTuruFarkliFiyat = 1 AND @SigortaliTuru IS NOT NULL AND (@DrFarkliFiyat = 0 OR @DrId IS NULL)
BEGIN
	SELECT 
		   @UygFiyatTurID = FIYATTURID, 
		   @KrmFiyatTurID= KRMFIYATTURID, 
		   @SGFiyatTurID= SGFIYATTURID, 
		   @YINDYUZDE=TIGYINDYUZDE, 
		   @AINDYUZDE=TIGAINDYUZDE, 
		   @PINDYUZDE=TIGPINDYUZDE, 
		   @YKRMINDYUZDE = TIGYKRMINDYUZDE, 
		   @AKRMINDYUZDE = TIGAKRMINDYUZDE,
		   @PKRMINDYUZDE = TIGPKRMINDYUZDE,
		   @YFRKINDYUZDE = TIGYFRKINDYUZDE, 
		   @AFRKINDYUZDE = TIGAFRKINDYUZDE,       
		   @PFRKINDYUZDE = TIGPFRKINDYUZDE,       
		   @YFRKEKTUTAR = TIGYFRKEKTUTAR, 
		   @AFRKEKTUTAR = TIGAFRKEKTUTAR,       
		   @PFRKEKTUTAR = TIGPFRKEKTUTAR,       
		   @YKRMODEYUZDE = TIGYKRMODEYUZDE, 
		   @AKRMODEYUZDE = TIGAKRMODEYUZDE,
		   @PKRMODEYUZDE = TIGPKRMODEYUZDE,
		   @YSGODEYUZDE = TIGYSGODEYUZDE, 
		   @ASGODEYUZDE = TIGASGODEYUZDE,
		   @PSGODEYUZDE = TIGPSGODEYUZDE,
		   @NegatifHstFiyat = TIGNEGHSTFIYAT,
		   @UygFiyatFormul=FIYATFORMUL,
		   @KrmFiyatFormul=KURUMFIYATFORMUL,
		   @SGFiyatFormul=SGFIYATFORMUL       
	from TARIFEITEMGRUP 
	Where TARIFEID = @TarifeID AND ITEMGRUPID=@ItemGrupID AND 
	      DRID IS NULL AND SIGORTALITURU = @SigortaliTuru
	SET @TarifeItemGrupSayi = @@ROWCOUNT 
END
ELSE
IF (@SigortaliTuruFarkliFiyat = 0 OR @SigortaliTuru IS NULL) AND @DrFarkliFiyat = 1 AND @DrID IS NOT NULL
BEGIN
	SELECT 
		   @UygFiyatTurID = FIYATTURID, 
		   @KrmFiyatTurID= KRMFIYATTURID, 
		   @SGFiyatTurID= SGFIYATTURID, 
		   @YINDYUZDE=TIGYINDYUZDE, 
		   @AINDYUZDE=TIGAINDYUZDE, 
		   @PINDYUZDE=TIGPINDYUZDE, 
		   @YKRMINDYUZDE = TIGYKRMINDYUZDE, 
		   @AKRMINDYUZDE = TIGAKRMINDYUZDE,
		   @PKRMINDYUZDE = TIGPKRMINDYUZDE,
		   @YFRKINDYUZDE = TIGYFRKINDYUZDE, 
		   @AFRKINDYUZDE = TIGAFRKINDYUZDE,       
		   @PFRKINDYUZDE = TIGPFRKINDYUZDE,       
		   @YFRKEKTUTAR = TIGYFRKEKTUTAR, 
		   @AFRKEKTUTAR = TIGAFRKEKTUTAR,       
		   @PFRKEKTUTAR = TIGPFRKEKTUTAR,       
		   @YKRMODEYUZDE = TIGYKRMODEYUZDE, 
		   @AKRMODEYUZDE = TIGAKRMODEYUZDE,
		   @PKRMODEYUZDE = TIGPKRMODEYUZDE,
		   @YSGODEYUZDE = TIGYSGODEYUZDE, 
		   @ASGODEYUZDE = TIGASGODEYUZDE,
		   @PSGODEYUZDE = TIGPSGODEYUZDE,
		   @NegatifHstFiyat = TIGNEGHSTFIYAT,
		   @UygFiyatFormul=FIYATFORMUL,
		   @KrmFiyatFormul=KURUMFIYATFORMUL,
		   @SGFiyatFormul=SGFIYATFORMUL       
	from TARIFEITEMGRUP 
	Where TARIFEID = @TarifeID AND ITEMGRUPID = @ItemGrupID AND 
		  DRID = @DrId AND SIGORTALITURU IS NULL
	SET @TarifeItemGrupSayi = @@ROWCOUNT 
END
ELSE
IF @SigortaliTuruFarkliFiyat = 1 AND @SigortaliTuru IS NOT NULL AND @DrFarkliFiyat = 1 AND @DrID IS NOT NULL
BEGIN
	SELECT 
		   @UygFiyatTurID = FIYATTURID, 
		   @KrmFiyatTurID= KRMFIYATTURID, 
		   @SGFiyatTurID= SGFIYATTURID, 
		   @YINDYUZDE=TIGYINDYUZDE, 
		   @AINDYUZDE=TIGAINDYUZDE, 
		   @PINDYUZDE=TIGPINDYUZDE, 
		   @YKRMINDYUZDE = TIGYKRMINDYUZDE, 
		   @AKRMINDYUZDE = TIGAKRMINDYUZDE,
		   @PKRMINDYUZDE = TIGPKRMINDYUZDE,
		   @YFRKINDYUZDE = TIGYFRKINDYUZDE, 
		   @AFRKINDYUZDE = TIGAFRKINDYUZDE,       
		   @PFRKINDYUZDE = TIGPFRKINDYUZDE,       
		   @YFRKEKTUTAR = TIGYFRKEKTUTAR, 
		   @AFRKEKTUTAR = TIGAFRKEKTUTAR,       
		   @PFRKEKTUTAR = TIGPFRKEKTUTAR,       
		   @YKRMODEYUZDE = TIGYKRMODEYUZDE, 
		   @AKRMODEYUZDE = TIGAKRMODEYUZDE,
		   @PKRMODEYUZDE = TIGPKRMODEYUZDE,
		   @YSGODEYUZDE = TIGYSGODEYUZDE, 
		   @ASGODEYUZDE = TIGASGODEYUZDE,
		   @PSGODEYUZDE = TIGPSGODEYUZDE,
		   @NegatifHstFiyat = TIGNEGHSTFIYAT,
		   @UygFiyatFormul=FIYATFORMUL,
		   @KrmFiyatFormul=KURUMFIYATFORMUL,
		   @SGFiyatFormul=SGFIYATFORMUL       
	from TARIFEITEMGRUP 
	Where TARIFEID = @TarifeID AND ITEMGRUPID=@ItemGrupID AND 
		  DRID = @DrId AND SIGORTALITURU = @SigortaliTuru 
	SET @TarifeItemGrupSayi = @@ROWCOUNT 

	IF @TarifeItemGrupSayi = 0 
	BEGIN
		SELECT 
			   @UygFiyatTurID = FIYATTURID, 
			   @KrmFiyatTurID= KRMFIYATTURID, 
			   @SGFiyatTurID= SGFIYATTURID, 
			   @YINDYUZDE=TIGYINDYUZDE, 
			   @AINDYUZDE=TIGAINDYUZDE, 
			   @PINDYUZDE=TIGPINDYUZDE, 
			   @YKRMINDYUZDE = TIGYKRMINDYUZDE, 
			   @AKRMINDYUZDE = TIGAKRMINDYUZDE,
			   @PKRMINDYUZDE = TIGPKRMINDYUZDE,
			   @YFRKINDYUZDE = TIGYFRKINDYUZDE, 
			   @AFRKINDYUZDE = TIGAFRKINDYUZDE,       
			   @PFRKINDYUZDE = TIGPFRKINDYUZDE,       
			   @YFRKEKTUTAR = TIGYFRKEKTUTAR, 
			   @AFRKEKTUTAR = TIGAFRKEKTUTAR,       
			   @PFRKEKTUTAR = TIGPFRKEKTUTAR,       
			   @YKRMODEYUZDE = TIGYKRMODEYUZDE, 
			   @AKRMODEYUZDE = TIGAKRMODEYUZDE,
			   @PKRMODEYUZDE = TIGPKRMODEYUZDE,
			   @YSGODEYUZDE = TIGYSGODEYUZDE, 
			   @ASGODEYUZDE = TIGASGODEYUZDE,
			   @PSGODEYUZDE = TIGPSGODEYUZDE,
			   @NegatifHstFiyat = TIGNEGHSTFIYAT,
			   @UygFiyatFormul=FIYATFORMUL,
			   @KrmFiyatFormul=KURUMFIYATFORMUL,
			   @SGFiyatFormul=SGFIYATFORMUL       
		from TARIFEITEMGRUP 
		Where TARIFEID = @TarifeID AND ITEMGRUPID=@ItemGrupID AND 
			  DRID = @DrId AND SIGORTALITURU IS NULL
		SET @TarifeItemGrupSayi = @@ROWCOUNT 
	END

	IF @TarifeItemGrupSayi = 0 
	BEGIN
		SELECT 
			   @UygFiyatTurID = FIYATTURID, 
			   @KrmFiyatTurID= KRMFIYATTURID, 
			   @SGFiyatTurID= SGFIYATTURID, 
			   @YINDYUZDE=TIGYINDYUZDE, 
			   @AINDYUZDE=TIGAINDYUZDE, 
			   @PINDYUZDE=TIGPINDYUZDE, 
			   @YKRMINDYUZDE = TIGYKRMINDYUZDE, 
			   @AKRMINDYUZDE = TIGAKRMINDYUZDE,
			   @PKRMINDYUZDE = TIGPKRMINDYUZDE,
			   @YFRKINDYUZDE = TIGYFRKINDYUZDE, 
			   @AFRKINDYUZDE = TIGAFRKINDYUZDE,       
			   @PFRKINDYUZDE = TIGPFRKINDYUZDE,       
			   @YFRKEKTUTAR = TIGYFRKEKTUTAR, 
			   @AFRKEKTUTAR = TIGAFRKEKTUTAR,       
			   @PFRKEKTUTAR = TIGPFRKEKTUTAR,       
			   @YKRMODEYUZDE = TIGYKRMODEYUZDE, 
			   @AKRMODEYUZDE = TIGAKRMODEYUZDE,
			   @PKRMODEYUZDE = TIGPKRMODEYUZDE,
			   @YSGODEYUZDE = TIGYSGODEYUZDE, 
			   @ASGODEYUZDE = TIGASGODEYUZDE,
			   @PSGODEYUZDE = TIGPSGODEYUZDE,
			   @NegatifHstFiyat = TIGNEGHSTFIYAT,
			   @UygFiyatFormul=FIYATFORMUL,
			   @KrmFiyatFormul=KURUMFIYATFORMUL,
			   @SGFiyatFormul=SGFIYATFORMUL       
		from TARIFEITEMGRUP 
		Where TARIFEID = @TarifeID AND ITEMGRUPID=@ItemGrupID AND 
			  DRID IS NULL AND SIGORTALITURU = @SigortaliTuru
		SET @TarifeItemGrupSayi = @@ROWCOUNT 
	END
END

IF @TarifeItemGrupSayi = 0 
BEGIN
	SELECT 
		   @UygFiyatTurID = FIYATTURID, 
		   @KrmFiyatTurID= KRMFIYATTURID, 
		   @SGFiyatTurID= SGFIYATTURID, 
		   @YINDYUZDE=TIGYINDYUZDE, 
		   @AINDYUZDE=TIGAINDYUZDE, 
		   @PINDYUZDE=TIGPINDYUZDE, 
		   @YKRMINDYUZDE = TIGYKRMINDYUZDE, 
		   @AKRMINDYUZDE = TIGAKRMINDYUZDE,
		   @PKRMINDYUZDE = TIGPKRMINDYUZDE,
		   @YFRKINDYUZDE = TIGYFRKINDYUZDE, 
		   @AFRKINDYUZDE = TIGAFRKINDYUZDE,       
		   @PFRKINDYUZDE = TIGPFRKINDYUZDE,       
		   @YFRKEKTUTAR = TIGYFRKEKTUTAR, 
		   @AFRKEKTUTAR = TIGAFRKEKTUTAR,       
		   @PFRKEKTUTAR = TIGPFRKEKTUTAR,       
		   @YKRMODEYUZDE = TIGYKRMODEYUZDE, 
		   @AKRMODEYUZDE = TIGAKRMODEYUZDE,
		   @PKRMODEYUZDE = TIGPKRMODEYUZDE,
		   @YSGODEYUZDE = TIGYSGODEYUZDE, 
		   @ASGODEYUZDE = TIGASGODEYUZDE,
		   @PSGODEYUZDE = TIGPSGODEYUZDE,
		   @NegatifHstFiyat = TIGNEGHSTFIYAT,
		   @UygFiyatFormul=FIYATFORMUL,
		   @KrmFiyatFormul=KURUMFIYATFORMUL,
		   @SGFiyatFormul=SGFIYATFORMUL       
	from TARIFEITEMGRUP 
	Where TARIFEID = @TarifeID AND ITEMGRUPID = @ItemGrupID AND 
		  SIGORTALITURU IS NULL AND DRID IS NULL
	SET @TarifeItemGrupSayi = @@ROWCOUNT 
END

IF @TarifeItemGrupSayi = 0 
BEGIN
   RAISERROR('Tarifeye ait işlem fiyatı ya da işlem grup indirim yüzdesi kaydı bulunamadı',16,1)
   RETURN 17
END

IF ((@UygFiyatTurID IS NULL) OR (@UygFiyatTurID<0) OR (@UygFiyatTurID>6)) AND (@UygFiyatFormul IS NULL)
BEGIN
   RAISERROR('Toplam Fiyat Baz Fiyat Türü Hatalı',16,1)
   RETURN 18
END

IF ((@KrmFiyatTurID IS NULL) OR (@KrmFiyatTurID<0) OR (@KrmFiyatTurID>6)) AND (@KrmFiyatFormul IS NULL)
BEGIN
   RAISERROR('Kurum Fiyatı Baz Fiyat Türü Hatalı',16,1)
   RETURN 19
END

IF (@SGKurulusuVar = 1) AND ((@SGFiyatTurID IS NULL) OR (@SGFiyatTurID<0) OR (@SGFiyatTurID>6)) AND (@SGFiyatFormul IS NULL)
BEGIN
   RAISERROR('Sosyal Güvenlik Fiyatı Baz Fiyat Türü Hatalı',16,1)
   RETURN 20
END

--SELECT @UYGFYKATSAYI = FTKATSAYI, @UygFiyatDovizKodu = DOVIZ from TFIYATTURU Where FIYATTURID=@UygFiyatTurID
SELECT @UYGFYKATSAYI = KATSAYI,  @UygFiyatDovizKodu = DOVIZ FROM TFIYATTURU INNER JOIN TFIYATTURUDETAY ON 
            TFIYATTURUDETAY.FIYATTURID=TFIYATTURU.FIYATTURID Where TFIYATTURU.FIYATTURID=@UygFiyatTurID AND 
            (TFIYATTURUDETAY.BASLAMATARIH<=dbo.TARIHAL(@Tarih) AND (TFIYATTURUDETAY.BITISTARIH IS NULL OR (TFIYATTURUDETAY.BITISTARIH>=dbo.TARIHAL(@Tarih))))
IF @@ROWCOUNT = 0
BEGIN
   RAISERROR('Toplam Fiyat Baz Fiyat Türü Kaydı Bulunamadı!',16,1)
   RETURN 21
END

-- Eğer item grup bazında farklı bir kat sayı uygulanıyorsa o katsayı kulanılmalı
SELECT @UYGFYKATSAYI = FTIGKATSAYI from FIYATTURUITEMGRUP Where FIYATTURID=@UygFiyatTurID AND ITEMGRUPID = @ItemGrupID

IF @KrmFiyatTurID IS NULL
BEGIN
  SET @KRMFYKATSAYI = 0
  SET @KurumFiyatDovizKodu = @UygFiyatDovizKodu
END
ELSE
BEGIN
   IF @UygFiyatTurID = @KrmFiyatTurID
   BEGIN
      SET @KRMFYKATSAYI = @UYGFYKATSAYI
      SET @KurumFiyatDovizKodu = @UygFiyatDovizKodu
   END
   ELSE
   BEGIN
      --SELECT @KRMFYKATSAYI = FTKATSAYI, @KurumFiyatDovizKodu = DOVIZ FROM TFIYATTURU Where FIYATTURID=@KrmFiyatTurID
      SELECT @KRMFYKATSAYI = KATSAYI,  @KurumFiyatDovizKodu = DOVIZ FROM TFIYATTURU INNER JOIN TFIYATTURUDETAY ON 
            TFIYATTURUDETAY.FIYATTURID=TFIYATTURU.FIYATTURID Where TFIYATTURU.FIYATTURID=@KrmFiyatTurID AND 
            (TFIYATTURUDETAY.BASLAMATARIH<=dbo.TARIHAL(@Tarih) AND (TFIYATTURUDETAY.BITISTARIH IS NULL OR (TFIYATTURUDETAY.BITISTARIH>=dbo.TARIHAL(@Tarih))))
      IF @@ROWCOUNT = 0
      BEGIN
         RAISERROR('Kurum Fiyatı Baz Fiyat Türü Kaydı Bulunamadı!',16,1)
         RETURN 22
      END
      
      -- Eğer item grup bazında farklı bir kat sayı uygulanıyorsa o katsayı kulanılmalı
      SELECT @KRMFYKATSAYI = FTIGKATSAYI from FIYATTURUITEMGRUP Where FIYATTURID=@KrmFiyatTurID AND ITEMGRUPID = @ItemGrupID
   
      IF @UygFiyatDovizKodu <> @KurumFiyatDovizKodu
      BEGIN
         RAISERROR('Kurum Fiyat Baz Fiyat Türünün Dövizi,  Toplam Fiyat Baz Fiyat Türünün Dövizinden Farklı Olamaz!',16,1)
         RETURN 23
      END
   END
END

IF @SGKurulusuVar = 0 OR @SGFiyatTurID IS NULL
BEGIN
   SET @SGFYKATSAYI = 0
   SET @SGFiyatDovizKodu = @UygFiyatDovizKodu
END
ELSE
BEGIN
   IF @SGFiyatTurID = @UygFiyatTurID
   BEGIN
      SET @SGFYKATSAYI = @UYGFYKATSAYI
      SET @SGFiyatDovizKodu = @UygFiyatDovizKodu
   END
   ELSE
   BEGIN
      IF @SGFiyatTurID = @KrmFiyatTurID 
      BEGIN
        SET @SGFYKATSAYI = @KRMFYKATSAYI
        SET @SGFiyatDovizKodu = @KurumFiyatDovizKodu
      END
      ELSE
      BEGIN
       --SELECT @SGFYKATSAYI = FTKATSAYI, @SGFiyatDovizKodu = DOVIZ FROM TFIYATTURU Where FIYATTURID=@SGFiyatTurID
       SELECT @SGFYKATSAYI = KATSAYI,  @SGFiyatDovizKodu = DOVIZ FROM TFIYATTURU INNER JOIN TFIYATTURUDETAY ON 
            TFIYATTURUDETAY.FIYATTURID=TFIYATTURU.FIYATTURID Where TFIYATTURU.FIYATTURID=@SGFiyatTurID AND 
            (TFIYATTURUDETAY.BASLAMATARIH<=dbo.TARIHAL(@Tarih) AND (TFIYATTURUDETAY.BITISTARIH IS NULL OR (TFIYATTURUDETAY.BITISTARIH>=dbo.TARIHAL(@Tarih))))
       IF @@ROWCOUNT = 0
       BEGIN
         RAISERROR('Sosyal Güvenlik Fiyatı Baz Fiyat Türü Kaydı Bulunamadı!',16,1)
         RETURN 24
       END
         
       -- Eğer item grup bazında farklı bir kat sayı uygulanıyorsa o katsayı kulanılmalı
       SELECT @SGFYKATSAYI = FTIGKATSAYI from FIYATTURUITEMGRUP Where FIYATTURID=@SGFiyatTurID AND ITEMGRUPID = @ItemGrupID
      
       IF @UygFiyatDovizKodu <> @SGFiyatDovizKodu
       BEGIN
         RAISERROR('Sosyal Güvenlik Fiyatı Baz Fiyat Türünün Dövizi,  Toplam Fiyat Baz Fiyat Türünün Dövizinden Farklı Olamaz!',16,1)
         RETURN 25
       END
      END
   END
END

IF (@MedulaKullaniyor=0) AND (ISNULL(@FiyatProfilID,0)<>0) AND (@ProfilFiyat IS NOT NULL) SET @TarifeFiyat=@ProfilFiyat

IF (@MedulaKullaniyor=0) and (ISNULL(@FiyatProfilID,0)<>0) AND (@ProfilFiyat IS NOT NULL) SET @TemelFiyatBirim=@ProfilFiyat
ELSE IF LTRIM(@UygFiyatFormul)<>''	
BEGIN
	EXEC dbo.ITEMFIYATOKUTARIFEFORMUL @UygFiyatFormul,@ItemId,@TemelFiyatBirim OUTPUT			
	SET @UYGFYKATSAYI=1
END
ELSE IF (@UygFiyatTurID=0) SET @TemelFiyatBirim=@ItemFiyat 	
ELSE IF (@UygFiyatTurID=1) SET @TemelFiyatBirim=@ItemFiyat1 
ELSE IF (@UygFiyatTurID=2) SET @TemelFiyatBirim=@ItemFiyat2 
ELSE IF (@UygFiyatTurID=3) SET @TemelFiyatBirim=@ItemFiyat3 
ELSE IF (@UygFiyatTurID=4) SET @TemelFiyatBirim=@ItemFiyat4 
ELSE IF (@UygFiyatTurID=5) SET @TemelFiyatBirim=@ItemFiyat5 
ELSE IF (@UygFiyatTurID=6) SET @TemelFiyatBirim=@ItemFiyat6 

IF @TemelFiyatBirim IS NULL 
BEGIN
   RAISERROR('İşlem Fiyatı Hatalı',16,1)
   RETURN 26
END

IF @KrmFiyatTurID IS NOT NULL
BEGIN
   IF LTRIM(@KrmFiyatFormul)<>''	
	BEGIN
		EXEC dbo.ITEMFIYATOKUTARIFEFORMUL @KrmFiyatFormul,@ItemId,@TemelKrmFiyatBirim OUTPUT			
		SET @KRMFYKATSAYI=1
	END
   ELSE IF (@KrmFiyatTurID=0) SET @TemelKrmFiyatBirim=@ItemFiyat 
   ELSE IF (@KrmFiyatTurID=1) SET @TemelKrmFiyatBirim=@ItemFiyat1 
   ELSE IF (@KrmFiyatTurID=2) SET @TemelKrmFiyatBirim=@ItemFiyat2 
   ELSE IF (@KrmFiyatTurID=3) SET @TemelKrmFiyatBirim=@ItemFiyat3 
   ELSE IF (@KrmFiyatTurID=4) SET @TemelKrmFiyatBirim=@ItemFiyat4 
   ELSE IF (@KrmFiyatTurID=5) SET @TemelKrmFiyatBirim=@ItemFiyat5 
   ELSE IF (@KrmFiyatTurID=6) SET @TemelKrmFiyatBirim=@ItemFiyat6
END
ELSE
   SET @TemelKrmFiyatBirim=0

IF @SGKurulusuVar = 1 AND @SGFiyatTurID IS NOT NULL
BEGIN
   IF LTRIM(@SGFiyatFormul)<>''	
	BEGIN
		EXEC dbo.ITEMFIYATOKUTARIFEFORMUL @SGFiyatFormul,@ItemId,@TemelSGFiyatBirim OUTPUT			
		SET @SGFYKATSAYI=1
	END
   ELSE IF (@SGFiyatTurID=0) SET @TemelSGFiyatBirim=@ItemFiyat 
   ELSE IF (@SGFiyatTurID=1) SET @TemelSGFiyatBirim=@ItemFiyat1 
   ELSE IF (@SGFiyatTurID=2) SET @TemelSGFiyatBirim=@ItemFiyat2 
   ELSE IF (@SGFiyatTurID=3) SET @TemelSGFiyatBirim=@ItemFiyat3 
   ELSE IF (@SGFiyatTurID=4) SET @TemelSGFiyatBirim=@ItemFiyat4 
   ELSE IF (@SGFiyatTurID=5) SET @TemelSGFiyatBirim=@ItemFiyat5 
   ELSE IF (@SGFiyatTurID=6) SET @TemelSGFiyatBirim=@ItemFiyat6 
   
   SET @SGFiyat = (ISNULL(@TemelSGFiyatBirim,0) * @SGFYKATSAYI  / @KutuIciAdet)
END
ELSE
BEGIN
   SET @TemelSGFiyatBirim=0
   SET @SGFiyat = 0
END
-- SET @DovizKodu = @UygFiyatDovizKodu

IF (@KrmPaketi=1)
   SET @TarifeFiyat = (@TemelFiyatBirim * @UYGFYKATSAYI  / @KutuIciAdet) * (100 - @PINDYUZDE) / 100
ELSE
BEGIN
   IF (@HYatiyor=1)
       SET @TarifeFiyat = (@TemelFiyatBirim * @UYGFYKATSAYI  / @KutuIciAdet) * (100 - @YINDYUZDE) / 100
   ELSE
       SET @TarifeFiyat = (@TemelFiyatBirim * @UYGFYKATSAYI  / @KutuIciAdet) * (100 - @AINDYUZDE) / 100
END

IF @TarifeFiyat IS NULL 
BEGIN
     RAISERROR('Tarife Fiyatı Hatalı',16,1)
   RETURN 27
END

-- Eğer ödeme yüzdesi 0 ise veya ödeme indirim yüzdesi 100 ise 
-- ödeme fiyat türünün katsayısını bulmaya gerek yok
IF    (@KrmPaketi=1 AND @PSGODEYUZDE = 0 AND (@PKRMINDYUZDE = 100 OR @PKRMODEYUZDE = 0)) OR
      (@KrmPaketi=0 AND @HYatiyor=1 AND @YSGODEYUZDE = 0 AND (@YKRMINDYUZDE = 100 OR @YKRMODEYUZDE = 0)) OR
      (@KrmPaketi=0 AND @HYatiyor=0 AND @ASGODEYUZDE = 0 AND (@AKRMINDYUZDE = 100 OR @AKRMODEYUZDE = 0))
BEGIN
   SET @OdemeFiyat = 0
   SET @KurumFiyat = 0
   SET @SGFiyat = 0
END
ELSE
BEGIN
   IF @TemelKrmFiyatBirim IS NULL 
   BEGIN
        RAISERROR('İşlem Kurum Fiyatı Hatalı',16,1)
      RETURN 28
   END
   IF (@KrmPaketi=1)
   BEGIN
       SET @OdemeFiyat = (@TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet) * (100 - @PKRMINDYUZDE) * @PKRMODEYUZDE / 10000
       SET @KurumFiyat = (@TemelKrmFiyatBirim * @KRMFYKATSAYI  / @KutuIciAdet) * (100 - @PKRMINDYUZDE) / 100
       SET @SGFiyat = (@TemelSGFiyatBirim * @SGFYKATSAYI  / @KutuIciAdet) * @PSGODEYUZDE / 100
       IF @SGFiyat IS NULL 
       BEGIN
          IF @SGFiyatTurID IS NOT NULL AND @PSGODEYUZDE > 0
          BEGIN
              RAISERROR('Sosyal Güvenlik Fiyatı Hatalı',16,1)
            RETURN 29
          END 
          ELSE
            SET @SGFiyat = 0
       END
   END
   ELSE
   IF (@HYatiyor=1)
   BEGIN
       SET @OdemeFiyat = (@TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet) * (100 - @YKRMINDYUZDE) * @YKRMODEYUZDE / 10000
       SET @KurumFiyat = (@TemelKrmFiyatBirim * @KRMFYKATSAYI  / @KutuIciAdet) * (100 - @YKRMINDYUZDE) / 100
       SET @SGFiyat = (@TemelSGFiyatBirim * @SGFYKATSAYI  / @KutuIciAdet) * @YSGODEYUZDE / 100
       IF @SGFiyat IS NULL 
       BEGIN
          IF @SGFiyatTurID IS NOT NULL AND @YSGODEYUZDE > 0
          BEGIN
              RAISERROR('Sosyal Güvenlik Fiyatı Hatalı',16,1)
            RETURN 30
          END 
          ELSE
            SET @SGFiyat = 0
       END
   END
   ELSE
   BEGIN
       SET @OdemeFiyat = (@TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet) * (100 - @AKRMINDYUZDE) * @AKRMODEYUZDE / 10000
       SET @KurumFiyat = (@TemelKrmFiyatBirim * @KRMFYKATSAYI / @KutuIciAdet) * (100 - @AKRMINDYUZDE) / 100
       SET @SGFiyat = (@TemelSGFiyatBirim * @SGFYKATSAYI  / @KutuIciAdet) * @ASGODEYUZDE / 100
       IF @SGFiyat IS NULL 
       BEGIN
          IF @SGFiyatTurID IS NOT NULL AND @ASGODEYUZDE > 0
          BEGIN
              RAISERROR('Sosyal Güvenlik Fiyatı Hatalı',16,1)
            RETURN 31
          END 
          ELSE
            SET @SGFiyat = 0
       END
   END
   
   IF @KurumFiyat IS NULL 
   BEGIN
        RAISERROR('Kurum Fiyatı Hatalı',16,1)
      RETURN 32
   END
   IF @OdemeFiyat IS NULL 
   BEGIN
        RAISERROR('Ödeme Fiyatı Hatalı',16,1)
      RETURN 33
   END
END

IF @SGKurulusuVar = 0
   SET @SGFiyat = 0

IF (@NegatifHstFiyat IS NULL OR @NegatifHstFiyat=0) AND @KurumFiyat > @TarifeFiyat
BEGIN
   RAISERROR('Kurum Fiyatı, Toplam fiyattan yüksek! Tarifenizi kontrol ediniz. ',16,1)   
   RETURN 34
END

IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1) AND (@SGFiyat > @KurumFiyat)
BEGIN
  RAISERROR('Sosyal Güvenlik Fiyatı, kurum fiyatından yüksek! Tarifenizi kontrol ediniz. ',16,1)   
  RETURN 35
END
  
IF @DovizKodu <> @UygFiyatDovizKodu
BEGIN
   IF @DovizKodu = 'TL' 
      SET @Kur1 = 1
   ELSE
   BEGIN
      SELECT @Kur1 = KUR3 FROM DOVIZISL WHERE KODU = @DovizKodu AND TARIH = dbo.TARIHAL(@Tarih)
      IF @@ROWCOUNT = 0 
      BEGIN
         RAISERROR('Günlük kur girilmemiş!',16,1)   
         RETURN 36
      END
   END
   IF @UygFiyatDovizKodu = 'TL' 
      SET @Kur2 = 1
   ELSE
   BEGIN
      SELECT @Kur2 = KUR3 FROM DOVIZISL WHERE KODU = @UygFiyatDovizKodu AND TARIH = dbo.TARIHAL(@Tarih)
      IF @@ROWCOUNT = 0 
      BEGIN
         RAISERROR('Günlük kur girilmemiş!',16,1)   
         RETURN 37
      END
   END
   SET @Kur = @Kur1 / @Kur2
   SET @TarifeFiyat = @TarifeFiyat  / @Kur
   SET @OdemeFiyat  = @OdemeFiyat / @Kur
   SET @KurumFiyat  = @KurumFiyat / @Kur
   SET @SGFiyat  = @SGFiyat / @Kur
END

IF @IFYTHASTANEFYTSINIRLI = 1
BEGIN
   IF @TarifeFiyat > @HastaneFiyat 
      SET @TarifeFiyat = @HastaneFiyat
   IF @KurumFiyat > @HastaneFiyat
   BEGIN 
      SET @OdemeFiyat = @HastaneFiyat * @OdemeFiyat / @KurumFiyat
      SET @KurumFiyat = @HastaneFiyat
   END
END

IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
BEGIN
   IF @SGFiyat >= @KurumFiyat 
   BEGIN
     SET @KurumFiyat = 0
     SET @OdemeFiyat = 0
   END
   ELSE 
   BEGIN
     SET @OdemeFiyat = (@KurumFiyat - @SGFiyat) * @OdemeFiyat / @KurumFiyat
     SET @KurumFiyat = @KurumFiyat - @SGFiyat
   END
END

-- Ömer 20061010 Başl.
-- Hasta farkından indirim yapılabilmesi sağlandı
-- Hasta farkına ek sabit tutar eklenebilmesi sağlandı
IF (@KrmPaketi=1)
BEGIN 
   IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
     SET @TarifeFiyat = @TarifeFiyat - (@TarifeFiyat - @OdemeFiyat - @SGFiyat) * @PFRKINDYUZDE / 100
   ELSE
     SET @TarifeFiyat = @TarifeFiyat - (@TarifeFiyat - @OdemeFiyat) * @PFRKINDYUZDE / 100
   SET @TarifeFiyat = @TarifeFiyat + @PFRKEKTUTAR
END
ELSE
IF @HYatiyor=1 
BEGIN 
  IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
    SET @TarifeFiyat = @TarifeFiyat - (@TarifeFiyat - @OdemeFiyat - @SGFiyat) * @YFRKINDYUZDE / 100
  ELSE
    SET @TarifeFiyat = @TarifeFiyat - (@TarifeFiyat - @OdemeFiyat) * @YFRKINDYUZDE / 100
  SET @TarifeFiyat = @TarifeFiyat + @YFRKEKTUTAR
END
ELSE
IF @HYatiyor=0 
BEGIN 
  IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
    SET @TarifeFiyat = @TarifeFiyat - (@TarifeFiyat - @OdemeFiyat - @SGFiyat) * @AFRKINDYUZDE / 100
  ELSE
    SET @TarifeFiyat = @TarifeFiyat - (@TarifeFiyat - @OdemeFiyat) * @AFRKINDYUZDE / 100
  SET @TarifeFiyat = @TarifeFiyat + @AFRKEKTUTAR
END
-- Ömer 20061010 Son

IF @IndirimliFiyat = 0 
BEGIN
   -- PRINT 'Temel Kurum Fiyat Tür ID: ' + str(@KrmFiyatTurID)
   -- PRINT 'Temel Kurum Fiyatı: ' + str(@TemelKrmFiyatBirim)
   -- PRINT 'Temel Fiyat: ' + str(@TemelFiyatBirim)
   -- PRINT 'Tarife Fiyat: ' + str(@TarifeFiyat)
   -- PRINT 'Kurum Fiyat: ' + str(@KurumFiyat)
   -- PRINT 'Topl. Fiyat Katsayı: ' + str(@UYGFYKATSAYI)
   -- PRINT 'Kutu İçi Adet: ' + str(@KutuIciAdet)
   -- PRINT 'Döviz Kuru: ' + str(@Kur)
   -- Fiyatlar indirimsiz döndürülecek
   -- İndirimleri hesapla
   SET @TrfIndTutar = @TemelFiyatBirim * @UYGFYKATSAYI / (@KutuIciAdet * @Kur) - @TarifeFiyat
   IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
     SET @KrmIndTutar = @TemelKrmFiyatBirim * @KRMFYKATSAYI / (@KutuIciAdet * @Kur) - @KurumFiyat - @SGFiyat
   ELSE
     SET @KrmIndTutar = @TemelKrmFiyatBirim * @KRMFYKATSAYI / (@KutuIciAdet * @Kur) - @KurumFiyat

   -- Fiyatları indirimsiz fiyatlar yap
   -- Ömer 20050625 Kur kullanılmıyordu
   SET @TarifeFiyat = @TemelFiyatBirim * @UYGFYKATSAYI / (@KutuIciAdet * @Kur) 
   IF (@SGKurulusuVar = 1) AND (@SGTamamlayici = 1)  
     SET @KurumFiyat = @TemelKrmFiyatBirim * @KRMFYKATSAYI / (@KutuIciAdet * @Kur) - @SGFiyat
    ELSE
     SET @KurumFiyat = @TemelKrmFiyatBirim * @KRMFYKATSAYI / (@KutuIciAdet * @Kur)
   -- Ömer 20050625 Son.
END
ELSE
BEGIN
   SET @KrmIndTutar = 0
   SET @TrfIndTutar = 0
END

