
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HTEDAVITABELA_TALEPFISI_KES]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[HTEDAVITABELA_TALEPFISI_KES]
GO

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[HTEDAVITABELA_TALEPFISI_KES] 
@STOKID AS INT,
@SUBEID AS INT,
@SKODU NVARCHAR(10),
@GDEPOID AS INT,
@CDEPOID AS INT,
@TARIH AS DATETIME,
@BOLUMID AS INT,
@REUSE AS BIT,
@ADET AS FLOAT,
@YETKILI AS NVARCHAR(15),
@ISLEMKODU AS NVARCHAR(15),
@HKIMLIKID AS INT,
@HTEDAVITABELAID AS INT,
@HTEDAVITABELADETAYID AS INT,
@HDOSYAID AS INT,
@HADSOYAD AS NVARCHAR(50),
@IADE AS BIT,
@EHUGEREKLIDIR AS BIT

AS
SET NOCOUNT ON
DECLARE @FISID AS INT,
  @ISLID AS INT,
  @ENO AS NVARCHAR(10),
  @USERDEPO_NOTUSE AS INT,
  @FBIRIM AS nvarchar(15)

-- REUSE MALZEME İSE 
IF @REUSE = 1 
  RETURN

IF NOT EXISTS (SELECT STOKID FROM STOK WHERE STOKID = @STOKID) 
BEGIN
   RAISERROR('Stok Kartı bulunamadı',16,1)
   RETURN 1
END

IF NOT EXISTS (SELECT DEPOID FROM DEPO WHERE DEPOID = @GDEPOID)
BEGIN
   RAISERROR('Talep Eden Depo Kartı bulunamadı',16,1)
   RETURN 2
END

IF NOT EXISTS (SELECT DEPOID FROM DEPO WHERE DEPOID = @CDEPOID)
BEGIN
   RAISERROR('Ana Depo Kartı bulunamadı',16,1)
   RETURN 3
END

-- O USER O DEPOYU KULLANABİLİRMİ BİR BAKALIM
DECLARE @STR AS NVARCHAR(100)
IF (ISNULL(@CDEPOID,0)=0) AND (ISNULL(@GDEPOID,0)=0)
BEGIN
   SET @STR=@YETKILI+' Depo seçilmeden depo fişi kesilemez!'
   RAISERROR(@STR,16,1)
   RETURN 3
END

SET @FBIRIM =(SELECT BIRIM FROM STOK WHERE STOKID = @STOKID) 

SELECT @FISID = TALEPFISID 
FROM TALEPFIS 
WHERE TARIH = @TARIH AND SKODU = @SKODU AND CDEPOID = @CDEPOID AND GDEPOID = @GDEPOID AND  HTEDAVITABELAID=@HTEDAVITABELAID 
	--AND ACIKLAMA = 'Otomatik Talep Sistemi~' 
	AND DURUM='YENİ'  
IF @@ROWCOUNT=0  --FIS EKLEYELIM
BEGIN
  PRINT 'FIS KESILECEK'

  EXEC SAYACOKU 'TALEPFIS',@FISID OUTPUT
  INSERT INTO TALEPFIS([TALEPFISID],[TARIH],[YETKILI],[ISLEM],[ENO],[ACIKLAMA],[SUBEID],[SKODU],[GDEPOID], [CDEPOID],[DURUM],[HTEDAVITABELAID],[HKIMLIKID],[IADE],[KTARIH])
                            VALUES (@FISID,@TARIH,@YETKILI,'TALEP',LTRIM(STR(@FISID)),'Otomatik Talep Sistemi~'+@HADSOYAD+' hastası için dosya no :'+CAST(@HDOSYAID AS NVARCHAR(15)),@SUBEID,@SKODU,@GDEPOID,@CDEPOID,'YENİ', @HTEDAVITABELAID, @HKIMLIKID,ISNULL(@IADE, 0),GetDate())
  IF @@ERROR<>0 
  BEGIN
    RAISERROR('Talep fişi oluşturulamadı.',16,1)
    RETURN 4
  END
  PRINT 'FIS INSERT OLDU'
END

--SATIRI ISLEYELIM
SELECT STOKID FROM TALEPFISISL WHERE TALEPFISID = @FISID AND STOKID = @STOKID AND HTEDAVITABELADETAYID = @HTEDAVITABELADETAYID 
IF @@ROWCOUNT = 0 --YENI SATIR EKLEYELIM
BEGIN
  EXEC SAYACOKU 'TALEPFISISL',@ISLID  OUTPUT
  INSERT INTO TALEPFISISL([TALEPFISISLID], [TALEPFISID], [STOKID], [TMIKTAR],[VMIKTAR], [YETKILI],[ITEMKODU],[HTEDAVITABELADETAYID], [FBIRIM], [EHUGEREKLIDIR])
  VALUES (@ISLID,@FISID,@STOKID,@ADET,NULL,@YETKILI,@ISLEMKODU,@HTEDAVITABELADETAYID,@FBIRIM,ISNULL(@EHUGEREKLIDIR,0))
  IF @@ERROR<>0 
  BEGIN
    RAISERROR('Talep işlemi eklenemedi.',16,1)
    RETURN 5
  END
END
ELSE
BEGIN
  UPDATE TALEPFISISL SET TMIKTAR = TMIKTAR + @ADET, YETKILI = @YETKILI  WHERE TALEPFISID = @FISID AND STOKID = @STOKID 
  IF @@ERROR<>0 
  BEGIN
    RAISERROR('Talep işlemi guncellenemedi.',16,1)
    RETURN 5
  END
END




