SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

IF OBJECT_ID ('HESAPISL_TRG', 'TR') IS NOT NULL
  DROP TRIGGER HESAPISL_TRG
GO

CREATE TRIGGER [HESAPISL_TRG] ON [dbo].[HESAPISL] 
FOR INSERT, UPDATE, DELETE
AS
SET NOCOUNT ON
DECLARE
   @HESAPISLID int, 
   @HDOSYAID int, 
   @DOVIZKODU nvarchar(5), 
   @IPTAL bit,
   @ONAYLI bit,
   @HSTKDVORAN float,
   @KRMKDVORAN float,
   @SGKDVORAN float,
   @HSTTUTAR float, 
   @HSTINDORAN float, 
   @HSTINDTUTAR float, 
   @HSTNETTUTAR float,
   @HSTHFATISLID int,
   @KRMTUTAR float, 
   @KRMINDORAN float, 
   @KRMINDTUTAR float, 
   @KRMNETTUTAR float,
   @KRMHFATISLID int,
   @SGTUTAR float, 
   @SGINDORAN float, 
   @SGNETTUTAR float,
   @SGFATID int,
   @MDLKRMTUTAR float,
   @MLYTTUTAR float,
   @HKPISLEMI bit,
   @ESKIHESAPISLID int, 
   @ESKIHDOSYAID int, 
   @ESKIDOVIZKODU nvarchar(5), 
   @ESKIIPTAL bit,
   @ESKIONAYLI bit,
   @TABLOTIPI int,
   @FINANSLOGTIPIID tinyint,
   @SGKULLANICI nvarchar(15),
   @ESKIHSTKDVORAN float,
   @ESKIKRMKDVORAN float,
   @ESKISGKDVORAN float,
   @ESKIHSTTUTAR float, 
   @ESKIHSTINDORAN float, 
   @ESKIHSTINDTUTAR float, 
   @ESKIHSTNETTUTAR float,
   @ESKIHSTHFATISLID int,
   @ESKIKRMTUTAR float, 
   @ESKIKRMINDORAN float, 
   @ESKIKRMINDTUTAR float, 
   @ESKIKRMNETTUTAR float,
   @ESKIKRMHFATISLID int,
   @ESKISGTUTAR float, 
   @ESKISGINDORAN float, 
   @ESKISGNETTUTAR float,
   @ESKISGFATID int,
   @ESKIMDLKRMTUTAR float,
   @ESKIMLYTTUTAR float,
   @ESKIHKPISLEMI bit,
   @ESKITABLOTIPI int,
   @HSTFATKDVDAHIL bit,
   @FINANSALLOGAKTIF bit,
   @DosyayatisTarihi datetime,
   @DosyaCikisTarihi datetime,
   @DosyaTIGXMLHazirlandi bit,
   @DosyaIzinliGunSayisi int,
   @DosyaYogunBkmGunSayisi int, 
   @YatislarMINYatisTrh datetime,
   @YatislarMAXCikisTrh datetime,
   @UPD_STR nvarchar(1000),
   @YatislarToplamIzinliGun int,
   @YatislarToplamYogunBakimGun int,
   @YENIISLEMINFINANSALLOGUTUTULSUN bit

DECLARE @UPDATED_CURSOR CURSOR 

SET @UPDATED_CURSOR = CURSOR FAST_FORWARD FOR
SELECT I.HESAPISLID, I.HDOSYAID, 
       I.IPTAL, I.ONAYLI, I.DOVIZKODU, 
       I.HSTKDVORAN, I.KRMKDVORAN, I.SGKDVORAN,
       I.OZELTUTAR, I.OZELINDORAN, 
       I.OZELINDTUTAR, I.OZELHFATISLID, 
       I.KRMTUTAR, I.KRMINDORAN, 
       I.KRMINDTUTAR, I.KRMHFATISLID, 
       I.SGTUTAR, I.SGINDORAN,
       I.SGFATID, I.MDLKRMTUTAR, 
       I.MLYTTUTAR, I.HKPISLEMI, I.TABLOTIPI,
       I.FINANSLOGTIPIID, I.SGKULLANICI,
       D.HESAPISLID, D.HDOSYAID, 
       D.IPTAL, D.ONAYLI, D.DOVIZKODU, 
       D.HSTKDVORAN, D.KRMKDVORAN, D.SGKDVORAN,
       D.OZELTUTAR, D.OZELINDORAN, 
       D.OZELINDTUTAR, D.OZELHFATISLID, 
       D.KRMTUTAR, D.KRMINDORAN, 
       D.KRMINDTUTAR, D.KRMHFATISLID, 
       D.SGTUTAR, D.SGINDORAN,
       D.SGFATID, D.MDLKRMTUTAR, 
       D.MLYTTUTAR, D.HKPISLEMI,D.TABLOTIPI,
       KURUM.HSTFATKDVDAHIL, KURUM.FINANSALLOGAKTIF, 
       KURUM.FINANSLOGYENIISLEM
FROM INSERTED I FULL JOIN 
     DELETED D ON I.HESAPISLID = D.HESAPISLID LEFT OUTER JOIN 
     KURUM (NOLOCK) ON KURUMID = 1

OPEN @UPDATED_CURSOR
FETCH NEXT FROM @UPDATED_CURSOR 
INTO @HESAPISLID, @HDOSYAID, 
     @IPTAL, @ONAYLI, @DOVIZKODU, 
     @HSTKDVORAN, @KRMKDVORAN, @SGKDVORAN,
     @HSTTUTAR, @HSTINDORAN, 
     @HSTINDTUTAR, @HSTHFATISLID, 
     @KRMTUTAR, @KRMINDORAN, 
     @KRMINDTUTAR, @KRMHFATISLID, 
     @SGTUTAR, @SGINDORAN,
     @SGFATID, @MDLKRMTUTAR, 
     @MLYTTUTAR, @HKPISLEMI, @TABLOTIPI,
     @FINANSLOGTIPIID, @SGKULLANICI,
     @ESKIHESAPISLID, @ESKIHDOSYAID, 
     @ESKIIPTAL, @ESKIONAYLI, @ESKIDOVIZKODU, 
     @ESKIHSTKDVORAN, @ESKIKRMKDVORAN, @ESKISGKDVORAN,
     @ESKIHSTTUTAR, @ESKIHSTINDORAN, 
     @ESKIHSTINDTUTAR, @ESKIHSTHFATISLID, 
     @ESKIKRMTUTAR, @ESKIKRMINDORAN, 
     @ESKIKRMINDTUTAR, @ESKIKRMHFATISLID, 
     @ESKISGTUTAR, @ESKISGINDORAN,
     @ESKISGFATID, @ESKIMDLKRMTUTAR,
     @ESKIMLYTTUTAR, @ESKIHKPISLEMI,@ESKITABLOTIPI, 
     @HSTFATKDVDAHIL, @FINANSALLOGAKTIF,
     @YENIISLEMINFINANSALLOGUTUTULSUN
     
WHILE @@FETCH_STATUS = 0
BEGIN

    IF (@ESKITABLOTIPI= @TABLOTIPI) AND @TABLOTIPI=4 AND @IPTAL=1 AND @ESKIIPTAL=0  --İptal edilen Yatış işlemi
    BEGIN
        SET @UPD_STR=''
		SELECT @DosyayatisTarihi = YATISTARIHI,
			   @DosyaCikisTarihi = GSSCIKISTARIHI,
			   @DosyaTIGXMLHazirlandi= TIGXMLHAZIRLANDI,
			   @DosyaIzinliGunSayisi = IZINLIGUNSAYISI,
			   @DosyaYogunBkmGunSayisi= YOGUNBAKIMGUNSAYISI 
			   FROM HDOSYA (NOLOCK) 
			   WHERE HDOSYAID = @HDOSYAID
	    IF @DosyaTIGXMLHazirlandi = 1 
			GOTO DEVAM

	
		SELECT @YatislarMINYatisTrh= MIN(HYYATISTARIH), @YatislarMAXCikisTrh=MAX(HYCIKISTARIH), @YatislarToplamIzinliGun= SUM(IZINLIGUNSAYISI),  
		       @YatislarToplamYogunBakimGun = SUM(DATEDIFF(dd,HYYATISTARIH,HYCIKISTARIH)) FROM HYATIS 
				INNER JOIN HESAPISL ON HESAPISL.HESAPISLID=HYATIS.HESAPISLID
				WHERE HYATIS.HDOSYAID =@HDOSYAID AND HESAPISL.HESAPISLID<>@HESAPISLID and IPTAL=0 AND ONAYLI=1 AND TEKLIF=0 AND DURUM IN (1,2)
		
			IF @YatislarMINYatisTrh IS NOT NULL AND @YatislarMINYatisTrh<>@DosyayatisTarihi
					SET @UPD_STR = 'YATISTARIHI='''+CONVERT( nvarchar(50),@YatislarMINYatisTrh, 121) +''''				
			IF @YatislarMINYatisTrh IS NULL AND @YatislarMINYatisTrh<>@DosyayatisTarihi
					SET @UPD_STR = 'YATISTARIHI=NULL'
			
			IF @YatislarMAXCikisTrh IS NOT NULL AND
			(@DosyaCikisTarihi IS NULL OR (@YatislarMAXCikisTrh<>@DosyaCikisTarihi))
			BEGIN
				IF @UPD_STR=''
					SET @UPD_STR = 'GSSCIKISTARIHI='''+CONVERT( nvarchar(50),@YatislarMAXCikisTrh, 121)+''''
				ELSE
					SET @UPD_STR = @UPD_STR+ ', GSSCIKISTARIHI='''+CONVERT( nvarchar(50),@YatislarMAXCikisTrh, 121) +''''
				
			END
			IF @YatislarMAXCikisTrh IS NULL AND @DosyaCikisTarihi IS NOT NULL   
			BEGIN
				IF @UPD_STR=''
					SET @UPD_STR = 'GSSCIKISTARIHI=NULL'
				ELSE
					SET @UPD_STR = @UPD_STR+ ', GSSCIKISTARIHI=NULL'
			END	
			
			
			
			IF @YatislarToplamIzinliGun<>@DosyaIzinliGunSayisi
			BEGIN		
				IF @YatislarToplamIzinliGun IS NOT NULL   
				BEGIN
				    IF @UPD_STR=''
						SET @UPD_STR = 'IZINLIGUNSAYISI='+cast(@YatislarToplamIzinliGun as nvarchar(10))
					ELSE
						SET @UPD_STR = @UPD_STR+ ', IZINLIGUNSAYISI='+cast(@YatislarToplamIzinliGun as nvarchar(10))

				END
				IF @YatislarToplamIzinliGun IS NULL   
				BEGIN
				    IF @UPD_STR=''
						SET @UPD_STR = 'IZINLIGUNSAYISI=NULL'
					ELSE
						SET @UPD_STR = @UPD_STR+ ', IZINLIGUNSAYISI=NULL'
				END	
			END
			
			IF @YatislarToplamYogunBakimGun <> @DosyaYogunBkmGunSayisi
			BEGIN
				IF @YatislarToplamYogunBakimGun IS NOT NULL   
				BEGIN
				    IF @UPD_STR=''
						SET @UPD_STR = 'YOGUNBAKIMGUNSAYISI='+cast(@YatislarToplamYogunBakimGun as nvarchar(10))
					ELSE
						SET @UPD_STR = @UPD_STR+ ', YOGUNBAKIMGUNSAYISI='+cast(@YatislarToplamYogunBakimGun as nvarchar(10))
				END
				IF @YatislarToplamYogunBakimGun IS NULL   
				BEGIN
				    IF @UPD_STR=''
						SET @UPD_STR = 'YOGUNBAKIMGUNSAYISI=NULL'
					ELSE
						SET @UPD_STR = @UPD_STR+ ', YOGUNBAKIMGUNSAYISI=NULL'
				END	
			END
			
			IF @UPD_STR<>''
				 EXECUTE('UPDATE HDOSYA SET '+ @UPD_STR+' WHERE HDOSYAID = '+@HDOSYAID)
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END		
			
    END
    
   
    DEVAM:
    
	IF @DOVIZKODU <> 'TL'
	BEGIN
		SET @HSTNETTUTAR = ISNULL(@HSTTUTAR * (1 - @HSTINDORAN / 100) - @HSTINDTUTAR,0)
		SET @ESKIHSTNETTUTAR = ISNULL(@ESKIHSTTUTAR * (1 - @ESKIHSTINDORAN / 100) - @ESKIHSTINDTUTAR,0)
	  
		SET @KRMNETTUTAR = ISNULL(@KRMTUTAR * (1 - @KRMINDORAN / 100) - @KRMINDTUTAR,0)
		SET @ESKIKRMNETTUTAR = ISNULL(@ESKIKRMTUTAR * (1 - @ESKIKRMINDORAN / 100) - @ESKIKRMINDTUTAR,0)

		SET @SGNETTUTAR = ISNULL(@SGTUTAR * (1 - @SGINDORAN / 100),0)
		SET @ESKISGNETTUTAR = ISNULL(@ESKISGTUTAR * (1 - @ESKISGINDORAN / 100),0)

	END
	ELSE
	BEGIN
	    IF ISNULL(@HSTFATKDVDAHIL,1) = 1 
	    BEGIN
		  SET @HSTNETTUTAR = ISNULL(dbo.PARAYUVARLA(@HSTTUTAR * (1 - @HSTINDORAN / 100) - @HSTINDTUTAR),0)
		  SET @ESKIHSTNETTUTAR = ISNULL(dbo.PARAYUVARLA(@ESKIHSTTUTAR * (1 - @ESKIHSTINDORAN / 100) - 
	@ESKIHSTINDTUTAR),0)
		  -- Hasta tutarları düzeltiliyor
		  SET @HSTTUTAR = ISNULL(dbo.PARAYUVARLA(@HSTTUTAR),0)
		  SET @ESKIHSTTUTAR = ISNULL(dbo.PARAYUVARLA(@ESKIHSTTUTAR),0)
		END
	    ELSE
	    BEGIN
		  SET @HSTNETTUTAR = ISNULL(dbo.PARAYUVARLA((@HSTTUTAR * (1 - @HSTINDORAN / 100) - 
	@HSTINDTUTAR)/(1+@HSTKDVORAN/100))*(1+@HSTKDVORAN/100),0)
		  SET @ESKIHSTNETTUTAR = ISNULL(dbo.PARAYUVARLA((@ESKIHSTTUTAR * (1 - @ESKIHSTINDORAN / 100) - 
	@ESKIHSTINDTUTAR)/(1+@ESKIHSTKDVORAN/100))*(1+@ESKIHSTKDVORAN/100),0)
		  -- Hasta tutarları düzeltiliyor
		  SET @HSTTUTAR = ISNULL(dbo.PARAYUVARLA(@HSTTUTAR/(1+@HSTKDVORAN/100))* (1+@HSTKDVORAN/100),0)
		  SET @ESKIHSTTUTAR = ISNULL(dbo.PARAYUVARLA(@ESKIHSTTUTAR/(1+@ESKIHSTKDVORAN/100))* (1+@ESKIHSTKDVORAN/100),0)
	    END
		SET @KRMNETTUTAR = ISNULL(dbo.PARAYUVARLA((@KRMTUTAR * (1 - @KRMINDORAN / 100) - 
@KRMINDTUTAR)/(1+@KRMKDVORAN/100))*(1+@KRMKDVORAN/100),0)
		SET @ESKIKRMNETTUTAR = ISNULL(dbo.PARAYUVARLA((@ESKIKRMTUTAR * (1 - @ESKIKRMINDORAN / 100) - 
@ESKIKRMINDTUTAR)/(1+@ESKIKRMKDVORAN/100))*(1+@ESKIKRMKDVORAN/100),0)

                -- Kurum Tutarları düzeltiliyor
		SET @KRMTUTAR = ISNULL(dbo.PARAYUVARLA(@KRMTUTAR/(1+@KRMKDVORAN/100))*(1+@KRMKDVORAN/100),0)
		SET @ESKIKRMTUTAR = ISNULL(dbo.PARAYUVARLA(@ESKIKRMTUTAR/(1+@ESKIKRMKDVORAN/100))*(1+@ESKIKRMKDVORAN/100),0)

		SET @SGNETTUTAR = ISNULL(dbo.PARAYUVARLA((@SGTUTAR * (1 - @SGINDORAN / 
100))/(1+@SGKDVORAN/100))*(1+@SGKDVORAN/100),0)
		SET @ESKISGNETTUTAR = ISNULL(dbo.PARAYUVARLA((@ESKISGTUTAR * (1 - @ESKISGINDORAN / 
100))/(1+@ESKISGKDVORAN/100))*(1+@ESKISGKDVORAN/100),0)

		-- SG Tutarları düzeltiliyor
		SET @SGTUTAR = ISNULL(dbo.PARAYUVARLA(@SGTUTAR/(1+@SGKDVORAN/100))*(1+@SGKDVORAN/100),0)
		SET @ESKISGTUTAR = ISNULL(dbo.PARAYUVARLA(@ESKISGTUTAR/(1+@ESKISGKDVORAN/100))*(1+@ESKISGKDVORAN/100),0)
	END
	
	SET @MDLKRMTUTAR = ISNULL(@MDLKRMTUTAR,0)
	SET @ESKIMDLKRMTUTAR = ISNULL(@ESKIMDLKRMTUTAR,0)
  
	SET @MLYTTUTAR = ISNULL(@MLYTTUTAR,0)
	SET @ESKIMLYTTUTAR = ISNULL(@ESKIMLYTTUTAR,0)

  IF (@HESAPISLID IS NULL AND @ESKIIPTAL = 0 AND @ESKIONAYLI = 1) OR
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @ESKIIPTAL = 0 AND @IPTAL = 0 AND @ESKIONAYLI = 
1  AND @ONAYLI = 0) OR    
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @ESKIIPTAL = 0 AND @IPTAL = 1 AND @ESKIONAYLI = 
1  AND @ONAYLI = 1) OR 
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @ESKIIPTAL = 0 AND @ESKIONAYLI = 1 AND @HDOSYAID <> @ESKIHDOSYAID)
	BEGIN
	-- Silme, onayı kaldırılmış, iptal edilen, dosyası değiştirilen
		 UPDATE HDOSYA 
		 SET HSTBRUTTUTAR = HSTBRUTTUTAR - @ESKIHSTTUTAR,
				 HSTNETTUTAR = HSTNETTUTAR - @ESKIHSTNETTUTAR,
				 HSTINDRMTUTAR = HSTINDRMTUTAR - ROUND(@ESKIHSTTUTAR - @ESKIHSTNETTUTAR, 6),
				 HSTFATTUTAR = HSTFATTUTAR - CASE WHEN @ESKIHSTHFATISLID IS NOT NULL THEN @ESKIHSTNETTUTAR 
ELSE 0 END,
				 KRMBRUTTUTAR = KRMBRUTTUTAR - @ESKIKRMTUTAR,
				 KRMNETTUTAR = KRMNETTUTAR - @ESKIKRMNETTUTAR,
				 KRMINDRMTUTAR = KRMINDRMTUTAR - ROUND(@ESKIKRMTUTAR - @ESKIKRMNETTUTAR, 6),
				 KRMFATTUTAR = KRMFATTUTAR - CASE WHEN @ESKIKRMHFATISLID IS NOT NULL THEN @ESKIKRMNETTUTAR 
ELSE 0 END,
				 SGBRUTTUTAR = SGBRUTTUTAR - @ESKISGTUTAR,
				 SGNETTUTAR = SGNETTUTAR - @ESKISGNETTUTAR,
				 SGINDRMTUTAR = SGINDRMTUTAR - ROUND(@ESKISGTUTAR - @ESKISGNETTUTAR, 6),
				 SGFATTUTAR = SGFATTUTAR - CASE WHEN @ESKISGFATID IS NOT NULL THEN @ESKISGNETTUTAR ELSE 0 END,
		   		 HDMDLKRMTUTAR=HDMDLKRMTUTAR - @ESKIMDLKRMTUTAR,
		   		 HDMLYTTUTAR = HDMLYTTUTAR - @ESKIMLYTTUTAR,
		   		 HKPTUTAR = HKPTUTAR - CASE WHEN @ESKIHKPISLEMI=1 THEN @ESKIHSTNETTUTAR ELSE 0 END
		WHERE HDOSYAID = @ESKIHDOSYAID
		IF (@@ERROR <> 0)
        BEGIN
          ROLLBACK TRANSACTION 
        END
		IF @FINANSALLOGAKTIF = 1 AND NOT (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @ESKIIPTAL = 0 AND @ESKIONAYLI = 1 AND @HDOSYAID <> @ESKIHDOSYAID)
		BEGIN
		    -- dosyası değiştirilme dışında silme, onayı kaldırılan veya iptal olan işlemler
		    SET @FINANSLOGTIPIID = 16
			IF @ESKIHSTNETTUTAR <> 0
			BEGIN
				INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
				VALUES                     (GETDATE(), @HESAPISLID, 0, @ESKIHSTTUTAR, @ESKIHSTINDORAN, @ESKIHSTINDTUTAR, -1 * @ESKIHSTNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
				IF (@@ERROR <> 0)
				  ROLLBACK TRANSACTION 
			END
			
			IF @ESKIKRMNETTUTAR <> 0
			BEGIN
				INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
				VALUES                     (GETDATE(), @HESAPISLID, 1, @ESKIKRMTUTAR, @ESKIKRMINDORAN, @ESKIKRMINDTUTAR, -1 * @ESKIKRMNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
				IF (@@ERROR <> 0)
				  ROLLBACK TRANSACTION 
			END
			
			IF @ESKISGNETTUTAR <> 0
			BEGIN
				INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
				VALUES                     (GETDATE(), @HESAPISLID, 2, @ESKISGTUTAR, @ESKISGINDORAN, 0, -1 * @ESKISGNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
				IF (@@ERROR <> 0)
				  ROLLBACK TRANSACTION 
			END
		END
	END   

	IF (@ESKIHESAPISLID IS NULL AND @IPTAL = 0 AND @ONAYLI = 1) OR
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @ESKIIPTAL = 0 AND @IPTAL = 0 AND @ESKIONAYLI = 
0  AND @ONAYLI = 1) OR
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @ESKIIPTAL = 1 AND @IPTAL = 0 AND @ESKIONAYLI = 
1  AND @ONAYLI = 1) OR
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @IPTAL = 0 AND @ONAYLI = 1 AND @HDOSYAID <> @ESKIHDOSYAID) OR
		 (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND UPDATE(TUTARSAYAC) AND @IPTAL = 0 AND @ONAYLI = 
1)
	BEGIN
	-- Ekleme, onaylanmış, iptali geri alınan, Dosya toplamının yeniden hesaplanması, dosyası değiştirilen 
 		 UPDATE HDOSYA 
		 SET HSTBRUTTUTAR = HSTBRUTTUTAR + @HSTTUTAR,
				 HSTNETTUTAR = HSTNETTUTAR + @HSTNETTUTAR,
				 HSTINDRMTUTAR = HSTINDRMTUTAR + ROUND(@HSTTUTAR - @HSTNETTUTAR, 6),
				 HSTFATTUTAR = HSTFATTUTAR + CASE WHEN @HSTHFATISLID IS NOT NULL THEN @HSTNETTUTAR ELSE 0 
END,
				 KRMBRUTTUTAR = KRMBRUTTUTAR + @KRMTUTAR,
				 KRMNETTUTAR = KRMNETTUTAR + @KRMNETTUTAR,
				 KRMINDRMTUTAR = KRMINDRMTUTAR + ROUND(@KRMTUTAR - @KRMNETTUTAR, 6),
				 KRMFATTUTAR = KRMFATTUTAR + CASE WHEN @KRMHFATISLID IS NOT NULL THEN @KRMNETTUTAR ELSE 0 
END,
				 SGBRUTTUTAR = SGBRUTTUTAR + @SGTUTAR,
				 SGNETTUTAR = SGNETTUTAR + @SGNETTUTAR,
				 SGINDRMTUTAR = SGINDRMTUTAR + ROUND(@SGTUTAR - @SGNETTUTAR, 6),
				 SGFATTUTAR = SGFATTUTAR + CASE WHEN @SGFATID IS NOT NULL THEN @SGNETTUTAR ELSE 0 END,
				
				 HDMDLKRMTUTAR=HDMDLKRMTUTAR + @MDLKRMTUTAR,
				 HDMLYTTUTAR = HDMLYTTUTAR + @MLYTTUTAR,
		   		 HKPTUTAR = HKPTUTAR + CASE WHEN @HKPISLEMI=1 THEN  @HSTNETTUTAR ELSE 0 END
		WHERE HDOSYAID = @HDOSYAID
		IF (@@ERROR <> 0)
        BEGIN
          ROLLBACK TRANSACTION 
        END
		IF @FINANSALLOGAKTIF = 1 AND NOT (@HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND @IPTAL = 0 AND @ONAYLI = 1 AND @HDOSYAID <> @ESKIHDOSYAID)
		BEGIN
		    -- dosyası değiştirilme dışında ekleme, onaylanan veya iptali geri alınan olan işlemler
		    IF @ESKIHESAPISLID IS NOT NULL AND @ESKIONAYLI = 1 AND @ONAYLI = 1 AND @ESKIIPTAL = 1 AND @IPTAL = 0
		      SET @FINANSLOGTIPIID = 20
		    ELSE
		      SET @FINANSLOGTIPIID = 19
		      
		    IF @YENIISLEMINFINANSALLOGUTUTULSUN = 1 OR @FINANSLOGTIPIID = 20
		    BEGIN
		        -- yeni işlem loglanıyorsa yen işlem ve onaylananlar loglansın, iptali geri alınan işlemler sürekli loglansın
				IF @HSTNETTUTAR <> 0
				BEGIN
					INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
					VALUES                     (GETDATE(), @HESAPISLID, 0, @HSTTUTAR, @HSTINDORAN, @HSTINDTUTAR, @HSTNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
					IF (@@ERROR <> 0)
					  ROLLBACK TRANSACTION 
				END
				
				IF @KRMNETTUTAR <> 0
				BEGIN
					INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
					VALUES                     (GETDATE(), @HESAPISLID, 1, @KRMTUTAR, @KRMINDORAN, @KRMINDTUTAR, @KRMNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
					IF (@@ERROR <> 0)
					  ROLLBACK TRANSACTION 
				END
				
				IF @SGNETTUTAR <> 0
				BEGIN
					INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
					VALUES                     (GETDATE(), @HESAPISLID, 2, @SGTUTAR, @SGINDORAN, 0, @SGNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
					IF (@@ERROR <> 0)
					  ROLLBACK TRANSACTION 
				END
			END
		END
	END   

	IF @HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND (NOT UPDATE(TUTARSAYAC)) AND 
		 @ESKIIPTAL = 0 AND @IPTAL = 0 AND @ESKIONAYLI = 1  AND @ONAYLI = 1 
	BEGIN
	-- Güncelleme
		IF @HSTTUTAR <> @ESKIHSTTUTAR OR
				@HSTNETTUTAR <> @ESKIHSTNETTUTAR OR
				@HSTINDORAN <> @ESKIHSTINDORAN OR
				@HSTINDTUTAR <> @ESKIHSTINDTUTAR OR
				@KRMTUTAR <> @ESKIKRMTUTAR OR
				@KRMNETTUTAR <> @ESKIKRMNETTUTAR OR
				@KRMINDORAN <> @ESKIKRMINDORAN OR
				@KRMINDTUTAR <> @ESKIKRMINDTUTAR OR
				@SGTUTAR <> @ESKISGTUTAR OR
				@SGNETTUTAR <> @ESKISGNETTUTAR OR
				@SGINDORAN <> @ESKISGINDORAN OR
				@MDLKRMTUTAR <> @ESKIMDLKRMTUTAR OR
				@MLYTTUTAR <> @ESKIMLYTTUTAR OR 
				@HKPISLEMI <> @ESKIHKPISLEMI
		BEGIN
	-- İptal veya onay durumu değişmeden güncellenen işlem
			UPDATE    HDOSYA
			SET              HSTBRUTTUTAR = HSTBRUTTUTAR + @HSTTUTAR - @ESKIHSTTUTAR, 
								  HSTNETTUTAR = HSTNETTUTAR + @HSTNETTUTAR - @ESKIHSTNETTUTAR, 
								  HSTINDRMTUTAR = HSTINDRMTUTAR + ROUND(@HSTTUTAR - @HSTNETTUTAR, 6) - ROUND(@ESKIHSTTUTAR - @ESKIHSTNETTUTAR, 6), 
								  KRMBRUTTUTAR = KRMBRUTTUTAR + @KRMTUTAR - @ESKIKRMTUTAR, KRMNETTUTAR = KRMNETTUTAR + @KRMNETTUTAR - @ESKIKRMNETTUTAR, 
								  KRMINDRMTUTAR = KRMINDRMTUTAR + ROUND(@KRMTUTAR - @KRMNETTUTAR, 6) - ROUND(@ESKIKRMTUTAR - @ESKIKRMNETTUTAR, 6), 
								  SGBRUTTUTAR = SGBRUTTUTAR + @SGTUTAR - @ESKISGTUTAR, SGNETTUTAR = SGNETTUTAR + @SGNETTUTAR - @ESKISGNETTUTAR, 
								  SGINDRMTUTAR = SGINDRMTUTAR + ROUND(@SGTUTAR - @SGNETTUTAR, 6) - ROUND(@ESKISGTUTAR - @ESKISGNETTUTAR, 6), 
								  HDMDLKRMTUTAR = HDMDLKRMTUTAR + @MDLKRMTUTAR - @ESKIMDLKRMTUTAR, HDMLYTTUTAR = HDMLYTTUTAR + @MLYTTUTAR - @ESKIMLYTTUTAR, 
								  HKPTUTAR = HKPTUTAR + CASE WHEN @HKPISLEMI = 1 THEN @HSTNETTUTAR ELSE 0 END - 
								    CASE WHEN @ESKIHKPISLEMI = 1 THEN @ESKIHSTNETTUTAR ELSE 0 END
			WHERE     (HDOSYAID = @HDOSYAID)
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
			IF @FINANSALLOGAKTIF = 1 AND ISNULL(@FINANSLOGTIPIID, 0) NOT IN (4, 5)
			BEGIN
			    -- Pakete dahil etme ve paketten çıkartma loglanmıyor...
				IF NOT UPDATE(FINANSLOGTIPIID) 
				-- Log tipi update de yoksa dışardan update yapılmıştır...
				  SET @FINANSLOGTIPIID = NULL 
				  
				IF @HSTTUTAR <> @ESKIHSTTUTAR OR
						@HSTNETTUTAR <> @ESKIHSTNETTUTAR OR
						@HSTINDORAN <> @ESKIHSTINDORAN OR
						@HSTINDTUTAR <> @ESKIHSTINDTUTAR 
				BEGIN
					INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
					VALUES                     (GETDATE(), @HESAPISLID, 0, @HSTTUTAR, @HSTINDORAN, @HSTINDTUTAR, @HSTNETTUTAR - @ESKIHSTNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
					IF (@@ERROR <> 0)
					  ROLLBACK TRANSACTION 
				END
				
				IF @KRMTUTAR <> @ESKIKRMTUTAR OR
						@KRMNETTUTAR <> @ESKIKRMNETTUTAR OR
						@KRMINDORAN <> @ESKIKRMINDORAN OR
						@KRMINDTUTAR <> @ESKIKRMINDTUTAR 
				BEGIN
					INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
					VALUES                     (GETDATE(), @HESAPISLID, 1, @KRMTUTAR, @KRMINDORAN, @KRMINDTUTAR, @KRMNETTUTAR - @ESKIKRMNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
					IF (@@ERROR <> 0)
					  ROLLBACK TRANSACTION 
				END
				
				IF @SGTUTAR <> @ESKISGTUTAR OR
						@SGNETTUTAR <> @ESKISGNETTUTAR OR
						@SGINDORAN <> @ESKISGINDORAN
				BEGIN
					INSERT INTO [FINANSALLOG]  ([TARIH], [HESAPISLID], [KURUMTIPI], [BRUTTUTAR], [INDORANI], [INDTUTARI], [NETTUTARFARK], [FINASLOGTIPIID], [KULLANICIKODU], [BILGISAYARADI])     
					VALUES                     (GETDATE(), @HESAPISLID, 2, @SGTUTAR, @SGINDORAN, 0, @SGNETTUTAR - @ESKISGNETTUTAR, @FINANSLOGTIPIID, @SGKULLANICI, HOST_NAME())
					IF (@@ERROR <> 0)
					  ROLLBACK TRANSACTION 
				END
			END
		END
	END

	IF @HESAPISLID IS NOT NULL AND @ESKIHESAPISLID IS NOT NULL AND (NOT UPDATE(TUTARSAYAC))
	BEGIN
		IF UPDATE(OZELHFATISLID) AND @HSTHFATISLID IS NOT NULL AND @ESKIHSTHFATISLID IS NULL 
		BEGIN
			UPDATE HDOSYA
			SET HSTFATTUTAR = HSTFATTUTAR + @HSTNETTUTAR
			WHERE HDOSYAID = @HDOSYAID
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
		END
	  
		IF UPDATE(OZELHFATISLID) AND @HSTHFATISLID IS NULL AND @ESKIHSTHFATISLID IS NOT NULL 
		BEGIN
			UPDATE HDOSYA
			SET HSTFATTUTAR = HSTFATTUTAR - @ESKIHSTNETTUTAR
			WHERE HDOSYAID = @HDOSYAID
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
		END

		IF UPDATE(KRMHFATISLID) AND @KRMHFATISLID IS NOT NULL AND @ESKIKRMHFATISLID IS NULL 
		BEGIN
			UPDATE HDOSYA
			SET KRMFATTUTAR = KRMFATTUTAR + @KRMNETTUTAR
			WHERE HDOSYAID = @HDOSYAID
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
		END
	  
		IF UPDATE(KRMHFATISLID) AND @KRMHFATISLID IS NULL AND @ESKIKRMHFATISLID IS NOT NULL 
		BEGIN
			UPDATE HDOSYA
			SET KRMFATTUTAR = KRMFATTUTAR - @ESKIKRMNETTUTAR
			WHERE HDOSYAID = @HDOSYAID
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
		END

		IF UPDATE(SGFATID) AND @SGFATID IS NOT NULL AND @ESKISGFATID IS NULL 
		BEGIN
			UPDATE HDOSYA
			SET SGFATTUTAR = SGFATTUTAR + @SGNETTUTAR
			WHERE HDOSYAID = @HDOSYAID
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
		END
	  
		IF UPDATE(SGFATID) AND @SGFATID IS NULL AND @ESKISGFATID IS NOT NULL 
		BEGIN
			UPDATE HDOSYA
			SET SGFATTUTAR = SGFATTUTAR - @ESKISGNETTUTAR
			WHERE HDOSYAID = @HDOSYAID
			IF (@@ERROR <> 0)
			BEGIN
			  ROLLBACK TRANSACTION 
			END
		END
	END

	FETCH NEXT FROM @UPDATED_CURSOR 
	INTO @HESAPISLID, @HDOSYAID, 
		 @IPTAL, @ONAYLI, @DOVIZKODU, 
		 @HSTKDVORAN, @KRMKDVORAN, @SGKDVORAN,
		 @HSTTUTAR, @HSTINDORAN, 
		 @HSTINDTUTAR, @HSTHFATISLID, 
		 @KRMTUTAR, @KRMINDORAN, 
		 @KRMINDTUTAR, @KRMHFATISLID, 
		 @SGTUTAR, @SGINDORAN,
		 @SGFATID, @MDLKRMTUTAR, 
		 @MLYTTUTAR, @HKPISLEMI, @TABLOTIPI,
		 @FINANSLOGTIPIID, @SGKULLANICI,
		 @ESKIHESAPISLID, @ESKIHDOSYAID, 
		 @ESKIIPTAL, @ESKIONAYLI, @ESKIDOVIZKODU, 
		 @ESKIHSTKDVORAN, @ESKIKRMKDVORAN, @ESKISGKDVORAN,
		 @ESKIHSTTUTAR, @ESKIHSTINDORAN, 
		 @ESKIHSTINDTUTAR, @ESKIHSTHFATISLID, 
		 @ESKIKRMTUTAR, @ESKIKRMINDORAN, 
		 @ESKIKRMINDTUTAR, @ESKIKRMHFATISLID, 
		 @ESKISGTUTAR, @ESKISGINDORAN,
		 @ESKISGFATID, @ESKIMDLKRMTUTAR,
		 @ESKIMLYTTUTAR, @ESKIHKPISLEMI,@ESKITABLOTIPI, 
		 @HSTFATKDVDAHIL, @FINANSALLOGAKTIF,
		 @YENIISLEMINFINANSALLOGUTUTULSUN
END

CLOSE @UPDATED_CURSOR
DEALLOCATE @UPDATED_CURSOR


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
