  
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 smalldatetime,@KdvTutari nvarchar(50),                        
           @FisTuru nvarchar(1),@GC nvarchar(1),@EkIskTut1 nvarchar(50),@EkIskTut2 nvarchar(50),@EkIskTut3 nvarchar(50),                        
           @EkIskTutTop nvarchar(50),@FaturaNo int,@FaturaTarihi smalldatetime,@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 smalldatetime = 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                
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     