-- sp_helptext sp_STOKHARDETBAG_Update
go
  
create   OR ALTER   procedure [dbo].[sp_STOKHARDETBAG_Update](                          
           @IslemNo int,@IslemTuru nvarchar(10),@CariNo int,@CariKodu nvarchar(20),                          
           @CariAdi nvarchar(50),@Tutar nvarchar(50),@SiparisTarihi datetime,@KdvTutari nvarchar(50),                          
           @FisTuru nvarchar(1),@GC nvarchar(1),@EkIskTut1 nvarchar(50),@EkIskTut2 nvarchar(50),@EkIskTut3 nvarchar(50),                          
           @EkIskTutTop nvarchar(50),@FaturaNo int,@FaturaTarihi datetime,@Satici nvarchar(10),                          
           @DovizTut nvarchar(50),@DovizCinsi smallint,@DovizKodu nvarchar(2),@DovizTutB nvarchar(50),                          
           @BelgeNo nvarchar(10),@OzelKod1 nvarchar(3),@OzelKod2 nvarchar(3),@OzelKod3 nvarchar(3),                          
           @IslemTipi nvarchar(30),@IrsNo nvarchar(13),@Ack1 nvarchar(200),@Ack2 nvarchar(200),                          
           @Ack3 nvarchar(200),@Ack4 nvarchar(200),@KULNO int,@KULADI nvarchar(20),@FatSerNo nvarchar(3),                          
           @SaticiAdi nvarchar(25),@AltIskYuzde1 nvarchar(50),@AltIskYuzde2 nvarchar(50),@AltIskYuzde3 nvarchar(50),                          
           @AK nvarchar(3),@FaturaOPlanGunu int,@Depo nvarchar(30),@GunAy nvarchar(3),@OpsiyonGunu int,                          
           @AcikKapali nvarchar(3),@DovizBorc nvarchar(50),@DovizAlacak nvarchar(50),@FYaz nvarchar(1),                          
           @SecimEH nvarchar(1),@IslemNo3 int,@TP nvarchar(2),@FisNo nvarchar(9),@VardiyaKodu nvarchar(15),                          
           @VardiyaDurumu nvarchar(9),@Departman nvarchar(8),@MasrafToplami nvarchar(50),@KDVHD char(1),                          
           @IslemNo4 int,@KayitDuzeyi int,@YazarKasaNo int,@YazarKasaFisNo nvarchar(10),                          
           @YaziciCount nvarchar(50),@IsIstasyonKodu nvarchar(30),@IsIstasyonAdi nvarchar(30),                          
           @TevkifatTutari nvarchar(50),@VardiyaNo nvarchar(8),@OdemeBilgisi nvarchar(100),@FaturaAdresNo int,                          
           @SevkAdresNo int,@FI nvarchar(1),@EF_ISTISNA int,@FaturaTipi int,@DovizKuru float = 1,@eFaturaNo nvarchar(25) = '', @SevkTarihi datetime = NULL,@ProjeID INT = NULL)                          
AS                          
    
declare @TutarYeni float                        
declare @KdvTutariYeni float                        
declare @DovizTutYeni float                        
declare @MUSNO int                        
declare @MUSKOD nvarchar(20)                      
declare @MUSADI nvarchar(50)                             
                      
declare @DovizBorcYeni float                        
declare @DovizAlacakYeni float             
          
declare @YeniTevkifatTut float          
          
SET @YeniTevkifatTut = ISNULL((Select SUM(TevkifatTutari) from Tevkifat t where t.IslemNo = @IslemNo),0)          
                      
 print(@FisTuru)                      
 if (@FisTuru='I')                      
 begin                      
 print('Irsaliye')                      
 set @TutarYeni=(select sum(SonTutar) - @YeniTevkifatTut from STOKHAR where STOKHAR.IslemNo=@IslemNo  )                        
 set @KdvTutariYeni=(select sum(KdvTutari) from STOKHAR where STOKHAR.IslemNo=@IslemNo )                        
 set @DovizTutYeni=( @TutarYeni/ convert(float,@DovizKuru) )                        
 end                 
 else                      
 begin                      
 print('diğer')                      
 set @TutarYeni=(select sum(CASE WHEN SUBSTRING(StokTipi,1,1) = '-' THEN SonTutar * -1 ELSE SonTutar END) - @YeniTevkifatTut from STOKHAR where STOKHAR.IslemNo=@IslemNo  or STOKHAR.IslemNo3=@IslemNo)                        
 set @KdvTutariYeni=(select sum(CASE WHEN SUBSTRING(StokTipi,1,1) = '-' THEN KdvTutari * -1 ELSE KdvTutari END) from STOKHAR where STOKHAR.IslemNo=@IslemNo  or STOKHAR.IslemNo3=@IslemNo)                        
set @DovizTutYeni=( @TutarYeni/ convert(float,@DovizKuru) )                        
 end                                
                
 if(@IslemTuru='DepoVirman')                      
 begin                      
 set @TutarYeni =@TutarYeni/2                      
 set @KdvTutariYeni=@KdvTutariYeni/2                      
 set @DovizTutYeni=@DovizTutYeni/2                            
 end                      
                    
                       
IF (select COUNT(*) from (select Count(CariKodu) c from STOKHAR where STOKHAR.IslemNo=@IslemNo  or STOKHAR.IslemNo3=@IslemNo GROUP BY CariKodu) t) > 1                    
BEGIN             
 RAISERROR ('Kayıtlarda cari farkı vardır. Kontrol ediniz..!',10,1)                
 RETURN 0                
END                    
                
select @MUSNO=MUSNO,@MUSKOD=MUSKOD,@MUSADI=MUSADI from AMUSTERI where MUSKOD in (select CariKodu from STOKHAR where STOKHAR.IslemNo=@IslemNo  or STOKHAR.IslemNo3=@IslemNo)                          
                
UPDATE    STOKHARDETBAG                          
SET              IslemTuru = @IslemTuru, CariNo = @MUSNO, CariKodu = @MUSKOD, CariAdi = @MUSADI,                           
Tutar =  @TutarYeni , SiparisTarihi = @SiparisTarihi, KdvTutari = @KdvTutariYeni,                           
FisTuru = @FisTuru, GC = @GC, EkIskTut1 = convert(float,@EkIskTut1), EkIskTut2 = convert(float,@EkIskTut2),                           
EkIskTut3 = convert(float,@EkIskTut3),                           
EkIskTutTop = convert(float,@EkIskTutTop),                           
FaturaNo = @FaturaNo, FaturaTarihi = @FaturaTarihi, SevkTarihi = @SevkTarihi , Satici = @Satici, DovizTut = @DovizTutYeni,                           
DovizCinsi = @DovizCinsi, DovizKodu = @DovizKodu, DovizTutB =@DovizTutYeni/* convert(float,@DovizTutB)*/,                          
BelgeNo = @BelgeNo, OzelKod1 = @OzelKod1, OzelKod2 = @OzelKod2, OzelKod3 = @OzelKod3, IslemTipi = @IslemTipi, IrsNo = @IrsNo,                           
Ack1 = @Ack1, Ack2 = @Ack2, Ack3 = @Ack3, Ack4 = @Ack4,                           
KULNO = @KULNO, KULADI = @KULADI, FatSerNo = @FatSerNo, SaticiAdi = @SaticiAdi,                           
AltIskYuzde1 = convert(float,@AltIskYuzde1), AltIskYuzde2 = convert(float,@AltIskYuzde2), AltIskYuzde3 = convert(float,@AltIskYuzde3),                          
AK = @AK, FaturaOPlanGunu = @FaturaOPlanGunu, Depo = @Depo,                           
GunAy = @GunAy, OpsiyonGunu = @OpsiyonGunu, AcikKapali = @AcikKapali,                           
DovizBorc = convert(float,@DovizBorc), DovizAlacak = convert(float,@DovizAlacak), FYaz = @FYaz, SecimEH = @SecimEH,                           
IslemNo3 = @IslemNo3, TP = @TP, FisNo = @FisNo, VardiyaKodu = @VardiyaKodu, VardiyaDurumu = @VardiyaDurumu,                           
Departman = @Departman,MasrafToplami = convert(float,@MasrafToplami), KDVHD = @KDVHD, IslemNo4 = @IslemNo4, KayitDuzeyi = @KayitDuzeyi,     
YazarKasaNo = @YazarKasaNo, YazarKasaFisNo = @YazarKasaFisNo, YaziciCount = convert(float,@YaziciCount),                  
IsIstasyonKodu = @IsIstasyonKodu, IsIstasyonAdi = @IsIstasyonAdi,                          
TevkifatTutari =convert(FLOAT,@TevkifatTutari ),           
VardiyaNo = @VardiyaNo, OdemeBilgisi = @OdemeBilgisi, FaturaAdresNo = @FaturaAdresNo, SevkAdresNo = @SevkAdresNo, FI = @FI,                          
EF_ISTISNA=@EF_IsTISNA,FaturaTipi=@FaturaTipi,Update_Date = GETDATE() ,            
DovizKur = @DovizKuru ,eFaturaNo =  @eFaturaNo, ProjeID = @ProjeID                 
where IslemNo =@IslemNo                 
                
DECLARE @CariSayisi int                
                
SET @CariSayisi = ( SELECT   COUNT(*) FROM STOKHAR S,STOKHARDETBAG B                
      WHERE (S.IslemNo = B.IslemNo or S.IslemNo3 = B.IslemNo)                
        AND B.IslemNo = @IslemNo                
        AND (S.CariNo <> B.CariNo or S.CariKodu <> B.CariKodu))                
                
IF @CariSayisi > 0                    
BEGIN                
 RAISERROR ('Cari hatası. Kontrol ediniz..!',10,1)                
 RETURN 0                
END       