create or ALTER    PROCEDURE [dbo].[spStokHarKaydet]
   @IslemNo int,
   @IslemTuru nvarchar(10),
   @CariNo int,
   @CariKodu nvarchar(20),
   @CariAdi nvarchar(50),
   @StokNo int,
   @StokKodu nvarchar(30),
   @StokAdi nvarchar(500),
   @Miktar float,
   @Birim nvarchar(10),
   @BirimMiktar float,
   @BirimFiyat float,
   @Iskonto1 float,
   @Iskonto2 float,
   @Iskonto3 float,
   @Iskonto4 float,
   @Tutar float,
   @SiparisNo int,
   @SiparisTarihi datetime,
   @Kdv float,
   @KdvTutari float,
   @IndirimTutari float,
   @SatirIskTut float,
   @FisTuru nvarchar(1),
   @GC nvarchar(1),
   @EkIskTut1 float,
   @EkIskTut2 float,
   @EkIskTut3 float,
   @EkIskTutTop float,
   @FaturaNo int,
   @FaturaTarihi datetime,
   @Satici nvarchar(10),
   @TopTutar float,
   @KDVHD nvarchar(1),
   @DovizTut float,
   @DovizCinsi smallint,
   @DovizKodu nvarchar(2),
   @DovizTutB float,
   @Depo nvarchar(30),
   @AnaBirimFiyat float,
   @FaturaMiktari float,
   @IslemNo2 int,
   @OTVOrani float,
   @OTVTutari float,
   @KULNO int,
   @KULADI nvarchar(20),
   @SaticiAdi nvarchar(25),
   @AltIskYuzde1 float,
   @AltIskYuzde2 float,
   @AltIskYuzde3 float,
   @AcikKapali nvarchar(3),
   @DovizBorc float,
   @DovizAlacak float,
   @IslemNo3 int,
   @IslemNo4 int,
   @TankKodu nvarchar(30),
   @TankAdi nvarchar(30),
   @FisNo nvarchar(9),
   @Plaka nvarchar(8),
   @TP nvarchar(2),
   @VardiyaKodu nvarchar(15),
   @TahsilatEH nvarchar(1),
   @km float,
   @Departman nvarchar(8),
   @SonTutar float,
   @SonTutarDov float,
   @SatMasrafTutari float,
   @SatIskTut1 float,
   @SatIskTut2 float,
   @SatIskTut3 float,
   @SatIskTut4 float,
   @AnaBirim nvarchar(10),
   @OtvBirimTutari float,
   @IlkBirimFiyat float,
   @VadeFarkliBirimFiyat float,
   @FifoFiyat float,
   @LifoFiyat float,
   @NFiyat float,
   @NFiyatDovBr float,
   @StokTipi nvarchar(15),
   @VardiyaNo nvarchar(8),
   @Markasi nvarchar(30),
   @SiraNo int,
   @Iskonto5 float,
   @Iskonto6 float,
   @Iskonto7 float,
   @Iskonto8 float,
   @Iskonto9 float,
   @Iskonto10 float,
   @SatIskTut5 float,
   @SatIskTut6 float,
   @SatIskTut7 float,
   @SatIskTut8 float,
   @SatIskTut9 float,
   @SatIskTut10 float,
   @RBIslemNo int,
   @StokAgirligi float,
   @KontrolBarkodu nvarchar(30),
   @HatKodu nvarchar(15),
   @LotNo int,
   @StokBolge nvarchar(30),
   @StokRaf nvarchar(30),
   @StokYer nvarchar(30),
   @BurutMiktar float,
   @FireOrani float,
   @FireMiktari float,
   @DovizKuru float = 1,

   -- YENİ TAKİP PARAMETRELERİ
   @GTIN nvarchar(50) = NULL,                -- İlaç için zorunlu
   @TakipLotNo nvarchar(30) = NULL,
   @SeriNo nvarchar(30) = NULL,
   @SonKullanmaTarihi datetime = NULL,           -- İlaç için
   @UTS_UNO nvarchar(50) = NULL,             -- Tıbbi cihaz için zorunlu
   @UretimTarihi datetime = NULL                 -- Tıbbi cihaz için
AS
BEGIN
    SET NOCOUNT ON;
    SET XACT_ABORT ON;

    DECLARE @RBIslemNoArttir int = 0;
    DECLARE @StokHarNoId int;

    BEGIN TRY
        BEGIN TRAN;

        IF ISNULL(@StokNo, 0) = 0
        BEGIN
            SELECT TOP 1 @StokNo = StokNo
            FROM dbo.STOKKARTI
            WHERE Kodu = @StokKodu;
        END

        IF ISNULL(@RBIslemNo, 0) > 0
        BEGIN
            SET @RBIslemNoArttir = @RBIslemNo;
        END
        ELSE
        BEGIN
            SET @RBIslemNoArttir = 0;
        END

        IF ISNULL(@TankKodu, '') <> '' AND @RBIslemNoArttir = 0
        BEGIN
            EXEC dbo.spIslemNoAlArtir @RBIslemNoArttir OUTPUT;

            INSERT INTO dbo.RenkBedenHareket
            (
                IslemNo, SHIslemNo, StokKodu, Beden, Renk, Miktar, GC, KulNo, Depo, HT
            )
            VALUES
            (
                @RBIslemNoArttir, @IslemNo, @StokKodu, @TankAdi, @TankKodu, @Miktar, @GC, @KULNO, @Depo, 'FA'
            );
        END

        INSERT INTO dbo.STOKHAR
        (
            IslemNo, IslemTuru, CariNo, CariKodu, CariAdi, StokNo, StokKodu, StokAdi, Miktar, Birim,
            BirimMiktar, BirimFiyat, Iskonto1, Iskonto2, Iskonto3, Iskonto4, Tutar, SiparisNo, SiparisTarihi,
            Kdv, KdvTutari, IndirimTutari, SatirIskTut, FisTuru, GC, EkIskTut1, EkIskTut2, EkIskTut3,
            EkIskTutTop, FaturaNo, FaturaTarihi, Satici, TopTutar, KDVHD, DovizTut, DovizCinsi, DovizKodu,
            DovizTutB, Depo, AnaBirimFiyat, FaturaMiktari, IslemNo2, OTVOrani, OTVTutari, KULNO, KULADI,
            SaticiAdi, AltIskYuzde1, AltIskYuzde2, AltIskYuzde3, AcikKapali, DovizBorc, DovizAlacak, IslemNo3,
            IslemNo4, TankKodu, TankAdi, FisNo, Plaka, TP, VardiyaKodu, TahsilatEH, km, Departman, SonTutar,
            SonTutarDov, SatMasrafTutari, SatIskTut1, SatIskTut2, SatIskTut3, SatIskTut4, AnaBirim,
            OtvBirimTutari, IlkBirimFiyat, VadeFarkliBirimFiyat, LifoFiyat, FifoFiyat, NFiyat, NFiyatDovBr,
            StokTipi, VardiyaNo, Markasi, SiraNo, Iskonto5, Iskonto6, Iskonto7, Iskonto8, Iskonto9, Iskonto10,
            SatIskTut5, SatIskTut6, SatIskTut7, SatIskTut8, SatIskTut9, SatIskTut10, RBIslemNo, StokAgirligi,
            KontrolBarkodu, HatKodu, LotNo, StokBolge, StokRaf, StokYer, BurutMiktar, FireOrani, FireMiktari,
            DovizKuru
        )
        VALUES
        (
            @IslemNo, @IslemTuru, @CariNo, @CariKodu, @CariAdi, @StokNo, @StokKodu, @StokAdi, @Miktar, @Birim,
            @BirimMiktar, @BirimFiyat, @Iskonto1, @Iskonto2, @Iskonto3, @Iskonto4, @Tutar, @SiparisNo,
            @SiparisTarihi, @Kdv, @KdvTutari, @IndirimTutari, @SatirIskTut, @FisTuru, @GC, @EkIskTut1,
            @EkIskTut2, @EkIskTut3, @EkIskTutTop, @FaturaNo, @FaturaTarihi, @Satici, @TopTutar, @KDVHD,
            @DovizTut, @DovizCinsi, @DovizKodu, @DovizTutB, @Depo, @AnaBirimFiyat, @FaturaMiktari, @IslemNo2,
            @OTVOrani, @OTVTutari, @KULNO, @KULADI, @SaticiAdi, @AltIskYuzde1, @AltIskYuzde2, @AltIskYuzde3,
            @AcikKapali, @DovizBorc, @DovizAlacak, @IslemNo3, @IslemNo4, @TankKodu, @TankAdi, @FisNo, @Plaka,
            @TP, @VardiyaKodu, @TahsilatEH, @km, @Departman, @SonTutar, @SonTutarDov, @SatMasrafTutari,
            @SatIskTut1, @SatIskTut2, @SatIskTut3, @SatIskTut4, @AnaBirim, @OtvBirimTutari, @IlkBirimFiyat,
            @VadeFarkliBirimFiyat, @LifoFiyat, @FifoFiyat, @NFiyat, @NFiyatDovBr, @StokTipi, @VardiyaNo,
            @Markasi, @SiraNo, @Iskonto5, @Iskonto6, @Iskonto7, @Iskonto8, @Iskonto9, @Iskonto10,
            @SatIskTut5, @SatIskTut6, @SatIskTut7, @SatIskTut8, @SatIskTut9, @SatIskTut10, @RBIslemNoArttir,
            @StokAgirligi, @KontrolBarkodu, @HatKodu, @LotNo,
            CASE WHEN ISNULL(@StokBolge, '') = '' THEN 'YOK' ELSE @StokBolge END,
            CASE WHEN ISNULL(@StokRaf, '') = '' THEN 'YOK' ELSE @StokRaf END,
            CASE WHEN ISNULL(@StokYer, '') = '' THEN 'YOK' ELSE @StokYer END,
            @BurutMiktar, @FireOrani, @FireMiktari, @DovizKuru
        );

        ----------------------------------------------------------------
        -- Takip detay kaydı
        ----------------------------------------------------------------

		IF @SonKullanmaTarihi < '1900-01-01'
			SET @SonKullanmaTarihi = NULL;

		IF @UretimTarihi < '1900-01-01'
			SET @UretimTarihi = NULL;

        IF NULLIF(@GTIN, '') IS NOT NULL OR NULLIF(@TakipLotNo, '') IS NOT NULL OR NULLIF(@SeriNo, '') IS NOT NULL 
			OR NULLIF(@UTS_UNO, '') IS NOT NULL OR @SonKullanmaTarihi IS NOT NULL OR @UretimTarihi IS NOT NULL
        BEGIN          
		    SET @StokHarNoId = SCOPE_IDENTITY();

            INSERT INTO dbo.STOKHAR_TakipDetay
            (
                StokHarID,
                IslemNo,
                GTIN,
                LotNo,
                SeriNo,
                SonKullanmaTarihi,
                UTS_UNO,
                UretimTarihi,
                KayitTarihi
            )
            VALUES
            (
                @StokHarNoId,
                @IslemNo,
                @GTIN,
                @TakipLotNo,
                @SeriNo,
                @SonKullanmaTarihi,
                @UTS_UNO,
                @UretimTarihi,
                GETDATE()
            );
        END

        COMMIT TRAN;

        SELECT
            @StokHarNoId AS StokHarNoId,
            @RBIslemNoArttir AS RBIslemNo;
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
            ROLLBACK TRAN;

        THROW;
    END CATCH
END
GO