CREATE OR ALTER PROC spDevirBakimSon (@DBE nvarchar(30),@DBY nvarchar(30),@DevirTarihi smalldatetime,@PasifSKSil bit,@PasifCKSil bit)    
AS    
BEGIN    
	DELETE STOKHARDETBAG 
	 WHERE IslemNo in (   SELECT IslemNo 
                       FROM STOKHARDETBAG    
				   GROUP BY IslemNo  
					 HAVING count(*) > 1) 
	   AND IslemTuru = 'Devir'
       AND CariNo =0;

	IF @PasifSKSil = 1
	BEGIN
		declare @Kodu nvarchar(40)
		declare cr_pasifstokkart cursor FAST_FORWARD READ_ONLY for    
			SELECT Kodu FROM STOKKARTI WHERE AktifPasif = 'P'    
	
		open cr_pasifstokkart      
		fetch next from cr_pasifstokkart      
		into  @Kodu       
		while (@@FETCH_STATUS = 0) 
		begin     
			IF EXISTS(SELECT * FROM STOKHAR WHERE StokKodu=@Kodu)  	 
				Print 'Ürün Stok Hareketlede mevcuttur, silinenmez'    	 				
			ELSE IF EXISTS(SELECT * FROM SIPARISHAR WHERE StokKodu=@Kodu)  		   
				Print 'Ürün Sipari? Hareketerinde mevcuttur, silinenmez'   		
			ELSE IF EXISTS(SELECT * FROM TEKLIFHAR WHERE StokKodu=@Kodu)  	
				Print 'Ürün Teklif Hareketerinde mevcuttur, silinenmez'    
			ELSE IF EXISTS(SELECT * FROM RenkBedenHareket WHERE StokKodu=@Kodu)  		
				Print 'Ürün Renk Beden Hareketerinde mevcuttur, silinenmez'    
			ELSE IF EXISTS(SELECT * FROM UrtRecetesi WHERE StkMsrfKodu=@Kodu)      
				Print 'Ürün Üretim Reçetelerinde mevcuttur, silinenmez'    
			ELSE
			BEGIN
				DELETE FROM StokFiyat where Kodu=@Kodu    
				DELETE from StokDB where StokKodu=@Kodu   
				DELETE from RenkBedenTablosu where StokKodu = @Kodu  
				DELETE from StokFiyatLog where Kodu = @Kodu  
				DELETE from StokPaketleri where StokKodu = @Kodu  
				DELETE from MuadilStoklar where MuadilStokKodu = @Kodu  
				DELETE from StokBarkodlari where StokKodu = @Kodu 
				DELETE FROM STOKKARTI where Kodu = @Kodu
			END;
		  fetch next from cr_pasifstokkart      
		  into @Kodu             
		end      
        
		close cr_pasifstokkart      
		deallocate cr_pasifstokkart  
	END;

	IF @PasifCKSil = 1 
	BEGIN
		declare @MUSKOD nvarchar(40),@MUSNO int
		declare cr_pasifcarikart cursor FAST_FORWARD READ_ONLY for    
			SELECT MUSKOD,MUSNO FROM AMUSTERI WHERE MUSDURUM = 'P'    
	
		open cr_pasifcarikart      
		fetch next from cr_pasifcarikart      
		into  @MUSKOD,@MUSNO      
		while (@@FETCH_STATUS = 0) 
		begin 
			IF EXISTS (SELECT *  FROM KullaniciAyarlari     
				WHERE ((Ayar = 'GenelTeklifCariKodu' or Ayar = 'TedarikciCariKodu' ) and (Deger = @MUSKOD)) 
					  OR (Ayar='PesinCariNo' and Deger=cast(@MUSKOD as varchar)))
				print 'Kullanıcı varsayılan tanımlarını kontrol edin!'		
			ELSE IF  EXISTS (Select * from ACARI  where MUSKOD = @MUSKOD)
				print 'Cari hareketi olan kart vardır..!'
			ELSE IF  EXISTS (Select * from STOKHAR  where CariKodu = @MUSKOD)	
				print 'Stok hareketinde kullanılan  kart vardır..!'
			ELSE IF EXISTS (Select * from STOKHARDETBAG  where CariKodu = @MUSKOD)
				print 'Stok hareketinde kullanılan  kart vardır..!'
			ELSE IF EXISTS (Select * from SIPARISHAR  where CariKodu = @MUSKOD)
				print 'Sipariş hareketinde kullanılan  kart vardır..!'
			ELSE IF EXISTS (Select * from SIPARISHARDETBAG  where CariKodu = @MUSKOD)
				print 'Sipariş hareketinde kullanılan  kart vardır..!'
			ELSE IF EXISTS (Select * from TEKLIFHAR  where CariKodu = @MUSKOD)
				print 'Teklif hareketinde kullanılan  kart vardır..!'
			ELSE IF EXISTS (Select * from TEKLIFHARDETBAG  where CariKodu = @MUSKOD)
				print 'Teklif hareketinde kullanılan  kart vardır..!'	
			ELSE 
			BEGIN
				DELETE FROM Adres where CariKodu = @MUSKOD      
				DELETE FROM AMusteri1 where CariNo = @MUSNO      
				DELETE FROM Bonus where  CariKodu = @MUSKOD      
				DELETE FROM Ziyaret where CariKodu =@MUSKOD      
				DELETE FROM Rut WHERE CariKodu = @MUSKOD      
				DELETE FROM PPlaka where CariKodu = @MUSKOD      
				DELETE FROM OdemeSozu where CariKodu = @MUSKOD      
				DELETE FROM AMUSTERI where MUSKOD = @MUSKOD 	
			END;
			fetch next from cr_pasifcarikart  into @MUSKOD,@MUSNO        
		END;
		close cr_pasifcarikart      
		deallocate cr_pasifcarikart 
	END;
END;
go


 CREATE OR ALTER PROC spDevirBakim @DBE nvarchar(30)      
AS  
BEGIN  
--exec('use '+@DBE)      
-- spDevirBakim 'Ent_MLTSBS'      
   
 exec('update '+@DBE+'.dbo.STOKHAR set StokKodu = (select top 1 Kodu from '+@DBE+'.dbo.STOKKARTI where STOKKARTI.StokNo = STOKHAR.StokNo or STOKKARTI.StokAdi = STOKHAR.StokAdi) where StokKodu in ('''','' '',null)')      
    -- Yukarıda sorgu eski dbyi(parametreden gelen db) günceller. Alttakilerde yeni db(hangi connection) içerisinde bulunan tabloları siler.  
 truncate table ACARI   
 truncate table STOKHAR   
 truncate table STOKHARDETBAG   
 truncate table Odeme   
 truncate table BORDRO   
 truncate table CEK   
 truncate table CEKDURUM   
 truncate table EntegreLog   
 truncate table GELGID   
 truncate table PDegFiyatlar   
 truncate table SipHar   
 truncate table SipHarDetBag   
 truncate table ACIKLAMA   
 truncate table BANKA   
 truncate table EntegreConnect   
 truncate table EntegreLog   
 truncate table FatAciklama   
 truncate table IRSHAR   
 truncate table StokFiyatLog   
 truncate table TEKLIFHAR   
 truncate table TEKLIFHARDETBAG   
 truncate table SIPARISHAR   
 truncate table SIPARISHARDETBAG   
 truncate table IRSHAR   
 truncate table IRSBAG   
 truncate table KASA   
 truncate table Ziyaret   
 truncate table VardiyaHar  
END;

go
      
create  or alter   PROCEDURE [dbo].[sp5_CariHareket_Ekle2]          
     @IslemNo int,          
     @CariNo int,          
     @IslemTuru nvarchar(14),          
     @Tarih datetime,          
     @Tutar float,          
     @BelgeNo int,          
     @Aciklama nvarchar(60),          
     @KulNo int,  
     @IslemTipi nvarchar(100)     
AS                
 if @IslemNo = 0 begin          
  SELECT @IslemNo = ISLEMNO FROM ADIGSABITLER          
  Update ADIGSABITLER SET ISLEMNO=ISLEMNO+2          
 end          
 DECLARE @MUSNO  int          
 DECLARE @MUSADI nvarchar(50)          
 Declare @CariKodu varchar(100)        
 select @MUSNO=MUSNO, @MUSADI=MUSADI, @CariKodu=MUSKOD from dbo.AMUSTERI where MUSNO=@CariNo        
            
 DECLARE @BORC float          
 DECLARE @ALACAK float          
 DECLARE @BA nvarchar(1)          
 DECLARE @TP nvarchar(2)          
          
 if (@ISLEMTURU ='Borç') or (@ISLEMTURU ='Ödeme') or(@ISLEMTURU = 'Satış') or (@ISLEMTURU = 'Alış İade') begin          
  SET @BORC = @TUTAR          
  SET @ALACAK = 0          
  SET @BA  = 'B'          
 end     
 if (@ISLEMTURU ='Alacak') or (@ISLEMTURU ='Tahsilat') or(@ISLEMTURU = 'Alış') or (@ISLEMTURU = 'Satış İade') begin          
  SET @BORC = 0          
  SET @ALACAK = @TUTAR          
  SET @BA  = 'A'          
 end      
     
 SET @TP = ''          
 if  (@ISLEMTURU = 'Satış') or (@ISLEMTURU = 'Alış İade') or (@ISLEMTURU = 'Alış') or (@ISLEMTURU = 'Satış İade') begin          
  SET @TP = 'TF'          
 end        
     
 if (@ISLEMTURU = 'Devir') and (@Tutar>0)         
   begin        
     Set @BORC = @Tutar        
  Set @ALACAK = 0        
  SET @BA  = 'B'        
  end        
  else        
  begin        
 Set @BORC=0        
 Set @ALACAK = ABS(@Tutar)  
 SET @BA  = 'A'        
  end        
 

 DECLARE @KULADI nvarchar(20)          
 SET @KULADI = (select GirisAdi from Kullanicilar where [No] = @KulNo)          
              
 DECLARE @SaticiKodu nvarchar(20)          
 SET @SaticiKodu = (select Deger from KullaniciAyarlari where Ayar = 'Varsayılan Satıcı Kodu' and KullaniciNo = @KulNo)          
 DECLARE @SaticiAdi nvarchar(20)          
 SET @SaticiAdi = (select Deger from KullaniciAyarlari where Ayar = 'Varsayilan Satıcı Adı'  and KullaniciNo = @KulNo)          
           
 DECLARE @CariOPlanGunu int          
 DECLARE @GunAy nvarchar(3)          
 DECLARE @OpsiyonGunu int          
 DECLARE @DEPARTMAN nvarchar(8)          
 SET @CariOPlanGunu = (select TOP (1) FaturaOPlanGunu from dbo.AMUSTERI where MUSKOD=@CariKodu)          
 SET @GunAy   = (select TOP (1) GunAy    from dbo.AMUSTERI where MUSKOD=@CariKodu)          
 SET @OpsiyonGunu = (select TOP (1) OpsiyonGunu  from dbo.AMUSTERI where MUSKOD=@CariKodu)          
 SET @DEPARTMAN  = (select TOP (1) Departman  from dbo.AMUSTERI where MUSKOD=@CariKodu)   
 
 INSERT INTO ACARI          
  (          
  TESSIRNO, MUSNO, MUSADI, TARIH, ACIKLAMA, BORC, ALACAK, BA, BAACIKLA, ACIKLABAKIYE, BORDRONO, LISTNO, ISLEMNO, TDATE, DOVIZTUT, DOVIZCINSI, MUSKOD, DOVIZKODU, OZELKOD,           
  ISLEMTIPI, BELGENO, KULNO, KULADI, SaticiKodu, SaticiAdi, CariOPlanGunu, GunAy, OpsiyonGunu, AcikKapali, DovizBorc, DovizAlacak, TP, VardiyaKodu, VardiyaDurumu, Departman,           
  IslemNo2, KayitDuzeyi, KayitDuzeyiNo, IslemNo3, Aciklama2, OnOdeme, VadeTarihi, IsIstasyonKodu, IsIstasyonAdi, SiraNo, VardiyaNo, PosSablonKodu, Update_Date, StokKodu, FisNo          
  )          
 VALUES          
  (          
  @BelgeNo, @MUSNO, @MUSADI, @Tarih,@Aciklama, @BORC, @ALACAK, @BA, @ISLEMTURU, '', 0, 0, @IslemNo, GETDATE(), @TUTAR, 1, @CariKodu, '$', '',          
  @IslemTipi,CAST(@BelgeNo as nvarchar),@KulNo, @KULADI, @SaticiKodu, @SaticiAdi,@CariOPlanGunu, @GunAy, @OpsiyonGunu, 'A', @BORC, @ALACAK,@TP , '99','Bekliyor',           
  @DEPARTMAN, 0, 0, 0, 0, '', 'H', @Tarih + @CariOPlanGunu, '01', 'Merkez', 1, '20090111','',GETDATE(),'',0          
  )  
  
   print @MUSNO 

 print @MUSADI
 print @BORC
 print @ALACAK
 print @BA
            
 INSERT INTO Odeme          
  (          
  IslemNo, Tarih, Tutar, Aciklama, Durum, CariNo, CariKodu,  Borc, Alacak, NoNo, KULNO, BAAcikla, Departman, KayitDuzeyi, SiraNo, Modul)          
 VALUES          
  (          
  @IslemNo, @Tarih, @TUTAR, @Aciklama, @BA, @MUSNO, @CariKodu,  @BORC, @ALACAK, 0, @KulNo, @ISLEMTURU, @DEPARTMAN, 0, 1, '001'          
  )          
          
 if (@ISLEMTURU ='Ödeme') or (@ISLEMTURU ='Tahsilat')  begin          
            
 DECLARE @KASAKODU nvarchar(6)          
  DECLARE @KASAADI nvarchar(10)          
  SET @KASAKODU = (select Deger from KullaniciAyarlari where Ayar='Varsayılan Kasa Kodu' and KullaniciNo=@KulNo)      SET @KASAADI = (select Deger from KullaniciAyarlari where Ayar='Varsayılan Kasa Adi'  and KullaniciNo=@KulNo)          
            
  INSERT INTO KASA          
                         (BORC, ALACAK, ACIKLAMA, KASAKODU, KASAADI, MUSNO, MUSADI, TARIH, BA, BAACIKLA, ISLEMNO, MUSKOD, DovizTut, DovizCinsi, DovizKodu, AcikKapali, IslemNo2, AktarimTarihi, BelgeNo, KULNO, KULADI,           
                         NakitVisa, SaticiKodu, SaticiAdi, DovizBorc, DovizAlacak, VardiyaKodu, VardiyaDurumu, Departman, KayitDuzeyi, IsIstasyonKodu, IsIstasyonAdi, VardiyaNo, FisNo)          
  SELECT        ALACAK, BORC, ACIKLAMA, @KASAKODU, @KASAADI, MUSNO, MUSADI, TARIH, BA, BAACIKLA, ISLEMNO, MUSKOD, DOVIZTUT, DOVIZCINSI, DOVIZKODU, AcikKapali, IslemNo2, TARIH, BELGENO, KULNO, KULADI,           
                         'N', SaticiKodu, SaticiAdi, DovizBorc, DovizAlacak, VardiyaKodu, VardiyaDurumu, Departman, KayitDuzeyi, IsIstasyonKodu, IsIstasyonAdi, VardiyaNo, FisNo          
  FROM            ACARI where ISLEMNO =@IslemNo          
  INSERT INTO Odeme          
                       (IslemNo, Tarih, Tutar, Aciklama, Durum, CariNo, CariKodu, Borc, Alacak, NoNo, KULNO,  BAAcikla, Departman, KayitDuzeyi, SiraNo, Modul)          
  SELECT        ISLEMNO, TARIH, ALACAK, '', 'A', MUSNO, MUSKOD, 0, ALACAK, 0, KULNO,  'Tahsilat', Departman, KayitDuzeyi, 1, '001'          
  FROM            ACARI where ISLEMNO = @IslemNo           
          
 end 

 GO
