 CREATE TABLE [dbo].[GridSetting](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[UserId] [int] NULL,
	[Form_Name] [nvarchar](250) NULL,
	[Grid_Name] [nvarchar](250) NULL,
	[GridTV_Name] [nvarchar](250) NULL,
	[Setting] [image] NULL,
	[Is_Default] [bit] NULL,
	[Design_Name] [nvarchar](100) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO--

if exists (select * from sys.procedures where name='sp_Hareket_Bakim')
drop proc sp_Hareket_Bakim
go--
create  PROCEDURE [dbo].[sp_Hareket_Bakim]        
AS        
         
DELETE FROM STOKHAR WHERE Miktar in (NULL,'',' ',0)       
DELETE FROM SIPARISHAR WHERE Miktar   in (NULL,'',' ',0)       
DELETE FROM TEKLIFHAR WHERE Miktar in (NULL,'',' ',0)         
 ---DEPO VİRMANDAN GELEN İŞLEMNO OLMAYAN KAYITLAR İÇİN        
UPDATE STOKHAR SET IslemNo=IslemNo-1 where IslemNo in( select IslemNo from STOKHAR SH WHERE NOT EXISTS       
(SELECT * FROM STOKHARDETBAG SD WHERE SD.IslemNo=SH.IslemNo or SD.IslemNo=SH.IslemNo3) AND IslemTuru='Depo Vir.')        
--STOKHAR OLUP STOKHARDETBAG OLMAYAN KAYITLARI GÖRMEK İÇİN        
select IslemNo from STOKHAR SH WHERE NOT EXISTS (SELECT * FROM STOKHARDETBAG SD WHERE SD.IslemNo=SH.IslemNo or SD.IslemNo=SH.IslemNo3)        
--STOKHAR OLUP STOKHARDETBAG OLMAYAN KAYITLARI SİLMEK İÇİN        
DELETE FROM STOKHAR WHERE IslemNo IN  (select IslemNo from STOKHAR SH WHERE NOT EXISTS       
(SELECT * FROM STOKHARDETBAG SD WHERE SD.IslemNo=SH.IslemNo or SD.IslemNo=SH.IslemNo3) AND IslemTuru<>'Depo Vir.' )   
  
-- Faturalaşmış Açık Kalan İrsaliyeleri Kapatan Sorgu  
UPDATE sb  SET AcikKapali = 'K' FROM STOKHARDETBAG sb  
 WHERE FisTuru = 'I'     and AcikKapali = 'A'   
  and FaturaNo > 0     and IslemTuru in ('Alış','Alış İade','Satış','Satış İade')  
  and EXISTS(select * from STOKHAR sh where sh.IslemNo = sb.IslemNo )  
UPDATE STOKHAR SET Miktar = Miktar * -1 , GC= 'G' where Miktar < 0 and GC  = 'C'
UPDATE STOKHAR SET Miktar = Miktar * -1 , GC= 'C' where Miktar < 0 and GC  = 'G'
go--
if exists (select * from sys.procedures where name='StokKartiBirlestir')
drop proc StokKartiBirlestir
go--
create procedure StokKartiBirlestir(    
@EskiStokKodu nvarchar(40),    
@EskiStokAdi nvarchar(500),             
@EskiStokNo int,    
@YeniStokKodu nvarchar(40),    
@YeniStokAdi nvarchar(500),             
@YeniStokNo int)        
as                
begin                   
	 UPDATE STOKHAR SET StokAdi = @YeniStokAdi, StokKodu= @YeniStokKodu,StokNo = @YeniStokNo where StokKodu= @EskiStokKodu        
	 UPDATE StokFiyatLog SET Kodu= @YeniStokKodu where Kodu= @EskiStokKodu                
	 UPDATE PDegFiyatlar SET StokAdi = @YeniStokAdi, StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu    
	 UPDATE PPetrolHar SET StokAdi = @YeniStokAdi, StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu        
	 UPDATE PYazarKasaStoklari SET StokAdi = @YeniStokAdi, StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu                
	 UPDATE PYazarKasaHar SET StokAdi = @YeniStokAdi, StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu      
	 UPDATE DonemselFiyatListesi SET StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu      
	 --DELETE MuadilStoklar WHERE MuadilStokKodu = @EskiStokKodu    
	 --UPDATE MuadilStoklar SET MuadilStokAdi = @STOKADI, MuadilStokKodu= @STOKKODU where MuadilStokKodu= @EskiStokKodu                           
	 UPDATE CariUretimFiyatlari SET StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu      
	 UPDATE Seri SET StokKodu= @YeniStokKodu where StokKodu= @EskiStokKodu       
	 Update CariDonemFiyatlari set StokKodu=@YeniStokKodu Where StokKodu=@EskiStokKodu         
	 Update ElTerminaliDepoSayim set StokKodu=@YeniStokKodu, StokAdi=@YeniStokAdi  Where StokKodu=@EskiStokKodu       
	 Update ElTerminaliYukleme set StokKodu=@YeniStokKodu, StokAdi=@YeniStokAdi  Where StokKodu=@EskiStokKodu         
	 Update EtiketBarkod set StokKodu=@YeniStokKodu, StokAdi=@YeniStokAdi  Where StokKodu=@EskiStokKodu               
	 Update MiktarsalHedefler set StokKodu=@YeniStokKodu Where StokKodu=@EskiStokKodu           
	 Update RenkBedenSeriTablosu set StokKodu=@YeniStokKodu Where StokKodu=@EskiStokKodu              
	 Update RenkBedenTablosu set StokKodu=@YeniStokKodu Where StokKodu=@EskiStokKodu                 
	 Update SIPARISHAR set StokKodu=@YeniStokKodu, StokAdi=@YeniStokAdi,StokNo = @YeniStokNo  Where StokKodu=@EskiStokKodu                
	 Update TEKLIFHAR set StokKodu=@YeniStokKodu, StokAdi=@YeniStokAdi,StokNo = @YeniStokNo  Where StokKodu=@EskiStokKodu         
	 Update StokDepoMiktarlari set StokKodu=@YeniStokKodu Where StokKodu=@EskiStokKodu        
	 UPDATE InvoiceItemMap SET OurCode = @YeniStokKodu,SenderItemName = @YeniStokAdi where OurCode = @EskiStokKodu; 
	 UPDATE StokBarkodlari SET StokKodu = @YeniStokKodu,StokNo = @YeniStokNo,AnaBirim = 0, SiraNo = SiraNo + 100 where StokKodu = @EskiStokKodu;
 	 update s1 SET  s1.SiraNo = s2.Rank from StokBarkodlari s1,
	 (select *,DENSE_RANK() OVER  (PARTITION BY StokKodu ORDER BY AnaBirim DESC,Barkodu ) AS Rank  from StokBarkodlari) s2
   	 where s1.StokBarkodlariNoId = s2.StokBarkodlariNoId AND s1.StokKodu = @YeniStokKodu;
	 --DELETE StokBarkodlari Where StokKodu=@EskiStokKodu            
	 DELETE StokDB where StokKodu= @EskiStokKodu       
	 DELETE StokTablolari Where StokKodu=@EskiStokKodu       
	 DELETE StokVergiMuafiyetleri Where StokKodu=@EskiStokKodu      
	 DELETE StokDB where StokKodu= @EskiStokKodu     
	 DELETE StokMarkalari where StokKodu=@EskiStokKodu                
	 DELETE Tedarikciler where StokKodu= @EskiStokKodu          
	 DELETE StokFiyat where Kodu= @EskiStokKodu     
	 DELETE STOKKARTI where Kodu= @EskiStokKodu     
	 DELETE MH_Connect where Degeri=@EskiStokKodu and TabloAdi='STOKKARTI' and FieldAdi='Kodu'            
END;   
GO--
if exists (select * from sys.triggers where name='trg_RenkBeden_BIUD')
drop TRIGGER trg_RenkBeden_BIUD
go--

CREATE TRIGGER trg_RenkBeden_BIUD
ON RenkBedenTablosu
FOR Insert,Delete
AS
IF EXISTS ( SELECT 0 FROM Deleted )
BEGIN  
   DELETE StokBarkodlari WHERE EXISTS(SELECT 1 FROM deleted as d where d.NoId = StokBarkodlari.RenkBedenId and StokBarkodlari.StokKodu = d.StokKodu);		  
END
ELSE
BEGIN
   DECLARE @SiraNo int;
   SET @SiraNo = (Select ISNULL(MAX(SiraNo),0) + 1 from StokBarkodlari sb,inserted i where sb.StokKodu = i.StokKodu)
   INSERT  INTO StokBarkodlari ( StokKodu,Barkodu,KulNo ,Carpani,UpdateDate,StokNo,Birim,AnaBirim,SiraNo,RenkBeden,RenkBedenId)      
   SELECT  i.StokKodu,StokKodu + '_'+CAST(@SiraNo as nvarchar(5)),1,1,GETDATE(),sk.StokNo,sk.AnaBirim,0,@SiraNo,1,i.NoId
   FROM inserted as i,STOKKARTI sk where i.StokKodu = sk.Kodu
END
GO--

if exists (select * from sys.procedures where name='sp_Prk_Satis_Cevirme')
drop proc sp_Prk_Satis_Cevirme
go--
create   procedure sp_Prk_Satis_Cevirme (@CariKodu nvarchar(50),@IslemNo int,@YeniIslemNo int,@IslemTuruSatis nvarchar(50),                      
@IslemTuruPrkSatis nvarchar(50),                      
@FaturaTarihi datetime,@FaturaNo integer,@FatSerNo nvarchar(50),@SeciliIslemNolar nvarchar(max),@GeldigiYer nvarchar(50)='',@YazarKasaFisNo int = 0,@FaturaTipi int= 0)                      
as             
                    
declare @sqlText nvarchar(max)                      
declare @sqlTextHepsi nvarchar(max)                      
                      
declare @i integer                      
declare @toplam integer;                      
declare @ParamIslemNo integer                                   
declare @ExecuteCalistir int;                
 BEGIN TRANSACTION                 
  set @ExecuteCalistir=1;                
                  
 UPDATE STOKHAR SET AcikKapali='K',IslemNo3= @YeniIslemNo,FisTuru = 'I',IslemTuru= @IslemTuruSatis WHERE IslemNo in (SELECT convert(int,Name) FROM splitstring(@SeciliIslemNolar, ',')) or IslemNo3 in (SELECT convert(int,Name) FROM splitstring(@SeciliIslemNolar, ','))           
 UPDATE STOKHARDETBAG SET AcikKapali='K',SecimEH= 'H',FisTuru = 'I',IslemTuru = @IslemTuruSatis,FaturaTarihi = @FaturaTarihi  WHERE IslemNo in (SELECT convert(int,Name) FROM splitstring(@SeciliIslemNolar, ','))      
                              
   print('/*En Büyük İşlem No Parametre - Seçili İşlem Numaraları */'+convert(varchar,@IslemNo)+'-'+@SeciliIslemNolar);      
       
  SET @sqlText=' insert into STOKHARDETBAG (IslemNo, IslemTuru, CariNo, CariKodu, CariAdi, Tutar,  KdvTutari, FisTuru, GC, '+            
      
    ' FaturaNo,  Satici, DovizTut, DovizCinsi, DovizKodu, DovizTutB, '+                  
                ' BelgeNo, OzelKod1, OzelKod2, OzelKod3, IslemTipi, IrsNo, Ack1, Ack2, Ack3, Ack4, KULNO, KULADI, FatSerNo, SaticiAdi, AK, FaturaOPlanGunu, Depo, GunAy, OpsiyonGunu, AcikKapali, '+                   
                ' DovizBorc, DovizAlacak,  IslemNo3, TP,  VardiyaKodu, VardiyaDurumu, Departman, MasrafToplami, KDVHD, IslemNo4, KayitDuzeyi, YazarKasaNo, YazarKasaFisNo, YaziciCount, IsIstasyonKodu, '+                   
                ' IsIstasyonAdi, TevkifatTutari, VardiyaNo, OdemeBilgisi, FaturaAdresNo, SevkAdresNo, FI,  eFaturaNo, UUID, eFaturaGonderimTarihi, eFaturaDurumu, EF_ISTISNA,  FaturaTipi,  '+                  
                ' Entegrator,DovizKur)  '+                  
    ' select top 1 '+CONVERT(VARCHAR,@YeniIslemNo)+' as IslemNo, IslemTuru, CariNo, CariKodu, CariAdi,'+                  
    ' 0 as Tutar, '+                
    ' 0 as KdvTutari, '+                  
    ' ''F'' as FisTuru, GC, '+                   
    /*' EkIskTut1, EkIskTut2, EkIskTut3, EkIskTutTop, '+*/                  
    ' '+convert(varchar,@FaturaNo)+' as FaturaNo, Satici, '+                  
    ' 0 as DovizTut, '+                  
    ' DovizCinsi, DovizKodu,  0 as DovizTutB, '+                  
                ' BelgeNo, OzelKod1, OzelKod2, OzelKod3, IslemTipi, IrsNo, Ack1, Ack2, Ack3, Ack4, KULNO, KULADI, '+@FatSerNo+', SaticiAdi, AK, FaturaOPlanGunu, Depo, GunAy, OpsiyonGunu, AcikKapali, '+                   
                ' 0 as DovizBorc, '+                  
    ' 0 as DovizAlacak, 0 as IslemNo3, '+             
    ' TP,  VardiyaKodu, VardiyaDurumu, Departman, 0 as MasrafToplami, KDVHD, IslemNo4, KayitDuzeyi, YazarKasaNo, YazarKasaFisNo, YaziciCount, IsIstasyonKodu, '+                   
                ' IsIstasyonAdi,0 as TevkifatTutari, VardiyaNo, OdemeBilgisi, FaturaAdresNo, SevkAdresNo, FI, eFaturaNo, UUID, eFaturaGonderimTarihi, eFaturaDurumu, EF_ISTISNA,   FaturaTipi,  '+            
          
                ' Entegrator,DovizKur from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo='+convert(varchar,@IslemNo)+' ';                      
                   
       
        
  print('/*2*/'+@sqlText);                      
 if @ExecuteCalistir>0                
  exec(@sqlText)          
        
  UPDATE STOKHARDETBAG SET IslemTuru =@IslemTuruSatis,FaturaTarihi = @FaturaTarihi, SevkTarihi = @FaturaTarihi, SiparisTarihi = @FaturaTarihi,YazarKasaFisNo = @YazarKasaFisNo,FaturaTipi = @FaturaTipi WHERE IslemNo = @YeniIslemNo;      
                  
  set @sqlText='update STOKHARDETBAG set '+                  
   ' Tutar=(select sum(Tutar) from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ), '+                  
   ' KdvTutari=(select sum(KdvTutari) from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ), '+                  
   ' DovizTut=(select sum(Tutar) from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ), '+                  
   ' DovizBorc=(select sum(DovizBorc) from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ), '+                  
   ' DovizAlacak=(select sum(DovizAlacak) from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ), '+                  
   ' DovizTutB=(select sum(Tutar) from STOKHARDETBAG where CariKodu = '+@CariKodu+' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ) '+                  
   ' where CariKodu = '+@CariKodu+' and IslemNo='+convert(varchar,@YeniIslemNo)+' ';                     
                  
  print('/*2.1*/'+@sqlText);                      
 if @ExecuteCalistir>0                
  exec(@sqlText)                      
 if @IslemTuruSatis = 'Alış'      
 SET @sqlText=' delete from ACARI where MUSKOD = '+@CariKodu+' and  ISLEMNO in ('+@SeciliIslemNolar+')  and ISLEMNO <> '+convert(varchar,@IslemNo)+'  and BAACIKLA = ''Alış'' '      
 else       
 SET @sqlText=' delete from ACARI where MUSKOD = '+@CariKodu+' and  ISLEMNO in ('+@SeciliIslemNolar+')  and ISLEMNO <> '+convert(varchar,@IslemNo)+'  and BAACIKLA in (''Prk.Satış'',''Satış'') '      
    
  print('/*3*/'+@sqlText);                
 if @ExecuteCalistir>0                
 exec(@sqlText)       
 if @IslemTuruSatis = 'Alış'      
 SET @sqlText=' update Odeme set IslemNo = '+convert(varchar,@YeniIslemNo)+' where CariKodu = '+@CariKodu+' and IslemNo in ('+@SeciliIslemNolar+')  and BAAcikla = ''Alış'' ';      
 else      
 SET @sqlText=' update Odeme set IslemNo = '+convert(varchar,@YeniIslemNo)+',BAAcikla = ''Satış''  where CariKodu = '+@CariKodu+' and IslemNo in ('+@SeciliIslemNolar+')  and BAAcikla = ''Prk.Satış'',''Satış'' ';      
 if @ExecuteCalistir>0                
 exec(@sqlText)       
    
if @IslemTuruSatis = 'Satış'       
 set @sqlText='update dbo.ACARI '+                      
                     ' SET ACIKLAMA='''+convert(varchar,@FaturaNo)+' no.lu Fatura'',BAACIKLA = ''Satış'', '+                      
                     ' dbo.ACARI.BORC = (select sum(ISNULL(dbo.STOKHARDETBAG.Tutar,0)) from dbo.STOKHARDETBAG where dbo.STOKHARDETBAG.IslemNo = '+CONVERT(varchar,@YeniIslemNo)+'), '+                      
                     ' dbo.ACARI.DovizBorc = (select sum(ISNULL(dbo.STOKHARDETBAG.DovizBorc,0)) from dbo.STOKHARDETBAG where dbo.STOKHARDETBAG.IslemNo = '+CONVERT(varchar,@YeniIslemNo)+'), '+                      
                     ' dbo.ACARI.DovizAlacak = (select sum(ISNULL(dbo.STOKHARDETBAG.DovizAlacak,0)) from dbo.STOKHARDETBAG where dbo.STOKHARDETBAG.IslemNo = '+CONVERT(varchar,@YeniIslemNo)+'), '+                   
      ' dbo.ACARI.ISLEMNO = '+CONVERT(varchar,@YeniIslemNo)+                                    
                     ' where dbo.ACARI.ISLEMNO = '+convert(varchar,@IslemNo)+' and BAACIKLA in (''Prk.Satış'',''Satış'') '      
else           
 set @sqlText='update dbo.ACARI '+                      
                     ' SET ACIKLAMA='''+convert(varchar,@FaturaNo)+' no.lu Fatura'', '+                 
                     ' dbo.ACARI.BORC = (select sum(ISNULL(dbo.STOKHARDETBAG.Tutar,0)) from dbo.STOKHARDETBAG where dbo.STOKHARDETBAG.IslemNo = '+CONVERT(varchar,@YeniIslemNo)+'), '+                      
                     ' dbo.ACARI.DovizBorc = (select sum(ISNULL(dbo.STOKHARDETBAG.DovizBorc,0)) from dbo.STOKHARDETBAG where dbo.STOKHARDETBAG.IslemNo = '+CONVERT(varchar,@YeniIslemNo)+'), '+         
                     ' dbo.ACARI.DovizAlacak = (select sum(ISNULL(dbo.STOKHARDETBAG.DovizAlacak,0)) from dbo.STOKHARDETBAG where dbo.STOKHARDETBAG.IslemNo = '+CONVERT(varchar,@YeniIslemNo)+'), '+                   
      ' dbo.ACARI.ISLEMNO = '+CONVERT(varchar,@YeniIslemNo)+                                    
                     ' where dbo.ACARI.ISLEMNO = '+convert(varchar,@IslemNo)+' and BAACIKLA ''Alış'' ';            
print('/*4*/'+@sqlText);                      
 if @ExecuteCalistir>0                
 exec(@sqlText)                  
      
if @IslemTuruSatis = 'Alış'       
 UPDATE dbo.ACARI SET TARIH = @FaturaTarihi where ISLEMNO = @YeniIslemNo and BAACIKLA = 'Alış'      
else      
 UPDATE dbo.ACARI SET TARIH = @FaturaTarihi where ISLEMNO = @YeniIslemNo and BAACIKLA = 'Satış';     
 
 set @sqlText='Delete from STOKHARDETBAG  where IslemNo NOT IN (select DISTINCT IslemNo from STOKHAR  union select DISTINCT IslemNo3 from STOKHAR) and CariKodu = '+@CariKodu+' and FisTuru = ''I'' and IslemTuru in (''Prk.Satış'',''Satış'')  and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ';        
 exec(@sqlText)   
         
 if @geldigiYer <>'cariperakende'         
 begin        
 print('/*5*/'+@sqlText);         
 set @sqlText='Delete from STOKHARDETBAG  where CariKodu = '+@CariKodu+' and FisTuru = ''I'' and IslemNo in (SELECT Name FROM splitstring('''+@SeciliIslemNolar+''', '','')) ';        
 exec(@sqlText)         
 end                               
if @@ERROR<>0                      
begin                      
ROLLBACK                       
 if @ExecuteCalistir>0                
Select 'İşlem sırasında bir hata oluştu, işlem tamamlanamadı!'                      
else                
print('İşlem sırasında bir hata oluştu, işlem tamamlanamadı!' )                
end                      
ELSE begin                       
COMMIT                 
 if @ExecuteCalistir>0                
Select 'İşlem başarıyla tamamlandı'                  
else                 
print('İşlem başarıyla tamamlandı')                
end      
GO--
 
if exists (select * from sys.procedures where name='spStokHarKaydet')
drop proc spStokHarKaydet
go--
CREATE  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,    
   @TevkifatOran float=0,      
   @TevkifatTutar float=0,      
   @TevkifatKodu nvarchar(50)='',      
   @TevkifatAdi nvarchar(200)=''      
AS               
            
if @StokNo = 0             
  Select Top 1 @StokNo=StokNo from STOKKARTI where Kodu=@StokKodu 
  
DECLARE @RBIslemNoArttir int

IF ISNULL(@RBIslemNo,0) > 0 
BEGIN
	SET @RBIslemNoArttir = @RBIslemNo;
END
ELSE 
	SET @RBIslemNoArttir = 0;

IF @TankKodu <> '' and @RBIslemNoArttir = 0
BEGIN	
	execute spIslemNoAlArtir  @RBIslemNoArttir output

	INSERT INTO RenkBedenHareket (IslemNo,SHIslemNo,StokKodu,Beden,Renk,Miktar,GC,KulNo,Depo,HT)
	VALUES (@RBIslemNoArttir,@IslemNo,@StokKodu,@TankAdi,@TankKodu,@Miktar,@GC,@KULNO,@Depo,'FA')
END;

            
INSERT 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 @StokBolge = '' THEN 'YOK' ELSE ISNULL(@StokBolge,'YOK') END,              
    CASE WHEN @StokRaf = '' THEN 'YOK' ELSE ISNULL(@StokRaf,'YOK') END,              
    CASE WHEN @StokYer = '' THEN 'YOK' ELSE ISNULL(@StokYer,'YOK') END,              
    @BurutMiktar,@FireOrani,@FireMiktari,@DovizKuru)


GO

if exists (select * from sys.procedures where name='sp_DepoAdDegistir')
drop proc sp_DepoAdDegistir
go--

CREATE   PROCEDURE sp_DepoAdDegistir(@EskiDepo nvarchar(30),@YeniDepo nvarchar(30))
AS
BEGIN
	UPDATE STOKHARDETBAG SET Depo = @YeniDepo WHERE Depo = @EskiDepo;
	UPDATE STOKHAR SET Depo = @YeniDepo WHERE Depo = @EskiDepo;
	UPDATE SIPARISHARDETBAG SET Depo = @YeniDepo WHERE Depo = @EskiDepo;
	UPDATE SIPARISHAR SET Depo = @YeniDepo WHERE Depo = @EskiDepo;
	UPDATE TEKLIFHARDETBAG SET Depo = @YeniDepo WHERE Depo = @EskiDepo;
	UPDATE TEKLIFHAR SET Depo = @YeniDepo WHERE Depo = @EskiDepo;
	UPDATE UrtEmri  SET AmbarSarf = @YeniDepo WHERE AmbarSarf = @EskiDepo;
	UPDATE UrtEmri  SET AmbarFire = @YeniDepo WHERE AmbarFire = @EskiDepo;
	UPDATE UrtEmri  SET AmbarUrtGiris = @YeniDepo WHERE AmbarUrtGiris = @EskiDepo;
	UPDATE UrtRecler SET DepoSarf = @YeniDepo WHERE DepoSarf = @EskiDepo;
	UPDATE UrtRecler SET DepoFire = @YeniDepo WHERE DepoFire = @EskiDepo;
	UPDATE UrtRecler SET UGirisDeposu = @YeniDepo WHERE UGirisDeposu = @EskiDepo;
	UPDATE KullaniciAyarlari SET Deger = @YeniDepo WHERE  Ayar = 'Varsayılan Depo' AND Deger = @EskiDepo;
END;



GO--
IF  EXISTS (SELECT *  FROM sys.views WHERE  name='VStk_RenkBedenGirisCikis')
 BEGIN 
 drop view VStk_RenkBedenGirisCikis
 end
go--

CREATE  VIEW VStk_RenkBedenGirisCikis   
AS  
SELECT StokKodu,  
	   Beden,  
       Renk,  
       (SELECT ISNULL(SUM(Miktar), 0) AS Expr1 
	      FROM dbo.RenkBedenHareket rb   
         WHERE (rb.StokKodu = rbh.StokKodu)  
		   AND rb.Depo = rbh.Depo
		   AND (HT = 'FA')    
           AND (GC = 'G')    
           AND (Beden = rbh.Beden)    
           AND (Renk = rbh.Renk)) AS Giris,  
	  (SELECT ISNULL(SUM(Miktar), 0) AS Expr1 
		 FROM dbo.RenkBedenHareket rb 
		WHERE (rb.StokKodu = rbh.StokKodu)   
		  AND rb.Depo = rbh.Depo		
		  AND (HT = 'FA')      
		  AND (GC = 'C') 
		  AND (Beden = rbh.Beden) 
		  AND (Renk = rbh.Renk)) AS Cikis,  
       (SELECT ISNULL(SUM(Miktar), 0) AS Expr1 
	      FROM dbo.RenkBedenHareket   rb
         WHERE (rb.StokKodu = rbh.StokKodu)    
		   AND rb.Depo = rbh.Depo
		   AND (HT = 'FA')    
           AND (GC = 'G')    
           AND (Beden = rbh.Beden)    
           AND (Renk = rbh.Renk)) -  
	  (SELECT ISNULL(SUM(Miktar), 0) AS Expr1 
		 FROM dbo.RenkBedenHareket rb
		WHERE (rb.StokKodu = rbh.StokKodu)    
		  AND rb.Depo = rbh.Depo
		  AND (HT = 'FA')      
		  AND (GC = 'C') 
		  AND (Beden = rbh.Beden) 
		  AND (Renk = rbh.Renk)) Fark,
	 (SELECT Barkodu 
	    FROM RenkBedenTablosu rb
	   WHERE rb.StokKodu = rbh.StokKodu
	     AND rb.Renk = rbh.Renk
		 AND rb.Beden = rbh.Beden)Barkodu,
	  Depo
 FROM dbo.RenkBedenHareket rbh 
WHERE HT = 'FA'
GROUP BY StokKodu,Beden,Renk,Depo
GO--

if exists (select * from sys.procedures where name='sp_mb_XML_TaxLegalMonetary_List')
drop proc sp_mb_XML_TaxLegalMonetary_List
go--
CREATE  PROCEDURE  [dbo].[sp_mb_XML_TaxLegalMonetary_List]                
 @IslemNo nvarchar(30)                
 as            
 ;with mustahsil as (            
select isnull(sum(DovizTut),0) MustahsilTut from STOKHAR where IslemTuru='Müstahsil' and  IslemNo=@IslemNo             
)               
select              
             
round(STK.KdvToplami,2) AS "TaxAmount",                
round(STK.SonTutar,2)     
AS "TaxableAmount",                
--round(STK.KdvToplami,2)) AS "TaxAmount",                
STK.sayi AS "CalculationSequenceNumeric",                
round(STK.Isksuz_Satir_Toplami,2) AS  "LineExtensionAmount",                
(round(STK.KdvsizSatirToplami,2)) AS "TaxExclusiveAmount",                
--(round(STK.SonTutar,2))    
round(STK.Isksuz_Satir_Toplami,2) - (round(STK.SatirIskontoToplami+Alt_Iskonto_Toplami,2)) + round(STK.KdvToplami,2) AS "TaxInclusiveAmount",                
(round(STK.SatirIskontoToplami+Alt_Iskonto_Toplami,2)) AS "AllowanceTotalAmount",                
(round(STK.SonTutar,2)-(select MustahsilTut from mustahsil )) AS "PayableAmount",                
isnull(TevkifatKod,'') as TevkifatKod,                
isnull(TevkifatAd,'') as TevkifatAd,isnull(TevkifatOrani,0) TevkifatOrani,isnull(TevkifatTutari,0) TevkifatTutari                
              
 FROM                
(SELECT                 
sum(1) as sayi,                
sum (FaturaMiktari* BirimFiyat*BirimMiktar/STK.DovizKuru) as Isksuz_Satir_Toplami,                
sum ( CASE WHEN ((FaturaMiktari* BirimFiyat*BirimMiktar) -STK.Tutar) <0.1 THEN 0 ELSE ((FaturaMiktari* BirimFiyat*BirimMiktar) -STK.Tutar)/STK.DovizKuru END  ) as SatirIskontoToplami,                
cast( sum (CASE WHEN (STK.Tutar -(SonTutar-STK.KdvTutari) )/STK.DovizKuru <0.1 THEN 0 ELSE (STK.Tutar -(SonTutar-STK.KdvTutari) )/STK.DovizKuru END ) as decimal(15,2))     
 as Alt_Iskonto_Toplami,                 
sum ((SonTutar-STK.KdvTutari)/STK.DovizKuru) as    
KdvsizSatirToplami,                
sum (STK.KdvTutari/STK.DovizKuru) as KdvToplami,                  
sum(STK.Tutar/STK.DovizKuru)-sum(isnull(t.TevkifatTutari,0)) as Tutar,                
sum(SonTutar/STK.DovizKuru)-sum(isnull(t.TevkifatTutari/STK.DovizKuru,0)) as SonTutar,            
t.Kod TevkifatKod,tb.TevkifatAdi TevkifatAd,convert(decimal, (t.TevkifatOrani)) TevkifatOrani,sum(t.TevkifatTutari/STK.DovizKuru) TevkifatTutari                
 from STOKHAR STK                
  inner join STOKHARDETBAG STB ON STB.IslemNo=STK.IslemNo      
   left join Tevkifat t on t.IslemNo2 = STK.IslemNo2  and t.StokNo=STK.StokNo            
   left join tblTevkifat tb on tb.Kod=t.Kod            
 where (STK.IslemTuru ='Satış' or STK.IslemTuru ='Alış İade'  )                
  AND (STK.IslemNo=@IslemNo or STK.IslemNo3=@IslemNo)       
group by t.Kod,tb.TevkifatAdi,t.TevkifatOrani             
  --AND STK.Tutar>0            
   ) STK;     
     
	 GO--
	 if exists (select * from sys.procedures where name='sp_UretimIhtiyacListesi')
drop proc sp_UretimIhtiyacListesi
go--
	 CREATE  PROCEDURE sp_UretimIhtiyacListesi   
(@PartiNo nvarchar(30),  
 @ReceteKodu nvarchar(30),  
 @StokKodu nvarchar(100) = NULL  
)  
AS  
BEGIN  
 IF @PartiNo is null   
 SET ROWCOUNT 1  
  
 select DISTINCT   
     e.PartiNo,  
     ur.Kodu,  
     u.Aciklama,  
     ur.StkMsrfKodu,  
     ur.StkMsrfAck,  
     e.AmbarSarf,  
     d.StokAdedi DepoMiktari,  
     CASE WHEN @PartiNo is null THEN   
     1  
     ELSE   
     e.Miktar   
     END UretilecekMiktar,  
     ur.Miktar Katsayi,  
     CASE WHEN @PartiNo is null THEN   
     1  
     ELSE   
     e.Miktar   
     END * ur.Miktar KullanilacakMiktar  
 from UrtRecler u,   
      UrtRecetesi ur,  
   UrtEmri e,  
   Vstk_DepoDurumlari d  
 where u.Kodu = ur.Kodu  
  and ur.Kodu = e.ReceteKodu  
  and ur.StkMsrfKodu = d.Kodu  
  and e.AmbarSarf = d.Depo  
  and ur.Turu = 'Hammadde'  
  and ur.Kodu = @ReceteKodu  
  and ((@StokKodu is null) or (ur.StkMsrfKodu = @StokKodu))  
  and ((@PartiNo is null) or (RTRIM(e.PartiNo) = @PartiNo))  
    
END;  
go
if  not  exists (select * from dbo.syscolumns where id = object_id(N'YazarKasalar') and name=N'FisAciklama')
begin
alter table YazarKasalar add FisAciklama nvarchar (1000)
end
else begin
alter table YazarKasalar alter column FisAciklama nvarchar (1000)
end
go--

if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.5.0')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.5.0',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go--

	 if exists (select * from sys.procedures where name='sp_Bakim_STOKHARDETBAG_Olustur')
drop proc sp_Bakim_STOKHARDETBAG_Olustur
go
CREATE   PROC sp_Bakim_STOKHARDETBAG_Olustur 
AS 
INSERT INTO STOKHARDETBAG ( IslemNo, IslemTuru, CariNo, CariKodu, CariAdi, Tutar, SiparisTarihi, KdvTutari, FisTuru, GC, EkIskTut1, EkIskTut2, EkIskTut3, EkIskTutTop, FaturaNo, FaturaTarihi, Satici, DovizTut, DovizCinsi, DovizKodu, 
                            FatSerNo, KULNO, KULADI, SaticiAdi,IslemTipi,AltIskYuzde1, AltIskYuzde2, AltIskYuzde3, FaturaOPlanGunu, Depo, GunAy, OpsiyonGunu, AcikKapali, 
                            DovizBorc, DovizAlacak, FYaz, SecimEH, IslemNo3, TP, FisNo, VardiyaKodu, VardiyaDurumu, Departman, MasrafToplami, KDVHD, IslemNo4, KayitDuzeyi, YazarKasaNo, YazarKasaFisNo, YaziciCount, IsIstasyonKodu, 
                            IsIstasyonAdi, VardiyaNo, OdemeBilgisi, FaturaAdresNo, SevkAdresNo, FI, SevkTarihi, FaturaTipi, Entegrator, Update_Date, DovizKur, TevkifatTutari)
Select IslemNo,IslemTuru,CariNo,CariKodu,CariAdi,SUM(SonTutar),SiparisTarihi,SUM(KdvTutari),FisTuru,GC,SUM(EkIskTut1),SUM(EkIskTut2),SUM(EkIskTut3),SUM(EkIskTutTop),FaturaNo,FaturaTarihi,Satici,SUM(DovizTut),DovizCinsi,DovizKodu,
	   'SK',KULNO,KULADI,SaticiAdi,CASE WHEN IslemTuru = 'Prk.Satış' THEN 'Hızlı Perakende'	 ELSE '' END,MAX(AltIskYuzde1),MAX(AltIskYuzde2),MAX(AltIskYuzde3),0, MAX(Depo),'Gün',0,AcikKapali,
	   SUM(DovizBorc),SUM(DovizAlacak),'B','H',0,TP,FisNo,VardiyaKodu,'Bekliyor',Departman,SUM(SatMasrafTutari),KDVHD,0,0,0,0,0,'01','Merkez',VardiyaNo,
	   CASE WHEN  EXISTS (Select 1 from  KASA K where K.ISLEMNO = sh.IslemNo and BAACIKLA = 'Tahsilat') THEN
			'Nakit'
		WHEN  EXISTS (Select 1 from  KASA K where K.ISLEMNO = sh.IslemNo and BAACIKLA = 'KK.Tahsilat') THEN
			'Kredi Kartı'
	   ELSE 'Veresiye' END,1,1,'E',SiparisTarihi,0,0,GETDATE(),MAX(DovizKuru),0
  from STOKHAR sh
 where EXISTS (Select 1 from ACARI ac where ac.ISLEMNO = sh.IslemNo)
   and NOT EXISTS (Select 1 from STOKHARDETBAG sb where sh.IslemNo in (sb.IslemNo,sb.IslemNo3))
GROUP BY IslemNo,IslemTuru,CariNo,CariKodu,CariAdi,SiparisTarihi,FisTuru,GC,FaturaNo,FaturaTarihi,Satici,DovizCinsi,DovizKodu				,
		 KULNO, KULADI, SaticiAdi,AcikKapali,TP,FisNo,VardiyaKodu,Departman,KDVHD,VardiyaNo,SiparisTarihi

go--

delete from Tevkifat where TevkifatTutari<=0
go--




-- 7.5.1
--ZAMANAŞIMI OLABİLİR
update STOKHAR set STOKHAR.StokTipi = STOKKARTI.StokTipi from STOKHAR , STOKKARTI where STOKHAR.StokTipi not in (select distinct StokTipi from STOKKARTI) and STOKHAR.StokKodu = STOKKARTI.Kodu 
go
ALTER TABLE STOKHARDETBAG ALTER COLUMN Satici nvarchar(15)
go


go
	 if exists (select * from sys.procedures where name='spMalSayimiDuzenle')
drop proc spMalSayimiDuzenle
go
create  proc spMalSayimiDuzenle   
as  
---Malsayım detbag kaydı olmayanları düzenler  
declare @IslemNo int declare @GC nvarchar(1) declare @KullaniciAdi nvarchar(20) declare @ParamKullaniciNo int  
declare @DovizKodu nvarchar(2) declare @DovizId smallint declare @Depo nvarchar(30) declare @KullaniciDepartmani nvarchar(8)  
declare @Tutar money declare @KdvTutari money declare @DovizliTutar money declare @SevkTarihi datetime declare @DovizKuru money=1  
  
declare @FaturaTarihi datetime   
  
declare StoklarCursor cursor              
for              
 Select IslemNo,SUM(Tutar) Tutar,SUM(KdvTutari)KdvTutari,SUM(DovizliTutar) DovizliTutar,SevkTarihi  
 from (  
  select IslemNo,  
    CASE WHEN GC = 'G' THEN SonTutar ELSE SonTutar * (-1) end Tutar,   
    CASE WHEN GC = 'G' THEN KdvTutari ELSE KdvTutari * (-1) end KdvTutari,   
    CASE WHEN GC = 'G' THEN DovizTut ELSE DovizTut * (-1) end DovizliTutar,   
      SiparisTarihi as SevkTarihi    
  from STOKHAR where IslemTuru='Mal Sayımı' and not exists (select * from STOKHARDETBAG where IslemNo=STOKHAR.IslemNo and IslemTuru=STOKHAR.IslemTuru)    
 ) tbl  
 GROUP BY IslemNo,SevkTarihi  
  
           
 open StoklarCursor              
 fetch next from StoklarCursor into @IslemNo,@Tutar,@KdvTutari,@DovizliTutar,@SevkTarihi             
              
while @@FETCH_STATUS =0               
begin  
  
select top 1 @FaturaTarihi=FaturaTarihi,@KullaniciAdi=KULADI,@ParamKullaniciNo=KULNO,  
@DovizKodu=DovizKodu,@DovizId=DovizCinsi,@Depo=Depo,@KullaniciDepartmani=Departman,@DovizKuru=DovizKuru from STOKHAR where IslemNo=@IslemNo and IslemTuru='Mal Sayımı'   
  
  
IF @Tutar >= 0  
 SET @GC = 'G'  
ELSE  
 SET @GC = 'C';  
  
exec spStokHarDetBagKaydet /*@IslemNo*/ @IslemNo, /*@IslemTuru*/ 'Mal Sayımı',/*:CariNo*/0,/*:CariKodu*/'Mal Sayımı',/*:CariAdi*/'Mal Sayımı',/*@Tutar*/ @Tutar,                         
   /*@SiparisTarihi*/ @FaturaTarihi,/*@KdvTutari*/ @KdvTutari, /*@FisTuru*/'M',/*:GC*/@GC,/*:EkIskTut1*/0 ,/*:EkIskTut2*/0 ,/*:EkIskTut3*/0 ,/*:EkIskTutTop*/0 ,                      
   /*:FaturaNo*/0,/*:FaturaTarihi*/ @FaturaTarihi, /*:Satici*/'',/*:DovizTut*/@DovizliTutar ,/*:DovizCinsi*/@DovizId ,/*:DovizKodu*/@DovizKodu ,/*  @DovizTutB*/@DovizliTutar,                      
   /*@BelgeNo*/'', /*@OzelKod1*/'',/*@OzelKod2*/'',/*@OzelKod3*/'',/*@IslemTipi*/'',/*@IrsNo*/'',/*@Ack1*/'Mal Sayımı (Seçilecek depodaki stokları sıfırlama)',/*@Ack2*/'',/*@Ack3*/'',/*@Ack4*/'',/*:KULNO*/@ParamKullaniciNo ,  
   /*:KULADI*/@KullaniciAdi ,                      
   /*@FatSerNo*/'',/*@SaticiAdi*/'',/*@AltIskYuzde1*/0,/*@AltIskYuzde2*/0,/*@AltIskYuzde3*/0,/*@AK*/'',/*@FaturaOPlanGunu*/0,/*@Depo*/@Depo,/*@GunAy*/0,/*@OpsiyonGunu*/0,                      
   /*@AcikKapali*/'A',/*@DovizBorc*/0,/*@DovizAlacak*/0,/*@FYaz*/'',/*@SecimEH*/'',/*@IslemNo3*/0,/*@TP*/'TF',/*@FisNo*/'',/*@VardiyaKodu*/'',/*@VardiyaDurumu*/'',/*@Departman*/@KullaniciDepartmani,                      
   /*@MasrafToplami*/0,/*@KDVDH*/'H',/*@IslemNo4*/0,/*@KayitDuzeyi*/0,/*@YazarKasaNo*/0,/*@YazarKasaFisNo*/'',/*@YaziciCount*/0,/*@IsIstasyonKodu*/'',/*@IsIstasyonAdi*/'',                      
   /*@TevkifatTutari*/0,/*@VardiyaNo*/'',/*@OdemeBilgisi*/'',/*@FaturaAdresNo*/ 0,/*@SevkAdresNo*/ 0,/*@FI*/ 'E',/*@SevkTarihi*/@SevkTarihi,/*@eFaturaNo*/'',                      
   /*@UUID*/ '',/*@eFaturaGonderimTarihi*/ null,/*@eFaturaDurumu*/'',/*@FaturaTipi*/0,@DovizKuru  
  
  fetch next from StoklarCursor into @IslemNo,@Tutar,@KdvTutari,@DovizliTutar,@SevkTarihi                
end              
              
close StoklarCursor              
deallocate StoklarCursor   
go
	 if exists (select * from sys.procedures where name='sp_Bakim_STOKHARDETBAG_Olustur')
drop proc sp_Bakim_STOKHARDETBAG_Olustur
go

CREATE   PROC sp_Bakim_STOKHARDETBAG_Olustur 
AS 
INSERT INTO STOKHARDETBAG ( IslemNo, IslemTuru, CariNo, CariKodu, CariAdi, Tutar, SiparisTarihi, KdvTutari, FisTuru, GC, EkIskTut1, EkIskTut2, EkIskTut3, EkIskTutTop, FaturaNo, FaturaTarihi, Satici, DovizTut, DovizCinsi, DovizKodu, 
                            FatSerNo, KULNO, KULADI, SaticiAdi,IslemTipi,AltIskYuzde1, AltIskYuzde2, AltIskYuzde3, FaturaOPlanGunu, Depo, GunAy, OpsiyonGunu, AcikKapali, 
                            DovizBorc, DovizAlacak, FYaz, SecimEH, IslemNo3, TP, FisNo, VardiyaKodu, VardiyaDurumu, Departman, MasrafToplami, KDVHD, IslemNo4, KayitDuzeyi, YazarKasaNo, YazarKasaFisNo, YaziciCount, IsIstasyonKodu, 
                            IsIstasyonAdi, VardiyaNo, OdemeBilgisi, FaturaAdresNo, SevkAdresNo, FI, SevkTarihi, FaturaTipi, Entegrator, Update_Date, DovizKur, TevkifatTutari)
Select IslemNo,IslemTuru,CariNo,CariKodu,CariAdi,SUM(SonTutar),SiparisTarihi,SUM(KdvTutari),FisTuru,GC,SUM(EkIskTut1),SUM(EkIskTut2),SUM(EkIskTut3),SUM(EkIskTutTop),FaturaNo,FaturaTarihi,Satici,SUM(DovizTut),DovizCinsi,DovizKodu,
	   'SK',KULNO,KULADI,SaticiAdi,CASE WHEN IslemTuru = 'Prk.Satış' THEN 'Hızlı Perakende'	 ELSE '' END,MAX(AltIskYuzde1),MAX(AltIskYuzde2),MAX(AltIskYuzde3),0, MAX(Depo),'Gün',0,AcikKapali,
	   SUM(DovizBorc),SUM(DovizAlacak),'B','H',0,TP,FisNo,VardiyaKodu,'Bekliyor',Departman,SUM(SatMasrafTutari),KDVHD,0,0,0,0,0,'01','Merkez',VardiyaNo,
	   CASE WHEN  EXISTS (Select 1 from  KASA K where K.ISLEMNO = sh.IslemNo and BAACIKLA = 'Tahsilat') THEN
			'Nakit'
		WHEN  EXISTS (Select 1 from  KASA K where K.ISLEMNO = sh.IslemNo and BAACIKLA = 'KK.Tahsilat') THEN
			'Kredi Kartı'
	   ELSE 'Veresiye' END,1,1,'E',SiparisTarihi,0,0,GETDATE(),MAX(DovizKuru),0
  from STOKHAR sh
 where EXISTS (Select 1 from ACARI ac where ac.ISLEMNO = sh.IslemNo)
   and NOT EXISTS (Select 1 from STOKHARDETBAG sb where sh.IslemNo in (sb.IslemNo,sb.IslemNo3))
GROUP BY IslemNo,IslemTuru,CariNo,CariKodu,CariAdi,SiparisTarihi,FisTuru,GC,FaturaNo,FaturaTarihi,Satici,DovizCinsi,DovizKodu				,
		 KULNO, KULADI, SaticiAdi,AcikKapali,TP,FisNo,VardiyaKodu,Departman,KDVHD,VardiyaNo,SiparisTarihi
		 go
	 if exists (select * from sys.procedures where name='sp_mb_XML_Customer_List_delphi')
drop proc [sp_mb_XML_Customer_List_delphi]
go
CREATE    PROCEDURE [dbo].[sp_mb_XML_Customer_List_delphi]                 
 @IslemNo nvarchar(30)                 
 AS                  
                 
--- 2022-10-26  
-- 2025-02-06 Ü.Ç where STK.IslemTuru IN ('Satış','Alış İade') kriteri eklendi.
SELECT top 1                   
 Adres.VergiNo as "VERGI_NO",                 
 Adres.VergiDairesi AS "VERGI_DAIRESI",                 
--  '7230055623' as "VERGI_NO",                 
  -- '2234567890' AS "VERGI_NO",                  
--'1234567801' AS "VERGI_NO",                  
-- AMUSTERI.TCKimlikNo AS "VERGI_NO",                 
 null as "KAPI_NO",                 
 AMUSTERI.MUSADRES2  as "SOKAK_ADI",                 
 null as "BINA_ADI",                 
 null as "BINA_NO",                 
 AMUSTERI.MUSILCE  as "ILCE",                 
 AMUSTERI.MUSIL as "IL",                 
 null as "POSTA_KODU",                 
 AMUSTERI.MUSADRES1 as "MAHALLE",                 
 Adres.Ulke as "ULKE_ADI",                 
 Adres.VergiDairesi as "VERGI_DA",                 
 AMusteri1.email_1 AS "EPOSTA",                 
 Adres.Tel1 as "TEL_NO",                 
 Adres.Faks as "FAKS",                 
 AMusteri1.WebAdresi_1 as "WEB_SITE",                  
    AMUSTERI.MUSADI as "UNVANI",                 
 CASE WHEN LEN(AMUSTERI.MUSVERNO)>10 THEN AMusteri1.KimlikAdi ELSE AMUSTERI.MUSADI END    AS "ADI",                 
 CASE WHEN LEN(AMUSTERI.MUSVERNO)>10 THEN AMusteri1.KimlikSoyAdi ELSE '' END     AS "SOYADI",                 
   -- 'urn:mail:defaultpk@pasaogluyumurta.com' AS "ETIKET" ,                  
    AMusteri1.email_1 AS "ETIKET",       
 AMusteri1.email_2 AS "ETIKET_IRSALIYE",       
  STK.FatSerNo+convert(varchar,year(getdate()))+ substring(CONVERT(VARCHAR,STK.FaturaNo),2,len(CONVERT(VARCHAR,STK.FaturaNo)))  as "EFATURA_NO",                    
    (SELECT CAST(S.IrsNo AS VARCHAR(MAX))  +';'     
    FROM                 
 (                 
select distinct S.IrsNo from STOKHARDETBAG S where     
S.IslemNo in (select IslemNo from STOKHAR WHERE @IslemNo in (IslemNo,IslemNo3)) and FisTuru='I' and S.CariNo=STK.CariNo     
  )S        
  ORDER BY S.IrsNo ASC                
    FOR XML PATH(''),TYPE   ) as "IRSALIYE_NO",      
  (SELECT CAST(S.IrsaliyeTarihi AS VARCHAR(MAX))+';'                  
    FROM        
 (SELECT DISTINCT CONVERT(varchar(10), S.FaturaTarihi ,105) IrsaliyeTarihi FROM                  
  STOKHARDETBAG S where S.IslemNo in (select IslemNo from STOKHAR WHERE @IslemNo in (IslemNo,IslemNo3)) and FisTuru='I' and S.CariNo=STK.CariNo      
            
  )S        
  ORDER BY S.IrsaliyeTarihi ASC                
    FOR XML PATH(''),TYPE   ) as "IRSALIYE_TARIHI",        
CASE                  
WHEN ISNULL (DD.Kdv,0)=0 AND STK.OzelKod1='31' AND STK.YazarKasaFisNo<>2 and STK.EF_ISTISNA=0  THEN    '351;Vergiden muaf.'                   
WHEN  ISNULL (DD.Kdv,0)=0 AND STK.OzelKod1='31' AND STK.YazarKasaFisNo=2 and STK.EF_ISTISNA=0  THEN   '11/1-a Mal ihracatı'                  
when SUBSTRING(ISNULL(OzelKod1,'00'), 1, 1)=3 and ISNULL (DD.Kdv,0)=0 and STK.EF_ISTISNA=0  then '701;11/1-c md. Kapsamındaki İhraç Kayıtlı Satış'                  
when DD.TopTutar=0 and STK.EF_ISTISNA=0 then '351;KısmiBedelsiz'              
 WHEN ISNULL (DD.Kdv,0)=0  and ISNULL(STK.EF_ISTISNA,0)=0  THEN   (SELECT Deger FROM Parametre WHERE Param='eFaturaMuafiyetAciklama')                  
ELSE (SELECT top 1  MuafiyetKodu+';'+MuafiyetAciklamasi FROM StokVergiMuafiyetleri  WHERE MuafiyetKodu= STK.EF_ISTISNA )             
 END AS  "MUAFIYET",                 
 --(SELECT CONVERT(VARCHAR,DEGISKEN_KODU)+'-'+DEGISKEN_ADI FROM EF_DEGISKENLER WHERE DEGISKEN_KODU=STK.EF_ISTISNA) AS  "MUAFIYET",                 
 STK.UUID,                 
 STK.Ack1 AS "ACIKLAMA1",                 
 STK.Ack2 AS "ACIKLAMA2",                 
 STK.Ack3 AS "ACIKLAMA3",         
 STK.Ack4 as "ACIKLAMA4",                 
 case  when FaturaTipi=6 then 'KAMU' else  CASE YazarKasaFisNo WHEN  1 THEN 'TEMELFATURA' WHEN 2 THEN 'IHRACAT' ELSE 'TICARIFATURA' end END "FATURA_TUR",                     
 CASE  (select top 1 OzelKod1 from STOKHARDETBAG where IslemNo=@IslemNo) WHEN   0    THEN 'SATIS' WHEN   1 THEN 'TEVKIFAT' WHEN 2 THEN 'IADE'   
 WHEN  3 THEN 'IHRACKAYITLI' WHEN  4 THEN 'ISTISNA' else case when STK.FaturaTipi in (5) then 'SATIS' when FaturaTipi=6 and isnull(STK.TevkifatTutari,0)>0 then 'TEVKIFAT' else 'SATIS'  end END  AS "SATIS_TUR",                
 SUBSTRING(ISNULL(OzelKod1,'00'), 2, 1) AS "ILETIM_TUR",                 
    CASE WHEN STK.AltIskYuzde1 >0 THEN  'Alt iskonto oranları : ' +CONVERT(VARCHAR,STK.AltIskYuzde1) ELSE NULL  END +                 
 CASE WHEN STK.AltIskYuzde2 >0 THEN   + '|'+CONVERT(VARCHAR,STK.AltIskYuzde2) ELSE NULL END +                 
 CASE WHEN STK.AltIskYuzde3 >0 THEN   +            
 '|'+CONVERT(VARCHAR,STK.AltIskYuzde3) ELSE NULL  END  as "ALT_ISKONTO_ACIKLAMA",                 
     DOVIZT.IsoKodu AS "DOVIZ_KODU",                 
 round((CASE WHEN STK.Tutar=0 AND STK.DovizTut=0 THEN (DD.SonTutar/DD.SonTutarDov) ELSE(STK.Tutar/STK.DovizTut) END),4) AS "DOVIZ_CARPAN",                 
  case when Adres.eFaturaMukellefimi='true' then 1 else 0 end EFatura ,                 
  AMUSTERI.MUSNO CariNo,     
  STK.FaturaTipi "TIP"     
 --AMusteri1.email_1 as "ETIKT"                  
  --'urn:mail:defaultpk@testkurumelpo.com.tr' AS "ETIKET"            
 --ISNULL(AMusteri1.KimlikAdi,'AD') as "ADI",                 
 --ISNULL(AMusteri1.KimlikSoyAdi,'SOYAD') as "SOYADI"                 
 FROM  AMUSTERI                  
INNER JOIN  Adres ON AMUSTERI.MUSNO = Adres.CariNo                 
INNER JOIN STOKHARDETBAG STK ON STK.CariNo=AMUSTERI.MUSNO                 
JOIN STOKHAR DD ON DD.IslemNo=STK.IslemNo                 
INNER JOIN AMusteri1 ON AMusteri1.CariNo=AMUSTERI.MUSNO                  
INNER JOIN DOVIZT ON  DOVIZT.NoId=STK.DovizCinsi                 
--INNER JOIN FatAciklama  on  FatAciklama.IslemNo2=STK.IslemNo                 
WHERE (@IslemNo in(DD.IslemNo ,DD.IslemNo3) )  
and ( STK.FaturaAdresNo=Adres.AdresNo  and STK.IslemTuru IN ('Satış','Alış İade')) ;   
  go

  -------------------------------------------------------------------------------------------------------------------------------------------
if exists (select * from sys.procedures where name='spCariHareketYaz')
drop proc spCariHareketYaz
 go--
  -------------------------------------------------------------------------------------------------------------------------------------------
 create PROCEDURE [dbo].[spCariHareketYaz]      
   @TESSIRNO int,          
   @MUSNO int,          
   @MUSADI nvarchar(50),          
   @TARIH datetime,          
   @ACIKLAMA nvarchar(60),          
   @BORC float,          
   @ALACAK float,          
   @BA nvarchar(1),          
   @BAACIKLA nvarchar(14),          
   @ACIKLABAKIYE nvarchar(1),          
   @BORDRONO int,          
   @LISTNO nvarchar(5),          
   @ISLEMNO int,          
   @TDATE datetime,          
   @DOVIZTUT float,          
   @DOVIZCINSI int,          
   @MUSKOD nvarchar(20),          
   @DOVIZKODU nvarchar(2),          
   @OZELKOD nvarchar(3),          
   @ISLEMTIPI nvarchar(30),          
   @BELGENO nvarchar(10),          
   @KULNO int,          
   @KULADI nvarchar(20),          
   @SaticiKodu nvarchar(15),          
   @SaticiAdi nvarchar(25),          
   @CariOPlanGunu int,          
   @GunAy nvarchar(3),          
   @OpsiyonGunu int,          
   @AcikKapali nvarchar(3),          
   @DovizBorc float,          
   @DovizAlacak float,          
   @TP nvarchar(2),          
   @VardiyaKodu nvarchar(15),          
   @VardiyaDurumu nvarchar(9),          
   @Departman nvarchar(8),          
   @IslemNo2 int,          
   @KayitDuzeyi int,           
   @KayitDuzeyiNo int,          
   @IslemNo3 int,          
   @Aciklama2 nvarchar(400),          
   @OnOdeme nvarchar(1),          
   @VadeTarihi datetime,          
   @IsIstasyonKodu nvarchar(30),          
   @IsIstasyonAdi nvarchar(30),           
   @SiraNo int,          
   @VardiyaNo nvarchar(8),           
   @PosSablonKodu nvarchar(15),          
   @Update_Date DateTime,          
   @StokKodu nvarchar(30),          
   @FisNo int,  
   @DovizKuru float = 1  
AS          
BEGIN          
      
 INSERT 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, DovizKur)  
  
 VALUES ( @TESSIRNO, @MUSNO, @MUSADI, @TARIH,          
    @ACIKLAMA, @BORC, @ALACAK, @BA,          
    @BAACIKLA, @ACIKLABAKIYE,          
    @BORDRONO, @LISTNO, @ISLEMNO,          
    GETDATE(), @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,          
    GETDATE(),@StokKodu, @FisNo,@DovizKuru )       
      
    IF @BAACIKLA = 'Prk.Satış'    
 BEGIN    
  DECLARE @CariSayisi int,@SD_Fark float    
    
  SET @CariSayisi = ( SELECT COUNT(*)     
                        FROM STOKHAR S,STOKHARDETBAG B    
        WHERE S.IslemNo = B.IslemNo     
          AND B.IslemNo = @ISLEMNO    
          AND (S.CariNo <> B.CariNo or S.CariKodu <> B.CariKodu))    
    
  SET @SD_Fark = @BORC - ( SELECT Tutar FROM STOKHARDETBAG B WHERE B.IslemNo = @ISLEMNO )     
    
  IF  (@CariSayisi > 0) or (ABS(@SD_Fark) > 0.01)    
  BEGIN    
      UPDATE STOKHARDETBAG SET CariNo = @MUSNO,CariKodu = @MUSKOD, CariAdi = @MUSADI,Tutar = @BORC,Ack4 = 'ACari Tutar Güncelleme' where IslemNo = @ISLEMNO and IslemTuru = 'Prk.Satış'    
   RAISERROR ('Cari veya tutar hatası. Kontrol ediniz..!',10,1)    
   return 0    
  END      
 END    
END;  
go

  
  --ZAMANAŞIMI OLABİLİR
update STOKHAR set STOKHAR.StokTipi = STOKKARTI.StokTipi from STOKHAR , STOKKARTI where STOKHAR.StokTipi not in (select distinct StokTipi from STOKKARTI) and STOKHAR.StokKodu = STOKKARTI.Kodu 
GO
ALTER TABLE STOKHARDETBAG ALTER COLUMN Satici nvarchar(10)
GO
 ALTER PROC sp_Bakim_STOKHARDETBAG_Olustur 
AS 
INSERT INTO STOKHARDETBAG ( IslemNo, IslemTuru, CariNo, CariKodu, CariAdi, Tutar, SiparisTarihi, KdvTutari, FisTuru, GC, EkIskTut1, EkIskTut2, EkIskTut3, EkIskTutTop, FaturaNo, FaturaTarihi, Satici, DovizTut, DovizCinsi, DovizKodu, 
                            FatSerNo, KULNO, KULADI, SaticiAdi,IslemTipi,AltIskYuzde1, AltIskYuzde2, AltIskYuzde3, FaturaOPlanGunu, Depo, GunAy, OpsiyonGunu, AcikKapali, 
                            DovizBorc, DovizAlacak, FYaz, SecimEH, IslemNo3, TP, FisNo, VardiyaKodu, VardiyaDurumu, Departman, MasrafToplami, KDVHD, IslemNo4, KayitDuzeyi, YazarKasaNo, YazarKasaFisNo, YaziciCount, IsIstasyonKodu, 
                            IsIstasyonAdi, VardiyaNo, OdemeBilgisi, FaturaAdresNo, SevkAdresNo, FI, SevkTarihi, FaturaTipi, Entegrator, Update_Date, DovizKur, TevkifatTutari)
Select IslemNo,IslemTuru,CariNo,CariKodu,CariAdi,SUM(SonTutar),SiparisTarihi,SUM(KdvTutari),FisTuru,GC,SUM(EkIskTut1),SUM(EkIskTut2),SUM(EkIskTut3),SUM(EkIskTutTop),FaturaNo,FaturaTarihi,Satici,SUM(DovizTut),DovizCinsi,DovizKodu,
	   'SK',KULNO,KULADI,SaticiAdi,CASE WHEN IslemTuru = 'Prk.Satış' THEN 'Hızlı Perakende'	 ELSE '' END,MAX(AltIskYuzde1),MAX(AltIskYuzde2),MAX(AltIskYuzde3),0, MAX(Depo),'Gün',0,AcikKapali,
	   SUM(DovizBorc),SUM(DovizAlacak),'B','H',0,TP,FisNo,VardiyaKodu,'Bekliyor',Departman,SUM(SatMasrafTutari),KDVHD,0,0,0,0,0,'01','Merkez',VardiyaNo,
	   CASE WHEN  EXISTS (Select 1 from  KASA K where K.ISLEMNO = sh.IslemNo and BAACIKLA = 'Tahsilat') THEN
			'Nakit'
		WHEN  EXISTS (Select 1 from  KASA K where K.ISLEMNO = sh.IslemNo and BAACIKLA = 'KK.Tahsilat') THEN
			'Kredi Kartı'
	   ELSE 'Veresiye' END,1,1,'E',SiparisTarihi,0,0,GETDATE(),MAX(DovizKuru),0
  from STOKHAR sh
 where EXISTS (Select 1 from ACARI ac where ac.ISLEMNO = sh.IslemNo)
   and NOT EXISTS (Select 1 from STOKHARDETBAG sb where sh.IslemNo in (sb.IslemNo,sb.IslemNo3))
GROUP BY IslemNo,IslemTuru,CariNo,CariKodu,CariAdi,SiparisTarihi,FisTuru,GC,FaturaNo,FaturaTarihi,Satici,DovizCinsi,DovizKodu				,
		 KULNO, KULADI, SaticiAdi,AcikKapali,TP,FisNo,VardiyaKodu,Departman,KDVHD,VardiyaNo,SiparisTarihi
		 GO
	IF OBJECT_ID('V_Plasiyer_Raporu', 'V') IS NOT NULL 
	DROP VIEW [V_Plasiyer_Raporu]
	GO


		  CREATE VIEW V_Plasiyer_Raporu
AS
select sipdb.IslemNo,sipdb.SiparisTarihi,sipdb.IslemTuru,siph.CariKodu,siph.CariAdi,siph.StokKodu, siph.StokAdi,siph.Miktar,siph.KalanMiktar,siph.Birim,siph.BirimFiyat,siph.Kdv,siph.KdvTutari,
	   (siph.SonTutar/Miktar) * KalanMiktar KalanSiparisTutar,siph.Satici,(select SaticiAdi from Satici s where s.SaticiKodu = siph.Satici) SaticiAdi,sipdb.KULNO
  from SIPARISHARDETBAG sipdb,
       SIPARISHAR siph
 where sipdb.IslemNo = siph.IslemNo and sipdb.AcikKapali = 'A'
   and KalanMiktar > 0
   and sipdb.IslemTuru = 'Alınan'
union all
select sdb.IslemNo,sdb.FaturaTarihi, sdb.IslemTuru, sdb.CariKodu,sdb.CariAdi,sh.StokKodu, sh.StokAdi,sh.Miktar,Miktar,sh.Birim,sh.BirimFiyat,sh.Kdv,sh.KdvTutari,
	   SonTutar,sh.Satici,(select SaticiAdi from Satici s where s.SaticiKodu = sh.Satici) SaticiAdi,sdb.KULNO
  from STOKHARDETBAG sdb,
       STOKHAR sh
 where sdb.IslemNo = sh.IslemNo
   and sh.GC in ('G','C')
   and sdb.IslemTuru <> 'Bakım'

GO  
   
 alter proc spMalSayimiDuzenle   
as  
---Malsayım detbag kaydı olmayanları düzenler  
declare @IslemNo int declare @GC nvarchar(1) declare @KullaniciAdi nvarchar(20) declare @ParamKullaniciNo int  
declare @DovizKodu nvarchar(2) declare @DovizId smallint declare @Depo nvarchar(30) declare @KullaniciDepartmani nvarchar(8)  
declare @Tutar money declare @KdvTutari money declare @DovizliTutar money declare @SevkTarihi datetime declare @DovizKuru money=1  
  
declare @FaturaTarihi datetime   
  
declare StoklarCursor cursor              
for              
 Select IslemNo,SUM(Tutar) Tutar,SUM(KdvTutari)KdvTutari,SUM(DovizliTutar) DovizliTutar,SevkTarihi  
 from (  
  select IslemNo,  
    CASE WHEN GC = 'G' THEN SonTutar ELSE SonTutar * (-1) end Tutar,   
    CASE WHEN GC = 'G' THEN KdvTutari ELSE KdvTutari * (-1) end KdvTutari,   
    CASE WHEN GC = 'G' THEN DovizTut ELSE DovizTut * (-1) end DovizliTutar,   
      SiparisTarihi as SevkTarihi    
  from STOKHAR where IslemTuru='Mal Sayımı' and not exists (select * from STOKHARDETBAG where IslemNo=STOKHAR.IslemNo and IslemTuru=STOKHAR.IslemTuru)    
 ) tbl  
 GROUP BY IslemNo,SevkTarihi  
  
           
 open StoklarCursor              
 fetch next from StoklarCursor into @IslemNo,@Tutar,@KdvTutari,@DovizliTutar,@SevkTarihi             
              
while @@FETCH_STATUS =0               
begin  
  
select top 1 @FaturaTarihi=FaturaTarihi,@KullaniciAdi=KULADI,@ParamKullaniciNo=KULNO,  
@DovizKodu=DovizKodu,@DovizId=DovizCinsi,@Depo=Depo,@KullaniciDepartmani=Departman,@DovizKuru=DovizKuru from STOKHAR where IslemNo=@IslemNo and IslemTuru='Mal Sayımı'   
  
  
IF @Tutar >= 0  
 SET @GC = 'G'  
ELSE  
 SET @GC = 'C';  
  
exec spStokHarDetBagKaydet /*@IslemNo*/ @IslemNo, /*@IslemTuru*/ 'Mal Sayımı',/*:CariNo*/0,/*:CariKodu*/'Mal Sayımı',/*:CariAdi*/'Mal Sayımı',/*@Tutar*/ @Tutar,                         
   /*@SiparisTarihi*/ @FaturaTarihi,/*@KdvTutari*/ @KdvTutari, /*@FisTuru*/'M',/*:GC*/@GC,/*:EkIskTut1*/0 ,/*:EkIskTut2*/0 ,/*:EkIskTut3*/0 ,/*:EkIskTutTop*/0 ,                      
   /*:FaturaNo*/0,/*:FaturaTarihi*/ @FaturaTarihi, /*:Satici*/'',/*:DovizTut*/@DovizliTutar ,/*:DovizCinsi*/@DovizId ,/*:DovizKodu*/@DovizKodu ,/*  @DovizTutB*/@DovizliTutar,                      
   /*@BelgeNo*/'', /*@OzelKod1*/'',/*@OzelKod2*/'',/*@OzelKod3*/'',/*@IslemTipi*/'',/*@IrsNo*/'',/*@Ack1*/'Mal Sayımı (Seçilecek depodaki stokları sıfırlama)',/*@Ack2*/'',/*@Ack3*/'',/*@Ack4*/'',/*:KULNO*/@ParamKullaniciNo ,  
   /*:KULADI*/@KullaniciAdi ,                      
   /*@FatSerNo*/'',/*@SaticiAdi*/'',/*@AltIskYuzde1*/0,/*@AltIskYuzde2*/0,/*@AltIskYuzde3*/0,/*@AK*/'',/*@FaturaOPlanGunu*/0,/*@Depo*/@Depo,/*@GunAy*/0,/*@OpsiyonGunu*/0,                      
   /*@AcikKapali*/'A',/*@DovizBorc*/0,/*@DovizAlacak*/0,/*@FYaz*/'',/*@SecimEH*/'',/*@IslemNo3*/0,/*@TP*/'TF',/*@FisNo*/'',/*@VardiyaKodu*/'',/*@VardiyaDurumu*/'',/*@Departman*/@KullaniciDepartmani,                      
   /*@MasrafToplami*/0,/*@KDVDH*/'H',/*@IslemNo4*/0,/*@KayitDuzeyi*/0,/*@YazarKasaNo*/0,/*@YazarKasaFisNo*/'',/*@YaziciCount*/0,/*@IsIstasyonKodu*/'',/*@IsIstasyonAdi*/'',                      
   /*@TevkifatTutari*/0,/*@VardiyaNo*/'',/*@OdemeBilgisi*/'',/*@FaturaAdresNo*/ 0,/*@SevkAdresNo*/ 0,/*@FI*/ 'E',/*@SevkTarihi*/@SevkTarihi,/*@eFaturaNo*/'',                      
   /*@UUID*/ '',/*@eFaturaGonderimTarihi*/ null,/*@eFaturaDurumu*/'',/*@FaturaTipi*/0,@DovizKuru  
  
  fetch next from StoklarCursor into @IslemNo,@Tutar,@KdvTutari,@DovizliTutar,@SevkTarihi                
end              
              
close StoklarCursor              
deallocate StoklarCursor   

go

alter proc spTahsilVadeRaporu_Rut (@RutAdi nvarchar(max),@RutGunu nvarchar(max),@RutSatici nvarchar(max))      
as        
create table #odeme        
(        
  RecID integer Identity (1, 1) not null, NoId integer, IslemNo integer, Tarih datetime,        
  CariNo integer,  IslemTuru nvarchar(20) COLLATE DATABASE_DEFAULT,  Bakiye float,  Borc_Kullanilan float ,  Devreden float,  Borc float,        
  Devir float  PRIMARY KEY CLUSTERED  (RecID)        
)        
      
DECLARE @CariNo int      
Declare @DagitimTutari float        
Declare @NoId integer,  @IslemNo integer,  @Tarih datetime,  @Borc decimal (28, 14), @Borc_Kullanilan decimal (28, 14),  @Son_Kalan_Tutar float,  @IslemTuru nvarchar(20), @TmpTutar decimal(28, 14)        
      
declare cr_Rut cursor FAST_FORWARD READ_ONLY for        
select  CariNo from [VRUT] where @RutAdi is not null and RutAdi =@RutAdi and Deger = @RutGunu and SaticiAdi = @RutSatici     
union ALL     
select MUSNO from AMUSTERI where MUSBAKIYE > 0.01 and  @RutAdi is null    
open cr_Rut        
fetch next from cr_Rut        
into  @CariNo      
while (@@FETCH_STATUS = 0)      
begin      
      
 set @DagitimTutari = (select SUM (BORC-ALACAK) from ACARI WHERE MUSNO=@CariNo)         
 set @TmpTutar = @DagitimTutari        
        
 declare cr_Prepare cursor FAST_FORWARD READ_ONLY for        
 select           
   odm.NoId,        
   odm.IslemNo,        
   odm.Tarih,        
   odm.CariNo,        
   odm.Borc,        
   odm.BAAcikla        
 from Odeme odm        
 where        
    odm.CariNo = @CariNo and        
    IsNull (odm.Borc, 0) > 0        
 order by        
   odm.Tarih desc,NoId desc        
        
 open cr_Prepare        
 fetch next from cr_Prepare        
 into        
   @NoId,        
   @IslemNo,        
   @Tarih,        
   @CariNo,        
   @Borc,        
   @IslemTuru        
        
 while (@@FETCH_STATUS = 0) and (@TmpTutar > 0.0)        
 begin        
   if @Borc >= @TmpTutar         
   begin        
  set @Borc_Kullanilan = @TmpTutar        
  set @Son_Kalan_Tutar = @TmpTutar - @Borc        
  set @TmpTutar = 0.0        
   end        
   else        
   begin        
  set @TmpTutar = @TmpTutar - @Borc        
  set @Borc_Kullanilan = @Borc        
  set @Son_Kalan_Tutar = @TmpTutar        
   end        
        
   insert into #odeme         
   (        
  NoId,        
  IslemNo,        
  Tarih,        
  CariNo,        
  Borc,        
  Borc_Kullanilan,        
  Devreden,        
  Bakiye,        
  Devir,        
  IslemTuru        
   )        
   values        
   (        
  @NoId,         
  @IslemNo,        
  @Tarih,        
  @CariNo,        
  @Borc,        
  @Borc_Kullanilan,        
  @Son_Kalan_Tutar,        
  @DagitimTutari,        
  @Son_Kalan_Tutar+@Borc,        
  @IslemTuru        
   )        
        
   fetch next from cr_Prepare        
   into        
  @NoId,        
  @IslemNo,        
  @Tarih,        
  @CariNo,        
  @Borc,        
  @IslemTuru        
 end        
          
 close cr_Prepare        
 deallocate cr_Prepare         
      
   FETCH NEXT FROM cr_Rut  INTO @CariNo      
end         
close cr_Rut        
deallocate cr_Rut           
      
select        
  RecID,      
  o.NoId,      
  a.MUSNO  [Cari No],        
  a.MUSKOD [Cari Kodu],        
  a.MUSADI [Cari Adı],        
  o.IslemTuru [İşlem Türü],        
  o.IslemNo [İşlem No],        
  c.ACIKLAMA [Açıklama],        
  CONVERT(nvarchar(10),c.TARIH,104)  [İşlem Tarihi],        
  CONVERT(nvarchar(10),o.Tarih,104)  [Vade Tarihi],        
  CAST(GETDATE() - o.Tarih as int) [Geciken Gün],        
  Devreden,      
  o.Borc [Borç],        
  o.Devir,        
  o.Bakiye,        
  d.FatSerNo [Fatura Seri No],        
  d.FaturaNo [Fatura No],
  a.SaticiAdi,
  a.SaticiKodu
 from #odeme o        
 inner join  AMUSTERI a on  o.CariNo = a.MUSNO        
 inner join  ACARI    c on c.ISLEMNO = o.IslemNo and c.MUSNO = o.CariNo and c.BAACIKLA = o.IslemTuru       
 left join   STOKHARDETBAG d on o.IslemNo = d.IslemNo        
 Order by a.MUSNO,o.Tarih desc, o.NoId desc   
 go
 
 alter  proc sp_StokFiyatDegistirStokListesiGetir(@EkParametreler nvarchar(max)='')      
as       
declare  @SqlText nvarchar(max)      
      
set @SqlText=' select T.*  from (      
select SK.Barkodu, SK.Kodu, SK.UreticiFirmaKodu, SK.StokAdi, SK.OzelKod1, SK.OzelKod2,       
 SK.GrupAdi, SK.OTVOrani,SK.StokAdedi,SK.Update_Date,SK.AnaBirim,SK.AktifPasif,      
      
 SF.F1Adi,SF.F2Adi,SF.F3Adi,SF.F4Adi,SF.F5Adi,SF.F6Adi,SF.F7Adi,SF.F8Adi,SF.F9Adi,SF.F10Adi,SF.F11Adi,SF.F12Adi,SF.F13Adi,SF.F14Adi,SF.F15Adi,SF.F16Adi,      
 SF.F17Adi,SF.F18Adi,SF.F19Adi,SF.F20Adi,SF.F1Fiyat,SF.F2Fiyat,SF.F3Fiyat,SF.F4Fiyat,SF.F5Fiyat,SF.F6Fiyat,SF.F7Fiyat,SF.F8Fiyat,SF.F9Fiyat,SF.F10Fiyat,      
 SF.F11Fiyat,SF.F12Fiyat,SF.F13Fiyat,SF.F14Fiyat,SF.F15Fiyat,SF.F16Fiyat,SF.F17Fiyat,SF.F18Fiyat,SF.F19Fiyat,SF.F20Fiyat,SF.F1Kdv,SF.F2Kdv,SF.F3Kdv,      
 SF.F4Kdv,SF.F5Kdv,SF.F6Kdv,SF.F7Kdv,SF.F8Kdv,SF.F9Kdv,SF.F10Kdv,SF.F11Kdv,SF.F12Kdv,SF.F13Kdv,SF.F14Kdv,SF.F15Kdv,SF.F16Kdv,SF.F17Kdv,SF.F18Kdv,SF.F19Kdv,      
 SF.F20Kdv,SF.F1DovizKodu,SF.F2DovizKodu,SF.F3DovizKodu,SF.F4DovizKodu,SF.F5DovizKodu,SF.F6DovizKodu,SF.F7DovizKodu,      
 SF.F8DovizKodu,SF.F9DovizKodu,SF.F10DovizKodu,SF.F11DovizKodu,SF.F12DovizKodu,SF.F13DovizKodu,SF.F14DovizKodu,SF.F15DovizKodu,SF.F16DovizKodu,      
 SF.F17DovizKodu,SF.F18DovizKodu,SF.F19DovizKodu,SF.F20DovizKodu,SF.F1FiyatH,SF.F2FiyatH,SF.F3FiyatH,SF.F4FiyatH,SF.F5FiyatH,SF.F6FiyatH,SF.F7FiyatH,      
 SF.F8FiyatH,SF.F9FiyatH,SF.F10FiyatH,SF.F11FiyatH,SF.F12FiyatH,SF.F13FiyatH,SF.F14FiyatH,SF.F15FiyatH,SF.F16FiyatH,SF.F17FiyatH,SF.F18FiyatH,SF.F19FiyatH,      
 SF.F20FiyatH,SF.SatisKdv,SF.IslemNo,SF.DF,SF.StokNo,AltGrupAdi,AltGrupAdi2,AltGrupAdi3,AnaStokKodu      
from STOKKARTI as SK      
inner join StokFiyat as SF on SF.StokNo=SK.StokNo)T      
Where AktifPasif=''A'' '      
      
if @EkParametreler<>''      
set @SqlText=@SqlText+' and '+@EkParametreler      
      
      
--select @SqlText      
exec(@SqlText)   
go
 ALTER  VIEW V_TopluStokFiyatDegistir AS    
SELECT SK.Barkodu, SK.Kodu, SK.UreticiFirmaKodu, SK.StokAdi, SK.OzelKod1, SK.OzelKod2,OzelKod3,OzelKod4,             
        SK.GrupAdi, SK.OTVOrani,SK.StokAdedi,SK.Update_Date,SK.AnaBirim,SK.AktifPasif,SK.StokNo ,      
  ROUND(SF.F1Fiyat,2) F1Fiyat ,ROUND(SF.F2Fiyat,2)F2Fiyat,  ROUND(SF.F3Fiyat,2)F3Fiyat,  ROUND(SF.F4Fiyat,2)F4Fiyat,    
  ROUND(SF.F5Fiyat,2) F5Fiyat, ROUND(SF.F6Fiyat,2)F6Fiyat,  ROUND(SF.F7Fiyat,2)F7Fiyat,  ROUND(SF.F8Fiyat,2)F8Fiyat,    
  ROUND(SF.F9Fiyat,2) F9Fiyat, ROUND(SF.F10Fiyat,2)F10Fiyat,ROUND(SF.F11Fiyat,2)F11Fiyat,ROUND(SF.F12Fiyat,2)F12Fiyat,    
  ROUND(SF.F13Fiyat,2)F13Fiyat,ROUND(SF.F14Fiyat,2)F14Fiyat,ROUND(SF.F15Fiyat,2)F15Fiyat,ROUND(SF.F16Fiyat,2)F16Fiyat,    
  ROUND(SF.F17Fiyat,2)F17Fiyat,ROUND(SF.F18Fiyat,2)F18Fiyat,ROUND(SF.F19Fiyat,2)F19Fiyat,ROUND(SF.F20Fiyat,2)F20Fiyat,  
  SF.F1Kdv,SF.F2Kdv,SF.F3Kdv,SF.F4Kdv,SF.F5Kdv,SF.F6Kdv,SF.F7Kdv,SF.F8Kdv,SF.F9Kdv,SF.F10Kdv,SF.F11Kdv,SF.F12Kdv,  
  SF.F13Kdv,SF.F14Kdv,SF.F15Kdv,SF.F16Kdv,SF.F17Kdv,SF.F18Kdv,SF.F19Kdv,SF.F20Kdv,  
  SF.F1DovizKodu,SF.F2DovizKodu,SF.F3DovizKodu,SF.F4DovizKodu,SF.F5DovizKodu,SF.F6DovizKodu,SF.F7DovizKodu,SF.F8DovizKodu,SF.F9DovizKodu,SF.F10DovizKodu,  
  SF.F11DovizKodu,SF.F12DovizKodu,SF.F13DovizKodu,SF.F14DovizKodu,SF.F15DovizKodu,SF.F16DovizKodu,SF.F17DovizKodu,SF.F18DovizKodu,SF.F19DovizKodu,SF.F20DovizKodu,  
  SF.SatisKdv  ,AltGrupAdi,AltGrupAdi2,AltGrupAdi3,AnaStokKodu
  FROM STOKKARTI SK,      
       StokFiyat SF      
 WHERE SK.Kodu =SF.Kodu      
   AND SK.AktifPasif='A'  
   go

go
alter  procedure StokKodAdDegistir               
@STOKADI nvarchar(500),              
@STOKKODU nvarchar(40),              
@EskiStokKodu nvarchar(40),             
@STOKADI2 nvarchar(100) = ''          
as              
begin Transaction                 
 UPDATE STOKHAR SET StokAdi = @STOKADI, StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE MuadilStoklar SET MuadilStokAdi = @STOKADI, MuadilStokKodu= @STOKKODU where MuadilStokKodu= @EskiStokKodu              
 UPDATE StokFiyat SET Kodu= @STOKKODU where Kodu= @EskiStokKodu              
 UPDATE StokDB SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE StokFiyatLog SET Kodu= @STOKKODU where Kodu= @EskiStokKodu              
 UPDATE StokMarkalari SET StokKodu= @STOKKODU where StokKodu=@EskiStokKodu              
 UPDATE Tedarikciler SET StokAdi = @STOKADI, StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE PYazarKasaStoklari SET StokAdi = @STOKADI, StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE PYazarKasaHar SET StokAdi = @STOKADI, StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE PPetrolHar SET StokAdi = @STOKADI, StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE PDegFiyatlar SET StokAdi = @STOKADI, StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE DonemselFiyatListesi SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE TekstilHareketTablosu SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE TekstilHataHareketTablosu SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE TekstilHataliStokVirmanSablonu SET HataliStokKodu= @STOKKODU where HataliStokKodu= @EskiStokKodu              
 UPDATE TekstilHataliStokVirmanSablonu SET VirmanStokKodu= @STOKKODU where VirmanStokKodu= @EskiStokKodu              
 UPDATE TekstilIsEmirleriDetayi SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE TekstilKesimTablosu SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE TekstilStokRenkTanimlari SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE CariUretimFiyatlari SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE Seri SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE Tarim_AmbalajStok SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 UPDATE Tarim_AmbalajStok SET AmbalajKodu= @STOKKODU where AmbalajKodu= @EskiStokKodu              
 UPDATE StokDB SET StokKodu= @STOKKODU where StokKodu= @EskiStokKodu              
 update MH_Connect SET Degeri =@STOKKODU where Degeri=@EskiStokKodu and TabloAdi='STOKKARTI' and FieldAdi='Kodu'              
 Update StokTablolari   Set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu                
 Update Tarim_AmbalajStok  Set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu                
 Update Tarim_AmbalajStok  Set AmbalajKodu=@STOKKODU Where AmbalajKodu=@EskiStokKodu                
 Update Tarim_SatisEmirleri  Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu                
 Update Tarim_UretimDetay  Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu                
 Update Tarim_UretimDetay  Set KasaKodu=@STOKKODU Where KasaKodu=@EskiStokKodu                
 Update Tarim_UretimDetay  Set PaletKodu=@STOKKODU Where PaletKodu=@EskiStokKodu                
 Update Tarim_UretimDetay2  Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu                
 Update Tarim_UrunAlim   Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu                
 Update Tarim_UrunAlimAmbalaj Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu                
 Update Tarim_UrunAlimHareket Set KasaKodu=@STOKKODU Where KasaKodu=@EskiStokKodu                
 Update Tarim_UrunAlimHareket Set PaletKodu=@STOKKODU Where PaletKodu=@EskiStokKodu                
 Update StokTartim    Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu           
 Update StokTartimPalet   Set StokKodu=@STOKKODU, StokAdi=@STOKADI Where StokKodu=@EskiStokKodu               
 Update CariDonemFiyatlari set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 Update ElTerminaliDepoSayim set StokKodu=@STOKKODU, StokAdi=@STOKADI  Where StokKodu=@EskiStokKodu               
 Update ElTerminaliYukleme set StokKodu=@STOKKODU, StokAdi=@STOKADI  Where StokKodu=@EskiStokKodu               
 Update EtiketBarkod set StokKodu=@STOKKODU, StokAdi=@STOKADI  Where StokKodu=@EskiStokKodu               
 Update MiktarsalHedefler set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 Update RenkBedenSeriTablosu set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 Update RenkBedenTablosu set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 Update SIPARISHAR set StokKodu=@STOKKODU, StokAdi=@STOKADI  Where StokKodu=@EskiStokKodu               
 Update TEKLIFHAR set StokKodu=@STOKKODU, StokAdi=@STOKADI  Where StokKodu=@EskiStokKodu                 
 Update SeriNoKaliteKontrol set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 Update SipHar set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu             
 Update StokDepoMiktarlari set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 Update StokVergiMuafiyetleri set StokKodu=@STOKKODU Where StokKodu=@EskiStokKodu               
 UPDATE InvoiceItemMap SET OurCode = @STOKKODU,SenderItemName = @STOKADI where OurCode = @EskiStokKodu              
 UPDATE STOKKARTI SET Kodu= @STOKKODU, StokAdi=@STOKADI,StokAdi2 = @STOKADI2,Barkodu = @STOKKODU where Kodu= @EskiStokKodu 
 Update StokBarkodlari set Barkodu=@STOKKODU  Where StokKodu=@EskiStokKodu and AnaBirim = 1           
 Update StokBarkodlari set StokKodu=@STOKKODU  Where StokKodu=@EskiStokKodu          
           
commit;   
  go

  UPDATE STOKKARTI SET TeraziTusu = '0' where Olcu <> 'Genel' and (TeraziTusu = '' or TeraziTusu is null)

go

 alter  procedure sp_DepoSifirla(@ParamDepo varchar(250),@ParamGrupAdi varchar(250),@ParamKullaniciNo int,                
@ParamReferansFiyat varchar(100),@ParamTarih nvarchar(8),@BelgeNo varchar(20) = '',@BelgeAciklama varchar(100) = '' )                
as                         
create table #Stoklar(StokNo int ,Kodu varchar(50),StokKodu varchar(50),StokAdi varchar(500),GrupAdi varchar(500),UreticiFirmaKodu varchar(250),                
OzelKod1 varchar(250), OzelKod2 varchar(250), AnaBirim varchar(250),                
AktifPasif varchar(5), Giris float, Cikis float, StokAdedi float, Depo varchar(500),Fiyat money)                
                
declare @SiraNo int                 
declare @KacKayitVar int                
declare @FaturaTarihi datetime                
declare @FaturaMiktari money declare @Miktar  money declare @BirimMiktar money declare @BirimFiyat money declare @NFiyat money                 
declare @Tutar money declare @TopTutar money declare @DovizTutB money declare @DovizTut money declare @GenelToplamTutar money                 
declare @DovizGunFiyati money                 
declare @DovizliTutar money                 
declare @NFiyatDovBr money                
                
declare @GC varchar(50) declare @DovizId varchar(50)                  
declare @DovizKodu varchar(50)  declare @IslemNo  varchar(50)                 
declare @KullaniciAdi varchar(250)                
declare @KullaniciVardiya varchar(250)                
declare @KullaniciVardiyaNo varchar(250)                
                
declare @KullaniciDepartmani varchar(50)                
declare @SqlText nvarchar(max)     
declare @aciklama nvarchar(250)
        
set @KullaniciVardiya='99';                
set @KullaniciVardiyaNo='20090101';                
                
select top 1 @KullaniciDepartmani=Departman,@KullaniciAdi=GirisAdi from Kullanicilar where No=@ParamKullaniciNo                
                
set @SqlText='UPDATE STOKKARTI ' +                
                       ' SET StokAdedi = (SELECT ISNULL(SUM(Miktar), 0) from STOKHAR ' +                
                       ' WHERE StokKodu = STOKKARTI.Kodu and GC=''G'' and FisTuru<>''İ'')-' +                
                       ' (SELECT ISNULL(SUM(Miktar), 0) from STOKHAR '+                
                       ' WHERE StokKodu = STOKKARTI.Kodu and GC=''C'' and FisTuru<>''İ'')';                
                
exec(@SqlText)                
                
 select top 1 @DovizKodu=Deger from KullaniciAyarlari where Ayar='VarsayilanDovizKodu'                
 select TOP 1 @DovizId=NoId,@DovizGunFiyati=GunFiyati from DOVIZT where DovizKodu=@DovizKodu                
                 
  SELECT @IslemNo = ISLEMNO FROM ADIGSABITLER                  
  Update ADIGSABITLER SET ISLEMNO=ISLEMNO+2                  
  set @SiraNo = 1                
  set @GenelToplamTutar = 0                
        
  insert into #Stoklar                
   exec sp_DepoDurumlari @ParamTarih        
         
  delete from #Stoklar where @ParamDepo != Depo      
          
  if @ParamGrupAdi<>''        
  delete from #Stoklar where GrupAdi<>@ParamGrupAdi        
          
declare @StokNo int                 
declare @Kodu varchar(50)                
declare @StokAdi varchar(500)                
declare @GrupAdi varchar(500)                
declare @UreticiFirmaKodu varchar(250)                
declare @OzelKod1 varchar(250)                
declare @OzelKod2 varchar(250)                
declare @AnaBirim varchar(250)                
declare @AktifPasif varchar(5)                
declare @Giris float                
declare @Cikis float                
declare @StokAdedi float                
declare @Depo varchar(500)                
declare @Fiyat money                
             
declare StoklarCursor cursor                
for                
 select StokNo,Kodu ,StokAdi ,GrupAdi ,UreticiFirmaKodu ,OzelKod1 , OzelKod2 , AnaBirim ,                
  AktifPasif , Giris , Cikis , StokAdedi , Depo,Fiyat  from #Stoklar                
 open StoklarCursor                
 fetch next from StoklarCursor into @StokNo,@Kodu,@StokAdi,@GrupAdi,@UreticiFirmaKodu,@OzelKod1,@OzelKod2,@AnaBirim,                
@AktifPasif,@Giris,@Cikis,@StokAdedi,@Depo,@Fiyat                
                
while @@FETCH_STATUS =0                 
begin                
                
set @Miktar = 0;                
                
    if @StokAdedi> 0 begin       
      set @FaturaMiktari = @StokAdedi;                
      set @Miktar    = @StokAdedi;                
      set @BirimMiktar   = 1;       
      set @BirimFiyat    = @Fiyat;                
      set @NFiyat        = @Fiyat;                
      set @Tutar         = @Fiyat * @StokAdedi;                
      set @TopTutar      = @Fiyat*@StokAdedi;                
      set @GC            = 'C';                
      set @DovizTutB     = @Fiyat/ @DovizGunFiyati;                
      set @DovizTut      = @StokAdedi* @DovizTutB;                
    end else                
    if @StokAdedi< 0 begin                
      set @FaturaMiktari = -(@StokAdedi);                
      set @Miktar        = -(@StokAdedi);                
      set @BirimMiktar   = 1;                
      set @BirimFiyat    = @Fiyat;                
      set @NFiyat        = @Fiyat;                
      set @Tutar         = @Fiyat * (-@StokAdedi);                
      set @TopTutar      = @Fiyat * (-@StokAdedi);                
      set @GC            = 'G';                
      set @DovizTutB     = @Fiyat / @DovizGunFiyati;                
      set @DovizTut      = (-(@StokAdedi))* @DovizTutB;                
    end;                
  set @GenelToplamTutar = @GenelToplamTutar + @TopTutar;                
set @FaturaTarihi=convert(datetime,@ParamTarih);      
set @DovizliTutar=@TopTutar/@DovizGunFiyati                
set @NFiyatDovBr=@Fiyat/@DovizGunFiyati                
set @aciklama = 'Mal Sayımı Önceki Miktar :' + CAST(@StokAdedi as nvarchar(10)) 
 
 exec spStokHarKaydet  @IslemNo,'Mal Sayımı',0,'Mal Sayımı',@aciklama ,             
   @StokNo ,@Kodu ,@StokAdi,@Miktar,@AnaBirim,@BirimMiktar,            
   @BirimFiyat,0,0,0,0,@Tutar,@SiraNo,    @FaturaTarihi,0,0,0 ,0 ,'M',                
   @GC ,0 ,0 ,0 ,0 ,0 , @FaturaTarihi,                   
   '' ,@TopTutar ,'H' ,@DovizliTutar ,@DovizId ,@DovizKodu ,                
                
   @DovizTutB ,@Depo ,@Fiyat ,@FaturaMiktari ,0 ,                
   0 ,0 ,@ParamKullaniciNo ,@KullaniciAdi ,'' ,0 ,                
   0 ,0 ,'A' ,0 ,0 ,                
                   
   0 ,0 ,'' ,'' ,'' ,'' ,                
   'TF' ,@KullaniciVardiya ,'H' ,0 ,@KullaniciDepartmani ,@TopTutar ,                
   @DovizliTutar ,0 ,0 ,0 ,0 ,                
            
   0 ,@AnaBirim ,0 ,@Fiyat ,0 ,                
   0 ,0 ,@Fiyat ,@NFiyatDovBr ,'+ Ürün' ,@KullaniciVardiya ,                
   'Genel' ,@SiraNo ,0 ,0 ,0 ,0 , 0,                
                
   0 ,0,0 ,0 ,0 ,0 ,                
   0 ,0 ,0 ,'' ,'' , 0,                
   'YOK' , 'YOK','YOK' ,@FaturaMiktari ,0,0                
set @SiraNo = @SiraNo + 1;                
 fetch next from StoklarCursor into @StokNo,@Kodu,@StokAdi,@GrupAdi,@UreticiFirmaKodu,@OzelKod1,@OzelKod2,@AnaBirim,                
  @AktifPasif,@Giris,@Cikis,@StokAdedi,@Depo,@Fiyat                
end        
                
close StoklarCursor                
deallocate StoklarCursor        
EXEC spMalSayimiDuzenle    
delete from STOKHAR where Miktar=0  
  
  go

IF EXISTS (SELECT * FROM sys.objects WHERE type IN ('FN','IF','TF') AND name = 'TRtoEN') 
DROP FUNCTION [TRtoEN]
GO
 create FUNCTION [dbo].[TRtoEN](@text NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
    -- Değiştirilecek karakterleri belirle
    SET @text = REPLACE(@text, 'Ç', 'C')
    SET @text = REPLACE(@text, 'Ğ', 'G')
    SET @text = REPLACE(@text, 'İ', 'I')
    SET @text = REPLACE(@text, 'Ö', 'O')
    SET @text = REPLACE(@text, 'Ş', 'S')
    SET @text = REPLACE(@text, 'Ü', 'U')
    SET @text = REPLACE(@text, 'ç', 'c')
    SET @text = REPLACE(@text, 'ğ', 'g')
    SET @text = REPLACE(@text, 'ı', 'i')
    SET @text = REPLACE(@text, 'ö', 'o')
    SET @text = REPLACE(@text, 'ş', 's')
    SET @text = REPLACE(@text, 'ü', 'u')

    RETURN @text
END
go
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spStokHarKaydet_temp')
DROP PROCEDURE [spStokHarKaydet_temp]
GO
create  PROCEDURE [dbo].[spStokHarKaydet_temp]                 
   @IslemNo int,                               
   @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,                               
   @Kdv float,                
   @KdvTutari float,                
   @IndirimTutari float,                
   @SatirIskTut float,                                             
   @EkIskTut1 float,                
   @EkIskTut2 float,                
   @EkIskTut3 float,                
   @EkIskTutTop float,                
   @TopTutar float,                
   @KDVHD nvarchar(1),                
   @DovizTut float,                
   @DovizCinsi smallint,                
   @DovizKodu nvarchar(2),                            
   @AnaBirimFiyat float,                
   @FaturaMiktari float,                                  
   @AltIskYuzde1 float,                
   @AltIskYuzde2 float,                
   @AltIskYuzde3 float,                
   @Departman nvarchar(8),                
   @SonTutar float,                
   @SonTutarDov float,                
   @SatMasrafTutari float,                
   @SatIskTut1 float,                
   @SatIskTut2 float,                
   @SatIskTut3 float,                
   @SatIskTut4 float,                
   @AnaBirim nvarchar(10),                         
   @Iskonto5 float,                
   @Iskonto6 float,                
   @Iskonto7 float,                
   @Iskonto8 float,                
   @Iskonto9 float,                
   @Iskonto10 float,                
   @SatIskTut5 float,                
   @SatIskTut6 float,                
   @SatIskTut7 float,                
   @SatIskTut8 float,                
   @SatIskTut9 float,                
   @SatIskTut10 float,                                        
   @DovizKuru float = 1       
AS                 
              
IF OBJECT_ID(N'tempdb..##STOKHAR') IS  NULL
	Select * INTO ##STOKHAR FROM STOKHAR WHERE 1= 0 ;

if @StokNo = 0               
  Select Top 1 @StokNo=StokNo from STOKKARTI where Kodu=@StokKodu        
              
INSERT ##STOKHAR ( IslemNo, CariNo,StokNo, StokKodu, StokAdi, Miktar, Birim, BirimMiktar, BirimFiyat, Iskonto1, Iskonto2, Iskonto3, Iskonto4, Tutar,Kdv, KdvTutari, IndirimTutari,       
                 SatirIskTut,  EkIskTut1, EkIskTut2, EkIskTut3, EkIskTutTop,TopTutar, KDVHD, DovizTut, DovizCinsi, DovizKodu, AnaBirimFiyat, FaturaMiktari, 
				 AltIskYuzde1, AltIskYuzde2, AltIskYuzde3, Departman, SonTutar, SonTutarDov, SatMasrafTutari, SatIskTut1, SatIskTut2, SatIskTut3, SatIskTut4, AnaBirim,      
                 Iskonto5, Iskonto6, Iskonto7, Iskonto8, Iskonto9, Iskonto10, SatIskTut5, SatIskTut6, SatIskTut7, SatIskTut8, SatIskTut9, SatIskTut10,  DovizKuru,
				 KULNO ,StokTipi,VardiyaNo,SiraNo,RBIslemNo,StokAgirligi,LotNo,StokBolge,StokRaf,StokYer,BurutMiktar,FireOrani,FireMiktari) 
VALUES        (  @IslemNo, 0,@StokNo, @StokKodu, @StokAdi, @Miktar,  @Birim, @BirimMiktar, @BirimFiyat, @Iskonto1,@Iskonto2, @Iskonto3, @Iskonto4, @Tutar              
	        , @Kdv, @KdvTutari, @IndirimTutari, @SatirIskTut, @EkIskTut1, @EkIskTut2,@EkIskTut3, @EkIskTutTop, @TopTutar, @KDVHD, @DovizTut,                
		  @DovizCinsi, @DovizKodu,@AnaBirimFiyat, @FaturaMiktari,@AltIskYuzde1,@AltIskYuzde2, @AltIskYuzde3,  @Departman,                
		  @SonTutar, @SonTutarDov, @SatMasrafTutari, @SatIskTut1,@SatIskTut2, @SatIskTut3, @SatIskTut4, @AnaBirim, @Iskonto5,                
          @Iskonto6,@Iskonto7,@Iskonto8,@Iskonto9,@Iskonto10,@SatIskTut5,@SatIskTut6,@SatIskTut7,@SatIskTut8,@SatIskTut9,@SatIskTut10,@DovizKuru,
		  1,'',0,0,0,0,'','','','',@BirimMiktar,0,0)  
  


go

declare @i int,@Deger nvarchar(3),@DovizCinsi nvarchar(3)
SET @i = 1;

while @i < 100 
begin
	select @Deger = Deger  from KullaniciAyarlari where Ayar = 'Varsayılan Visa Kasa Döviz Kodu'  and KullaniciNo = @i;
    
	IF (@Deger is null or @Deger = '')
	BEGIN
		select @DovizCinsi = DovizCinsi from HESAPLAR where HESAPNO in (select HesapNo from KASAT where KasaPos = 'V' and KASAKODU = (select Deger from KullaniciAyarlari where Ayar = 'Varsayılan Visa Kasa Kodu' And KullaniciNo= @i)) 

		update KullaniciAyarlari SET Deger = @DovizCinsi  
		where Ayar = 'Varsayılan Visa Kasa Döviz Kodu' and (Deger is null or Deger = '') and KullaniciNo = @i;
	END;

	set @i = @i + 1;
end;


go

if  not  exists (select * from dbo.syscolumns where id = object_id(N'Rapor') and name=N'Aciklama')
begin
ALTER TABLE Rapor ADD Aciklama nvarchar(500)
end
else begin
ALTER TABLE Rapor alter column Aciklama nvarchar(500)
end
 

if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.6.0')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.6.0',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go

 IF NOT EXISTS (SELECT *  FROM sys.tables WHERE  name='STOKHARTEMP')
 BEGIN 
Select * INTO STOKHARTEMP FROM STOKHAR WHERE 1 = 0
 end

 go
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spStokHarKaydet_temp') 
 DROP PROCEDURE [spStokHarKaydet_temp]
 GO
 CREATE  PROCEDURE [dbo].[spStokHarKaydet_temp]                   
   @IslemNo int,                                 
   @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,                                 
   @Kdv float,                  
   @KdvTutari float,                  
   @IndirimTutari float,                  
   @SatirIskTut float,                                               
   @EkIskTut1 float,                  
   @EkIskTut2 float,                  
   @EkIskTut3 float,                  
   @EkIskTutTop float,                  
   @TopTutar float,                  
   @KDVHD nvarchar(1),                  
   @DovizTut float,                  
   @DovizCinsi smallint,                  
   @DovizKodu nvarchar(2),                              
   @AnaBirimFiyat float,                  
   @FaturaMiktari float,                                    
   @AltIskYuzde1 float,                  
   @AltIskYuzde2 float,                  
   @AltIskYuzde3 float,                  
   @Departman nvarchar(8),                  
   @SonTutar float,                  
   @SonTutarDov float,                  
   @SatMasrafTutari float,                  
   @SatIskTut1 float,                  
   @SatIskTut2 float,                  
   @SatIskTut3 float,                  
   @SatIskTut4 float,                  
   @AnaBirim nvarchar(10),                           
   @Iskonto5 float,                  
   @Iskonto6 float,                  
   @Iskonto7 float,                  
   @Iskonto8 float,                  
   @Iskonto9 float,                  
   @Iskonto10 float,                  
   @SatIskTut5 float,                  
   @SatIskTut6 float,                  
   @SatIskTut7 float,                  
   @SatIskTut8 float,                  
   @SatIskTut9 float,                  
   @SatIskTut10 float,                                          
   @DovizKuru float = 1         
AS                                  
  
if @StokNo = 0                 
  Select Top 1 @StokNo=StokNo from STOKKARTI where Kodu=@StokKodu          
                
INSERT STOKHARTEMP ( IslemNo, CariNo,StokNo, StokKodu, StokAdi, Miktar, Birim, BirimMiktar, BirimFiyat, Iskonto1, Iskonto2, Iskonto3, Iskonto4, Tutar,Kdv, KdvTutari, IndirimTutari,         
                 SatirIskTut,  EkIskTut1, EkIskTut2, EkIskTut3, EkIskTutTop,TopTutar, KDVHD, DovizTut, DovizCinsi, DovizKodu, AnaBirimFiyat, FaturaMiktari,   
     AltIskYuzde1, AltIskYuzde2, AltIskYuzde3, Departman, SonTutar, SonTutarDov, SatMasrafTutari, SatIskTut1, SatIskTut2, SatIskTut3, SatIskTut4, AnaBirim,        
                 Iskonto5, Iskonto6, Iskonto7, Iskonto8, Iskonto9, Iskonto10, SatIskTut5, SatIskTut6, SatIskTut7, SatIskTut8, SatIskTut9, SatIskTut10,  DovizKuru,  
     KULNO ,StokTipi,VardiyaNo,SiraNo,RBIslemNo,StokAgirligi,LotNo,StokBolge,StokRaf,StokYer,BurutMiktar,FireOrani,FireMiktari)   
VALUES        (  @IslemNo, 0,@StokNo, @StokKodu, @StokAdi, @Miktar,  @Birim, @BirimMiktar, @BirimFiyat, @Iskonto1,@Iskonto2, @Iskonto3, @Iskonto4, @Tutar                
         , @Kdv, @KdvTutari, @IndirimTutari, @SatirIskTut, @EkIskTut1, @EkIskTut2,@EkIskTut3, @EkIskTutTop, @TopTutar, @KDVHD, @DovizTut,                  
    @DovizCinsi, @DovizKodu,@AnaBirimFiyat, @FaturaMiktari,@AltIskYuzde1,@AltIskYuzde2, @AltIskYuzde3,  @Departman,                  
    @SonTutar, @SonTutarDov, @SatMasrafTutari, @SatIskTut1,@SatIskTut2, @SatIskTut3, @SatIskTut4, @AnaBirim, @Iskonto5,                  
          @Iskonto6,@Iskonto7,@Iskonto8,@Iskonto9,@Iskonto10,@SatIskTut5,@SatIskTut6,@SatIskTut7,@SatIskTut8,@SatIskTut9,@SatIskTut10,@DovizKuru,  
    1,'',0,0,0,0,'','','','',@BirimMiktar,0,0)    
go
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_IslemNoGuncelle') 
DROP PROCEDURE [sp_IslemNoGuncelle]
GO
 create proc sp_IslemNoGuncelle
as
--- İşlemnosu aynı STOKHAR - DETBAG-CARI-KASA-TABLOLLARINI FATURANOA gre gümceller
declare @eskiislemno int,@yeniislemno int,@noId int
declare @faturaNo nvarchar(25),@IslemTuru nvarchar(25)
declare x cursor for select IslemNo from STOKHARDETBAG where  CariNo = 170287 Group by IslemNo Having count(*) > 1
open x
fetch next from x into @eskiislemno
while @@FETCH_STATUS = 0 -- Stokhardetbag aynı işlemno olan kayıtları bul
begin	
	declare y cursor for select FaturaNo,NoId,IslemTuru from STOKHARDETBAG where IslemNo = @eskiislemno
	open y
	fetch next from y into @faturaNo,@noId,@IslemTuru
	while @@FETCH_STATUS = 0 -- Stokhardetbag aynı işlemno olan kayıtları bul
	begin
		EXEC @yeniislemno = [spIslemNoAlArtir] @yeniislemno
		
		UPDATE STOKHAR SET IslemNo = @yeniislemno WHERE IslemNo = @eskiislemno and FaturaNo = @faturaNo;
		
		DECLARE @Tutar float,@KdvTutari float
		Select @Tutar = SUM(SonTutar),@KdvTutari = SUM(KdvTutari) from STOKHAR where IslemNo = @yeniislemno;

		UPDATE STOKHARDETBAG SET Tutar = @Tutar,DovizTut = @Tutar,KdvTutari = @KdvTutari,IslemNo = @yeniislemno where NoId = @noId;	

		IF @IslemTuru in ('Alış','Satış İade')
			UPDATE ACARI SET ISLEMNO = @yeniislemno,ALACAK = @Tutar,DovizAlacak = @Tutar where ISLEMNO = @eskiislemno and TESSIRNO = @faturaNo;
		IF @IslemTuru in ('Alış İade','Prk.Satış','Satış')	
			UPDATE ACARI SET ISLEMNO = @yeniislemno,BORC = @Tutar,DovizBorc = @Tutar where ISLEMNO = @eskiislemno and TESSIRNO = @faturaNo;
			
		UPDATE ACARI SET BORC = 0,DovizBorc = 0 where ISLEMNO = @yeniislemno and BAACIKLA in ('Tahsilat','KK.Tahsilat');
		UPDATE ACARI SET ALACAK = 0,DovizAlacak = 0 where ISLEMNO = @yeniislemno and BAACIKLA = 'Odeme'

		IF @IslemTuru in ('Alış','Satış İade')
			UPDATE KASA SET ISLEMNO = @yeniislemno,BORC = @Tutar,DovizBorc = @Tutar where ISLEMNO = @eskiislemno and ACIKLAMA like  @faturaNo + '%';		
		IF @IslemTuru in ('Alış İade','Prk.Satış','Satış')
			UPDATE KASA SET ISLEMNO = @yeniislemno,ALACAK = @Tutar,DovizAlacak = @Tutar where ISLEMNO = @eskiislemno and ACIKLAMA like  @faturaNo + '%';
			
		UPDATE ACARI SET ALACAK = 0,DovizAlacak = 0 where ISLEMNO = @yeniislemno and BAACIKLA in ('Tahsilat','KK.Tahsilat');

	fetch next from y into @faturaNo,@noId,@IslemTuru
	end
	close y
deallocate y	
	
fetch next from x into @eskiislemno
end
close x
deallocate x

go
IF EXISTS (SELECT * FROM sys.indexes WHERE name = 'x_StokHarLog_IslemNo') 
DROP INDEX [x_StokHarLog_IslemNo] ON StokHarLog

CREATE NONCLUSTERED INDEX [x_StokHarLog_IslemNo] ON [dbo].[StokHarLog]
(
	[IslemNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
IF NOT EXISTS (SELECT 1     FROM sys.indexes     WHERE name = 'xIslemNo' AND object_id = OBJECT_ID('dbo.STOKHAR')  )
BEGIN

CREATE NONCLUSTERED INDEX [xIslemNo] ON [dbo].[STOKHAR]
(
	[IslemNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
end
GO
IF NOT EXISTS (SELECT 1     FROM sys.indexes     WHERE name = 'xISLEMNO' AND object_id = OBJECT_ID('dbo.KASA')
)
BEGIN
CREATE NONCLUSTERED INDEX [xISLEMNO] ON [dbo].[KASA]
(
	[ISLEMNO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
END
GO

IF NOT EXISTS (SELECT 1     FROM sys.indexes     WHERE name = 'xIslemNo_IslemNo3' AND object_id = OBJECT_ID('dbo.STOKHAR'))
BEGIN
CREATE NONCLUSTERED INDEX [xIslemNo_IslemNo3] ON [dbo].[STOKHAR]
(
	[IslemNo] ASC,
	[IslemNo3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
end
GO
IF NOT EXISTS (SELECT 1     FROM sys.indexes     WHERE name = 'xIslemNo2' AND object_id = OBJECT_ID('dbo.STOKHAR')
)
BEGIN
CREATE NONCLUSTERED INDEX [xIslemNo2] ON [dbo].[STOKHAR]
(
	[IslemNo2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
end
GO

if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.6.3')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.6.3',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go
delete GridView where GirdAdi = 'Stok Hareketleri Gridi' 
go

if exists (select * from sys.procedures where name='sp_StokHareketEktre')
drop proc sp_StokHareketEktre
go-- 
create PROCEDURE sp_StokHareketEktre 
(@StokNo int,
 @TP nvarchar(2),
 @FaturaTarihi1 smalldatetime,
 @FaturaTarihi2 smalldatetime,
 @KullaniciNo int,
 @Arama int ,
 @Aramatext nvarchar(100) 
 )
AS
BEGIN
	DECLARE @Degerx nvarchar(8)  
    SET @Degerx = ( 
					SELECT  LEFT(Deger, LEN(Deger) - PATINDEX('%[^0]%', REVERSE(Deger)) + 1) AS TemizlenmisDeger
					FROM 
					  KullaniciAyarlari
					WHERE 
					  Ayar = 'VarsayilanDepartmanDuzeyi' AND 
					  Deger = '01000000' AND 
					  KullaniciNo = @KullaniciNo);

	SELECT 
	  CASE WHEN GC = 'G' THEN Miktar WHEN GC = 'C' THEN  Miktar * -1 ELSE 0 END Miktar2,
	  ISNULL((SELECT SUM(CASE WHEN GC = 'G' THEN Miktar WHEN GC = 'C' THEN  Miktar * -1 ELSE 0 END) 
		 FROM STOKHAR sh1  
		WHERE sh1.StokNo = @StokNo 
		  AND sh1.TP = @TP  
		  AND sh1.FisTuru <> 'İ'  
		  AND sh1.FaturaTarihi < @FaturaTarihi1),0)+
	  SUM(CASE WHEN GC = 'G' THEN Miktar WHEN GC = 'C' THEN  Miktar * -1 ELSE 0 END) OVER (ORDER BY FaturaTarihi, IslemNo, NoId ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS KumulatifMiktar,	  
	  *,
	  (((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar) as BirimMaliyetiKdvDahil,
	  ((((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar))/((100+Kdv)/100) as BirimMaliyetiKdvHaric,
	  ((((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar))/(NULLIF(BirimFiyat,0)/NULLIF(DovizTutB,0)) as DovizBirimMaliyetiKdvDahil,
	  (((((((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar))/((100+Kdv)/100))))/(NULLIF(BirimFiyat,0)/NULLIF(DovizTutB,0)) as DovizBirimMaliyetiKdvHaric,
	  (SELECT OZELKOD1 FROM AMUSTERI WHERE MUSKOD = sh.CariKodu) AS CariKartOzelKod1,
	  (SELECT OZELKOD2 FROM AMUSTERI WHERE MUSKOD = sh.CariKodu) AS CariKartOzelKod2,
	  (SELECT OZELKOD3 FROM AMUSTERI WHERE MUSKOD = sh.CariKodu) AS CariKartOzelKod3,
	  (SELECT OZELKOD4 FROM AMUSTERI WHERE MUSKOD = sh.CariKodu) AS CariKartOzelKod4,
	  StokNo AS IsEmriNo, 
	  SiparisNo AS PartiNo	   
	FROM STOKHAR sh
	WHERE sh.StokNo = @StokNo  
	  AND sh.TP = 'TF'  
	  AND sh.FisTuru <> 'İ'  
	  AND sh.FaturaTarihi >= @FaturaTarihi1 
	  AND sh.FaturaTarihi <= @FaturaTarihi2	 
	  AND sh.Departman in (select Duzey1 + Duzey2 + Duzey3 + Duzey4 from Departman 
						    where Duzey1 + Duzey2 + Duzey3 + Duzey4  like   @Degerx + '%')
	  AND ((@Aramatext is null) OR (@Arama = 0 AND (UPPER(sh.CariKodu) like '%' +UPPER(@Aramatext)+ '%'))
	                            OR (@Arama = 1 AND (UPPER(sh.CariAdi) like '%' +UPPER(@Aramatext)+ '%')))
   ORDER BY sh.FaturaTarihi ,sh.IslemNo,sh.NoId
END;

go
---7.6.3 to 7.6.5 vers 2025-04-16 
 if  not  exists (select * from dbo.syscolumns where id = object_id(N'TelAramaLog') and name=N'IslemNo')
begin
ALTER TABLE TelAramaLog ADD IslemNo INT
end
else begin
ALTER TABLE TelAramaLog alter column IslemNo int
end
go
 if  not  exists (select * from dbo.syscolumns where id = object_id(N'STOKHARDETBAG') and name=N'OdeAlIslemNo')
begin
ALTER TABLE STOKHARDETBAG ADD OdeAlIslemNo nvarchar (20)
end
else begin
ALTER TABLE STOKHARDETBAG alter column OdeAlIslemNo  nvarchar (20)
end
go
 if  not  exists (select * from dbo.syscolumns where id = object_id(N'Kullanicilar') and name=N'Aktif')
begin
ALTER TABLE Kullanicilar add Aktif bit DEFAULT 1 
end
else begin
ALTER TABLE Kullanicilar alter column Aktif bit 
end
GO
UPDATE K SET Aktif =1 from Kullanicilar K WHERE NOT EXISTS (Select 1 from KullaniciAyarlari Where KullaniciNo=K.No And Ayar='Kullanıcı Pasif' And Deger='-1')
GO
UPDATE K SET Aktif =0 from Kullanicilar K WHERE NOT EXISTS (Select 1 from KullaniciAyarlari Where KullaniciNo=K.No And Ayar='Kullanıcı Pasif' And Deger='0')

go
 if  not  exists (select * from dbo.syscolumns where id = object_id(N'Kullanicilar') and name=N'Rol')
begin
ALTER TABLE Kullanicilar add Rol bit DEFAULT 1 
end
else begin
ALTER TABLE Kullanicilar alter column Rol bit 
end
go

if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.6.3')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.6.3',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go

if exists (select * from sys.procedures where name='StokBul')
drop proc StokBul
go-- 

CREATE PROCEDURE [dbo].[StokBul]
(
    @Barkodu NVARCHAR(50),
    @OnliTeraziMiktar FLOAT,
    @FormAdi NVARCHAR(50)
)
AS
BEGIN
    DECLARE @l_Barkod      NVARCHAR(50);
    DECLARE @Miktar        FLOAT = 1;
    DECLARE @Carpan        FLOAT = 0;
    DECLARE @BarkodDurum   INT;
    DECLARE @Olcu          NVARCHAR(10);
    DECLARE @AktifPasif    NVARCHAR(1);
    DECLARE @ButonBlog     NVARCHAR(10);
    DECLARE @ButonGelen    NVARCHAR(10);

    -- exec StokBul '3*btnG1R!B6',1723
    -- exec StokBul '3.5*952',0

    SET @Barkodu = UPPER(@Barkodu);

    IF CHARINDEX('R!B', @Barkodu) > 0
    BEGIN
        IF CHARINDEX('*', @Barkodu) > 0
        BEGIN
            IF @FormAdi = 'Ranros'
            BEGIN
                SET @Carpan = CAST(SUBSTRING(@Barkodu, 1, CHARINDEX('*', @Barkodu) - 1) AS FLOAT);
                SET @Miktar = @Carpan;

                SET @ButonBlog = SUBSTRING(@Barkodu, CHARINDEX('*', @Barkodu) + 1, LEN(@Barkodu));
                SET @l_Barkod  = @ButonBlog;

                SET @ButonBlog  = SUBSTRING(@ButonBlog, 1, CHARINDEX('R!B', @ButonBlog) - 1);
                SET @ButonGelen = SUBSTRING(@l_Barkod, CHARINDEX('R!B', @l_Barkod) + 3, LEN(@l_Barkod));

                SELECT @l_Barkod = ButonDegeri
                FROM Buton
                WHERE UPPER(ButonNo) = @ButonGelen
                  AND FormAdi = @FormAdi
                  AND UPPER(ButonAdi) LIKE @ButonBlog + '%';
            END
            ELSE
            BEGIN
                SET @Carpan = CAST(SUBSTRING(@Barkodu, 1, CHARINDEX('*', @Barkodu) - 1) AS FLOAT);
                SET @Miktar = @Carpan;

                SET @ButonGelen = SUBSTRING(@Barkodu, CHARINDEX('R!B', @Barkodu) + 3, LEN(@Barkodu));

                SELECT @l_Barkod = ButonDegeri
                FROM Buton
                WHERE UPPER(ButonNo) = @ButonGelen
                  AND FormAdi = @FormAdi;
            END;
        END
        ELSE
        BEGIN
            IF @FormAdi = 'Ranros'
            BEGIN
                SET @ButonBlog = @Barkodu;
                SET @l_Barkod  = @ButonBlog;

                SET @ButonBlog  = SUBSTRING(@ButonBlog, 1, CHARINDEX('R!B', @ButonBlog) - 1);
                SET @ButonGelen = SUBSTRING(@l_Barkod, CHARINDEX('R!B', @l_Barkod) + 3, LEN(@l_Barkod));

                SELECT @l_Barkod = ButonDegeri
                FROM Buton
                WHERE UPPER(ButonNo) = @ButonGelen
                  AND FormAdi = @FormAdi
                  AND UPPER(ButonAdi) LIKE @ButonBlog + '%';

                IF @OnliTeraziMiktar > 0
                    SET @Miktar = @OnliTeraziMiktar;
                ELSE
                    SET @Miktar = 1;
            END
            ELSE
            BEGIN
                SET @ButonGelen = SUBSTRING(@Barkodu, CHARINDEX('R!B', @Barkodu) + 3, LEN(@Barkodu));

                SELECT @l_Barkod = ButonDegeri
                FROM Buton
                WHERE UPPER(ButonNo) = @ButonGelen
                  AND FormAdi = @FormAdi;

                IF @OnliTeraziMiktar > 0
                    SET @Miktar = @OnliTeraziMiktar;
                ELSE
                    SET @Miktar = 1;
            END;
        END;
    END
    ELSE
    BEGIN
        IF CHARINDEX('*', @Barkodu) > 0
        BEGIN
            SET @Carpan   = CAST(SUBSTRING(@Barkodu, 1, CHARINDEX('*', @Barkodu) - 1) AS FLOAT);
            SET @Miktar   = @Carpan;
            SET @l_Barkod = SUBSTRING(@Barkodu, CHARINDEX('*', @Barkodu) + 1, LEN(@Barkodu));
        END
        ELSE
        BEGIN
            SET @l_Barkod = @Barkodu;

            IF @OnliTeraziMiktar > 0
                SET @Miktar = @OnliTeraziMiktar;
            ELSE
                SET @Miktar = 1;
        END;
    END;

    IF (SELECT COUNT(*) FROM StokBarkodlari WHERE UPPER(Barkodu) = @l_Barkod) = 0
        SET @BarkodDurum = 0;
    ELSE
        SET @BarkodDurum = 1;

    IF @BarkodDurum = 0
    BEGIN
        IF LEN(@l_Barkod) = 13
        BEGIN
            IF (SELECT COUNT(*) FROM StokBarkodlari WHERE UPPER(Barkodu) = SUBSTRING(@l_Barkod, 1, 7)) = 0
                SET @BarkodDurum = 0;
            ELSE
                SET @BarkodDurum = 2;
        END
        ELSE
            SET @BarkodDurum = 0;
    END;

    IF @BarkodDurum = 1
    BEGIN
        SELECT
            @Olcu       = sk.Olcu,
            @AktifPasif = AktifPasif
        FROM STOKKARTI sk,
             StokBarkodlari sb
        WHERE sk.StokNo = sb.StokNo
          AND UPPER(sb.Barkodu) = @l_Barkod;

        IF @AktifPasif = 'P'
            SELECT 1 HataDurum, 'PASİF ÜRÜN SEÇİLEMEZ..!' HataMesaj;
        ELSE IF @Olcu = 'Tartili' AND @OnliTeraziMiktar = 0
            SELECT 1 HataDurum, 'TERAZİDE ÜRÜN YOKTUR..!' HataMesaj;
        ELSE
        BEGIN
            IF @Olcu <> 'Tartili'
               AND @OnliTeraziMiktar > 0
               AND (@Carpan = 0 OR @Carpan IS NULL)
            BEGIN
                SET @Miktar = 1;
                SET @BarkodDurum = 1;
            END;

            IF @OnliTeraziMiktar > 0
               AND CHARINDEX('*', @Barkodu) > 0
               AND @Olcu = 'Tartili'
            BEGIN
                SELECT 1 HataDurum, 'TARTIDA ÜRÜN VARDIR." * (ÇARPI) " KULLANAMAZSINIZ..!' HataMesaj;
                SET @BarkodDurum = 0;
            END;

            IF @BarkodDurum = 1
            BEGIN
                SELECT
                    0 HataDurum,
                    sk.*,
                    sb.Barkodu   AS SBBarkodu,
                    sb.Birim     AS SBBirim,
                    sb.AnaBirim  AS SBAnaBirim,
                    sb.Carpani   AS SBCarpani,
                    @Miktar      AS Miktar,
                    sk.StokRenkBedenCalisir,
                    rb.Beden,
                    rb.Renk
                FROM STOKKARTI sk
                INNER JOIN StokBarkodlari sb ON sk.StokNo = sb.StokNo
                LEFT JOIN RenkBedenTablosu rb ON sb.RenkBedenId = rb.NoId
                WHERE UPPER(sb.Barkodu) = @l_Barkod;
            END;
        END;
    END
    ELSE IF @BarkodDurum = 2
    BEGIN
        SELECT
            @Olcu       = sk.Olcu,
            @AktifPasif = AktifPasif
        FROM STOKKARTI sk,
             StokBarkodlari sb
        WHERE sk.StokNo = sb.StokNo
          AND UPPER(sb.Barkodu) = SUBSTRING(@l_Barkod, 1, 7);

        IF @AktifPasif = 'P'
            SELECT 1 HataDurum, 'PASİF ÜRÜN SEÇİLEMEZ..!' HataMesaj;
        IF @Olcu NOT IN ('Adetli', 'Tartili')
            SELECT 1 HataDurum, 'OKUTULAN STOK KARTININ ÖLÇÜ BİLGİSİNİ KONTROL EDİNİZ..!' HataMesaj;
        ELSE
        BEGIN
            IF @Olcu = 'Adetli'
                SET @Miktar = CAST(SUBSTRING(@l_Barkod, 8, 5) AS FLOAT);
            ELSE
                SET @Miktar = CAST(SUBSTRING(@l_Barkod, 8, 5) AS FLOAT) / 1000;

            SELECT
                0 HataDurum,
                sk.*,
                sb.Barkodu   AS SBBarkodu,
                sb.Birim     AS SBBirim,
                sb.AnaBirim  AS SBAnaBirim,
                sb.Carpani   AS SBCarpani,
                @Miktar      AS Miktar,
                sk.StokRenkBedenCalisir,
                rb.Beden,
                rb.Renk
            FROM STOKKARTI sk
            INNER JOIN StokBarkodlari sb ON sk.StokNo = sb.StokNo
            LEFT JOIN RenkBedenTablosu rb ON sb.RenkBedenId = rb.NoId
            WHERE UPPER(sb.Barkodu) = SUBSTRING(@l_Barkod, 1, 7);
        END;
    END
    ELSE
        SELECT 2 HataDurum, 'OKUTULAN BARKODA AİT STOK KARTI BULUNAMADI..!' HataMesaj;
END;



go


alter table tblEntegrasyonLog alter column [IslemNo] [decimal](18, 0) NULL
alter table tblEntegrasyonLog alter column EntegrasyonNo [nvarchar](50) NULL
alter table tblEntegrasyonLog alter column	[DurumAciklama] [nvarchar](max) NULL
alter table tblEntegrasyonLog alter column[DurumTarihi] [datetime] NOT NULL
alter table tblEntegrasyonLog alter column[EntegrasyonTip] [int] NULL 
GO
  declare @CNTNAME NVARCHAR(100),@SQL NVARCHAR(MAX)
select @CNTNAME=name from sys.default_constraints where name like 'DF%tblEntegrasyonLog_DurumTarihi%'
SET @SQL='ALTER TABLE [dbo].[tblEntegrasyonLog] DROP CONSTRAINT ['+ CONVERT(VARCHAR(100),@CNTNAME)+']'
EXEC(@SQL)
go--
ALTER TABLE [dbo].[tblEntegrasyonLog] ADD  CONSTRAINT [DF_tblEntegrasyonLog_DurumTarihi]  DEFAULT (getdate()) FOR [DurumTarihi]
GO
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'TR_BIRIM_INS') 
DROP TRIGGER [TR_BIRIM_INS]
GO
CREATE  TRIGGER [dbo].[TR_BIRIM_INS]
ON [dbo].[BIRIM] 
AFTER INSERT,UPDATE
AS
begin
	SET NOCOUNT ON;
		UPDATE BIRIM 
		   SET IsoBirimAdi = (Select TOP 1  UPPER(IsoBirimAdi) from ISOBIRIM IB where IB.IsoBirimKodu = B.IsoBirimKodu),
		       BirimAdi = UPPER(I.BirimAdi),
			   IhracaatIsoBirimAdi = (Select TOP 1 UPPER(IsoBirimAdi) from ISOBIRIM IB where IB.IsoBirimKodu = B.IhracaatIsoBirimKodu) 
		  FROM BIRIM B
	INNER JOIN INSERTED I ON B.BirimNo = I.BirimNo
end;


go																			
delete GridView where GirdAdi = 'Stok Hareketleri Gridi' 
go
if exists (select * from sys.procedures where name='sp_Fat_GelGid_KDV_Raporu')
drop proc sp_Fat_GelGid_KDV_Raporu
go-- 

create PROC sp_Fat_GelGid_KDV_Raporu
(@Tarih1 datetime,
 @Tarih2 datetime)
AS
BEGIN
    SELECT * 
	  FROM (select 2 SiraNo,TARIH,ISLEMNO,BAACIKLA IslemTuru,MUSNO No,MUSADI Adi,Tutar,KdvTutari 
			  from GELGID where KdvTutari > 0 and BAACIKLA = 'Gider'
			union all 
			select 4,TARIH, ISLEMNO,BAACIKLA,MUSNO,MUSADI,Tutar * -1 Tutar, KdvTutari * -1  KdvTutari 
			  from GELGID 
			 where KdvTutari > 0 and BAACIKLA = 'Gelir'
			union all
			select 1,FaturaTarihi, IslemNo,IslemTuru,CariNo,CariAdi,Tutar, KdvTutari 
			  from STOKHARDETBAG 
			 where FisTuru = 'F'  and KdvTutari > 0 and GC = 'G'
			union all
			select 3,FaturaTarihi, IslemNo,IslemTuru,CariNo,CariAdi,Tutar * -1 Tutar, KdvTutari * -1  KdvTutari 
			  from STOKHARDETBAG 
			 where FisTuru = 'F'  and KdvTutari > 0 and GC = 'C'
		  ) x where TARIH >= @Tarih1 and TARIH < @Tarih2 + 1 
 			 order by SiraNo,IslemTuru,TARIH
END;

go


ALTER  PROCEDURE [dbo].[sp_CARIEKSTRE]                       
@MUSNO nvarchar(30), @ILKTARIH nvarchar(10),@SONTARIH nvarchar(10),                           
 @KAPALIHAREKET nvarchar(1),@ORTVADESEC nvarchar(1),@ISLEMTIPINEGORE SMALLINT=0,@ISLEMTIPINEGOREBAKIYEGRUPLA SMALLINT=0                       
 as                         
BEGIN                
                
declare @pIslemTipi nvarchar(250)                
declare @pBAKIYE1 money                
                 
                 
DECLARE @ACARI TABLE (ROWNUMBER INT,TARIH DATETIME, TESSIRNO INT, MUSNO INT, BAACIKLA nvarchar(14),ACIKLAMA nvarchar(200),                          
  ISLEMNO INT,DOVIZTUT float,DOVIZKODU nvarchar(2),OZELKOD nvarchar(3),ISLEMTIPI nvarchar(30),                          
  BELGENO nvarchar(10), ACIKLABAKIYE nvarchar(1), TP nvarchar(2), [Ort Vade] DATETIME,SaticiKodu nvarchar(15),                          
  SaticiAdi nvarchar(25), KULNO INT,KULADI nvarchar(20), DovizBorc float,                          
  DovizAlacak float,Aciklama2 nvarchar(200),                          
  SiraNo INT, CARINO INT, MUSKOD nvarchar(20),MUSADI nvarchar(50), IsIstasyonKodu nvarchar(30),                           
  IsIstasyonAdi nvarchar(30), TESLIM nvarchar(200),BORC money, ALACAK money,  FARK money,                           
  BAKIYE money,eFaturaNo varchar(30),eFaturaDurumu varchar(20),eFaturaGonderimTarihi datetime,OdemeBilgisi nvarchar(100),DovizKur float)                          
DECLARE @BAKIYE money, @IBKY MONEY,@BAKIYE2 money                          
SELECT  @IBKY= SUM(BORC-ALACAK)  FROM ACARI a,AMUSTERI m WHERE a.MUSNO = m.MUSNO and (UstCariNo = @MUSNO or m.MUSNO = @MUSNO) AND TARIH<=@ILKTARIH                          
SET @BAKIYE = 0                          
IF @IBKY IS NULL                          
     SET @IBKY=0                
                              
declare @Musteri table (MusteriNo decimal,UstMusteriNo decimal)                                
update ACARI SET AcikKapali='A' WHERE AcikKapali <>'K' and MUSNO = @MUSNO                  
insert into @Musteri                 
select distinct MUSNO,UstCariNo from AMUSTERI where UstCariNo = @MUSNO or MUSNO = @MUSNO    
--select distinct MUSNO,UstCariNo from AMUSTERI where UstCariNo=@MUSNO        
                  
IF @ISLEMTIPINEGORE=1                
BEGIN                
  INSERT INTO @ACARI (ROWNUMBER,TARIH,MUSNO,FARK,BAKIYE,BAACIKLA,ACIKLAMA,ISLEMNO) VALUES (0,@ILKTARIH,@MUSNO,@IBKY,0,'Devir','Hesap Ekstresi Devir Tutarı',1);                
                
INSERT INTO @ACARI                
SELECT ROW_NUMBER() OVER(ORDER BY ISLEMTIPI ASC,TARIH ASC,CARINO ASC) AS ROWNUMBER1,TARIH,TESSIRNO,MUSNO,BAACIKLA,        
ISNULL((SELECT TOP 1
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END + ' - - ' + ISNULL(S.Ack1,'')
	FROM STOKHARDETBAG S where S.IslemNo=ACARI.ISLEMNO
),ACIKLAMA ) ACIKLAMA,
--(ISNULL(ACIKLAMA, '')+ ' - - ' +ISNULL((select TOP 1 STDB.Ack1 FROM STOKHARDETBAG as STDB where STDB.IslemNo=ACARI.ISLEMNO),'')) as ACIKLAMA,                
        
 ISLEMNO,DOVIZTUT,DOVIZKODU,OZELKOD,ISLEMTIPI,                 
  ISNULL(BELGENO, '''') as [BELGENO],ACIKLABAKIYE,TP,VadeTarihi as Ort_Vade,SaticiKodu,                
  SaticiAdi, KULNO, KULADI, DovizBorc,                 
  DovizAlacak,Aciklama2,                
  SiraNo, CARINO, MUSKOD, MUSADI, IsIstasyonKodu,                 
  IsIstasyonAdi,(select TeslimEden + ' - - ' + TeslimAlan from ACIKLAMA where FATURANO = ISLEMNO) as Teslim,                
  BORC money, ALACAK money,(BORC-ALACAK), NULL,                 
  (select top 1 A.eFaturaNo  from STOKHARDETBAG as A where A.IslemNo=ACARI.ISLEMNO) eFaturaNo,                     
 (select top 1 A.eFaturaDurumu  from STOKHARDETBAG as A where A.IslemNo=ACARI.ISLEMNO) eFaturaDurumu,                 
 (select top 1 A.eFaturaGonderimTarihi from STOKHARDETBAG as A where A.IslemNo=ACARI.ISLEMNO) eFaturaGonderimTarihi,              
 (select top 1 OdemeBilgisi from STOKHARDETBAG where IslemNo=ACARI.ISLEMNO ) as OdemeBilgisi,DovizKur               
 FROM ACARI                 
 WHERE MUSNO in (select MusteriNo from @Musteri) AND TARIH >@ILKTARIH AND TARIH<@SONTARIH                 
 and 1=                   
 case  when @KAPALIHAREKET is not null then  case  when AcikKapali <> @KAPALIHAREKET then 1 else 0 end else 1 end                  
 ORDER BY ROWNUMBER1 ASC                 
      
                 
 END                 
 ELSE             
 BEGIN                
INSERT INTO @ACARI (ROWNUMBER,TARIH,MUSNO,FARK,BAKIYE,BAACIKLA,ACIKLAMA,ISLEMNO) VALUES (0,@ILKTARIH,@MUSNO,@IBKY,0,'Devir','Hesap Ekstresi Devir Tutarı',1)                
 INSERT INTO @ACARI              
 SELECT ROW_NUMBER() OVER(ORDER BY  TARIH,CARINO  ,CARINO ASC) AS ROWNUMBER,TARIH,TESSIRNO,MUSNO,BAACIKLA,        
ISNULL((SELECT TOP 1
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END + ' - - ' + ISNULL(S.Ack1,'')
	FROM STOKHARDETBAG S where S.IslemNo=ACARI.ISLEMNO
),ACIKLAMA ) ACIKLAMA,       
--(ISNULL(ACIKLAMA, '''')+ ' - - ' +ISNULL((select TOP 1 STDB.Ack1 FROM STOKHARDETBAG as STDB where STDB.IslemNo=ACARI.ISLEMNO),'')) as ACIKLAMA,             
        
  ISLEMNO,DOVIZTUT,DOVIZKODU,OZELKOD,ISLEMTIPI,                 
  ISNULL(BELGENO, '''') as [BELGENO],ACIKLABAKIYE,TP,VadeTarihi as [Ort Vade],SaticiKodu,                
  SaticiAdi, KULNO, KULADI, DovizBorc,                 
  DovizAlacak,Aciklama2,                
  SiraNo, CARINO, MUSKOD, MUSADI, IsIstasyonKodu,                 
  IsIstasyonAdi,(select TeslimEden + ' - - ' + TeslimAlan from ACIKLAMA where FATURANO = ISLEMNO) as Teslim,                
  BORC money, ALACAK money,(BORC-ALACAK), NULL,                 
  (select top 1 A.eFaturaNo  from STOKHARDETBAG as A where A.IslemNo=ACARI.ISLEMNO) eFaturaNo,                     
 (select top 1 A.eFaturaDurumu  from STOKHARDETBAG as A where A.IslemNo=ACARI.ISLEMNO) eFaturaDurumu,                 
 (select top 1 A.eFaturaGonderimTarihi from STOKHARDETBAG as A where A.IslemNo=ACARI.ISLEMNO) eFaturaGonderimTarihi,              
 (select top 1 OdemeBilgisi from STOKHARDETBAG where IslemNo=ACARI.ISLEMNO ) as OdemeBilgisi,DovizKur              
 FROM ACARI                 
 WHERE MUSNO in (select MusteriNo from @Musteri)  AND TARIH >@ILKTARIH AND TARIH<@SONTARIH                 
 and 1=                   
 case  when @KAPALIHAREKET is not null then  case  when AcikKapali <> @KAPALIHAREKET then 1 else 0 end else 1 end                  
 ORDER BY ROWNUMBER ASC                 
                
 END                
                
END                  
            
declare @ROWNUMBER INT                
declare @IslemTipi1 varchar(250)                
                
declare AcariCursor cursor                 
for Select ROWNUMBER,ISLEMTIPI FROM  @ACARI ORDER BY ROWNUMBER ASC                 
FOR UPDATE OF BAKIYE OPEN AcariCursor                
FETCH NEXT FROM AcariCursor INTO @ROWNUMBER,@IslemTipi1                
WHILE @@FETCH_STATUS=0                
BEGIN                 
                
IF @ISLEMTIPINEGORE=0                 
BEGIN                
 SET @BAKIYE2=(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER<=@ROWNUMBER )                
 UPDATE TOP(1) @ACARI SET BAKIYE=@BAKIYE2 WHERE ROWNUMBER=@ROWNUMBER                
                
end  else                
begin                
                
if @ROWNUMBER=0                
 set @pIslemTipi=@IslemTipi1;                
                
   if @pIslemTipi=@IslemTipi1                
   begin                
    SET @BAKIYE2=(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER<=@ROWNUMBER and ISLEMTIPI=@pIslemTipi)                
    UPDATE TOP(1) @ACARI SET BAKIYE=@BAKIYE2 WHERE ROWNUMBER=@ROWNUMBER                
   end                
   else                 
   begin                
    set @pIslemTipi=@IslemTipi1;                
    SET @BAKIYE2=(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER<=@ROWNUMBER and ISLEMTIPI=@pIslemTipi)                
    UPDATE TOP(1) @ACARI SET BAKIYE=@BAKIYE2 WHERE ROWNUMBER=@ROWNUMBER                
   end                
end                
                
 FETCH NEXT FROM AcariCursor INTO @ROWNUMBER,@IslemTipi1                
END                
CLOSE AcariCursor                 
DEALLOCATE AcariCursor                
                
if @ISLEMTIPINEGOREBAKIYEGRUPLA=0                
SELECT  * FROM @ACARI  ORDER BY ROWNUMBER                
else                
SELECT  ISLEMTIPI,sum(BORC) as BORC,sum(ALACAK) as ALACAK,sum(BORC-ALACAK) as BAKIYE FROM @ACARI                
where ISLEMTIPI is not null and MUSNO=@MUSNO  GROUP BY ISLEMTIPI 
go
ALTER PROCEDURE [dbo].[sp_mb_XML_StokHarDurumUpdateUUID]      
 @eFaturaDurumu nvarchar(20),    
 @UUID nvarchar(60),    
 @eFaturaNo nvarchar(20)    
AS     
declare @IslemNo int;  
  
Select @IslemNo = IslemNo FRom STOKHARDETBAG where UUID=@UUID  
  
UPDATE STOKHARDETBAG    
   SET eFaturaDurumu=@eFaturaDurumu,    
       eFaturaNo=  @eFaturaNo    
 WHERE UUID=@UUID;  
  
UPDATE A
SET A.ACIKLAMA = 
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END
FROM ACARI A
JOIN STOKHARDETBAG S ON A.ISLEMNO = S.IslemNo
WHERE S.UUID=@UUID  AND BAACIKLA LIKE ('Alış%') or BAACIKLA LIKE ('Satış%')

/*UPDATE ACARI   
   SET ACIKLAMA = @eFaturaNo + ' no.lu Fatura'   
 WHERE ISLEMNO = @IslemNo;  */
 go
 ALTER TABLE AcariTakas ALTER COLUMN Aciklama2 nvarchar(400)
 go--
 --------------------------------------------------------------------

 if exists (select * from sys.procedures where name='sp_CARIEKSTRE_UST')
drop proc sp_CARIEKSTRE_UST
go--
--------------------------------------------------------------------

create   PROCEDURE [dbo].[sp_CARIEKSTRE_UST]                                 
 @MUSNO int, @ILKTARIH nvarchar(10),@SONTARIH nvarchar(10),                             
 @KAPALIHAREKET nvarchar(1),@ORTVADESEC nvarchar(1),                    
 @ISLEMTIPINEGORE SMALLINT=0,@ISLEMTIPINEGOREBAKIYEGRUPLA SMALLINT=0,@P1IslemTipi nvarchar(250)='',@AdresNo int = NULL                                  
AS                         
BEGIN                     
 declare @ParamIslemTipi nvarchar(250)                  
 declare @pIslemTipi nvarchar(250) declare @pBAKIYE1 money                    
 set @ParamIslemTipi= @P1IslemTipi;                  
          
DECLARE @ACARI TABLE (ROWNUMBER INT,                      
  TARIH DATETIME,                       
  TESSIRNO INT,                       
  MUSNO INT,                       
  BAACIKLA nvarchar(14),                      
  ACIKLAMA nvarchar(900),                            
  ISLEMNO INT,                      
  DOVIZTUT float,                      
  DOVIZKODU nvarchar(2),                      
  OZELKOD nvarchar(5),                      
  ISLEMTIPI nvarchar(250),                            
  BELGENO nvarchar(10),                       
  ACIKLABAKIYE nvarchar(1),                      
  TP nvarchar(2),                       
  [Ort Vade] DATETIME,                      
  SaticiKodu nvarchar(30),                         
  SaticiAdi nvarchar(25),                       
  KULNO INT,                      
  KULADI nvarchar(20),                       
  DovizBorc float,                            
  DovizAlacak float,                      
  Aciklama2 nvarchar(400),                            
  SiraNo INT,                       
  CARINO INT,                       
  MUSKOD nvarchar(20),                      
  MUSADI nvarchar(50),                       
  IsIstasyonKodu nvarchar(30),                             
  IsIstasyonAdi nvarchar(30),                       
  TESLIM nvarchar(90),                      
  BORC money,                       
  ALACAK money,                        
  FARK money,                             
  BAKIYE money ,                      
  TTarihi DATETIME,                      
  ISLEMNO3 int,                      
  NoID int identity(1,1),                      
  BA nvarchar(5),                            
  AcikKapali nvarchar(20),                      
  VardiyaKodu nvarchar(15),                     
  Departman nvarchar(15),                      
  IslemNo2 int,                            
  VadeTarihi datetime,                      
  DOVIZCINSI int,NEWROWNUMBER INT,DovizKur float)                         
                           
  declare @Musteri table (MusteriNo decimal,UstMusteriNo decimal)                            
  update ACARI SET AcikKapali='A' WHERE AcikKapali <>'K' and MUSNO = @MUSNO              
  insert into @Musteri                            
  select distinct MUSNO,UstCariNo from AMUSTERI where UstCariNo=@MUSNO                            
                            
DECLARE @BAKIYE money, @IBKY MONEY                           
                             
SET @BAKIYE = 0                            
IF @IBKY IS NULL                            
     SET @IBKY=0                            
 if isnull(@ParamIslemTipi,'')<>''                  
 begin                  
                   
 INSERT INTO @ACARI (ROWNUMBER,TARIH,MUSNO,FARK,BAKIYE,BAACIKLA,ACIKLAMA,ISLEMNO,MUSKOD)                            
 select 0,@ILKTARIH,M.UstMusteriNo,SUM(BORC-ALACAK),@BAKIYE,'Devir','Hesap Ekstresi Devir Tutarı',1,A.MUSKOD                         
  from @Musteri M                            
  left JOIN  ACARI A ON M.MusteriNo=A.MUSNO AND A.TARIH<=@ILKTARIH                    
   and A.ISLEMTIPI=@ParamIslemTipi       
    group by M.UstMusteriNo,A.MUSKOD                       
 end else                  
 begin                  
  IF @ISLEMTIPINEGORE=1 BEGIN                    
                   
 INSERT INTO @ACARI (ROWNUMBER,TARIH,MUSNO,FARK,BAKIYE,BAACIKLA,ACIKLAMA,ISLEMNO,ISLEMTIPI,MUSKOD)   
 select 0 as ROWNUMBER,@ILKTARIH,M.UstMusteriNo,SUM(isnull(BORC,0)-isnull(ALACAK,0)),@BAKIYE,'Devir','Hesap Ekstresi Devir Tutarı',1,convert(varchar(250),A.ISLEMTIPI) as ISLEMTIPI,A.MUSKOD                             
  from @Musteri M                            
  left JOIN  ACARI A ON M.MusteriNo=A.MUSNO AND A.TARIH<=@ILKTARIH            
    group by M.UstMusteriNo,A.ISLEMTIPI,A.MUSKOD                      
                  
  end else                  
  begin                  
  INSERT INTO @ACARI (ROWNUMBER,TARIH,MUSNO,FARK,BAKIYE,BAACIKLA,ACIKLAMA,ISLEMNO,MUSKOD)                            
 select 0 as ROWNUMBER,@ILKTARIH,M.UstMusteriNo,SUM(BORC-ALACAK),@BAKIYE,'Devir','Hesap Ekstresi Devir Tutarı',1,A.MUSKOD  
from @Musteri M                            
  left JOIN  ACARI A ON M.MusteriNo=A.MUSNO AND A.TARIH<=@ILKTARIH                   
    group by M.UstMusteriNo,A.MUSKOD                      
end                      
end                  
                              
                 
                    
 IF @ISLEMTIPINEGORE=1 BEGIN         if isnull(@ParamIslemTipi,'')<>''                  
 begin                  
 INSERT INTO @ACARI                            
 SELECT ROW_NUMBER() OVER(ORDER BY ISLEMTIPI ASC,TARIH ASC,CARINO ASC) AS ROWNUMBER1,TARIH,TESSIRNO,MUSNO,BAACIKLA, 
 --ISNULL(ACIKLAMA, '''') as ACIKLAMA,  
ISNULL((SELECT TOP 1
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END + ' - - ' + ISNULL(S.Ack1,'')
	FROM STOKHARDETBAG S where S.IslemNo=ACARI.ISLEMNO
),ACIKLAMA ) ACIKLAMA, 
  ISLEMNO,DOVIZTUT,DOVIZKODU,OZELKOD,ISLEMTIPI,                         
  ISNULL(BELGENO, '''') as [BELGENO],ACIKLABAKIYE,TP,VadeTarihi as [Ort Vade],SaticiKodu,                            
  SaticiAdi, KULNO, KULADI, DovizBorc,                            
  DovizAlacak,Aciklama2,                            
  SiraNo, CARINO, MUSKOD, MUSADI, IsIstasyonKodu,                             
  IsIstasyonAdi,(select TeslimEden + ' - - ' + TeslimAlan from ACIKLAMA where FATURANO = ISLEMNO) as Teslim,                            
  BORC money, ALACAK money,(BORC-ALACAK), @BAKIYE,TARIH TTarihi,ISLEMNO as ISLEMNO3,                            
  BA,AcikKapali,VardiyaKodu,Departman,IslemNo2,VadeTarihi,DOVIZCINSI,0,DovizKur                             
 FROM ACARI                             
 WHERE MUSNO in(select MusteriNo from @Musteri)  AND TARIH >@ILKTARIH AND TARIH<=@SONTARIH                    
 and ISLEMTIPI=@ParamIslemTipi                  
  ORDER BY ROWNUMBER1 ASC                     
                  
 end else begin                  
  INSERT INTO @ACARI                    
SELECT ROW_NUMBER() OVER(ORDER BY ISLEMTIPI ASC,TARIH ASC,CARINO ASC) AS ROWNUMBER1,TARIH,TESSIRNO,MUSNO,BAACIKLA, 
  --ISNULL(ACIKLAMA, '''') as ACIKLAMA,  
ISNULL((SELECT TOP 1
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END + ' - - ' + ISNULL(S.Ack1,'')
	FROM STOKHARDETBAG S where S.IslemNo=ACARI.ISLEMNO
),ACIKLAMA ) ACIKLAMA,  
  ISLEMNO,DOVIZTUT,DOVIZKODU,OZELKOD,ISLEMTIPI,                            
  ISNULL(BELGENO, '''') as [BELGENO],ACIKLABAKIYE,TP,VadeTarihi as [Ort Vade],SaticiKodu,                            
  SaticiAdi, KULNO, KULADI, DovizBorc,                            
  DovizAlacak,Aciklama2,                            
  SiraNo, CARINO, MUSKOD, MUSADI, IsIstasyonKodu,                             
  IsIstasyonAdi,(select TeslimEden + ' - - ' + TeslimAlan from ACIKLAMA where FATURANO = ISLEMNO) as Teslim,                            
  BORC money, ALACAK money,(BORC-ALACAK), @BAKIYE,TARIH TTarihi,ISLEMNO as ISLEMNO3,                            
  BA,AcikKapali,VardiyaKodu,Departman,IslemNo2,VadeTarihi,DOVIZCINSI,0,DovizKur                            
 FROM ACARI                             
 WHERE MUSNO in(select MusteriNo from @Musteri)  AND TARIH >@ILKTARIH AND TARIH<=@SONTARIH                    
 ORDER BY ROWNUMBER1 ASC                  
                   
end                  
 /*ORDER BY TARIH,ACARI.CARINO*/                            
                    
end else                    
begin                    
 if isnull(@ParamIslemTipi,'')<>''                  
 begin                            
 INSERT INTO @ACARI                            
 SELECT ROW_NUMBER() OVER(ORDER BY  TARIH ASC,CARINO ASC) AS ROWNUMBER,TARIH,TESSIRNO,MUSNO,BAACIKLA,  
 --ISNULL(ACIKLAMA, '''') as ACIKLAMA,            
ISNULL((SELECT TOP 1
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END + ' - - ' + ISNULL(S.Ack1,'')
	FROM STOKHARDETBAG S where S.IslemNo=ACARI.ISLEMNO
),ACIKLAMA ) ACIKLAMA,   
  ISLEMNO,DOVIZTUT,DOVIZKODU,OZELKOD,ISLEMTIPI,                            
  ISNULL(BELGENO, '''') as [BELGENO],ACIKLABAKIYE,TP,VadeTarihi as [Ort Vade],SaticiKodu,                            
  SaticiAdi, KULNO, KULADI, DovizBorc,                            
  DovizAlacak,Aciklama2,                            
  SiraNo, CARINO, MUSKOD, MUSADI, IsIstasyonKodu,                             
  IsIstasyonAdi,(select TeslimEden + ' - - ' + TeslimAlan from ACIKLAMA where FATURANO = ISLEMNO) as Teslim,                            
  BORC money, ALACAK money,(BORC-ALACAK), @BAKIYE,TARIH TTarihi,ISLEMNO as ISLEMNO3,                            
  BA,AcikKapali,VardiyaKodu,Departman,IslemNo2,VadeTarihi,DOVIZCINSI,0,DovizKur                             
 FROM ACARI                             
 WHERE MUSNO in(select MusteriNo from @Musteri)  AND TARIH >@ILKTARIH AND TARIH<=@SONTARIH and ISLEMTIPI=@ParamIslemTipi                          
 /*ORDER BY TARIH,ACARI.CARINO*/                    
  ORDER BY ROWNUMBER ASC                     
end else                   
begin                  
 INSERT INTO @ACARI                            
 SELECT ROW_NUMBER() OVER(ORDER BY  TARIH ASC,CARINO ASC) AS ROWNUMBER,TARIH,TESSIRNO,MUSNO,BAACIKLA, 
-- ISNULL(ACIKLAMA, '''') as ACIKLAMA,                            
ISNULL((SELECT TOP 1
    CASE 
        WHEN LEN(S.eFaturaNo) >= 16 THEN S.eFaturaNo + ' no.lu Fatura'
        WHEN LEN(S.eFaturaNo) >= LEN(S.FaturaNo) THEN S.eFaturaNo + ' no.lu Fatura'
        ELSE cast(S.FaturaNo as nvarchar(20)) + ' no.lu Fatura'
    END + ' - - ' + ISNULL(S.Ack1,'')
	FROM STOKHARDETBAG S where S.IslemNo=ACARI.ISLEMNO
),ACIKLAMA ) ACIKLAMA,  
  ISLEMNO,DOVIZTUT,DOVIZKODU,OZELKOD,ISLEMTIPI,                            
  ISNULL(BELGENO, '''') as [BELGENO],ACIKLABAKIYE,TP,VadeTarihi as [Ort Vade],SaticiKodu,                            
  SaticiAdi, KULNO, KULADI, DovizBorc,                            
  DovizAlacak,Aciklama2,                            
  SiraNo, CARINO, MUSKOD, MUSADI, IsIstasyonKodu,                             
  IsIstasyonAdi,(select TeslimEden + ' - - ' + TeslimAlan from ACIKLAMA where FATURANO = ISLEMNO) as Teslim,                            
  BORC money, ALACAK money,(BORC-ALACAK), @BAKIYE,TARIH TTarihi,ISLEMNO as ISLEMNO3,                            
  BA,AcikKapali,VardiyaKodu,Departman,IslemNo2,VadeTarihi,DOVIZCINSI,0,DovizKur                             
 FROM ACARI                             
 WHERE MUSNO in(select MusteriNo from @Musteri)  AND TARIH >@ILKTARIH AND TARIH<=@SONTARIH                            
 /*ORDER BY TARIH,ACARI.CARINO*/                    
  ORDER BY ROWNUMBER ASC                    
end                  
end                    
                    
update @ACARI SET IslemNo3 = ISLEMNO where ISLEMNO>0                            
            
declare @ROWNUMBER INT                   
declare @NEWROWNUMBER INT                   
set @NEWROWNUMBER=0                  
declare @IslemTipi1 varchar(250)                    
                  
IF (@ISLEMTIPINEGORE=1) and (@ParamIslemTipi='')  BEGIN                  
                   
delete from @ACARI where BAACIKLA='Devir' and ISLEMTIPI not in (select distinct ISLEMTIPI from @ACARI where  BAACIKLA<>'Devir')                  
                  
 INSERT INTO @ACARI (ROWNUMBER,TARIH,MUSNO,FARK,BAKIYE,BAACIKLA,ACIKLAMA,ISLEMNO,ISLEMTIPI,MUSKOD)                            
 select 0 as ROWNUMBER,@ILKTARIH,M.UstMusteriNo,0,0,'Devir','Hesap Ekstresi Devir Tutarı',1, A.ISLEMTIPI,A.MUSKOD                               
 from @Musteri M                           
 left JOIN  ACARI A ON M.MusteriNo=A.MUSNO AND A.TARIH>@ILKTARIH                   
 where (select count(B.ISLEMNO) from ACARI B where M.MusteriNo=B.MUSNO AND B.TARIH<=@ILKTARIH and A.ISLEMTIPI=B.ISLEMTIPI)=0                  
 group by M.UstMusteriNo,A.ISLEMTIPI,A.MUSKOD                     
                    
update @ACARI SET IslemNo3 = ISLEMNO where ISLEMNO>0                   
                  
declare AcariCursor1 cursor  for Select ROWNUMBER,ISLEMTIPI FROM  @ACARI ORDER BY ISLEMTIPI ASC,ROWNUMBER ASC                    
FOR UPDATE OF ROWNUMBER OPEN AcariCursor1 FETCH NEXT FROM AcariCursor1                   
INTO @ROWNUMBER,@IslemTipi1                    
WHILE @@FETCH_STATUS=0                    
BEGIN                   
   if @NEWROWNUMBER=0                  
   begin                  
    set @pIslemTipi=@IslemTipi1;                  
    update TOP(1) @ACARI SET NEWROWNUMBER=@NEWROWNUMBER,BAKIYE=(select SUM(BORC-ALACAK) from @Musteri M                
     left JOIN  ACARI A ON M.MusteriNo=A.MUSNO AND A.TARIH<=@ILKTARIH                    
     and A.ISLEMTIPI=@pIslemTipi                  
      group by M.UstMusteriNo) where ISLEMTIPI=@IslemTipi1 and BAACIKLA='Devir'                  
             set @NEWROWNUMBER=@NEWROWNUMBER+1;                  
                  
   end else if (@pIslemTipi=@IslemTipi1)                  
   begin                  
    update TOP(1) @ACARI SET NEWROWNUMBER=@NEWROWNUMBER where ISLEMTIPI=@IslemTipi1 and ROWNUMBER=@ROWNUMBER and  BAACIKLA<>'Devir'                  
   set @NEWROWNUMBER=@NEWROWNUMBER+1;                  
                  
   end else                  
   begin         
    set @pIslemTipi=@IslemTipi1;                  
     update TOP(1) @ACARI SET NEWROWNUMBER=@NEWROWNUMBER,BAKIYE=(select SUM(BORC-ALACAK) from @Musteri M                            
     left JOIN  ACARI A ON M.MusteriNo=A.MUSNO AND A.TARIH<=@ILKTARIH                    
     and A.ISLEMTIPI=@pIslemTipi                  
      group by M.UstMusteriNo) where ISLEMTIPI=@IslemTipi1 and BAACIKLA='Devir'                  
    set @NEWROWNUMBER=@NEWROWNUMBER+1;                  
                  
   end                  
                  
FETCH NEXT FROM AcariCursor1 INTO @ROWNUMBER,@IslemTipi1                    
END  CLOSE AcariCursor1  DEALLOCATE AcariCursor1                     
update @ACARI set ROWNUMBER=NEWROWNUMBER                  
                  
 end                  
                  
                  
                    
DECLARE @BAKIYE2 money                  
DECLARE @DevirBakiye money                  
                  
                  
declare AcariCursor cursor  for Select ROWNUMBER,ISLEMTIPI FROM  @ACARI ORDER BY ROWNUMBER ASC  FOR UPDATE OF BAKIYE OPEN AcariCursor FETCH NEXT FROM AcariCursor                   
INTO @ROWNUMBER,@IslemTipi1                    
                  
WHILE @@FETCH_STATUS=0                    
                  
BEGIN                       
                  
IF @ISLEMTIPINEGORE=0                   
BEGIN                      
  SET @BAKIYE2=(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER<=@ROWNUMBER )                      
  UPDATE TOP(1) @ACARI SET BAKIYE=@BAKIYE2 WHERE ROWNUMBER=@ROWNUMBER                  
 end                  
  else   begin                      
  if @ROWNUMBER=0                     
  begin                 
   UPDATE TOP(1) @ACARI SET BAKIYE =isnull(FARK,0)  FROM @ACARI where ROWNUMBER =0                  
   SET @DevirBakiye=(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER =0)                    
  end else                  
  begin                  
  if @ROWNUMBER=1                     
     set @pIslemTipi=@IslemTipi1;                  
                  
   if @pIslemTipi=@IslemTipi1                        
   begin                         
  SET @BAKIYE2=@DevirBakiye+(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER<=@ROWNUMBER and ISLEMTIPI=@pIslemTipi)                    
                     
  UPDATE TOP(1) @ACARI SET BAKIYE=@BAKIYE2 WHERE ROWNUMBER=@ROWNUMBER                        
                    
                  
   end else                         
   begin                  
   set @pIslemTipi=@IslemTipi1;                         
   SET @BAKIYE2=@DevirBakiye+(SELECT SUM(ISNULL(FARK,0)) FROM @ACARI  WHERE ROWNUMBER<=@ROWNUMBER and ISLEMTIPI=@pIslemTipi)                   
                     
   UPDATE TOP(1) @ACARI SET BAKIYE=@BAKIYE2 WHERE ROWNUMBER=@ROWNUMBER                      
   end                    
 end                    
  end                  
  FETCH NEXT FROM AcariCursor INTO @ROWNUMBER,@IslemTipi1                    
END                    
  CLOSE AcariCursor  DEALLOCATE AcariCursor                                 
                    
DELETE FROM AcariTakas WHERE MUSNO  in(select MusteriNo from @Musteri)                            
 insert into AcariTakas(                      
 TARIH,                      
 TESSIRNO,                      
 MUSNO,                      
 BAACIKLA,                      
 ACIKLAMA,                      
 ISLEMNO,                      
 DOVIZTUT,                      
 DOVIZKODU,                      
 OZELKOD,ISLEMTIPI,BELGENO,TP,                            
VadeTarihi,SaticiKodu,SaticiAdi,                      
KULNO,KULADI,DovizBorc,DovizAlacak,Aciklama2,                      
SiraNo,MUSKOD,MUSADI,IsIstasyonKodu,IsIstasyonAdi,                            
TeslimAlan,TeslimEden,BORC,ALACAK,BAKIYE,TTarihi,IslemNo3,                      
BA,AcikKapali,VardiyaKodu,Departman,IslemNo2,DOVIZCINSI,DovizKur)           
        
select A.TARIH,A.TESSIRNO,A.MUSNO,                      
A.BAACIKLA,A.ACIKLAMA,A.ISLEMNO,A.DOVIZTUT,A.DOVIZKODU,                      
A.OZELKOD,A.ISLEMTIPI,A.BELGENO,A.TP,                            
A.[Ort Vade],A.SaticiKodu,A.SaticiAdi,                      
isnull(A.KULNO,0),A.KULADI,isnull(A.DovizBorc,0),                      
isnull(A.DovizAlacak,0),A.Aciklama2,A.NoID,                      
isnull(A.MUSKOD,''),A.MUSADI,A.IsIstasyonKodu,        
A.IsIstasyonAdi,                            
A.TESLIM,A.TESLIM,isnull(A.BORC,0),                      
isnull(A.ALACAK,0),isnull(A.BAKIYE,0),A.TTarihi,                      
A.ISLEMNO3,A.BA,A.AcikKapali,A.VardiyaKodu,                      
isnull(A.Departman,''),isnull(A.IslemNo2,0),isnull(A.DOVIZCINSI,0),ISNULL(A.DovizKur,1)        
                        
 FROM @ACARI A                            
 Left Join STOKHARDETBAG sb on sb.IslemNo=A.ISLEMNO                            
 Left Join Adres ad on ad.CariKodu=sb.CariKodu and ad.AdresNo=sb.FaturaAdresNo                            
 Left Join AMUSTERI ams on ams.MUSNO=A.MUSNO                        
order by  A.ROWNUMBER           
          
  if @ISLEMTIPINEGOREBAKIYEGRUPLA=0                    
  begin                    
 select A.*, ams.Tipi As CariTipi, ams.CariGrubu, ad.AdresNo,                            
  ad.Adres1, dbo.fn_FaturaSerinolari(A.ISLEMNO) As SeriNolar                             
                            
  FROM @ACARI A                            
  Left Join STOKHARDETBAG sb on sb.IslemNo=A.ISLEMNO                            
  Left Join Adres ad on ad.CariKodu=sb.CariKodu and ad.AdresNo=sb.FaturaAdresNo                            
  Left Join AMUSTERI ams on ams.MUSNO=A.MUSNO                     
  order by  A.ROWNUMBER                    
  /*order by  A.MUSNO,TARIH,CARINO */                 
 end            
 else                    
 begin                    
   SELECT  ISLEMTIPI,sum(BORC) as BORC,sum(ALACAK) as ALACAK,sum(BORC-ALACAK) as BAKIYE FROM @ACARI    where ISLEMTIPI is not null and MUSNO=@MUSNO  GROUP BY ISLEMTIPI                    
                    
 end                    
                    
 end     
 go--
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'V_Okc_Hesaplama_Temp') 
 DROP PROCEDURE [V_Okc_Hesaplama_Temp]
 go--

 CREATE   PROC V_Okc_Hesaplama_Temp (@IslemNo int,@tip int,@Gruplu int)           
AS         
IF @tip = 1    
BEGIN    
 if @Gruplu = 0  
 begin  
  Select IslemNo,StokKodu,StokAdi,Miktar,Birim,BirimInpos,            
    ROUND(BirimFiyat,2)BirimFiyat,  
    ROUND(SonTutar/Miktar,2)OdeAlBirimFiyat,     
    Kdv,            
    ROUND(KdvDahilBirimFiyat,2)KdvDahilBirimFiyat,         
    Miktar * ROUND(KdvDahilBirimFiyat,2) KdvliIskontosuzSatirToplami,       
    ROUND(Iskonto1,2) Iskonto1,            
    ROUND(Iskonto2,2)Iskonto2,            
    ROUND(Iskonto3,2) Iskonto3,            
    ROUND(IskontoluSatirToplam,2) IskontoluSatirToplam ,             
    ROUND(IskontosuzSatirToplam,2) IskontosuzSatirToplam ,             
    ROUND(SatirKdvTutari,2) SatirKdvTutari ,            
    ROUND(IskontoluSatirToplam + SatirKdvTutari,2)   KdvDahilIskontoluSatirTutari,            
    ROUND(IskontosuzSatirToplam - IskontoluSatirToplam,2)  KdvHaricIskontoTutari,    
    ROUND(SonTutar,2)SonTutar,      
    ROUND(SatirIskontoTutari,2)SatirIskontoTutari,       
    DepartmanKodu      
    from (            
    select sh.IslemNo,StokKodu,LEFT(dbo.TRtoEN(StokAdi),20) as StokAdi,Miktar,(Select TOP 1 IsoBirimKodu from BIRIM where BirimAdi = Birim)Birim,BirimFiyat,Kdv,BirimFiyat *( 100+ Kdv) /100 KdvDahilBirimFiyat,Iskonto1,Iskonto2,Iskonto3,            
    Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100 * ((100 - sh.AltIskYuzde1) * (100 - sh.AltIskYuzde2) * (100 - sh.AltIskYuzde3) / 1000000) IskontoluSatirToplam,            
    Miktar  * BirimFiyat IskontosuzSatirToplam,            
    Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100 * ((100 - sh.AltIskYuzde1) * (100 - sh.AltIskYuzde2) * (100 - sh.AltIskYuzde3) / 1000000) * Kdv / 100 SatirKdvTutari,      
    CASE (Select TOP 1 IsoBirimAdi from BIRIM where BirimAdi = Birim)       
    WHEN 'Adet' THEN 0      
    WHEN 'Gram' THEN 1      
    WHEN 'Kilogram' THEN 2      
    WHEN 'Ton' THEN 3      
    WHEN 'Mililitre' THEN 4      
    WHEN 'Litre' THEN 5      
    WHEN 'Metre' THEN 6      
    WHEN 'Kilometre' THEN 7      
    WHEN 'Porsiyon' THEN 8      
    ELSE 0      
    END BirimInpos,      
    (Miktar  * BirimFiyat)-(Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100  * (100 - Iskonto4)/100) SatirIskontoTutari,       
    SonTutar,      
    (select DepartmanKodu from STOKKARTI where Kodu = sh.StokKodu) DepartmanKodu      
    from STOKHARTEMP sh where IslemNo = @IslemNo    
  ) tbl   
 end  
 else  
 begin  
 SELECT DepartmanKodu StokKodu,DepartmanAciklama StokAdi,Kdv,Birim,BirimInpos,DepartmanKodu,  
       1 Miktar,  
    ROUND(SUM(BirimFiyat),2)BirimFiyat,  
    ROUND(SUM(OdeAlBirimFiyat),2)OdeAlBirimFiyat,  
    ROUND(SUM(SonTutar),2)KdvDahilBirimFiyat,  
    ROUND(SUM(KdvliIskontosuzSatirToplami),2)KdvliIskontosuzSatirToplami,  
    ROUND(SUM(Iskonto1),2)Iskonto1,  
    ROUND(SUM(Iskonto2),2)Iskonto2,  
    ROUND(SUM(Iskonto3),2)Iskonto3,  
    ROUND(SUM(IskontoluSatirToplam),2)IskontoluSatirToplam,  
    ROUND(SUM(IskontosuzSatirToplam),2)IskontosuzSatirToplam,  
    ROUND(SUM(SatirKdvTutari),2)SatirKdvTutari,  
    ROUND(SUM(KdvDahilIskontoluSatirTutari),2)KdvDahilIskontoluSatirTutari,  
    ROUND(SUM(KdvHaricIskontoTutari),2)KdvHaricIskontoTutari,  
    ROUND(SUM(SonTutar),2)SonTutar,  
    ROUND(SUM(SatirIskontoTutari),2)SatirIskontoTutari  
FROM  
  (select StokKodu,StokAdi,Miktar,'AD'Birim,0 BirimInpos,            
    ROUND(BirimFiyat,2)BirimFiyat,  
    ROUND(SonTutar/Miktar,2)OdeAlBirimFiyat,     
    Kdv,            
    ROUND(KdvDahilBirimFiyat,2)KdvDahilBirimFiyat,         
    Miktar * ROUND(KdvDahilBirimFiyat,2) KdvliIskontosuzSatirToplami,       
    ROUND(Iskonto1,2) Iskonto1,            
    ROUND(Iskonto2,2)Iskonto2,            
    ROUND(Iskonto3,2) Iskonto3,            
    ROUND(IskontoluSatirToplam,2) IskontoluSatirToplam ,             
    ROUND(IskontosuzSatirToplam,2) IskontosuzSatirToplam ,             
    ROUND(SatirKdvTutari,2) SatirKdvTutari ,            
    ROUND(IskontoluSatirToplam + SatirKdvTutari,2)   KdvDahilIskontoluSatirTutari,            
    ROUND(IskontosuzSatirToplam - IskontoluSatirToplam,2)  KdvHaricIskontoTutari,    
    ROUND(SonTutar,2)SonTutar,      
    ROUND(SatirIskontoTutari,2)SatirIskontoTutari,       
    DepartmanKodu,DepartmanAciklama      
    from (            
    select sh.IslemNo,StokKodu,LEFT(dbo.TRtoEN(sh.StokAdi),20) as StokAdi,Miktar,(Select TOP 1 IsoBirimKodu from BIRIM where BirimAdi = Birim)Birim,BirimFiyat,Kdv,BirimFiyat *( 100+ Kdv) /100 KdvDahilBirimFiyat,Iskonto1,Iskonto2,Iskonto3,            
    Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100 * ((100 - sh.AltIskYuzde1) * (100 - sh.AltIskYuzde2) * (100 - sh.AltIskYuzde3) / 1000000) IskontoluSatirToplam,            
    Miktar  * BirimFiyat IskontosuzSatirToplam,            
    Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100 * ((100 - sh.AltIskYuzde1) * (100 - sh.AltIskYuzde2) * (100 - sh.AltIskYuzde3) / 1000000) * Kdv / 100 SatirKdvTutari,          
    (Miktar  * BirimFiyat)-(Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100  * (100 - Iskonto4)/100) SatirIskontoTutari,       
    SonTutar,      
    sk.DepartmanKodu,    
    (select Aciklama from GRUP where Turu = '4' and GrupAdi = sk.DepartmanKodu) DepartmanAciklama  
    from STOKHARTEMP sh, STOKKARTI sk where sh.StokKodu = sk.Kodu and IslemNo = @IslemNo    
  ) tbl  
)tbl1 group by DepartmanKodu,DepartmanAciklama,Kdv,Birim,BirimInpos  
 end;  
END    
ELSE IF  @tip = 2 -- ödeal    
BEGIN    
  Select            
   SUM(ROUND(IskontoluSatirToplam + SatirKdvTutari,2))   KdvDahilIskontoluSatirTutari            
   from (            
   select          
  Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100 * ((100 - sh.AltIskYuzde1) * (100 - sh.AltIskYuzde2) * (100 - sh.AltIskYuzde3) / 1000000) IskontoluSatirToplam,                
  Miktar  * BirimFiyat * (100 - Iskonto1) / 100 * (100 - Iskonto2) /100 * (100 - Iskonto3)/100 * ((100 - sh.AltIskYuzde1) * (100 - sh.AltIskYuzde2) * (100 - sh.AltIskYuzde3) / 1000000) * Kdv / 100 SatirKdvTutari        
   from STOKHARTEMP sh where IslemNo = @IslemNo    
 ) tbl    
END    
ELSE IF  @tip = 3 -- beko    
BEGIN          
   select SUM(Miktar * ROUND(BirimFiyat *( 100+ Kdv) /100,2)) KdvliIskontosuzSatirToplami from STOKHARTEMP sh where IslemNo = @IslemNo    
END    
ELSE IF  @tip = 4 -- inpos    
BEGIN          
   select SUM(ROUND(SonTutar,2)) SonTutar from STOKHARTEMP sh where IslemNo = @IslemNo    
END;     


  go--
  IF OBJECT_ID('StokFiyatlariRanros', 'V') IS NOT NULL DROP VIEW [StokFiyatlariRanros]
	go--
 create  view [dbo].[StokFiyatlariRanros]  
as  
SELECT sf.StokNo, sf.Kodu, 
	   F1FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F1DovizKodu) StokKartiFiyat1,
       F2FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F2DovizKodu) StokKartiFiyat2,
	   F3FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F3DovizKodu) StokKartiFiyat3, 
	   F4FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F4DovizKodu) StokKartiFiyat4
from StokFiyat sf

go
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_mb_XML_TaxLegalMonetary_List') 
DROP PROCEDURE [sp_mb_XML_TaxLegalMonetary_List]
GO     

create   PROCEDURE  [dbo].[sp_mb_XML_TaxLegalMonetary_List]              
 @IslemNo nvarchar(30)              
 as          
 ;with mustahsil as (          
select isnull(sum(DovizTut),0) MustahsilTut from STOKHAR where IslemTuru='Müstahsil' and  IslemNo=@IslemNo           
)             
select            
           
(STK.KdvToplami) AS "TaxAmount",              
(STK.SonTutar)   
AS "TaxableAmount",              
--round(STK.KdvToplami,2)) AS "TaxAmount",              
STK.sayi AS "CalculationSequenceNumeric",              
(STK.Isksuz_Satir_Toplami) AS  "LineExtensionAmount",              
((STK.KdvsizSatirToplami)) AS "TaxExclusiveAmount",              
--(round(STK.SonTutar,2))  
--round(STK.Isksuz_Satir_Toplami,2)+round(STK.KdvToplami,2)
((STK.SonTutar)-(select MustahsilTut from mustahsil )) AS "TaxInclusiveAmount",              
((STK.SatirIskontoToplami+Alt_Iskonto_Toplami)) AS "AllowanceTotalAmount",              
((STK.SonTutar)-(select MustahsilTut from mustahsil )) AS "PayableAmount",              
isnull(TevkifatKod,'') as TevkifatKod,              
isnull(TevkifatAd,'') as TevkifatAd,isnull(TevkifatOrani,0) TevkifatOrani,isnull(TevkifatTutari,0) TevkifatTutari              
            
 FROM              
(SELECT               
sum(1) as sayi,              
sum (FaturaMiktari* BirimFiyat*BirimMiktar/STK.DovizKuru) as Isksuz_Satir_Toplami,              
sum ( CASE WHEN ((FaturaMiktari* BirimFiyat*BirimMiktar) -STK.Tutar) <0.1 THEN 0 ELSE ((FaturaMiktari* BirimFiyat*BirimMiktar) -STK.Tutar)/STK.DovizKuru END  ) as SatirIskontoToplami,              
cast( sum (CASE WHEN (STK.Tutar -(SonTutar-STK.KdvTutari) )/STK.DovizKuru <0.1 THEN 0 ELSE (STK.Tutar -(SonTutar-STK.KdvTutari) )/STK.DovizKuru END ) as decimal(15,2))   
 as Alt_Iskonto_Toplami,               
sum ((SonTutar-STK.KdvTutari)/STK.DovizKuru) as  
KdvsizSatirToplami,              
sum (STK.KdvTutari/STK.DovizKuru) as KdvToplami,                
sum(STK.Tutar/STK.DovizKuru)-sum(isnull(t.TevkifatTutari,0)) as Tutar,              
sum(SonTutar/STK.DovizKuru)-sum(isnull(t.TevkifatTutari/STK.DovizKuru,0)) as SonTutar,          
t.Kod TevkifatKod,tb.TevkifatAdi TevkifatAd,convert(decimal, (t.TevkifatOrani)) TevkifatOrani,sum(t.TevkifatTutari/STK.DovizKuru) TevkifatTutari              
 from STOKHAR STK              
  inner join STOKHARDETBAG STB ON STB.IslemNo=STK.IslemNo    
   left join Tevkifat t on t.IslemNo2 = STK.IslemNo2  and t.StokNo=STK.StokNo          
   left join tblTevkifat tb on tb.Kod=t.Kod          
 where (STK.IslemTuru ='Satış' or STK.IslemTuru ='Alış İade'  )              
  AND (STK.IslemNo=@IslemNo or STK.IslemNo3=@IslemNo)     
group by t.Kod,tb.TevkifatAdi,t.TevkifatOrani           
  --AND STK.Tutar>0          
   ) STK;   
   




GO
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_GunlukDurumRaporu_Ranros') 
DROP PROCEDURE [sp_GunlukDurumRaporu_Ranros]
GO
create procedure [dbo].[sp_GunlukDurumRaporu_Ranros](@Tarih1 DATETIME,@Tarih2 DATETIME,@Tip nvarchar(1),@KulNo nvarchar (5) = null)      
AS    
--   sp_GunlukDurumRaporu '2024-04-15 12:00AM','2024-04-29 12:00AM','T'    
BEGIN    
    DECLARE @SQL nvarchar(max);    
 DECLARE @Fiyat nvarchar(30);    
    DECLARE @KulNoStr nvarchar(30);      
 select @Fiyat = Deger from  Parametre where Param = 'Günlük Kar Raporu Kullanılacak Fiyat';    
    
 IF (@Fiyat = '') OR (@Fiyat IS NULL)    
 BEGIN    
  SET @Fiyat = 'StokKartiFiyat1';    
 END;    
    
    
  IF @KulNo IS NULL    
  BEGIN    
  SET @KulNoStr = '';      
  END    
  ELSE    
  BEGIN    
  SET @KulNoStr = ' AND sh.KULNO = ' + @KulNo;      
  END;     
    
 IF @Tip = 'T'   ---'Fatura Toplami' Turu,IslemTuru,  '' NakitVisa,     
 BEGIN    
 SET @SQL=' select  1 No , ''Fatura Toplami'' Turu, CASE WHEN IslemTuru = ''Prk.Satış'' THEN ''Veresiye Prk.Satış'' ELSE IslemTuru END IslemTuru  ,'''' NakitVisa,          
        sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar,     
        sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,    
        sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar,     
        SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik    
       from STOKHAR  sh    
    LEFT JOIN StokFiyatlariRanros sf on sf.StokNo = sh.StokNo    
    LEFT JOIN KASA K ON K.ISLEMNO=sh.IslemNo    
    where FisTuru=''F'' and IslemTuru in (''Satış'' ,''Alış'' ,''Alış İade'' ,''Satış İade'',''Prk.Satış'')     
    AND  not exists( Select 1 from KASA K where K.ISLEMNO = sh.IslemNo)     
    AND  sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2'''+ @KulNoStr +'    
    group by IslemTuru    
    UNION ALL     
    SELECT 2,IslemTuru, k.BAACIKLA,NakitVisa,          
      sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar,     
      sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,    
      sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar,     
      SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik    
    from STOKHAR sh     
    left JOIN KASA k ON k.ISLEMNO = sh.IslemNo    
    LEFT JOIN StokFiyatlariRanros sf on sf.StokNo = sh.StokNo    
    WHERE  FisTuru=''F'' AND (sh.IslemTuru = ''Prk.Satış'') AND k.BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')    
     AND  sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2'''+ @KulNoStr +'    
    GROUP BY sh.IslemTuru,k.BAACIKLA,NakitVisa     
    UNION ALL     
    select 3,''Diğer Kasa Hareketleri'',BAACIKLA,'''' , SUM(BORC) Tutar,0,0,''''from KASA sh where BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')     
    and not exists (select 1 from STOKHARDETBAG db where db.IslemNo = sh.ISLEMNO)    
    and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' '+ @KulNoStr +'     
    group by BAACIKLA    
    UNION ALL     
    select 4,''Faturalı Kasa Hareketleri'',BAACIKLA,'''', SUM(BORC) Tutar,0,0,''''  from KASA sh where BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')     
    and exists (select 1 from STOKHARDETBAG db where db.IslemNo = sh.ISLEMNO)    
    and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' '+ @KulNoStr +'     
    group by BAACIKLA    
    UNION ALL    
    SELECT 5,''Çek -Senet Girişleri'',BAACIKLA,'''',SUM(sh.ALACAK) AS TUTAR,0,0,''''  FROM dbo.ACARI sh     
    WHERE BAACIKLA in(''Çek Girişi'',''Senet Girişi'') and  TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' '+ @KulNoStr +'     
    group by BAACIKLA     
    UNION ALL    
    SELECT 6,''Ödeme Islemleri'',BAACIKLA,'''',SUM(sh.BORC) AS TUTAR,0,0,'''' FROM dbo.ACARI sh    
    WHERE BAACIKLA = ''Ödeme'' and  TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' '+ @KulNoStr +'     
    group by BAACIKLA order by 1';     
    END    
 ELSE IF @Tip = 'D'    
 BEGIN    
 SET @SQL=' select  IslemNo,m.MUSKOD,m.MUSADI,sh.StokKodu,ISNULL(sk.StokAdi,sh.StokAdi) StokAdi,SUM(sh.SonTutar/sh.Miktar) NetFiyat,SUM(sh.Miktar) Miktar,    
       ''Fatura Toplami'' Turu, CASE WHEN IslemTuru = ''Prk.Satış'' THEN ''Veresiye Prk.Satış'' ELSE IslemTuru END IslemTuru  ,'''' NakitVisa,          
        sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar,     
        sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,    
        sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar,     
        SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik    
       from STOKHAR  sh    
    LEFT JOIN STOKKARTI sk on sk.Kodu = sh.StokKodu    
    LEFT JOIN AMUSTERI m on m.MUSNO = sh.CariNo    
    LEFT JOIN StokFiyatlariRanros sf on sf.StokNo = sh.StokNo    
    LEFT JOIN KASA K ON K.ISLEMNO=sh.IslemNo    
    where FisTuru=''F'' and IslemTuru in (''Satış'' ,''Alış'' ,''Alış İade'' ,''Satış İade'',''Prk.Satış'')     
    AND  not exists( Select 1 from KASA K where K.ISLEMNO = sh.IslemNo)     
    AND  sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2'''+ @KulNoStr +'    
    group by IslemNo,IslemTuru,m.MUSADI,m.MUSKOD,sh.StokKodu,sk.StokAdi,sh.StokAdi    
    UNION ALL     
    SELECT  IslemNo,m.MUSKOD,m.MUSADI,sh.StokKodu,ISNULL(sk.StokAdi,sh.StokAdi) StokAdi,    
      SUM(sh.SonTutar/sh.Miktar) NetFiyat,    
      SUM(sh.Miktar) Miktar,    
      IslemTuru, k.BAACIKLA,NakitVisa,          
      sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar,     
      sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,    
      sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar,     
      SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik    
    from STOKHAR sh     
    LEFT JOIN STOKKARTI sk on sk.Kodu = sh.StokKodu    
    LEFT JOIN AMUSTERI m on m.MUSNO = sh.CariNo    
    left JOIN KASA k ON k.ISLEMNO = sh.IslemNo    
    LEFT JOIN StokFiyatlariRanros sf on sf.StokNo = sh.StokNo    
    WHERE  FisTuru=''F'' AND (sh.IslemTuru = ''Prk.Satış'') AND k.BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')    
     AND  sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2'''+ @KulNoStr +'    
    GROUP BY IslemNo,sh.IslemTuru,k.BAACIKLA,NakitVisa, m.MUSADI,m.MUSKOD,sh.StokKodu,sk.StokAdi,sh.StokAdi';    
 END;    
    
 SET @sql =  REPLACE(@Sql,'@Tarih1',CONVERT(nvarchar(8),@Tarih1,112) + ' ' + convert(nvarchar(8),@Tarih1,114 ))   
 SET @sql =  REPLACE(@Sql,'@Tarih2',CONVERT(nvarchar(8),@Tarih2,112) + ' ' + convert(nvarchar(8),@Tarih2,114 ))      
 --PRINT @SQL    
 EXEC sp_executesql  @sql;    
END;    
go
IF OBJECT_ID('StokFiyatlari', 'V') IS NOT NULL 
DROP VIEW [StokFiyatlari]
GO
CREATE   view [dbo].[StokFiyatlari]
as
SELECT sk.StokNo, sk.Kodu AS StokKodu, sk.StokAdi, ISNULL(sfa.OrtAlis, 0) AS OrtAlis, ISNULL(sfa.MinAlis, 0) AS MinAlis, ISNULL(sfa.MaksAlis, 0) AS MaksAlis, ISNULL(sfa.OrtAlisIskontosuz, 0) AS OrtAlisIskontosuz, 
                         ISNULL(sfa.MinAlisIskontosuz, 0) AS MinAlisIskontosuz, ISNULL(sfa.MaksAlisIskontosuz, 0) AS MaksAlisIskontosuz, ISNULL(sfs.OrtSatis, 0) AS OrtSatis, ISNULL(sfs.MinSatis, 0) AS MinSatis, ISNULL(sfs.MaksSatis, 0) 
                         AS MaksSatis, ISNULL(sfs.OrtSatisIskontosuz, 0) AS OrtSatisIskontosuz, ISNULL(sfs.MinSatisIskontosuz, 0) AS MinSatisIskontosuz, ISNULL(sfs.MaksSatisIskontosuz, 0) AS MaksSatisIskontosuz, ISNULL
                             ((SELECT        TOP (1) ((((TopTutar - KdvTutari) / Miktar) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (SatMasrafTutari + KdvTutari) / Miktar AS Expr1
                                 FROM            dbo.STOKHAR
                                 WHERE        (FisTuru IN ('F', 'I', 'S', 'M')) AND (GC = 'G') AND (Miktar <> 0) AND (StokKodu = sk.Kodu) AND (IslemTuru NOT IN ('Depo Vir.', 'Satış İade', 'Mik.Değiş')) AND IslemNo >=0
                                 ORDER BY FaturaTarihi DESC), 0) AS EnSonAlis,
						     ISNULL
                             ((SELECT        TOP (1) BirimFiyat * ((100 + Kdv) / 100) AS Expr1
                                 FROM            dbo.STOKHAR AS STOKHAR_5
                                 WHERE        (GC = 'G') AND (Miktar <> 0) AND (StokKodu = sk.Kodu) AND (IslemTuru NOT IN ('Depo Vir.', 'Satış İade', 'Mik.Değiş'))
                                 ORDER BY FaturaTarihi DESC), 0) AS EnSonAlisIskontosuz, ISNULL
                             ((SELECT        TOP (1) ((((TopTutar - KdvTutari) / Miktar) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (SatMasrafTutari + KdvTutari) / Miktar AS Expr1
                                 FROM            dbo.STOKHAR AS STOKHAR_4
                                 WHERE        (GC = 'C') AND (Miktar <> 0) AND (StokKodu = sk.Kodu) AND (IslemTuru NOT IN ('Depo Vir.', 'Alış İade', 'Mik.Değiş'))
                                 ORDER BY FaturaTarihi DESC), 0) AS EnSonSatis, ISNULL
                             ((SELECT        TOP (1) BirimFiyat * ((100 + Kdv) / 100) AS Expr1
                                 FROM            dbo.STOKHAR AS STOKHAR_3
                                 WHERE        (GC = 'C') AND (Miktar <> 0) AND (StokKodu = sk.Kodu) AND (IslemTuru NOT IN ('Depo Vir.', 'Alış İade', 'Mik.Değiş'))
                                 ORDER BY FaturaTarihi DESC), 0) AS EnSonSatisIskontosuz, ISNULL
                             ((SELECT        dbo.fn_StokFiyati(sk.Kodu, N'lifo', DEFAULT) AS Expr1), 0) AS LifoFiyat, ISNULL
                             ((SELECT        dbo.fn_StokFiyati(sk.Kodu, N'fifo', DEFAULT) AS Expr1), 0) AS FifoFiyat,
                             (SELECT        F1FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F1DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat as sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat1,
                             (SELECT        F2FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F2DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat2,
                             (SELECT        F3FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F3DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat3,
                             (SELECT        F4FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F4DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat4,
                             (SELECT        F5FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F5DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat5,
                             (SELECT        F6FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F6DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat6,
                             (SELECT        F7FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F7DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat7,
                             (SELECT        F8FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F8DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat8,
                             (SELECT        F9FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F9DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat9,
                             (SELECT        F10FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F10DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat10,
                             (SELECT        F11FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F11DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat11,
                             (SELECT        F12FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F12DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat12,
                             (SELECT        F13FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F13DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat13,
                             (SELECT        F14FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F14DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat14,
                             (SELECT        F15FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F15DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat15,
                             (SELECT        F16FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F16DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat16,
                             (SELECT        F17FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F17DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat17,
                             (SELECT        F18FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F18DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat18,
                             (SELECT        F19FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F19DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat19,
                             (SELECT        F20FiyatH * ((100 + SatisKdv) / 100)*(select Top 1 GunFiyati from DOVIZT where DovizKodu=sf.F20DovizKodu) AS Expr1
                               FROM            dbo.StokFiyat AS sf
                               WHERE        (Kodu = sk.Kodu)) AS StokKartiFiyat20,
                             (SELECT        AlisIndirimYuzde
                               FROM            dbo.STOKKARTI
                               WHERE        (Kodu = sk.Kodu)) AS AlisIndirimYuzde,
                             (SELECT        AlisIndirimYuzde2
                               FROM            dbo.STOKKARTI AS STOKKARTI_7
                               WHERE        (Kodu = sk.Kodu)) AS AlisIndirimYuzde2,
                             (SELECT        AlisIndirimYuzde3
                               FROM            dbo.STOKKARTI AS STOKKARTI_6
                               WHERE        (Kodu = sk.Kodu)) AS AlisIndirimYuzde3,
                             (SELECT        AlisIndirimYuzde4
                               FROM            dbo.STOKKARTI AS STOKKARTI_5
                               WHERE        (Kodu = sk.Kodu)) AS AlisIndirimYuzde4,
                             (SELECT        SatisIndirimYuzde
                               FROM            dbo.STOKKARTI AS STOKKARTI_4
                               WHERE        (Kodu = sk.Kodu)) AS SatisIndirimYuzde,
                             (SELECT        SatisIndirimYuzde2
                               FROM            dbo.STOKKARTI AS STOKKARTI_3
                               WHERE        (Kodu = sk.Kodu)) AS SatisIndirimYuzde2,
                             (SELECT        SatisIndirimYuzde3
                               FROM            dbo.STOKKARTI AS STOKKARTI_2
                               WHERE        (Kodu = sk.Kodu)) AS SatisIndirimYuzde3,
                             (SELECT        SatisIndirimYuzde4
                               FROM            dbo.STOKKARTI AS STOKKARTI_1
                               WHERE        (Kodu = sk.Kodu)) AS SatisIndirimYuzde4, sk.SatisKdv,sk.AlisKdv
FROM            dbo.STOKKARTI AS sk LEFT OUTER JOIN
                             (SELECT        StokKodu, ISNULL(SUM(BirimFiyat * ((100 + Kdv) / 100)) / SUM(Miktar), 0) AS OrtAlisIskontosuz, MIN(ISNULL(BirimFiyat * ((100 + Kdv) / 100), 0)) AS MinAlisIskontosuz, MAX(ISNULL(BirimFiyat * ((100 + Kdv) / 100), 
                                                         0)) AS MaksAlisIskontosuz, ISNULL(SUM((((TopTutar - KdvTutari) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (KdvTutari + SatMasrafTutari)), 0) / SUM(Miktar) AS OrtAlis, 
                                                         MIN(ISNULL(((((TopTutar - KdvTutari) / Miktar) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (KdvTutari + SatMasrafTutari) / Miktar, 0)) AS MinAlis, 
                                                         MAX(ISNULL(((((TopTutar - KdvTutari) / Miktar) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (KdvTutari + SatMasrafTutari) / Miktar, 0)) AS MaksAlis
                               FROM            dbo.STOKHAR AS STOKHAR_2
                               WHERE        (GC = 'G') AND (Miktar <> 0) AND (IslemTuru NOT IN ('Depo Vir.', 'Alış İade', 'Satış İade', 'Mik.Değiş'))
                               GROUP BY StokKodu) AS sfa ON sfa.StokKodu = sk.Kodu LEFT OUTER JOIN
                             (SELECT        StokKodu, ISNULL(SUM(BirimFiyat * ((100 + Kdv) / 100)) / SUM(Miktar), 0) AS OrtSatisIskontosuz, MIN(ISNULL(BirimFiyat * ((100 + Kdv) / 100), 0)) AS MinSatisIskontosuz, MAX(ISNULL(BirimFiyat * ((100 + Kdv) 
                                                         / 100), 0)) AS MaksSatisIskontosuz, ISNULL(SUM((((TopTutar - KdvTutari) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (KdvTutari + SatMasrafTutari)), 0) / SUM(Miktar) 
                                                         AS OrtSatis, MIN(ISNULL(((((TopTutar - KdvTutari) / Miktar) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (KdvTutari + SatMasrafTutari) / Miktar, 0)) AS MinSatis, 
                                                         MAX(ISNULL(((((TopTutar - KdvTutari) / Miktar) * ((100 - AltIskYuzde1) / 100)) * ((100 - AltIskYuzde2) / 100)) * ((100 - AltIskYuzde3) / 100) + (KdvTutari + SatMasrafTutari) / Miktar, 0)) AS MaksSatis
                               FROM            dbo.STOKHAR AS STOKHAR_1
                               WHERE        (GC = 'C') AND (Miktar <> 0) AND (IslemTuru NOT IN ('Depo Vir.', 'Alış İade', 'Satış İade', 'Mik.Değiş'))
                               GROUP BY StokKodu) AS sfs ON sfs.StokKodu = sk.Kodu
GO



 if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.6.5')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.6.5',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go


 if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.7.0')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.7.0',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go

IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'ACariBakiyeUpdate') 
drop trigger ACariBakiyeUpdate
go
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'AcariDeleteTrigger') 
drop trigger AcariDeleteTrigger
go
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'AcariInsertTrigger') 
drop trigger AcariInsertTrigger
go
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'AcariAfterUpdateTrigger') 
drop trigger AcariAfterUpdateTrigger
go
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'ACariBakiye') 
drop trigger  ACariBakiye
go
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'AcariInsertDeleteTrigger') 
drop trigger  AcariInsertDeleteTrigger

 go-- 
IF  EXISTS (SELECT *  FROM sys.triggers WHERE  name='ACariBakiye')
 BEGIN 
 drop trigger ACariBakiye 
 end;
go--  
CREATE TRIGGER ACariBakiye   
ON ACARI  
AFTER INSERT, UPDATE, DELETE  
AS  
BEGIN
    SET NOCOUNT ON;

    DECLARE @MUSNOLIST TABLE (MUSNO INT);

    -- INSERTED ve DELETED'den alınan benzersiz müşteri numaraları
    INSERT INTO @MUSNOLIST(MUSNO)
    SELECT DISTINCT MUSNO FROM inserted WHERE MUSNO IS NOT NULL
    UNION
    SELECT DISTINCT MUSNO FROM deleted WHERE MUSNO IS NOT NULL;

    -- Her müşteri için cari hareket toplamlarını hesapla (yoksa sıfır al)
    UPDATE m
    SET 
        m.MUSBORC = ISNULL(c.BORC, 0),
        m.MUSALACAK = ISNULL(c.ALACAK, 0),
        m.MUSBAKIYE = ISNULL(c.BAKIYE, 0)
    FROM AMUSTERI m
    INNER JOIN @MUSNOLIST l ON l.MUSNO = m.MUSNO
    OUTER APPLY (
        SELECT 
            SUM(BORC) AS BORC,
            SUM(ALACAK) AS ALACAK,
            SUM(BORC - ALACAK) AS BAKIYE
        FROM ACARI
        WHERE MUSNO = m.MUSNO
    ) c
    WHERE NOT EXISTS (
        SELECT 1 FROM KullaniciAyarlari k
        WHERE k.Ayar = 'PesinCariNo' AND k.Deger = CAST(m.MUSNO AS NVARCHAR)
    );
END;
go
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_SaticiIslemDegistir') 
 DROP PROCEDURE [sp_SaticiIslemDegistir]
go
create   proc sp_SaticiIslemDegistir @ID nvarchar(20), @IslemNo int
as  
begin  
    Declare @SaticiAdi nvarchar(50)  
  
	select @SaticiAdi = SaticiAdi from Satici where SaticiKodu = @ID  
 
	BEGIN transaction  
	BEGIN TRY 
		update STOKHAR SET SaticiAdi = @SaticiAdi, Satici = @ID where IslemNo = @IslemNo  
		update STOKHARDETBAG SET SaticiAdi = @SaticiAdi, Satici = @ID where IslemNo = @IslemNo   
		update ACARI SET SaticiAdi = @SaticiAdi, SaticiKodu = @ID where ISLEMNO = @IslemNo 
		update KASA SET SaticiAdi = @SaticiAdi, SaticiKodu = @ID where ISLEMNO = @IslemNo  
		update GELGID SET SaticiAdi = @SaticiAdi, SaticiKodu = @ID where ISLEMNO = @IslemNo  
		update TEKLIFHAR SET SaticiAdi = @SaticiAdi, Satici = @ID where IslemNo = @IslemNo 
		update TEKLIFHARDETBAG SET SaticiAdi = @SaticiAdi, SaticiKodu = @ID where IslemNo = @IslemNo   
		update SIPARISHAR SET SaticiAdi = @SaticiAdi, Satici = @ID where IslemNo = @IslemNo   
		update SIPARISHARDETBAG SET SaticiAdi = @SaticiAdi, SaticiKodu = @ID where IslemNo = @IslemNo 
	COMMIT  
	END TRY  
		begin catch  
		rollback  
		end catch  
	END 
	go

	IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_KullaniciIslemDegistir') 
	DROP PROCEDURE sp_KullaniciIslemDegistir
go
	create  proc sp_KullaniciIslemDegistir @ID int, @IslemNo int
as  
begin  
    Declare @KulAdi nvarchar(50)  
  
	select @KulAdi = GirisAdi from Kullanicilar where No = @ID  
 
	BEGIN transaction  
	BEGIN TRY 
		update STOKHAR SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo  
		update STOKHARDETBAG SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo   
		update ACARI SET KULADI = @KulAdi, KULNO = @ID where ISLEMNO = @IslemNo 
		update KASA SET KULADI = @KulAdi, KULNO = @ID where ISLEMNO = @IslemNo  
		update GELGID SET KULADI = @KulAdi, KULNO = @ID where ISLEMNO = @IslemNo  
		update TEKLIFHAR SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo 
		update TEKLIFHARDETBAG SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo   
		update SipHar SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo 
		update SipHarDetBag SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo 
		update SIPARISHAR SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo   
		update SIPARISHARDETBAG SET KULADI = @KulAdi, KULNO = @ID where IslemNo = @IslemNo 
	COMMIT  
	END TRY  
		begin catch  
		rollback  
		end catch  
	END   
	go

if  not  exists (select * from dbo.syscolumns where id = object_id(N'STOKHARDETBAG') and name=N'OdeAlIslemNo')
		begin
		ALTER TABLE STOKHARDETBAG ADD OdeAlIslemNo  nvarchar(20)
		end
		else begin
		ALTER TABLE STOKHARDETBAG alter column OdeAlIslemNo  nvarchar(20)
		end
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_FaturaKdvRaporu')
DROP PROCEDURE [sp_FaturaKdvRaporu]
go
 CREATE   PROCEDURE sp_FaturaKdvRaporu
(@Tarih1 smalldatetime,
 @Tarih2 smalldatetime)
AS
BEGIN
	DECLARE @kdvList NVARCHAR(MAX) = '';
	DECLARE @kdvToplamMatrah NVARCHAR(MAX) = '';
	DECLARE @baseSql NVARCHAR(MAX) = '';
	DECLARE @prefix CHAR(1) = '';

	SELECT DISTINCT Kdv 
	INTO #TempKdv
	FROM dbo.STOKHAR;

	-- Sıralı biçimde döngüyle veya XML ile oluştur (örnek döngü ile)
	DECLARE @KdvValue INT;

	DECLARE kdv_cursor CURSOR FOR
		SELECT Kdv FROM #TempKdv ORDER BY Kdv;

	OPEN kdv_cursor;
	FETCH NEXT FROM kdv_cursor INTO @KdvValue;

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @kdvList += @prefix + '(
			SELECT ISNULL(SUM(SonTutar - KdvTutari), 0)
			FROM dbo.STOKHAR 
			WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(@KdvValue AS VARCHAR) + '
		) AS Kdv_' + CAST(@KdvValue AS VARCHAR) + '_Matrahi,

		(
			SELECT ISNULL(SUM(KdvTutari), 0)
			FROM dbo.STOKHAR 
			WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(@KdvValue AS VARCHAR) + '
		) AS Kdv_' + CAST(@KdvValue AS VARCHAR) + '_Tutari' + CHAR(13)
 		SET @prefix = ','
		FETCH NEXT FROM kdv_cursor INTO @KdvValue;
	END

	CLOSE kdv_cursor;
	DEALLOCATE kdv_cursor;

	DROP TABLE #TempKdv;

	-- 2. Matrah toplamı dinamik
	SELECT 
		@kdvToplamMatrah = STRING_AGG(
			'(SELECT ISNULL(SUM(SonTutar - KdvTutari), 0) 
			  FROM dbo.STOKHAR WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(Kdv AS VARCHAR) + ')',
			' + '
		)
	FROM (
		SELECT DISTINCT Kdv FROM dbo.STOKHAR
	) AS KdvTable;

	-- 3. Ana sorgu gövdesi
	SET @baseSql = '
	SELECT 
		SHB.CariKodu,
		SHB.CariAdi,
		SHB.FaturaTarihi,
		SHB.IslemTuru,
		SHB.FisTuru,
		SHB.FatSerNo,
		SHB.FaturaNo,
		SHB.KdvTutari,
		SHB.Tutar - SHB.KdvTutari AS ToplamTutar,
		SHB.Tutar AS GenelTutar,
		' + @kdvList + ',
		SHB.TevkifatTutari,
		' + @kdvToplamMatrah + ' AS MatrahToplami,
		YETKILI Yetkili,
		TCKimlikNo TCKimlikNo,
		MUSVERGI VergiDairesi,
		MUSVERNO VergiNo,
		SHB.Departman,
		SHB.IslemTipi,
		(SELECT DepartmanAdi FROM dbo.VDepartman WHERE Departman = SHB.Departman) AS DepartmanAdi,
		SHB.OdemeBilgisi
	FROM dbo.STOKHARDETBAG AS SHB,AMUSTERI MUS
	WHERE MUS.MUSKOD = SHB.CariKodu AND
		(SHB.FisTuru = N''F'' OR SHB.FisTuru = N''İ'') AND 
	    SHB.FaturaTarihi BETWEEN @Tarih1 AND @Tarih2  
	';

	-- 4. Çalıştır
	EXEC sp_executesql @baseSql, 
		N'@Tarih1 SMALLDATETIME, @Tarih2 SMALLDATETIME',
		@Tarih1,
		@Tarih2
END;
go

 if  not  exists (select * from dbo.syscolumns where id = object_id(N'AMUSTERI') and name=N'MUSADI2')
begin
ALTER TABLE AMUSTERI ADD MUSADI2 nvarchar(100)
end
else begin
ALTER TABLE AMUSTERI alter column MUSADI2 nvarchar(100)
end
GO

IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spCariKartYaz')
DROP PROCEDURE [spCariKartYaz]
go
CREATE   PROCEDURE [dbo].[spCariKartYaz]         
     @MUSNO int,        
     @MUSKOD nvarchar(20),        
     @MUSADI nvarchar(50),        
     @YETKILI nvarchar(30),        
     @OZELKOD1 nvarchar(20),        
     @OZELKOD2 nvarchar(20),        
     @OZELKOD3 nvarchar(20),        
     @OZELKOD4 nvarchar(20),        
     @MUSVERGI nvarchar(50),        
     @MUSVERNO nvarchar(20),        
     @MUSADRES1 nvarchar(50),        
     @MUSADRES2 nvarchar(50),        
     @MUSTEL nvarchar(20),        
     @MUSTEL2 nvarchar(20),        
     @MUSTEL3 nvarchar(20),        
     @MUSFAX nvarchar(20),        
     @MUSCEP nvarchar(20),        
     @MUSACIKLA1 nvarchar(100),        
     @MUSACIKLA2 nvarchar(100),        
     @MUSACIKLA3 nvarchar(100),        
     @MUSACIKLA4 nvarchar(100),        
     @MUSBORC float,        
     @MUSALACAK float,        
     @MUSBAKIYE float,        
     @SIGORTA float,        
     @PLAKA nvarchar(20),        
     @MUSCIN nvarchar(1),        
     @MUSDURUM nvarchar(1),        
     @YUZDE float,        
     @MUSIL nvarchar(25),        
     @MUSILCE nvarchar(25),        
     @ISKONTO float,        
     @RISK float,        
     @SONEXTTAR smalldatetime,        
     @KULNO int,        
     @KULADI nvarchar(20),        
     @Tipi nvarchar(15),        
     @FaturaOPlanGunu int,        
     @GunAy nvarchar(3),        
     @OpsiyonGunu int,        
     @ParaLitre nvarchar(1),        
     @Departman nvarchar(8),        
     @Secim nvarchar(10),        
     @FiyatGrupNo int,        
     @MUSCEP2 nvarchar(20),        
     @FiyatGrupAdi nvarchar(15),        
     @Iskonto1 float,        
     @Iskonto2 float,        
     @Iskonto3 float,        
     @StokKodu nvarchar(30),        
     @StokAdi nvarchar(40),        
     @FatKes nvarchar(1),        
     @TaksitTutari float,        
     @SaticiKodu nvarchar(10),        
     @SaticiAdi nvarchar(25),        
     @Kilitli nvarchar(15),        
     @Odeme nvarchar(1),        
     @Depo nvarchar(30),        
     @Bagkur nvarchar(1),        
     @BagkurNo nvarchar(15),        
     @VergiTipi nvarchar(6),        
     @VergiMukellefi nvarchar(5),        
     @KomisyonYuzdesi float,        
     @BagkurKesenegi float,        
     @SSKNo float,        
     @BorsaSicilNo nvarchar(20),        
     @BelgeNo nvarchar(19),        
     @UstCariNo int,        
     @FaturaAdresNo int,        
     @SevkAdresNo int,        
     @web_kullanici_adi nvarchar(50),        
     @web_kullanici_sifre nvarchar(50),        
     @SektorGrubu nvarchar(30),        
     @CariGrubu nvarchar(30),        
     @BolgeGrubu nvarchar(30),        
     @PuanCarpani float,        
     @AnaRutAdi nvarchar(30),        
     @Gorunum int,        
     @AcilisTarihi smalldatetime,        
     @SMSTelefonu nvarchar(11),        
     @SMSGonder nvarchar(1),        
     @UserType nvarchar(5),        
     @Cinsiyeti nvarchar(5),        
     @Uyrugu nvarchar(30),        
     @AcentaAnlasmaNo int,        
     @AcentaAnlasmaDeger float,        
     @TCKimlikNo nvarchar(11),        
     @Rengi nvarchar(15),        
     @PasaportSeriNo nvarchar(15),        
     @PasaportNo nvarchar(15),        
     @Meslek nvarchar(30),        
     @SKFIK int,        
     @KimlikTuru nvarchar(1),        
     @UpdateDate smallDateTime,        
     @CGTipi nvarchar(2), @Mah_Koyu nvarchar(30),        
     @A_Muh_Kodu nvarchar(20),        
     @S_Muh_Kodu nvarchar(20),        
     @TaksitCekSenetBakiye int,        
     @DSYBTalepteFaturaKesilmesin bit,
	 @MUSADI2	nvarchar(100)
AS            
if exists (select * from AMUSTERI where MUSNO=@MUSNO)       
begin      
update AMUSTERI set       
     MUSKOD=@MUSKOD,        
     MUSADI=@MUSADI,        
     YETKILI=@YETKILI,        
     OZELKOD1=@OZELKOD1,        
     OZELKOD2=@OZELKOD2,        
     OZELKOD3=@OZELKOD3,        
     OZELKOD4=@OZELKOD4,        
     MUSVERGI=@MUSVERGI,        
     MUSVERNO=@MUSVERNO,        
     MUSADRES1=@MUSADRES1,        
     MUSADRES2=@MUSADRES2,        
     MUSTEL=@MUSTEL,        
     MUSTEL2=@MUSTEL2,        
     MUSTEL3=@MUSTEL3,        
     MUSFAX=@MUSFAX,        
     MUSCEP=@MUSCEP,        
     MUSACIKLA1=@MUSACIKLA1,        
     MUSACIKLA2=@MUSACIKLA2,        
     MUSACIKLA3=@MUSACIKLA3,        
     MUSACIKLA4=@MUSACIKLA4,        
     MUSBORC=@MUSBORC,        
     MUSALACAK=@MUSALACAK,        
     MUSBAKIYE=@MUSBAKIYE,        
     SIGORTA=@SIGORTA,        
     PLAKA=@PLAKA,        
     MUSCIN=@MUSCIN,        
     MUSDURUM=@MUSDURUM,        
     YUZDE=@YUZDE,        
     MUSIL=@MUSIL,        
     MUSILCE=@MUSILCE,       
     ISKONTO=@ISKONTO,        
     RISK=@RISK,        
     SONEXTTAR=@SONEXTTAR,        
     KULNO=@KULNO,        
     KULADI=@KULADI,        
     Tipi=@Tipi,        
     FaturaOPlanGunu=@FaturaOPlanGunu,        
     GunAy=@GunAy,        
     OpsiyonGunu=@OpsiyonGunu,        
     ParaLitre=@ParaLitre,        
     Departman=@Departman,        
     Secim=@Secim,        
     FiyatGrupNo=@FiyatGrupNo,        
     MUSCEP2=@MUSCEP2,        
     FiyatGrupAdi=@FiyatGrupAdi,        
     Iskonto1=@Iskonto1,        
     Iskonto2=@Iskonto2,        
     Iskonto3=@Iskonto3,        
     StokKodu=@StokKodu,        
     StokAdi=@StokAdi,        
     FatKes=@FatKes,        
     TaksitTutari=@TaksitTutari,        
     SaticiKodu=@SaticiKodu,        
     SaticiAdi=@SaticiAdi,        
     Kilitli=@Kilitli,        
     Odeme=@Odeme,        
     Depo=@Depo,        
     Bagkur=@Bagkur,        
     BagkurNo=@BagkurNo,        
     VergiTipi=@VergiTipi,        
     VergiMukellefi=@VergiMukellefi,        
     KomisyonYuzdesi=@KomisyonYuzdesi,        
     BagkurKesenegi=@BagkurKesenegi,        
     SSKNo=@SSKNo,        
     BorsaSicilNo=@BorsaSicilNo,        
     BelgeNo=@BelgeNo,        
     UstCariNo=@UstCariNo,        
     FaturaAdresNo=@FaturaAdresNo,        
     SevkAdresNo=@SevkAdresNo,        
     web_kullanici_adi=@web_kullanici_adi,        
     web_kullanici_sifre=@web_kullanici_sifre,        
     SektorGrubu=@SektorGrubu,        
     CariGrubu=@CariGrubu,        
     BolgeGrubu=@BolgeGrubu,        
     PuanCarpani=@PuanCarpani,        
     AnaRutAdi=@AnaRutAdi,        
     Gorunum=@Gorunum,        
     AcilisTarihi=@AcilisTarihi,        
     SMSTelefonu=@SMSTelefonu,        
     SMSGonder=@SMSGonder,        
     UserType=@UserType,        
     Cinsiyeti=@Cinsiyeti,        
     Uyrugu=@Uyrugu,        
     AcentaAnlasmaNo=@AcentaAnlasmaNo,        
     AcentaAnlasmaDeger=@AcentaAnlasmaDeger,        
     TCKimlikNo=@TCKimlikNo,        
     Rengi=@Rengi,        
     PasaportSeriNo=@PasaportSeriNo,        
     PasaportNo=@PasaportNo,        
     Meslek=@Meslek,        
     SKFIK=@SKFIK,        
     KimlikTuru=@KimlikTuru,        
     UpdateDate=@UpdateDate,        
     CGTipi=@CGTipi,         
     Mah_Koyu=@Mah_Koyu,        
     A_Muh_Kodu=@A_Muh_Kodu,        
     S_Muh_Kodu=@S_Muh_Kodu,        
     TaksitCekSenetBakiye=@TaksitCekSenetBakiye,        
     DSYBTalepteFaturaKesilmesin=@DSYBTalepteFaturaKesilmesin, 
	 MUSADI2 = @MUSADI2
  where MUSNO=@MUSNO      
end else       
begin       
INSERT AMUSTERI (  MUSNO, MUSKOD, MUSADI, YETKILI, OZELKOD1, OZELKOD2, OZELKOD3, OZELKOD4, MUSVERGI, MUSVERNO, MUSADRES1, MUSADRES2, MUSTEL, MUSTEL2, MUSTEL3, MUSFAX, MUSCEP, MUSACIKLA1, MUSACIKLA2,     
                         MUSACIKLA3, MUSACIKLA4, MUSBORC, MUSALACAK, MUSBAKIYE, SIGORTA, PLAKA, MUSCIN, MUSDURUM, YUZDE, MUSIL, MUSILCE, ISKONTO, RISK, SONEXTTAR, KULNO, KULADI, Tipi, FaturaOPlanGunu, GunAy,     
                         OpsiyonGunu, ParaLitre, Departman, Secim, FiyatGrupNo, MUSCEP2, FiyatGrupAdi, Iskonto1, Iskonto2, Iskonto3, StokKodu, StokAdi, FatKes, TaksitTutari, SaticiKodu, SaticiAdi, Kilitli, Odeme, Depo, Bagkur, BagkurNo, VergiTipi,     
                         VergiMukellefi, KomisyonYuzdesi, BagkurKesenegi, SSKNo, BorsaSicilNo, BelgeNo, UstCariNo, FaturaAdresNo, SevkAdresNo, web_kullanici_adi, web_kullanici_sifre, SektorGrubu, CariGrubu, BolgeGrubu, PuanCarpani,     
                         AnaRutAdi, Gorunum, AcilisTarihi, SMSTelefonu, SMSGonder, UserType, Cinsiyeti, Uyrugu, AcentaAnlasmaNo, AcentaAnlasmaDeger, TCKimlikNo, Rengi, PasaportSeriNo, PasaportNo, Meslek, SKFIK, KimlikTuru, UpdateDate,     
                         CGTipi, Mah_Koyu, A_Muh_Kodu, S_Muh_Kodu, TaksitCekSenetBakiye, DSYBTalepteFaturaKesilmesin,MUSADI2    
) VALUES(@MUSNO,        
      @MUSKOD,        
     @MUSADI,        
     @YETKILI,        
     @OZELKOD1,        
     @OZELKOD2,        
     @OZELKOD3,        
     @OZELKOD4,        
     @MUSVERGI,        
     @MUSVERNO,        
     @MUSADRES1,        
     @MUSADRES2,        
     @MUSTEL,        
     @MUSTEL2,        
     @MUSTEL3,        
     @MUSFAX,        
     @MUSCEP,        
     @MUSACIKLA1,        
     @MUSACIKLA2,        
     @MUSACIKLA3,        
     @MUSACIKLA4,        
     @MUSBORC,        
     @MUSALACAK,        
     @MUSBAKIYE,        
     @SIGORTA,        
     @PLAKA,        
     @MUSCIN,        
     @MUSDURUM,        
     @YUZDE,        
     @MUSIL,        
     @MUSILCE,        
     @ISKONTO,        
     @RISK,        
     @SONEXTTAR,        
     @KULNO,        
     @KULADI,        
     @Tipi,        
     @FaturaOPlanGunu,        
     @GunAy,        
     @OpsiyonGunu,        
     @ParaLitre,        
     @Departman,        
     @Secim,        
     @FiyatGrupNo,        
     @MUSCEP2,        
     @FiyatGrupAdi,        
     @Iskonto1,        
     @Iskonto2,        
     @Iskonto3,        
     @StokKodu,        
     @StokAdi,        
     @FatKes,        
     @TaksitTutari,        
     @SaticiKodu,        
     @SaticiAdi,        
     @Kilitli,        
     @Odeme,        
     @Depo,        
     @Bagkur,        
     @BagkurNo,        
     @VergiTipi,        
     @VergiMukellefi,        
     @KomisyonYuzdesi,        
     @BagkurKesenegi,        
     @SSKNo,        
     @BorsaSicilNo,        
     @BelgeNo,        
     @UstCariNo,        
     @FaturaAdresNo,        
     @SevkAdresNo,        
     @web_kullanici_adi,        
     @web_kullanici_sifre,        
     @SektorGrubu,        
     @CariGrubu,        
     @BolgeGrubu,        
     @PuanCarpani,        
     @AnaRutAdi,        
     @Gorunum,        
     @AcilisTarihi,        
     @SMSTelefonu,        
     @SMSGonder,        
     @UserType,        
     @Cinsiyeti,        
     @Uyrugu,        
     @AcentaAnlasmaNo,        
     @AcentaAnlasmaDeger,        
     @TCKimlikNo,        
     @Rengi,        
     @PasaportSeriNo,        
     @PasaportNo,        
 @Meslek,        
     @SKFIK,        
     @KimlikTuru,        
     @UpdateDate,        
     @CGTipi,         
     @Mah_Koyu,        
     @A_Muh_Kodu,        
     @S_Muh_Kodu,        
     @TaksitCekSenetBakiye,        
     @DSYBTalepteFaturaKesilmesin,
	 @MUSADI2)            
end  

GO
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spCariKartEkle')
DROP PROCEDURE [spCariKartEkle]
go
CREATE  PROCEDURE [dbo].[spCariKartEkle]  as   
DECLARE @CariNo int    
DECLARE @CariKodu nvarchar(20)    
DECLARE @CariAdi nvarchar(50)    
DECLARE @FiyatGrupNo int    
declare @Tarih datetime    
DECLARE @CariVarmi int    
declare @GelenCariKodu nvarchar(20)  
SET @FiyatGrupNo = (select NoId from GRUP where Turu ='F' and GrupAdi='F.G.A.YOK')    
SET @Tarih = getdate()    
DECLARE curAcari CURSOR FOR   
select MUSNO,MUSKOD,MUSADI from dbo.ACARI   
where not EXISTS(select * from dbo.AMUSTERI where dbo.AMUSTERI.MUSNO=dbo.ACARI.MUSNO)   
group by MUSNO,MUSKOD,MUSADI    
OPEN curAcari    
FETCH NEXT FROM curAcari into @CariNo,@CariKodu,@CariAdi    
WHILE @@FETCH_STATUS = 0 BEGIN      
exec.spCariKartYaz @CariNo, @CariKodu, @CariAdi,'','','','','','','', '','','','','','','','','','','',0,0,0,0,  
'','M','A',0,'','',0,0,@Tarih,1,'Admin','',0,'Gün',0,'P','01000000','H',@FiyatGrupNo,'','F.G.A.YOK',0, 0,  
0,'','','H',0,'','','Açık','H','','H','','Tüccar','Evet',0,0,0,'','',@CariNo,1,1,'','','','','',1,'',0,@Tarih,   
0,'H','User','Erkek','T.C.',0,0,'','-16777211','','','',0,'N',@Tarih,'00','', '','',0,0,''    
FETCH NEXT FROM curAcari into @CariNo,@CariKodu,@CariAdi   
 END    
CLOSE curAcari   
DEALLOCATE curAcari
go
IF EXISTS (SELECT * FROM sys.objects WHERE type IN ('FN','IF','TF') AND name = 'fn_StokFiyati') DROP FUNCTION [fn_StokFiyati]
go
CREATE  FUNCTION [dbo].[fn_StokFiyati] 
	(@StokKodu nvarchar(40), 
	 @Tip nvarchar(4) = 'fifo',
	 @UstTarih datetime = NULL)
RETURNS float
AS
BEGIN
  IF lower(@Tip) = 'fifo' BEGIN
    DECLARE curStokHar CURSOR FAST_FORWARD FOR
      SELECT	Miktar, (((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar)
      from	STOKHAR 
      where 	StokKodu = @StokKodu and GC = 'G' and Miktar <> 0 and
                BirimMiktar IS NOT NULL and Miktar IS NOT NULL and IslemTuru not in ('Depo Vir.', 'Alış İade', 'Satış İade','Mik.Değiş') and
				FaturaTarihi <= ISNULL( @UstTarih, FaturaTarihi )
      order by FaturaTarihi DESC,NoId DESC
  END ELSE BEGIN
    DECLARE curStokHar CURSOR FAST_FORWARD FOR
      SELECT	Miktar, (((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar)
      from	STOKHAR 
      where 	StokKodu = @StokKodu and GC = 'G' and Miktar <> 0 and
                BirimMiktar IS NOT NULL and Miktar IS NOT NULL  and IslemTuru not in ('Depo Vir.', 'Alış İade', 'Satış İade','Mik.Değiş') and
				FaturaTarihi <= ISNULL( @UstTarih, FaturaTarihi )
      order by FaturaTarihi,NoId
  END                

  DECLARE @Miktar float, @BirimFiyat float, @NoId int

  DECLARE @TopSatisAdedi float
  SET @TopSatisAdedi = (SELECT ISNULL(SUM(Miktar), 0) from STOKHAR
		where GC='C' and IslemTuru not in ('Depo Vir.', 'Alış İade', 'Satış İade','Mik.Değiş') and StokKodu = @StokKodu and
		FaturaTarihi <= ISNULL( @UstTarih, FaturaTarihi ) )
  DECLARE @TopAlisAdedi float
  SET @TopAlisAdedi = (SELECT ISNULL(SUM(Miktar), 0) from STOKHAR
		where GC='G' and IslemTuru not in ('Depo Vir.', 'Alış İade', 'Satış İade','Mik.Değiş') and StokKodu =  @StokKodu and
		FaturaTarihi <= ISNULL( @UstTarih, FaturaTarihi ) )
  DECLARE @TopKalanTutar float, @KalanAdet float
  IF @TopAlisAdedi > @TopSatisAdedi BEGIN
	  --------------------------------------------------------
	  OPEN curStokHar
	  --Önce satışları yapalım
	  ----------------------------------
	  FETCH NEXT FROM curStokHar into @Miktar, @BirimFiyat
	  WHILE @@FETCH_STATUS = 0 and @TopSatisAdedi > @Miktar  BEGIN
	    SET @TopSatisAdedi = @TopSatisAdedi - @Miktar
	
	    FETCH NEXT FROM curStokHar into @Miktar, @BirimFiyat
	  END
	  -----------------------------------
	  -- Kalan alış hareketleri varsa (satışlarla bitmeyen)
	  -----------------------------
	  DECLARE @Fiyat float
	  if @@FETCH_STATUS = 0 BEGIN
	    SET @KalanAdet     = @Miktar - @TopSatisAdedi
	    SET @TopKalanTutar = @KalanAdet * @BirimFiyat
	    FETCH NEXT FROM curStokHar into @Miktar, @BirimFiyat
	    WHILE @@FETCH_STATUS = 0 BEGIN
	      SET @KalanAdet = @KalanAdet + @Miktar
	      SET @TopKalanTutar = @TopKalanTutar + @Miktar * @BirimFiyat
	      FETCH NEXT FROM curStokHar into @Miktar, @BirimFiyat
	    END
	
	    if @KalanAdet <> 0 
	      SET @Fiyat = @TopKalanTutar/@KalanAdet
	    else
	      SET @Fiyat = NULL --Bir terslik olmalı
	  END
	  CLOSE curStokHar
	  DEALLOCATE curStokHar
  END
  ELSE BEGIN -- AlışAdedi < SatisAdedi ise
	IF lower(@Tip)='lifo'
		SET @Fiyat = (	SELECT	TOP 1 (((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar)
			      	FROM	STOKHAR
				WHERE	StokKodu = @StokKodu and GC = 'G' and Miktar <> 0 and
					BirimMiktar IS NOT NULL and Miktar IS NOT NULL and IslemTuru not in ('Depo Vir.', 'Alış İade', 'Satış İade','Mik.Değiş') and
				FaturaTarihi <= ISNULL( @UstTarih, FaturaTarihi ) 
				ORDER BY FaturaTarihi,NoId )
	ELSE
		SET @Fiyat = (	SELECT	TOP 1 (((((TopTutar-KdvTutari)/Miktar)*((100-AltIskYuzde1)/100))*((100-AltIskYuzde2)/100))*((100-AltIskYuzde3)/100))+((SatMasrafTutari+KdvTutari)/Miktar)
			      	FROM	STOKHAR
				WHERE	StokKodu = @StokKodu and GC = 'G' and Miktar <> 0 and
					BirimMiktar IS NOT NULL and Miktar IS NOT NULL and IslemTuru not in ('Depo Vir.', 'Alış İade', 'Satış İade','Mik.Değiş') and
				FaturaTarihi <= ISNULL( @UstTarih, FaturaTarihi )
				ORDER BY FaturaTarihi DESC,NoId DESC )
  END
  RETURN @Fiyat
END
GO
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spTahsilVadeRaporu') 
DROP PROCEDURE [spTahsilVadeRaporu]
go
 

CREATE  proc [dbo].[spTahsilVadeRaporu] @CariNo int       
as      
-- [spTahsilVadeRaporu] 1  
-- select MUSADI,MUSNO,Kilitli from AMUSTERI where MUSNO=1
create table #odeme      
(      
  RecID integer Identity (1, 1) not null, NoId integer, IslemNo integer, Tarih datetime,      
  CariNo integer,  IslemTuru nvarchar(20) COLLATE DATABASE_DEFAULT,  Bakiye float,  Borc_Kullanilan float ,  Devreden float,  Borc float,      
  Devir float  PRIMARY KEY CLUSTERED  (RecID)      
)      
      
      
Declare @DagitimTutari float      
set @DagitimTutari = (select SUM (BORC-ALACAK) from ACARI WHERE MUSNO=@CariNo)      
      
Declare  @NoId integer,  @IslemNo integer,  @Tarih datetime,  @Borc decimal (28, 14),        
   @Borc_Kullanilan decimal (28, 14),  @Son_Kalan_Tutar float,  @IslemTuru nvarchar(20), @TmpTutar decimal(28, 14)      
      
set @TmpTutar = @DagitimTutari      
      
declare cr_Prepare cursor FAST_FORWARD READ_ONLY for      
select         
  odm.NoId,      
  odm.IslemNo,      
  odm.Tarih,      
  odm.CariNo,      
  odm.Borc,      
  odm.BAAcikla      
from Odeme odm      
where      
   odm.CariNo = @CariNo and      
   IsNull (odm.Borc, 0) > 0      
order by      
  odm.Tarih desc,NoId desc      
      
open cr_Prepare      
fetch next from cr_Prepare      
into      
  @NoId,      
  @IslemNo,      
  @Tarih,      
  @CariNo,      
  @Borc,      
  @IslemTuru      
      
while (@@FETCH_STATUS = 0) and (@TmpTutar > 0.0)      
begin      
  if @Borc >= @TmpTutar       
  begin      
    set @Borc_Kullanilan = @TmpTutar      
 set @Son_Kalan_Tutar = @TmpTutar - @Borc      
 set @TmpTutar = 0.0      
  end      
  else      
  begin      
    set @TmpTutar = @TmpTutar - @Borc      
 set @Borc_Kullanilan = @Borc      
 set @Son_Kalan_Tutar = @TmpTutar      
  end      
      
  insert into #odeme       
  (      
    NoId,      
    IslemNo,      
    Tarih,      
    CariNo,      
    Borc,      
 Borc_Kullanilan,      
 Devreden,      
 Bakiye,      
 Devir,      
 IslemTuru      
  )      
  values      
  (      
 @NoId,       
 @IslemNo,      
    @Tarih,      
    @CariNo,      
    @Borc,      
 @Borc_Kullanilan,      
 @Son_Kalan_Tutar,      
 @DagitimTutari,      
 @Son_Kalan_Tutar+@Borc,      
 @IslemTuru      
  )      
      
  fetch next from cr_Prepare      
  into      
    @NoId,      
    @IslemNo,      
    @Tarih,      
    @CariNo,      
    @Borc,      
 @IslemTuru      
end      
begin      
close cr_Prepare      
deallocate cr_Prepare      
     if exists (select * from Parametre  where (Param='Vadesi Geçen Kilitlenecek Gün' and Deger >'0' ) or (Param='Vadesi Geçen Toplam' and Deger>'0'))
 begin
       
--  spTahsilVadeRaporu 42      
update AMUSTERI SET Kilitli='Kilitli' WHERE MUSNO IN (      
select  distinct o.CariNo  from #odeme o      
where o.Devir > (select Deger from Parametre  where Param = 'Vadesi Geçen Toplam')      
      and CAST(GETDATE() - o.Tarih as int) > (select Deger from Parametre  where Param = 'Vadesi Geçen Kilitlenecek Gün')       
 ) AND Kilitli='Açık'      
       
 update AMUSTERI SET  Kilitli='Açık' WHERE MUSNO NOT IN (      
select  distinct o.CariNo  from #odeme o      
where o.Devir > (select Deger from Parametre  where Param = 'Vadesi Geçen Toplam')      
      and CAST(GETDATE() - o.Tarih as int) > (select Deger from Parametre  where Param = 'Vadesi Geçen Kilitlenecek Gün')       
) AND Kilitli='Kilitli'      
   end  
end   
select      
  a.MUSNO  [Cari No],      
  a.MUSKOD [Cari Kodu],      
  a.MUSADI [Cari Adı],      
  o.IslemTuru [İşlem Türü],      
  o.IslemNo [İşlem No],      
  c.ACIKLAMA [Açıklama],      
  c.TARIH  [İşlem Tarihi],      
  o.Tarih [Vade Tarihi],  
  CAST(GETDATE() - o.Tarih as int) [Geciken Gün],  
  o.Devreden,
  o.Borc [Borç], 
  o.Devir,      
  o.Bakiye,       
  d.FatSerNo [Fatura Seri No],      
  d.FaturaNo [Fatura No]      
 from #odeme o      
 inner join  AMUSTERI a on  o.CariNo = a.MUSNO      
 inner join  ACARI    c on c.ISLEMNO = o.IslemNo and  c.MUSNO = o.CariNo and c.BAACIKLA = o.IslemTuru     
 left join   STOKHARDETBAG d on o.IslemNo = d.IslemNo      
 Order by o.Tarih desc, o.NoId desc   

GO
IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spTahsilVadeRaporu_Rut') 
DROP PROCEDURE [spTahsilVadeRaporu_Rut]
go

CREATE   proc [dbo].[spTahsilVadeRaporu_Rut] (@RutAdi nvarchar(max),@RutGunu nvarchar(max),@RutSatici nvarchar(max),@TarihParam date = null)        
as          
create table #odeme          
(          
  RecID integer Identity (1, 1) not null, NoId integer, IslemNo integer, Tarih datetime,          
  CariNo integer,  IslemTuru nvarchar(20) COLLATE DATABASE_DEFAULT,  Bakiye float,  Borc_Kullanilan float ,  Devreden float,  Borc float,  
  Valor float,  Devir float  PRIMARY KEY CLUSTERED  (RecID)          
)          
        
DECLARE @CariNo int       
Declare @DagitimTutari float,@Valor float          
Declare @NoId integer,  @IslemNo integer,  @Tarih datetime,  @Borc decimal (28, 14), @Borc_Kullanilan decimal (28, 14),  @Son_Kalan_Tutar float,  @IslemTuru nvarchar(20), @TmpTutar decimal(28, 14)          
        
declare cr_Rut cursor FAST_FORWARD READ_ONLY for          
select  CariNo from [VRUT] where @RutAdi is not null and RutAdi =@RutAdi and Deger = @RutGunu and SaticiAdi = @RutSatici       
union ALL       
select MUSNO from AMUSTERI where MUSBAKIYE > 0.01 and  @RutAdi is null      
open cr_Rut          
fetch next from cr_Rut          
into  @CariNo        
while (@@FETCH_STATUS = 0)        
begin        
        
 set @DagitimTutari = (select SUM (BORC-ALACAK) from ACARI WHERE MUSNO=@CariNo)           
 set @TmpTutar = @DagitimTutari          
          
 declare cr_Prepare cursor FAST_FORWARD READ_ONLY for          
 select             
   odm.NoId,          
   odm.IslemNo,          
   odm.Tarih,          
   odm.CariNo,          
   odm.Borc,          
   odm.BAAcikla          
 from Odeme odm          
 where          
    odm.CariNo = @CariNo and          
    IsNull (odm.Borc, 0) > 0          
 order by          
   odm.Tarih desc,NoId desc          
          
 open cr_Prepare          
 fetch next from cr_Prepare          
 into          
   @NoId,          
   @IslemNo,          
   @Tarih,          
   @CariNo,          
   @Borc,          
   @IslemTuru          
   
 while (@@FETCH_STATUS = 0) and (@TmpTutar > 0.0)          
 begin           
   if @Borc >= @TmpTutar           
   begin          
  set @Borc_Kullanilan = @TmpTutar          
  set @Son_Kalan_Tutar = @TmpTutar - @Borc          
  set @TmpTutar = 0.0      
  set @Valor = @Son_Kalan_Tutar + @Borc  
   end          
   else          
   begin          
  set @TmpTutar = @TmpTutar - @Borc          
  set @Borc_Kullanilan = @Borc          
  set @Son_Kalan_Tutar = @TmpTutar     
  set @Valor = @Borc;  
   end    
          
   insert into #odeme           
   (          
 NoId,          
 IslemNo,          
 Tarih,          
 CariNo,          
 Borc,          
 Borc_Kullanilan,          
 Devreden,          
 Bakiye,          
 Devir,          
 IslemTuru,  
 Valor  
   )          
   values          
   (          
 @NoId,           
 @IslemNo,          
 @Tarih,          
 @CariNo,          
 @Borc,          
 @Borc_Kullanilan,          
 @Son_Kalan_Tutar,          
 @DagitimTutari,          
 @Son_Kalan_Tutar+@Borc,          
 @IslemTuru,  
 @Valor  
   )          
          
   fetch next from cr_Prepare          
 into          
   @NoId,          
   @IslemNo,          
   @Tarih,          
   @CariNo,          
   @Borc,          
   @IslemTuru          
 end          
            
 close cr_Prepare          
 deallocate cr_Prepare           
        
   FETCH NEXT FROM cr_Rut  INTO @CariNo        
end           
close cr_Rut          
deallocate cr_Rut    
  
IF @TarihParam IS NULL  
BEGIN        
 select          
  RecID,        
  o.NoId,        
  a.MUSNO  [Cari No],          
  a.MUSKOD [Cari Kodu],          
  a.MUSADI [Cari Adı],          
  o.IslemTuru [İşlem Türü],          
  o.IslemNo [İşlem No],          
  c.ACIKLAMA [Açıklama],          
  c.TARIH  [İşlem Tarihi],          
  o.Tarih  [Vade Tarihi],          
  CAST(GETDATE() - o.Tarih as int) [Geciken Gün],          
  Devreden,        
  o.Borc [Borç],          
  o.Devir,          
  o.Bakiye,          
  d.FatSerNo [Fatura Seri No],          
  d.FaturaNo [Fatura No],  
  a.SaticiAdi,  
  a.SaticiKodu,  
  ROUND(SUM(o.Valor * CAST(GETDATE() - o.Tarih AS int))   
   OVER (PARTITION BY a.MUSKOD)   
  / o.Bakiye,0)  [Ortalama Gecikme],  
  
  GETDATE() -ROUND(SUM(o.Valor * CAST(GETDATE() - o.Tarih AS int))   
   OVER (PARTITION BY a.MUSKOD)   
  / o.Bakiye,0) [Ortalama Vade Tarihi]  
 from #odeme o          
 inner join  AMUSTERI a on  o.CariNo = a.MUSNO          
 inner join  ACARI    c on c.ISLEMNO = o.IslemNo and c.MUSNO = o.CariNo and c.BAACIKLA = o.IslemTuru         
 left join   STOKHARDETBAG d on o.IslemNo = d.IslemNo        
 Order by a.MUSNO,o.Tarih desc, o.NoId desc    
 END   
 ELSE   
 BEGIN  
 SELECT          
   o.RecID,        
   o.NoId,        
   a.MUSNO AS [Cari No],          
   a.MUSKOD AS [Cari Kodu],          
   a.MUSADI AS [Cari Adı],          
   o.IslemTuru AS [İşlem Türü],          
   o.IslemNo AS [İşlem No],          
   c.ACIKLAMA AS [Açıklama],          
   c.TARIH  [İşlem Tarihi],          
   o.Tarih  [Vade Tarihi],           
   CAST(GETDATE() - o.Tarih AS int) AS [Geciken Gün],          
   o.Devreden,        
   o.Borc AS [Borç],          
   o.Devir,          
   o.Bakiye,          
   d.FatSerNo AS [Fatura Seri No],          
   d.FaturaNo AS [Fatura No],  
   a.SaticiAdi,  
   a.SaticiKodu,  
  ROUND(SUM(o.Valor * CAST(GETDATE() - o.Tarih AS int))   
   OVER (PARTITION BY a.MUSKOD)   
  / o.Bakiye,0)  [Ortalama Gecikme],  
  
  GETDATE() -ROUND(SUM(o.Valor * CAST(GETDATE() - o.Tarih AS int))   
   OVER (PARTITION BY a.MUSKOD)   
  / o.Bakiye,0) [Ortalama Vade Tarihi]  
 FROM AMUSTERI a  
 CROSS APPLY (  
  SELECT TOP 1 *  
  FROM #odeme o  
  WHERE o.CariNo = a.MUSNO AND o.Tarih <= @TarihParam  
  ORDER BY o.Tarih DESC, o.NoId DESC  
 ) o  
 INNER JOIN ACARI c ON c.ISLEMNO = o.IslemNo AND c.MUSNO = o.CariNo AND c.BAACIKLA = o.IslemTuru  
 LEFT JOIN STOKHARDETBAG d ON o.IslemNo = d.IslemNo  
 ORDER BY a.MUSNO, o.Tarih DESC, o.NoId DESC;  
 END

 go
 
--[sp_GunlukDurumRaporu_new] '20240101','20250302',1,'','01000000'
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_GunlukDurumRaporu_new') 
DROP PROCEDURE sp_GunlukDurumRaporu_new
go
 
CREATE   procedure [dbo].[sp_GunlukDurumRaporu_new](  
    @Tarih1    DATETIME,  
    @Tarih2    DATETIME,  
    @KulNo     NVARCHAR(5) = NULL,  
    @SaticiNo  NVARCHAR(25) = NULL,  
    @Departman NVARCHAR(10) = NULL  
)      
AS      
--   sp_GunlukDurumRaporu '2024-04-15 12:00AM','2024-04-29 12:00AM','T'      
BEGIN      
    DECLARE @SQL nvarchar(max);      
 DECLARE @Fiyat nvarchar(30);      
    DECLARE @KulNoStr nvarchar(30),   
   @SaticiNoStrSH  nvarchar(30),  
   @SaticiNoStrK  nvarchar(50),  
   @DepartmanStr nvarchar(50);  
 --select @Fiyat = Deger from  Parametre where Param = 'Günlük Kar Raporu Kullanılacak Fiyat';      
    IF (@Fiyat = '') OR (@Fiyat IS NULL)      
 BEGIN      
  SET @Fiyat = 'StokKartiFiyat1';      
 END;      
      
      
 IF @KulNo IS NULL      
 BEGIN      
  SET @KulNoStr = '';        
 END      
 ELSE      
 BEGIN      
  SET @KulNoStr = ' AND sh.KULNO = ' + @KulNo;        
 END;       
  
 IF @SaticiNo IS NULL      
 BEGIN      
  SET @SaticiNoStrSH = '';      
  SET @SaticiNoStrK = '';     
 END      
 ELSE      
 BEGIN      
  SET @SaticiNoStrSH = ' AND sh.Satici = ' + @KulNo;       
  SET @SaticiNoStrK = ' AND sh.SaticiKodu = ' + @KulNo;   
 END;     
  
 IF @Departman IS NULL      
 BEGIN      
  SET @DepartmanStr = '';        
 END      
 ELSE      
 BEGIN      
  SET @DepartmanStr = ' AND sh.Departman like ''' + @Departman + '%''';        
 END;       
   
    SET @SQL = '  
    select 1 No, ''Fatura Toplami'' Turu,  
           CASE WHEN IslemTuru = ''Prk.Satış'' THEN ''Veresiye Prk.Satış'' ELSE IslemTuru END IslemTuru,  
           '''' NakitVisa,  
           sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar,  
           sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,  
           sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar,  
           SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik  
    from STOKHAR sh  
    LEFT JOIN StokFiyatlari sf on sf.StokNo = sh.StokNo  
    LEFT JOIN KASA K ON K.ISLEMNO = sh.IslemNo  
    where FisTuru=''F''   
      and IslemTuru in (''Satış'',''Alış'',''Alış İade'',''Satış İade'',''Prk.Satış'')  
      and not exists(select 1 from KASA K where K.ISLEMNO = sh.IslemNo)  
      and sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2'''   
      + @KulNoStr + @SaticiNoStrSH + @Departman + '  
    group by IslemTuru  
  
    UNION ALL  
  
    SELECT 2,IslemTuru, k.BAACIKLA,NakitVisa,  
           sum(Miktar*BirimFiyat*(100+Kdv)/100),  
           sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)),  
           sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)),  
           SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+'))  
    from STOKHAR sh  
    left JOIN KASA k ON k.ISLEMNO = sh.IslemNo  
    LEFT JOIN StokFiyatlari sf on sf.StokNo = sh.StokNo  
    WHERE FisTuru=''F''   
      AND sh.IslemTuru = ''Prk.Satış''  
      AND k.BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')  
      AND sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2'''  
      + @KulNoStr + @SaticiNoStrSH + @Departman + '  
    GROUP BY sh.IslemTuru,k.BAACIKLA,NakitVisa  
  
    UNION ALL  
  
    select 3,''Diğer Kasa Hareketleri'',BAACIKLA,'''' , SUM(BORC),0,0,''''   
    from KASA sh   
    where BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')  
      and not exists(select 1 from STOKHARDETBAG db where db.IslemNo = sh.ISLEMNO)  
      and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'''  
      + @KulNoStr + @SaticiNoStrK + @Departman + '  
    group by BAACIKLA  
  
    UNION ALL  
  
    select 4,''Faturalı Kasa Hareketleri'',BAACIKLA,'''', SUM(BORC),0,0,''''    
    from KASA sh   
    where BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')  
      and exists(select 1 from STOKHARDETBAG db where db.IslemNo = sh.ISLEMNO)  
      and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'''  
      + @KulNoStr + @SaticiNoStrK + @Departman + '  
    group by BAACIKLA  
  
    UNION ALL  
  
    SELECT 5,''Çek -Senet Girişleri'',BAACIKLA,'''',SUM(sh.ALACAK),0,0,''''    
    FROM dbo.ACARI sh  
    WHERE BAACIKLA in(''Çek Girişi'',''Senet Girişi'')  
      and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'''  
      + @KulNoStr + @SaticiNoStrK + @Departman + '  
    group by BAACIKLA  
  
    UNION ALL  
  
    SELECT 6,''Ödeme Islemleri'',BAACIKLA,'''',SUM(sh.BORC),0,0,''''   
    FROM dbo.ACARI sh  
    WHERE BAACIKLA = ''Ödeme''  
      and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'''  
      + @KulNoStr + @SaticiNoStrK + @Departman + '  
    group by BAACIKLA  
    order by 1';   
      
 SET @sql =  REPLACE(@Sql,'@Tarih1',CONVERT(nvarchar(8),@Tarih1,112) + ' ' + convert(nvarchar(8),@Tarih1,114 ))     
 SET @sql =  REPLACE(@Sql,'@Tarih2',CONVERT(nvarchar(8),@Tarih2,112) + ' ' + convert(nvarchar(8),@Tarih2,114 ))        
 --PRINT @SQL      
 EXEC sp_executesql  @sql;      
END;    

	 go
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_Fat_GelGid_KDV_Raporu')
	DROP PROCEDURE [sp_Fat_GelGid_KDV_Raporu]
	go

	create PROCEDURE [dbo].[sp_Fat_GelGid_KDV_Raporu]
(
    @Tarih1 DATETIME,
    @Tarih2 DATETIME
)
AS
BEGIN
    SET NOCOUNT ON;

    --------------------------------------------------------------------
    -- (1) DEVİR SATIRI – Önceki ayların toplamı
    --------------------------------------------------------------------
    SELECT 
        0 AS SiraNo,
        @Tarih1 AS TARIH,
        NULL AS ISLEMNO,
        'Önceki Devir' AS IslemTuru,
		'' eFaturaNo,
        NULL AS No,
        'DEVİR TOPLAMI' AS Adi,
        ISNULL(SUM(Tutar), 0) AS Tutar,
        ISNULL(SUM(KdvTutari), 0) AS KdvTutari,
        FORMAT(@Tarih1, 'yyyy-MM') AS AyYil,
        'Önceki Devir - ' + FORMAT(@Tarih1, 'yyyy-MM') AS IslemTuruTarih
    FROM (
            -- Gider (Pozitif)
            SELECT Tutar, KdvTutari
            FROM GELGID
            WHERE BAACIKLA = 'Gider'
              AND KdvTutari > 0
              AND TARIH < @Tarih1

            UNION ALL

            -- Gelir (Negatif)
            SELECT Tutar * -1, KdvTutari * -1
            FROM GELGID
            WHERE BAACIKLA = 'Gelir'
              AND KdvTutari > 0
              AND TARIH < @Tarih1

            UNION ALL

            -- Stok giriş (Pozitif)
            SELECT Tutar, KdvTutari
            FROM STOKHARDETBAG
            WHERE FisTuru = 'F'
              AND GC = 'G'
              AND KdvTutari > 0
              AND FaturaTarihi < @Tarih1

            UNION ALL

            -- Stok çıkış (Negatif)
            SELECT Tutar * -1, KdvTutari * -1
            FROM STOKHARDETBAG
            WHERE FisTuru = 'F'
              AND GC = 'C'
              AND KdvTutari > 0
              AND FaturaTarihi < @Tarih1
        ) AS Devir

    UNION ALL

    --------------------------------------------------------------------
    -- (2) DÖNEM İÇİ KAYITLAR (@Tarih1 - @Tarih2)
    --------------------------------------------------------------------
    SELECT  
        SiraNo,
        TARIH,
        ISLEMNO,
        IslemTuru,
		BelgeNo EFaturaNo,
        No,
        Adi,
        Tutar,
        KdvTutari,
        FORMAT(TARIH, 'yyyy-MM') AS AyYil,
        IslemTuru + ' - ' + FORMAT(TARIH, 'yyyy-MM') AS IslemTuruTarih
    FROM (
            ----------------------------------------------------------------
            -- GİDER (pozitif)
            ----------------------------------------------------------------
            SELECT  
                2 AS SiraNo,
                TARIH,
                ISLEMNO,
                BAACIKLA AS IslemTuru,
				BelgeNo,
                MUSNO AS No,
                (GELGIDADI + '--' + GELGIDKODU) AS Adi,
                Tutar,
                KdvTutari
            FROM GELGID
            WHERE BAACIKLA = 'Gider'
              AND KdvTutari > 0

            UNION ALL

            ----------------------------------------------------------------
            -- GELİR (negatif)
            ----------------------------------------------------------------
            SELECT  
                4 AS SiraNo,
                TARIH,
                ISLEMNO,
                BAACIKLA,
				BelgeNo,
                MUSNO,
                (GELGIDADI + '--' + GELGIDKODU),
                Tutar * -1 AS Tutar,
                KdvTutari * -1 AS KdvTutari
            FROM GELGID
            WHERE BAACIKLA = 'Gelir'
              AND KdvTutari > 0

            UNION ALL

            ----------------------------------------------------------------
            -- STOK GİRİŞ (pozitif)
            ----------------------------------------------------------------
            SELECT
                1 AS SiraNo,
                FaturaTarihi AS TARIH,
                IslemNo,
                IslemTuru,
				eFaturaNo,
                CariNo,
                CariAdi,
                Tutar,
                KdvTutari
            FROM STOKHARDETBAG
            WHERE FisTuru = 'F'
              AND GC = 'G'
              AND KdvTutari > 0

            UNION ALL

            ----------------------------------------------------------------
            -- STOK ÇIKIŞ (negatif)
            ----------------------------------------------------------------
            SELECT
                3 AS SiraNo,
                FaturaTarihi AS TARIH,
                IslemNo,
                IslemTuru,
				eFaturaNo,
                CariNo,
                CariAdi,
                Tutar * -1,
                KdvTutari * -1
            FROM STOKHARDETBAG
            WHERE FisTuru = 'F'
              AND GC = 'C'
              AND KdvTutari > 0
        ) X
    WHERE TARIH >= @Tarih1
      AND TARIH < DATEADD(DAY, 1, @Tarih2)
    ORDER BY TARIH, SiraNo;

END;
GO
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_FaturaKdvRaporu')
	DROP PROCEDURE sp_FaturaKdvRaporu
	go


create   PROCEDURE [dbo].[sp_FaturaKdvRaporu]
(@Tarih1 smalldatetime,
 @Tarih2 smalldatetime)
AS
BEGIN
	DECLARE @kdvList NVARCHAR(MAX) = '';
	DECLARE @kdvToplamMatrah NVARCHAR(MAX) = '';
	DECLARE @baseSql NVARCHAR(MAX) = '';
	DECLARE @prefix CHAR(1) = '';

	SELECT DISTINCT Kdv 
	INTO #TempKdv
	FROM dbo.STOKHAR;

	-- Sıralı biçimde döngüyle veya XML ile oluştur (örnek döngü ile)
	DECLARE @KdvValue INT;

	DECLARE kdv_cursor CURSOR FOR
		SELECT Kdv FROM #TempKdv ORDER BY Kdv;

	OPEN kdv_cursor;
	FETCH NEXT FROM kdv_cursor INTO @KdvValue;

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @kdvList += @prefix + '(
			SELECT ISNULL(SUM(SonTutar - KdvTutari), 0)
			FROM dbo.STOKHAR 
			WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(@KdvValue AS VARCHAR) + '
		) AS Kdv_' + CAST(@KdvValue AS VARCHAR) + '_Matrahi,

		(
			SELECT ISNULL(SUM(KdvTutari), 0)
			FROM dbo.STOKHAR 
			WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(@KdvValue AS VARCHAR) + '
		) AS Kdv_' + CAST(@KdvValue AS VARCHAR) + '_Tutari' + CHAR(13)
 		SET @prefix = ','
		FETCH NEXT FROM kdv_cursor INTO @KdvValue;
	END

	CLOSE kdv_cursor;
	DEALLOCATE kdv_cursor;

	DROP TABLE #TempKdv;

	-- 2. Matrah toplamı dinamik
	SELECT 
		@kdvToplamMatrah = STRING_AGG(
			'(SELECT ISNULL(SUM(SonTutar - KdvTutari), 0) 
			  FROM dbo.STOKHAR WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(Kdv AS VARCHAR) + ')',
			' + '
		)
	FROM (
		SELECT DISTINCT Kdv FROM dbo.STOKHAR
	) AS KdvTable;

	-- 3. Ana sorgu gövdesi
	SET @baseSql = '
	SELECT 
		SHB.CariKodu,
		SHB.CariAdi,
		SHB.FaturaTarihi,
		SHB.IslemTuru,
		SHB.FisTuru,
		SHB.eFaturaNo,
		SHB.FatSerNo,
		SHB.FaturaNo,
		SHB.KdvTutari,
		SHB.Tutar - SHB.KdvTutari AS ToplamTutar,
		SHB.Tutar AS GenelTutar,
		' + @kdvList + ',
		SHB.TevkifatTutari,
		' + @kdvToplamMatrah + ' AS MatrahToplami,
		YETKILI Yetkili,
		TCKimlikNo TCKimlikNo,
		MUSVERGI VergiDairesi,
		MUSVERNO VergiNo,
		SHB.Departman,
		SHB.IslemTipi,
		(SELECT DepartmanAdi FROM dbo.VDepartman WHERE Departman = SHB.Departman) AS DepartmanAdi,
		SHB.OdemeBilgisi
	FROM dbo.STOKHARDETBAG AS SHB,AMUSTERI MUS
	WHERE MUS.MUSKOD = SHB.CariKodu AND
		(SHB.FisTuru = N''F'' OR SHB.FisTuru = N''İ'') AND 
	    SHB.FaturaTarihi BETWEEN @Tarih1 AND @Tarih2  
	';

	-- 4. Çalıştır
	EXEC sp_executesql @baseSql, 
		N'@Tarih1 SMALLDATETIME, @Tarih2 SMALLDATETIME',
		@Tarih1,
		@Tarih2
END;


go


  IF  EXISTS (SELECT *  FROM sys.key_constraints WHERE  name='UQ_Doviz_IsoKodu')
 BEGIN 

 ALTER TABLE Doviz_Iso_Birim  DROP CONSTRAINT UQ_Doviz_IsoKodu
end
else begin
ALTER TABLE Doviz_Iso_Birim ADD CONSTRAINT UQ_Doviz_IsoKodu UNIQUE(IsoKodu)
 end

   go

 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_DepoKontrolEkleme')
	DROP PROCEDURE sp_DepoKontrolEkleme
go
CREATE PROCEDURE sp_DepoKontrolEkleme
AS
Select * 
  from 
		(
			select DISTINCT Depo from STOKHAR
			UNION
			select DISTINCT Depo from SIPARISHAR
			UNION
			select DISTINCT Depo from TEKLIFHAR
		) x
WHERE NOT EXISTS (select 1 
					from GRUP g 
				   where Turu = 'D' 
				     and g.GrupAdi = x.Depo)
										 
go

  if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.7.3')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.7.3',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go
 
delete from GridView where GirdAdi='Banka Hesabı Hareketleri'
go
delete from GridView where KayitIsmi = 'FrmHesaplarTHcxGrid1cxGrid1DBTableView1'
go
delete from GridView where KayitIsmi in 
('FrmBankaicxGrid1cxGrid1DBTableView1','FrmBankaicxGrid1cxGrid1DBTableView1','FrmBankaicxGrid1cxGrid1DBTableView1',
'Banka İşlemleri Gridi','FrmHesaplarTcxGrid1cxGrid1DBTableView1','FrmHesaplarTHcxGrid1cxGrid1DBTableView1')
go
delete from GridView where GirdAdi='Stok Hareketleri Gridi'
go
select top 1 * from VTGuncellemeleri order by VTVersiyon desc
go
if NOT exists (select top 1 * from GRUP where GrupAdi='TASIYICI' AND Turu='T')
BEGIN 
	INSERT INTO GRUP (GrupAdi, Turu, KULNO, KULADI, GrupKodu, Deger, Aciklama, En, Boy, Yukseklik, LeftOran, TopOran, MasterId, DepoKademe, Tonaj)
	VALUES ('TASIYICI','T','1','Admin','-16777211',	NULL,	NULL,	0,	0,	0,	0,	0,	NULL,	NULL,	'0')
END
go
  if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.7.3')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.7.3',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_StokGirisCikisRaporu')
	DROP PROCEDURE sp_StokGirisCikisRaporu
go
CREATE  PROCEDURE dbo.sp_StokGirisCikisRaporu  
    @Tarih1 DATETIME,  
    @Tarih2 DATETIME  
AS  
BEGIN  
    SET NOCOUNT ON;  
  
    SELECT   
        SK.Kodu AS StokKodu,  
        SK.StokAdi,  
        SK.GrupAdi,  
        SK.UreticiFirmaKodu,  
        SK.OzelKod1,  
        SK.OzelKod2,  
        SK.AnaBirim,  
        SK.AktifPasif,  
        SK.StokAdedi AS MevcutMiktar,  
  
        SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END) AS Giris,  
        SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) AS Cikis,  
        SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END) -  
        SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) AS Fark,  
  
        SUM(CASE WHEN SH.GC = 'G' THEN SH.TopTutar ELSE 0 END) AS GirisToplami,  
        SUM(CASE WHEN SH.GC = 'C' THEN SH.TopTutar ELSE 0 END) AS CikisToplami,  
  
        CASE   
            WHEN SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END) > 0   
            THEN SUM(CASE WHEN SH.GC = 'G' THEN SH.TopTutar ELSE 0 END)   
                 / SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END)  
            ELSE 0   
        END AS GirisOrtalamaDegeri,  
  
        CASE   
            WHEN SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) > 0   
            THEN SUM(CASE WHEN SH.GC = 'C' THEN SH.TopTutar ELSE 0 END)   
                 / SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END)  
            ELSE 0   
        END AS CikisOrtalamaDegeri,  
  
        CASE   
            WHEN SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) > 0   
                 AND SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END) > 0  
            THEN   
                (SUM(CASE WHEN SH.GC = 'C' THEN SH.TopTutar ELSE 0 END)   
                 / SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END))  
              - (SUM(CASE WHEN SH.GC = 'G' THEN SH.TopTutar ELSE 0 END)   
                 / SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END))  
            ELSE 0   
        END AS Giris_CikisFarki,  
  
        CASE   
            WHEN SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) > 0   
                 AND SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END) > 0  
            THEN SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) *  
                (  
                    (SUM(CASE WHEN SH.GC = 'C' THEN SH.TopTutar ELSE 0 END)   
                     / SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END))  
                  - (SUM(CASE WHEN SH.GC = 'G' THEN SH.TopTutar ELSE 0 END)   
                     / SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END))  
                )  
            ELSE 0   
        END AS Giris_CikisXCikisMiktar  
  
    FROM dbo.STOKHAR SH  
    INNER JOIN dbo.STOKKARTI SK ON SK.Kodu = SH.StokKodu  
    WHERE SH.FaturaTarihi >= @Tarih1 AND SH.FaturaTarihi <= @Tarih2  
    GROUP BY   
        SK.Kodu, SK.StokAdi, SK.GrupAdi, SK.UreticiFirmaKodu,  
        SK.OzelKod1, SK.OzelKod2, SK.AnaBirim, SK.AktifPasif, SK.StokAdedi  
    /*HAVING   
        SUM(CASE WHEN SH.GC = 'G' THEN SH.Miktar ELSE 0 END) > 0  
        AND SUM(CASE WHEN SH.GC = 'C' THEN SH.Miktar ELSE 0 END) > 0;*/  
END;  
go
 IF NOT EXISTS (SELECT *  FROM sys.tables WHERE  name='Sofor')
 BEGIN 
CREATE TABLE dbo.Sofor (
    Id                     INT IDENTITY(1,1) PRIMARY KEY,
    SoforKodu			   nvarchar (30) not null,
    SoforAdiSoyadi         NVARCHAR(120) NULL,
    VergiDairesi           NVARCHAR(80) NULL,
	EhliyetNo			   nvarchar(30) null,
    VergiNo                NVARCHAR(15) NULL,  -- ?ah?s ise TCKN de olabilir
	Tel                    NVARCHAR(20) NULL,
    Eposta                 NVARCHAR(120) NULL,
    Adres                  NVARCHAR(250) NULL,
    IlId                   int, -- Il tablosundan al?nacak
    IlceId                 int, --?lçe tablosundan al?nacak.
    PostaKodu              NVARCHAR(10) NULL,
    UETDSNo                NVARCHAR(30) NULL,
    CreateDate				smalldatetime NULL,
	CreateUser				int NULL,
	UpdateDate				smalldatetime NULL,
	UpdateUser				int NULL) 
end
go 
 IF NOT EXISTS (SELECT *  FROM sys.tables WHERE  name='SevkHar')
 BEGIN 
create table SevkHar (
	Id  INT IDENTITY(1,1) PRIMARY KEY, 
	IslemNo int NOT NULL,  --STOKHARDETBAG ISLEMNO ile join yap?lacak, Nirden fazla IslemNo eklenebilir.
	SoforId					int not null ,
	TasiyiciFirmaID  		int not null, --Cari kartlara const eklenece, firmay? carilerden seçecek
	AracPlaka				NVARCHAR(15) NULL,
	TasimaBaslangicZamani	DATETIME NULL,
    Aciklama				NVARCHAR(250) NULL,
    CreateDate				smalldatetime NULL,
	CreateUser				int NULL,
	UpdateDate				smalldatetime NULL,
	UpdateUser				int NULL
	);
end
go
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_mb_XML_AccountingSupplierParty_List')
	DROP PROCEDURE sp_mb_XML_AccountingSupplierParty_List
GO

CREATE   PROCEDURE [dbo].[sp_mb_XML_AccountingSupplierParty_List](@Entegrator int)    
 AS     
      
 SELECT    
 SB.VERGINO as "VERGI_NO",     
--'1234567801' as "VERGI_NO",     
 SB.UNVAN as "UNVAN",    
 SB.KapiNo as "KAPI_NO",    
 SB.SokakAdi as "SOKAK_ADI",    
 SB.BinaAdi as "BINA_ADI",    
 SB.BinaNo as "BINA_NO",    
 SB.Ilce as "ILCE",    
 SB.Il as "IL",    
 SB.PostaKodu as "POSTA_KODU",    
 SB.Mahalle as "MAHALLE",    
 SB.UlkeAdi as "ULKE_ADI",    
 SB.VERGIDA as "VERGI_DA",    
 SB.EPosta1 as "EPOSTA",    
 SB.TELNO as "TEL_NO",    
 SB.Faks as "FAKS",     
 SB.EPosta3 AS "MERSIS_NO",    
 SB.OLisansNo AS "TICARET_SICIL_NO",    
 SB.WebSitesi AS "WEB_SITE",    
 EF_SABIT.MAIL_ADRES AS "ETIKET",    
 EF_SABIT.ACIKLAMA AS "ACIKLAMA",     
 EF_SABIT.ACIKLAMA2 AS "ACIKLAMA2",    
 EF_SABIT.ACIKLAMA3 AS "ACIKLAMA3" ,    
 EF_SABIT.IBAN AS "IBAN",    
 SB.Adres1,    
 SB.Adres2  ,  
 EF_SABIT.AD as AD,  
 EF_SABIT.SOYAD as SOYAD  
 FROM ASABIT SB    
INNER JOIN EF_SABIT  ON EF_SABIT.Entegrator=@Entegrator 

go
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_mb_XML_InvoiceLine_List_delphi')
	DROP PROCEDURE sp_mb_XML_InvoiceLine_List_delphi
go

 CREATE    PROCEDURE [dbo].[sp_mb_XML_InvoiceLine_List_delphi]       
   /*   
      
   2021 01 15 güncellendi. A.t*/   
   --20230713 tarihinde H.K tarafından güncellendi.Gruplama iptal edildi. 
   -- 2025-09-12 A.T Sofor vs eirsaliye için düzenlendi.
 @IslemNo nvarchar(30)       
 AS             
SELECT     
	ROW_NUMBER() OVER (ORDER BY DD.IslemNo3,DD.IslemNo,DD.SiraNo ) SiraNo,  
	DD.StokKodu,       
	DD.StokAdi AS StokAdi,       
	(FaturaMiktari) as Miktar,       
	(SonTutar-DD.KdvTutari)/ DB.DovizKur as KdvsizSatirToplami,       
	(SonTutar-DD.OTVTutari)/ DB.DovizKur as OTVsizSatirToplami,       
	DD.Iskonto1 AS IskOran,       
	((FaturaMiktari* BirimFiyat*BirimMiktar) -DD.Tutar )/ DB.DovizKur as SatirIskontoToplami,       
	(FaturaMiktari* BirimFiyat*BirimMiktar)/ DB.DovizKur  as Isksuz_Satir_Toplami,--tutar       
	DD.Kdv,       
	DD.OTVOrani,       
	(DD.KdvTutari)/ DB.DovizKur as KdvToplami,         
	(DD.OTVTutari)/ DB.DovizKur as OtvToplami,         
	(Birim) as Birim,       
	(DD.Tutar -(SonTutar-DD.KdvTutari))/ DB.DovizKur as Alt_Iskonto_Toplami,        
	(DD.Tutar)/ DB.DovizKur as Tutar,       
	(SonTutar)/ DB.DovizKur as SonTutar,       
	DD.BirimFiyat*DD.BirimMiktar / DB.DovizKur AS ToplamBirimFiyat,--Fiyat       
	CASE WHEN ISNULL (DD.Kdv,0)=0 AND DB.OzelKod1 in('31','4') AND DB.YazarKasaFisNo<>2 THEN    '351;Vergiden muaf.'     
	WHEN  ISNULL (DD.Kdv,0)=0 AND DB.OzelKod1 in('31','4')  AND DB.YazarKasaFisNo=2 THEN   '11/1-a Mal ihracatı'    
	when SUBSTRING(ISNULL(DB.OzelKod1,'00'), 1, 1)=3 and ISNULL (DD.Kdv,0)=0 and DB.EF_ISTISNA=0  then '701;11/1-c md. Kapsamındaki İhraç Kayıtlı Satış'       
	when DD.TopTutar=0 and DB.EF_ISTISNA=0 then '351;Kısmibedelsiz'    
	WHEN ISNULL (DD.Kdv,0)=0 AND (select top 1  MuafiyetKodu+';'+MuafiyetAciklamasi from StokVergiMuafiyetleri where StokKodu=DD.StokKodu and MuafiyetKodu=DB.EF_ISTISNA and MuafiyetKodu<>'000')=';'  THEN      
	'351;Vergiden muaf.'    
	WHEN ISNULL (DD.Kdv,0)=0 AND (select top 1  MuafiyetKodu+';'+MuafiyetAciklamasi from StokVergiMuafiyetleri where StokKodu=DD.StokKodu and MuafiyetKodu=DB.EF_ISTISNA and MuafiyetKodu<>'000')<>';'  THEN    
	(select top 1 MuafiyetKodu+';'+MuafiyetAciklamasi from StokVergiMuafiyetleri where StokKodu=DD.StokKodu and MuafiyetKodu=DB.EF_ISTISNA) ELSE ''    END  AS  "MUAFIYET",       
	( SELECT top 1 IsoBirimKodu FROM BIRIM b where b.BirimAdi=DD.Birim  )   AS ISO_BIRIM,       
	CASE WHEN DD.Iskonto1 >0 then '%'+CAST(DD.Iskonto1 as varchar(10))    end +       
	CASE WHEN DD.Iskonto2 >0 then  '%'+CAST(DD.Iskonto2 as varchar(10))  else '' end+       
	CASE WHEN DD.Iskonto3 >0 then  '%'+CAST(DD.Iskonto3 as varchar(10))  else '' end+       
	CASE WHEN DD.Iskonto4 >0 then  '%'+CAST(DD.Iskonto4 as varchar(10))  else '' end as "Iskonto_Aciklama"             
from STOKHAR DD        
  JOIN STOKHARDETBAG DB ON  DB.IslemNo in (DD.IslemNo,DD.IslemNo3)    
 where  DB.FisTuru = 'F' 
AND @IslemNo in (DD.IslemNo, DD.IslemNo3)      
go

 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_mb_XML_CustomerDelivery_List_delphi')
	DROP PROCEDURE sp_mb_XML_CustomerDelivery_List_delphi
go

create procedure sp_mb_XML_CustomerDelivery_List_delphi(@IslemNo decimal)
as
select ad.VergiNo as "VERGI_NO",               
 ad.VergiDairesi AS "VERGI_DAIRESI",                        
 null as "KAPI_NO",               
 am.MUSADRES2  as "SOKAK_ADI",               
 null as "BINA_ADI",               
 null as "BINA_NO",               
 am.MUSILCE  as "ILCE",               
 am.MUSIL as "IL",               
 null as "POSTA_KODU",               
 am.MUSADRES1 as "MAHALLE",               
 ad.Ulke as "ULKE_ADI",               
 ad.VergiDairesi as "VERGI_DA",               
 am1.email_1 AS "EPOSTA",               
 ad.Tel1 as "TEL_NO",               
 ad.Faks as "FAKS",               
 am1.WebAdresi_1 as "WEB_SITE",                
    am.MUSADI as "UNVANI",
	sh.AracPlaka,
	sh.TasimaBaslangicZamani,
	sf.EhliyetNo,
	sf.UETDSNo
	from SevkHar sh
	left join Sofor sf on sf.Id=sh.SoforId
 join   AMUSTERI  am on sh.TasiyiciFirmaID=am.MUSNO
INNER JOIN  Adres ad ON am.MUSNO = ad.CariNo               
INNER JOIN AMusteri1 am1 ON am1.CariNo=am.MUSNO   
where sh.IslemNo=@IslemNo
go

 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_mb_XML_TaxSubtotalTypeName_List')
	DROP PROCEDURE [sp_mb_XML_TaxSubtotalTypeName_List]
go

 CREATE   procedure [dbo].[sp_mb_XML_TaxSubtotalTypeName_List]( @IslemNo nvarchar(30)   )  
 as  
 select sum(1) as CalculationSequenceNumeric,   Oran,Deger,  
 round(sum(VergiToplami),2) "TaxAmount",  
 round(sum(XX.SonTutar-XX.VergiToplami),2) "TaxableAmount",  
 CASE WHEN Oran='KDV' and ISNULL (Deger,0)=0 THEN (SELECT Deger FROM Parametre WHERE Param='eFaturaMuafiyetAciklama')       
when sum(Tutar)=0  then '351;KısmiBeldesiz'       
ELSE '' END AS  "MUAFIYET" ,VergiKodu   from (  
  
  
select  
  Oran,  
  Deger,  
  VergiTutar,  
  VergisizSatirToplami,  
  VergiToplami,  
  Isksuz_Satir_Toplami,  
  SatirIskontoToplami,  
  Alt_Iskonto_Toplami,  
  STK.SonTutar,  
  STK.Tutar,  
 VergiKodu  
   
from STOKHAR STK  
cross apply  
(  
  values   
  ('KDV', Kdv,KdvTutari , ((SonTutar-KdvTutari)/STK.DovizKuru),(KdvTutari/STK.DovizKuru),  
  (FaturaMiktari* BirimFiyat*BirimMiktar/STK.DovizKuru),  
  (((FaturaMiktari* BirimFiyat*BirimMiktar) -Tutar)/STK.DovizKuru),  
  (((Tutar -(SonTutar-KdvTutari))/STK.DovizKuru)),'0015'),  
    
  ('OTV', OTVOrani,OTVTutari, ((SonTutar-OTVTutari)/STK.DovizKuru),  
  (OTVTutari/STK.DovizKuru) ,(FaturaMiktari* BirimFiyat*BirimMiktar/STK.DovizKuru) ,  
  (((FaturaMiktari* BirimFiyat*BirimMiktar) -Tutar)/STK.DovizKuru),  
  (((Tutar -(SonTutar-OTVTutari))/STK.DovizKuru)),(select A_Muh_Kodu from STOKKARTI where StokNo=STK.StokNo))  
   
) c (Oran, Deger,VergiTutar,VergisizSatirToplami,VergiToplami,Isksuz_Satir_Toplami,SatirIskontoToplami,Alt_Iskonto_Toplami,VergiKodu)  
 where   @IslemNo in (STK.IslemNo,STK.IslemNo3)  ) XX  
 where ((XX.Oran='OTV' and XX.Deger>0) or (XX.Oran='KDV')) 
 group by Oran,Deger,VergiKodu
 go

  if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.7.4')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.7.4',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go
ALTER  TRIGGER [dbo].[TR_ST_HAREKET_KONTROL] ON [dbo].[STOKKARTI] AFTER DELETE    
AS    
BEGIN    
	DECLARE @Kodu varchar (50)    
	SELECT @Kodu= Kodu FROM DELETED    

	--Print 'Ürün Stok Hareketlede mevcuttur, silinenmez'    
	--ROLLBACK TRANSACTION    

	IF EXISTS(SELECT * FROM STOKHAR WHERE StokKodu=@Kodu)  
	BEGIN    
		Print 'Ürün Stok Hareketlede mevcuttur, silinenmez'    
		ROLLBACK TRANSACTION    
		RETURN    
		END    
		else IF EXISTS(SELECT * FROM SIPARISHAR WHERE StokKodu=@Kodu)  
		BEGIN    
		Print 'Ürün Sipari? Hareketerinde mevcuttur, silinenmez'    
		ROLLBACK TRANSACTION    
		RETURN    
		END else IF EXISTS(SELECT * FROM TEKLIFHAR WHERE StokKodu=@Kodu)  
		BEGIN    
		Print 'Ürün Teklif Hareketerinde mevcuttur, silinenmez'    
		ROLLBACK TRANSACTION    
		RETURN    
		END else IF EXISTS(SELECT * FROM RenkBedenHareket WHERE StokKodu=@Kodu)  
		BEGIN    
		Print 'Ürün Renk Beden Hareketerinde mevcuttur, silinenmez'    
		ROLLBACK TRANSACTION    
		RETURN     
		END else IF EXISTS(SELECT * FROM UrtRecetesi WHERE StkMsrfKodu=@Kodu)  
		BEGIN    
		Print 'Ürün Üretim Reçetelerinde mevcuttur, silinenmez'    
		ROLLBACK TRANSACTION    
		RETURN    
	END      
	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 TakasTablosu where KarekterAlan1 = @Kodu
		UPDATE Buton  SET ButonEtiketi='', ButonResimYolu='',ButonDegeri='', StokNo='' WHERE ButonDegeri= @Kodu and FormAdi IN ('Ranros','HPerakende','Perakende')
		delete from StokVergiMuafiyetleri where StokKodu=@Kodu

	END  
END


GO
if  not  exists (select * from dbo.syscolumns where id = object_id(N'BANKA') and name=N'DovizKur')
begin
 ALTER TABLE BANKA ADD DovizKur float
end
else begin
ALTER TABLE BANKA alter column DovizKur float
end

GO 
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'spBankaHareketYaz')
	DROP PROCEDURE spBankaHareketYaz
go

create PROCEDURE	[dbo].[spBankaHareketYaz] 
			@BORC Float,
			@ALACAK Float,
			@ACIKLAMA nvarchar(50), 
			@BANKAKODU nvarchar(6),
			@BANKAADI nvarchar(30),
			@MUSNO int,
			@MUSADI nvarchar(50),
			@TARIH datetime,
			@BA nvarchar(1),
			@BAACIKLA nvarchar(12),
			@SUBE nvarchar(20),
			@HESAPNO nvarchar(20),
			@KESCEK Float,
			@BORDRONO int,
			@TAHSILCEK Float,
			@TAHSILSENET Float,
			@ISLEMNO int,
			@ISLEMNO2 int,
			@MUSKOD nvarchar(20),
			@DovizTut float,
			@DovizCinsi int,
			@DovizKodu nvarchar(2),
			@KULNO int,
			@KULADI nvarchar(20),
			@BORDRONO2 int,
			@TeminatSenet Float,
			@TeminatCek Float,
			@AcikKapali nvarchar(1),
			@DovizBorc Float,
			@DovizAlacak Float,
			@Departman nvarchar(8),
			@KayitDuzeyi int,
			@KESCEK_A Float,
			@TAHSILCEK_A Float,
			@TAHSILSENET_A Float,
			@TeminatSenet_A Float,
			@TeminatCek_A Float,
			@VardiyaNo nvarchar(8), 
			@HesapNumarasi int,
			@Aciklama2 nvarchar(200),
			@FisNo int,
			@DovizKur float
AS 
INSERT BANKA VALUES (	@BORC,
			@ALACAK,
			@ACIKLAMA,
			@BANKAKODU,
			@BANKAADI,
			@MUSNO,
			@MUSADI,
			@TARIH,
			@BA,
			@BAACIKLA,
			@SUBE,
			@HESAPNO,
			@KESCEK,
			@BORDRONO,
			@TAHSILCEK,
			@TAHSILSENET,
			@ISLEMNO,
			@ISLEMNO2,
			@MUSKOD,
			@DovizTut,
			@DovizCinsi,
			@DovizKodu,
			@KULNO,
			@KULADI,
			@BORDRONO2,
			@TeminatSenet,
			@TeminatCek,
			@AcikKapali,
			@DovizBorc,
			@DovizAlacak,
			@Departman,
			@KayitDuzeyi,
			@KESCEK_A,
			@TAHSILCEK_A,
			@TAHSILSENET_A,
			@TeminatSenet_A,
			@TeminatCek_A,
			@VardiyaNo,
			@HesapNumarasi,
			@Aciklama2,
			@FisNo,
			@DovizKur)

GO
UPDATE BANKA SET DovizKur = (CASE WHEN BORC > 0 THEN BORC / DovizBorc WHEN ALACAK > 0 THEN ALACAK / DovizAlacak ELSE 1 END) WHERE DovizKur IS NULL AND DovizTut<>0
GO
update RaporSql set SqlTanim=replace (SqlTanim,'select dbo.NUMBERTOTEXT(sum(SH.TopTutar)) as yaziile  from STOKHAR',
'select dbo.NUMBERTOTEXT(sum(SH.SonTutar)) as yaziile  from STOKHAR' )
go


IF NOT EXISTS (SELECT *  FROM sys.tables WHERE  name='YaziciTanim')
 BEGIN 
CREATE TABLE dbo.YaziciTanim (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    YaziciAdi NVARCHAR(200) NOT NULL,
	KulNo	  INT,		              
    EklenmeTarihi DATETIME DEFAULT(GETDATE()),
    Aciklama NVARCHAR(250) NULL  -- Not veya özel açıklama
)

 END;

GO
 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_YaziciTanimEkle')
	DROP PROCEDURE sp_YaziciTanimEkle
go

CREATE PROCEDURE sp_YaziciTanimEkle(
	@YaziciAdi NVARCHAR(200),
	@KulNo INT
)
AS
BEGIN
	IF NOT EXISTS(	SELECT 1 
					FROM YaziciTanim 
					WHERE YaziciAdi = @YaziciAdi)
	BEGIN
		INSERT INTO YaziciTanim (YaziciAdi,KulNo)
						VALUES	(@YaziciAdi,@KulNo);
								 
	END;
END;

GO
if  not  exists (select * from dbo.syscolumns where id = object_id(N'KullaniciVarsayilanRaporlari') and name=N'OnIzleme')
begin
ALTER TABLE KullaniciVarsayilanRaporlari ADD   OnIzleme bit
end
else 
begin
ALTER TABLE KullaniciVarsayilanRaporlari alter column   OnIzleme bit
end
go

if  not  exists (select * from dbo.syscolumns where id = object_id(N'KullaniciVarsayilanRaporlari') and name=N'RaporSecimOnIzleme')
begin
ALTER TABLE KullaniciVarsayilanRaporlari ADD   RaporSecimOnIzleme bit
end
else 
begin
ALTER TABLE KullaniciVarsayilanRaporlari alter column   RaporSecimOnIzleme bit
end
GO

if  not  exists (select * from dbo.syscolumns where id = object_id(N'KullaniciVarsayilanRaporlari') and name=N'ID')
begin
ALTER TABLE KullaniciVarsayilanRaporlari ADD   ID INT IDENTITY(1,1)
end
else 
begin
ALTER TABLE KullaniciVarsayilanRaporlari alter column   ID INT  
end
GO

if  not  exists (select * from dbo.syscolumns where id = object_id(N'KullaniciVarsayilanRaporlari') and name=N'YaziciID')
begin
ALTER TABLE KullaniciVarsayilanRaporlari ADD YaziciID INT
end
else 
begin
ALTER TABLE KullaniciVarsayilanRaporlari alter column   YaziciID INT
end

GO

IF  EXISTS (SELECT *  FROM sys.views WHERE  name='KullanicilarVarsayilan_TipRapor')
 BEGIN 
 drop view KullanicilarVarsayilan_TipRapor
 end
go
CREATE   VIEW [dbo].[KullanicilarVarsayilan_TipRapor]   
AS  
 select 
	Kul.[No] as [KulNo],  
	Tip.Ad  as [Tip],  
	K.OnIzleme,
	Rap.RaporNo as RaporNo,
	Rap.RaporIsmi as [Rapor],  
	Tip.TipNo as TipNo, 
	K.RaporSecimOnIzleme,
	K.YaziciID,
	YT.YaziciAdi
 from Kullanicilar as Kul  
  cross join RaporTipTanimlari as Tip  
  left outer join KullaniciVarsayilanRaporlari as K on Tip.TipNo=K.TipNo and Kul.[No] = K.KullaniciNo  
  left outer join Rapor as Rap on K.RaporNo = Rap.RaporNo
  left outer join YaziciTanim as YT on YT.ID = K.YaziciID 
GO


DECLARE 
    @TipNo INT,
    @KullNo INT;

SET @TipNo   = 34;
SET @KullNo  = 1;

SELECT
    R.TipNo,
    R.KulNo,
    R.RaporIsmi,
    R.Rapor,
    R.YazdirmaSayisi,
    R.Onizleme,
    R.RaporNo,
    YT.YaziciAdi,
    R.YeniRapormu,
    CASE 
        WHEN  EXISTS (SELECT 1 FROM KullaniciVarsayilanRaporlari KVR1  
					  WHERE KVR1.TipNo = @TipNo AND R.RaporNo =KVR1.RaporNo AND KVR1.KullaniciNo = @KullNo ) THEN N'Evet'
        ELSE N'Hayır'
    END AS Varsayilanmi,
    KVR.RaporSecimOnIzleme,
    R.EkTipNo,
    R.Degistirilemez,
    R.Aciklama
FROM Rapor AS R
LEFT JOIN KullaniciVarsayilanRaporlari KVR ON KVR.TipNo = R.TipNo AND R.RaporNo =KVR.RaporNo AND KVR.KullaniciNo = @KullNo
LEFT JOIN YaziciTanim YT ON YT.ID = KVR.YaziciID
WHERE
    (
        -- Eğer tip 8,12,34 ise bu gruplardan biri olmalı
        @TipNo IN (8, 12, 34) 
        AND R.TipNo IN (8,12, 34)
    )
    OR
    (
        -- Diğer tiplerde doğrudan eşit veya EkTipNo listesinde olmalı
        R.TipNo = @TipNo
    )
ORDER BY     
	CASE 
        WHEN  KVR.KullaniciNo IS NOT NULL 
        THEN N'Evet'
        ELSE N'Hayır'
    END

go

 if exists (select * from sys.procedures where name='RaporGetir')
drop proc RaporGetir
go

create  PROCEDURE [dbo].[RaporGetir]
(
    @TipNo INT,
    @KulNo INT,
    @CariNo INT = 0,
    @Onizleme BIT = 1 OUTPUT,
    @YeniRapormu BIT = 0
)
AS
BEGIN
    SET NOCOUNT ON;

  /*  DECLARE 
        @CariTipi NVARCHAR(30),
        @OzelKod1 NVARCHAR(40),
        @OzelKod2 NVARCHAR(40),
        @OzelKod3 NVARCHAR(40),
        @OzelKod4 NVARCHAR(40),
        @RaporNo INT;

    -----------------------------------------------------------------------
    -- Cari bilgilerini al
    -----------------------------------------------------------------------
    SELECT 
        @CariTipi = ISNULL(Tipi, ''),
        @OzelKod1 = ISNULL(OZELKOD1, ''),
        @OzelKod2 = ISNULL(OZELKOD2, ''),
        @OzelKod3 = ISNULL(OZELKOD3, ''),
        @OzelKod4 = ISNULL(OZELKOD4, '')
    FROM AMUSTERI
    WHERE MUSNO = @CariNo;

    -----------------------------------------------------------------------
    -- Carinin özel raporu var mı?
    -----------------------------------------------------------------------
    SELECT TOP 1 @RaporNo = RaporNo
    FROM CariVarsayilanRaporlari
    WHERE
        TipNo = @TipNo AND
        (CariTipi IS NULL OR CariTipi = @CariTipi) AND
        (OzelKod1 IS NULL OR OzelKod1 = @OzelKod1) AND
        (OzelKod2 IS NULL OR OzelKod2 = @OzelKod2) AND
        (OzelKod3 IS NULL OR OzelKod3 = @OzelKod3) AND
        (OzelKod4 IS NULL OR OzelKod4 = @OzelKod4);

    -----------------------------------------------------------------------
    -- Eğer cariye özel rapor varsa onu getir
    -----------------------------------------------------------------------
    IF @RaporNo IS NOT NULL
    BEGIN
        SELECT 
            RaporIsmi, 
            Rapor
        FROM Rapor
        WHERE RaporNo = @RaporNo;

        SELECT 
            @Onizleme = ISNULL(Onizleme, 1)
        FROM Rapor
        WHERE RaporNo = @RaporNo;

        RETURN;
    END;
	*/
    -----------------------------------------------------------------------
    -- Aksi halde kullanıcının varsayılan raporunu getir
    -----------------------------------------------------------------------
    SELECT TOP 1
        R.RaporIsmi,
        R.Rapor,
        R.RaporNo,
        K.GirisAdi AS Kullanici
    FROM Rapor R
    INNER JOIN KullaniciVarsayilanRaporlari KV 
        ON KV.RaporNo = R.RaporNo
    INNER JOIN Kullanicilar K 
        ON K.No = @KulNo
    WHERE 
        KV.KullaniciNo = @KulNo 
        AND KV.TipNo = @TipNo
        AND R.YeniRapormu = @YeniRapormu;

    SELECT 
        @Onizleme = ISNULL(KV.OnIzleme, 1)
    FROM KullaniciVarsayilanRaporlari KV 
    WHERE 
        KV.KullaniciNo = @KulNo 
        AND KV.TipNo = @TipNo;

END
go


 if exists (select * from sys.procedures where name='sp_RaporKopyala')
drop proc sp_RaporKopyala
go

CREATE   PROCEDURE [dbo].[sp_RaporKopyala] 
    @KaynakRaporNo   INT,          -- Kopyalanacak RaporNo
    @YeniTipNo       INT,          -- Yeni tip numarası
    @YeniRaporIsmi   NVARCHAR(100) -- Yeni rapor adı
AS
BEGIN
    SET NOCOUNT ON;

    -- ?? Kopyalama işlemi
    INSERT INTO Rapor
        (TipNo, KulNo, RaporIsmi, Onizleme, Rapor, YazdirmaSayisi,
         Varsayilanmi, Yazici, YeniRapormu,
         EkTipNo, Degistirilemez)
    SELECT
        @YeniTipNo AS TipNo,       -- yeni tip
        KulNo,                     -- aynı kullanıcı
        @YeniRaporIsmi AS RaporIsmi,
        Onizleme,
        Rapor,
        YazdirmaSayisi,
        Varsayilanmi,
        Yazici,
        YeniRapormu,       
        EkTipNo,
        Degistirilemez
    FROM Rapor
    WHERE RaporNo = @KaynakRaporNo;

END;
GO
 if exists (select * from sys.procedures where name='sp_CariKartlarBABTR')
drop proc sp_CariKartlarBABTR
go

CREATE PROCEDURE sp_CariKartlarBABTR
  @CariNo INT = NULL
AS
BEGIN
   SET NOCOUNT ON;

    SELECT
        A.MUSNO AS CariNo,
        A.MUSKOD AS CariKodu,

        ISNULL(CA.BorcToplami, 0) AS MUSBORC,
        ISNULL(CA.AlacakToplami, 0) AS MUSALACAK,
        ISNULL(CA.Bakiye, 0) AS MUSBAKIYE,

        ISNULL(OD.TaksitTutari, 0) AS TaksitTutari,

        ISNULL(A.RISK - CA.Bakiye, 0) AS KalanKredi
    FROM dbo.AMUSTERI A

    CROSS APPLY
    (
        SELECT
            SUM(ISNULL(BORC,0)) AS BorcToplami,
            SUM(ISNULL(ALACAK,0)) AS AlacakToplami,
            SUM(ISNULL(BORC,0)) - SUM(ISNULL(ALACAK,0)) AS Bakiye
        FROM dbo.ACARI C
        WHERE C.MUSNO = A.MUSNO
    ) CA

    CROSS APPLY
    (
        SELECT
            SUM(ISNULL(Borc,0)) - SUM(ISNULL(Alacak,0)) AS TaksitTutari
        FROM dbo.Odeme O
        WHERE Modul = '001'
          AND O.CariNo = A.MUSNO
          AND Tarih <= CASE 
                        WHEN A.TaksitCekSenetBakiye = 0 
                        THEN GETDATE() 
                        ELSE Tarih 
                       END
    ) OD

    WHERE (@CariNo IS NULL OR A.MUSNO = @CariNo);
END

go

  if not exists (SELECT 1 FROM VTGuncellemeleri WHERE VTVersiyon='7.7.5')
BEGIN
insert into VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
VALUES ('7.7.5',(select ISLEMNO from ADIGSABITLER ),GETDATE(),'OM')
END
go

DROP INDEX [uidx_IsoBirim_01] ON [dbo].[ISOBIRIM]

GO
ALTER TABLE BIRIM ALTER COLUMN IsoBirimKodu nvarchar(4)
GO
ALTER TABLE BIRIM ALTER COLUMN IhracaatIsoBirimKodu nvarchar(4)
GO
ALTER TABLE ISOBIRIM ALTER COLUMN IsoBirimKodu nvarchar(4)
go
	;WITH tbl AS
(  SELECT *, RN = ROW_NUMBER() OVER  (PARTITION BY IsoBirimKodu ORDER BY Id DESC)  FROM ISOBIRIM)
DELETE FROM tbl WHERE RN > 1;
go

if NOT  exists (select * from sys.foreign_keys where name like '%FK_BIRIM_ISOBIRIM%')
begin
ALTER TABLE BIRIM ADD CONSTRAINT FK_BIRIM_ISOBIRIM FOREIGN KEY (IsoBirimKodu) REFERENCES ISOBIRIM (IsoBirimKodu);
END
GO
CREATE UNIQUE NONCLUSTERED INDEX [uidx_IsoBirim_01] ON [dbo].[ISOBIRIM]
(
	[IsoBirimKodu] ASC,
	[IsoBirimAdi] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

 if exists (select * from sys.procedures where name='spCariDINAMIK_TOPLAM_CARIEKSTRE')
drop proc spCariDINAMIK_TOPLAM_CARIEKSTRE
go

CREATE  PROCEDURE spCariDINAMIK_TOPLAM_CARIEKSTRE
    @Tarih1 DATETIME = '20240101' ,@Tarih2 DATETIME = '20260101'
AS
BEGIN
    SET NOCOUNT ON;
    
    -- 1. ADIM: Devir Bakiyelerini Hesapla (Tarih1'den önceki bakiye)
    WITH Devir AS (
        SELECT  MUSNO, SUM(BORC - ALACAK) AS DevirBakiye FROM ACARI  WHERE TARIH < @Tarih1  GROUP BY MUSNO    ),
    
    -- 2. ADIM: Hareketleri ve Kümülatif Toplamı Hesapla (Tarih1 ve sonrası)
    Hareketler AS (
        SELECT
            C.MUSNO,
            A.MUSADI AS FIRMA_ADI,
            C.TARIH,
            C.ISLEMNO,
            C.CARINO,
            ISNULL(C.BAACIKLA, '') AS BAACIKLA,
            (C.BORC - C.ALACAK) AS TUTAR,
            
            -- Hareketlerin Kümülatif Toplamı: Sadece hareketler arasındaki birikim.
            SUM(C.BORC - C.ALACAK) OVER (
                PARTITION BY C.MUSNO
                ORDER BY C.TARIH, C.ISLEMNO, C.CARINO
                ROWS UNBOUNDED PRECEDING
            ) AS HareketKumulatifToplam,
            
            C.ACIKLAMA,
            A.MUSVERNO
        FROM
            ACARI C
        LEFT JOIN
            AMUSTERI A ON A.MUSNO = C.MUSNO
        WHERE
            C.TARIH >= @Tarih1
    )

    -- 3. ADIM: Tüm Müşteriler İçin Devir Satırını Oluştur (Devir bakiyesi sıfır olmayanlar)
    SELECT
        D.MUSNO,
        A.MUSADI AS FIRMA_ADI,
        CAST(@Tarih1 AS DATETIME) AS TARIH,      -- Tarih alanı NULL
        CAST(NULL AS NVARCHAR(20)) AS ISLEMNO, -- İşlem No alanı NULL
        CAST(NULL AS NVARCHAR(50)) AS HareketNo, -- DÜZELTME: Devir CTE'sinde CARINO olmadığı için NULL olarak CAST edildi.
        'DEVİR BAKİYESİ' AS BAACIKLA,
        D.DevirBakiye AS TUTAR, -- Tutar sütununa devir bakiyesi yazılır
        D.DevirBakiye AS Bakiye, -- Bakiye sütununa devir bakiyesi yazılır
        'Devir Bakiyesi' AS ACIKLAMA, -- Devir Açıklaması
        A.MUSVERNO
    FROM
        Devir D
    LEFT JOIN
        AMUSTERI A ON A.MUSNO = D.MUSNO
    WHERE
        D.DevirBakiye <> 0 -- Devir bakiyesi sıfırdan farklı olanlar
        
    UNION ALL
    
    -- 4. ADIM: Hareket Satırlarını Listele (Devir bakiyesi dahil kümülatif bakiye)
    SELECT
        H.MUSNO,
        H.FIRMA_ADI,
        H.TARIH,
        H.ISLEMNO,
        H.CARINO,
        H.BAACIKLA,
        H.TUTAR,
        
        -- Kümülatif Bakiye = Devir Bakiyesi + Hareketlerin Kümülatif Toplamı
        ISNULL(D.DevirBakiye, 0) + H.HareketKumulatifToplam AS Bakiye,
        
        H.ACIKLAMA,
        H.MUSVERNO
    FROM
        Hareketler H
    LEFT JOIN
        Devir D ON H.MUSNO = D.MUSNO

    -- 5. ADIM: Tüm Sonuç Kümesini Sırala
    -- Ekstre mantığında, önce müşteri kodu, sonra tarih/işlem sırasına göre sıralanır.
    ORDER BY
        MUSNO,
        TARIH,
        ISLEMNO,
        HareketNo;

END


GO

 IF EXISTS (SELECT * FROM sys.procedures WHERE name = 'sp_FaturaKdvRaporu') 
DROP PROCEDURE sp_FaturaKdvRaporu
go


create   PROCEDURE [dbo].[sp_FaturaKdvRaporu]
(@Tarih1 smalldatetime,
 @Tarih2 smalldatetime)
AS
BEGIN
	DECLARE @kdvList NVARCHAR(MAX) = '';
	DECLARE @kdvToplamMatrah NVARCHAR(MAX) = '';
	DECLARE @baseSql NVARCHAR(MAX) = '';
	DECLARE @prefix CHAR(1) = '';

	SELECT DISTINCT Kdv 
	INTO #TempKdv
	FROM dbo.STOKHAR;

	-- Sıralı biçimde döngüyle veya XML ile oluştur (örnek döngü ile)
	DECLARE @KdvValue INT;

	DECLARE kdv_cursor CURSOR FOR
		SELECT Kdv FROM #TempKdv ORDER BY Kdv;

	OPEN kdv_cursor;
	FETCH NEXT FROM kdv_cursor INTO @KdvValue;

	WHILE @@FETCH_STATUS = 0
	BEGIN
		SET @kdvList += @prefix + '(
			SELECT ISNULL(SUM(SonTutar - KdvTutari), 0)
			FROM dbo.STOKHAR 
			WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(@KdvValue AS VARCHAR) + '
		) AS Kdv_' + CAST(@KdvValue AS VARCHAR) + '_Matrahi,

		(
			SELECT ISNULL(SUM(KdvTutari), 0)
			FROM dbo.STOKHAR 
			WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(@KdvValue AS VARCHAR) + '
		) AS Kdv_' + CAST(@KdvValue AS VARCHAR) + '_Tutari' + CHAR(13)
 		SET @prefix = ','
		FETCH NEXT FROM kdv_cursor INTO @KdvValue;
	END

	CLOSE kdv_cursor;
	DEALLOCATE kdv_cursor;

	DROP TABLE #TempKdv;

	-- 2. Matrah toplamı dinamik
	SELECT 
		@kdvToplamMatrah = STRING_AGG(
			'(SELECT ISNULL(SUM(SonTutar - KdvTutari), 0) 
			  FROM dbo.STOKHAR WHERE IslemNo = SHB.IslemNo AND Kdv = ' + CAST(Kdv AS VARCHAR) + ')',
			' + '
		)
	FROM (
		SELECT DISTINCT Kdv FROM dbo.STOKHAR
	) AS KdvTable;

	-- 3. Ana sorgu gövdesi
	SET @baseSql = '
	SELECT 
		SHB.CariKodu,
		SHB.CariAdi,
		SHB.FaturaTarihi,
		SHB.IslemTuru,
		SHB.FisTuru,
		SHB.eFaturaNo,
		SHB.FatSerNo,
		SHB.FaturaNo,
		SHB.KdvTutari,
		SHB.Tutar - SHB.KdvTutari AS ToplamTutar,
		SHB.Tutar AS GenelTutar,
		' + @kdvList + ',
		SHB.TevkifatTutari,
		' + @kdvToplamMatrah + ' AS MatrahToplami,
		YETKILI Yetkili,
		TCKimlikNo TCKimlikNo,
		MUSVERGI VergiDairesi,
		MUSVERNO VergiNo,
		SHB.Departman,
		SHB.IslemTipi,
		(SELECT DepartmanAdi FROM dbo.VDepartman WHERE Departman = SHB.Departman) AS DepartmanAdi,
		SHB.OdemeBilgisi
	FROM dbo.STOKHARDETBAG AS SHB,AMUSTERI MUS
	WHERE MUS.MUSKOD = SHB.CariKodu AND
		(SHB.FisTuru = N''F'' OR SHB.FisTuru = N''İ'') AND 
	    SHB.FaturaTarihi BETWEEN @Tarih1 AND @Tarih2  
	';

	-- 4. Çalıştır
	EXEC sp_executesql @baseSql, 
		N'@Tarih1 SMALLDATETIME, @Tarih2 SMALLDATETIME',
		@Tarih1,
		@Tarih2
END;
	go
	--select * from RaporSql where DataSetName like '%TutarYaziIle%' = 'ToplamTutarYaziIle'
	go
	--select * from RaporSql where DataSetName = 'Adres' = 'SevkAdresi'
	go
CREATE  PROC URUNSATIS_ALIS_TOPLAMLARI 
AS
SELECT    StokKodu,    StokAdi,    Birim,    ISNULL([G], 0) AS GirisMiktar,    ISNULL([C], 0) AS CikisMiktar,    ISNULL([G], 0) - ISNULL([C], 0) AS BakiyeMiktar FROM
(   SELECT        h.StokKodu,        k.StokAdi,        h.Birim,        h.GC,        h.Miktar    FROM STOKHAR h    LEFT JOIN STOKKARTI k ON h.StokKodu = k.Kodu 
	WHERE h.FisTuru IN ('F', 'I')  AND IslemTuru IN ('Alış','Satış','Satış İade')) T
PIVOT
(
    SUM(Miktar)
    FOR GC IN ([G], [C])
) P
ORDER BY StokKodu;
GO

--- 7.8.4 TOPLAM

GO
IF NOT EXISTS (SELECT 1 FROM dbo.VTGuncellemeleri WHERE VTVersiyon = '7.8.4')
BEGIN
    INSERT INTO dbo.VTGuncellemeleri (VTVersiyon, SonIslemNo, TarihSaat, Prg)
    SELECT 
        '7.8.4',
        (SELECT TOP 1 ISLEMNO FROM dbo.ADIGSABITLER),
        GETDATE(),
        'OM';
END
GO

ALTER  PROCEDURE [dbo].[spCariHareketYaz]    
   @TESSIRNO int,        
   @MUSNO int,        
   @MUSADI nvarchar(50),        
   @TARIH datetime,        
   @ACIKLAMA nvarchar(200),        
   @BORC float,        
   @ALACAK float,        
   @BA nvarchar(1),        
   @BAACIKLA nvarchar(14),        
   @ACIKLABAKIYE nvarchar(1),        
   @BORDRONO int,        
   @LISTNO nvarchar(5),        
   @ISLEMNO int,        
   @TDATE datetime,        
   @DOVIZTUT float,        
   @DOVIZCINSI int,        
   @MUSKOD nvarchar(20),        
   @DOVIZKODU nvarchar(2),        
   @OZELKOD nvarchar(3),        
   @ISLEMTIPI nvarchar(30),        
   @BELGENO nvarchar(10),        
   @KULNO int,        
   @KULADI nvarchar(20),        
   @SaticiKodu nvarchar(15),        
   @SaticiAdi nvarchar(25),        
   @CariOPlanGunu int,        
   @GunAy nvarchar(3),        
   @OpsiyonGunu int,        
   @AcikKapali nvarchar(3),        
   @DovizBorc float,        
   @DovizAlacak float,        
   @TP nvarchar(2),        
   @VardiyaKodu nvarchar(15),        
   @VardiyaDurumu nvarchar(9),        
   @Departman nvarchar(8),        
   @IslemNo2 int,        
   @KayitDuzeyi int,         
   @KayitDuzeyiNo int,        
   @IslemNo3 int,        
   @Aciklama2 nvarchar(30),        
   @OnOdeme nvarchar(1),        
   @VadeTarihi datetime,        
   @IsIstasyonKodu nvarchar(30),        
   @IsIstasyonAdi nvarchar(30),         
   @SiraNo int,        
   @VardiyaNo nvarchar(8),         
   @PosSablonKodu nvarchar(15),        
   @Update_Date DateTime,        
   @StokKodu nvarchar(30),        
   @FisNo int,
   @DovizKuru float = 1
AS        
BEGIN        
    
 INSERT 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, DovizKur)

 VALUES ( @TESSIRNO, @MUSNO, @MUSADI, @TARIH,        
    @ACIKLAMA, @BORC, @ALACAK, @BA,        
    @BAACIKLA, @ACIKLABAKIYE,        
    @BORDRONO, @LISTNO, @ISLEMNO,        
    GETDATE(), @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,        
    GETDATE(),@StokKodu, @FisNo,@DovizKuru )     
    
    IF @BAACIKLA = 'Prk.Satış'  
 BEGIN  
  DECLARE @CariSayisi int,@SD_Fark float  
  
  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))  
  
  SET @SD_Fark = @BORC - ( SELECT Tutar FROM STOKHARDETBAG B WHERE B.IslemNo = @ISLEMNO )   
  
  IF  (@CariSayisi > 0) or (ABS(@SD_Fark) > 0.01)  
  BEGIN  
      UPDATE STOKHARDETBAG SET CariNo = @MUSNO,CariKodu = @MUSKOD, CariAdi = @MUSADI,Tutar = @BORC,Ack4 = 'ACari Tutar Güncelleme' where IslemNo = @ISLEMNO and IslemTuru = 'Prk.Satış'  
   RAISERROR ('Cari veya tutar hatası. Kontrol ediniz..!',10,1)  
   return 0  
  END    
 END  
  
END;
GO
ALTER TABLE KASA ALTER COLUMN ACIKLAMA nvarchar(200)
GO
ALTER  PROCEDURE [dbo].[spKasaHareketYaz]     
   @BORC Float,    
   @ALACAK Float,    
   @ACIKLAMA nvarchar(200),     
   @KASAKODU nvarchar(6),    
   @KASAADI nvarchar(10),    
   @MUSNO int,    
   @MUSADI nvarchar(50),    
   @TARIH datetime,    
   @BA nvarchar(1),    
   @BAACIKLA nvarchar(12),    
   @ISLEMNO int,    
   @MUSKOD nvarchar(20),    
   @DovizTut float,    
   @DovizCinsi int,    
   @DovizKodu nvarchar(2),    
   @AcikKapali nvarchar(1),    
   @IslemNo2 int,    
   @AktarimTarihi datetime,    
   @BelgeNo nvarchar(10),    
   @KULNO int,    
   @KULADI nvarchar(20),    
   @NakitVisa nvarchar(1),    
   @SaticiKodu nvarchar(10),    
   @SaticiAdi nvarchar(25),    
   @DovizBorc Float,    
   @DovizAlacak Float,    
   @VardiyaKodu nvarchar(15),    
   @VardiyaDurumu nvarchar(9),    
   @Departman nvarchar(8),    
   @KayitDuzeyi int,    
    @IsIstasyonKodu nvarchar(30),    
   @IsIstasyonAdi nvarchar(30),    
   @VardiyaNo nvarchar(8),    
   @FisNo int,  
   @DovizKuru float = 1  
AS     
    
INSERT KASA VALUES ( @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,  
   @DovizKuru) 

GO

GO
ALTER TABLE BANKA ALTER COLUMN ACIKLAMA nvarchar(200)

GO

ALTER PROCEDURE	[dbo].[spBankaHareketYaz] 
			@BORC Float,
			@ALACAK Float,
			@ACIKLAMA nvarchar(200), 
			@BANKAKODU nvarchar(6),
			@BANKAADI nvarchar(30),
			@MUSNO int,
			@MUSADI nvarchar(50),
			@TARIH datetime,
			@BA nvarchar(1),
			@BAACIKLA nvarchar(12),
			@SUBE nvarchar(20),
			@HESAPNO nvarchar(20),
			@KESCEK Float,
			@BORDRONO int,
			@TAHSILCEK Float,
			@TAHSILSENET Float,
			@ISLEMNO int,
			@ISLEMNO2 int,
			@MUSKOD nvarchar(20),
			@DovizTut float,
			@DovizCinsi int,
			@DovizKodu nvarchar(2),
			@KULNO int,
			@KULADI nvarchar(20),
			@BORDRONO2 int,
			@TeminatSenet Float,
			@TeminatCek Float,
			@AcikKapali nvarchar(1),
			@DovizBorc Float,
			@DovizAlacak Float,
			@Departman nvarchar(8),
			@KayitDuzeyi int,
			@KESCEK_A Float,
			@TAHSILCEK_A Float,
			@TAHSILSENET_A Float,
			@TeminatSenet_A Float,
			@TeminatCek_A Float,
			@VardiyaNo nvarchar(8), 
			@HesapNumarasi int,
			@Aciklama2 nvarchar(200),
			@FisNo int,
			@DovizKur float
AS 
INSERT BANKA VALUES (	@BORC,
			@ALACAK,
			@ACIKLAMA,
			@BANKAKODU,
			@BANKAADI,
			@MUSNO,
			@MUSADI,
			@TARIH,
			@BA,
			@BAACIKLA,
			@SUBE,
			@HESAPNO,
			@KESCEK,
			@BORDRONO,
			@TAHSILCEK,
			@TAHSILSENET,
			@ISLEMNO,
			@ISLEMNO2,
			@MUSKOD,
			@DovizTut,
			@DovizCinsi,
			@DovizKodu,
			@KULNO,
			@KULADI,
			@BORDRONO2,
			@TeminatSenet,
			@TeminatCek,
			@AcikKapali,
			@DovizBorc,
			@DovizAlacak,
			@Departman,
			@KayitDuzeyi,
			@KESCEK_A,
			@TAHSILCEK_A,
			@TAHSILSENET_A,
			@TeminatSenet_A,
			@TeminatCek_A,
			@VardiyaNo,
			@HesapNumarasi,
			@Aciklama2,
			@FisNo,
			@DovizKur)
GO
DROP PROC sp_GelirGiderYaz
GO

GO
ALTER TABLE GELGID ALTER COLUMN ACIKLAMA nvarchar(200)

GO
ALTER  PROCEDURE [dbo].[spGelirGiderYaz]   
   @BORC float,  
   @ALACAK float,  
   @ACIKLAMA nvarchar(200),  
   @GELGIDKODU nvarchar(30),  
   @GELGIDADI nvarchar(150),  
   @MUSNO int,  
   @MUSADI nvarchar(50),  
   @TARIH datetime,  
   @BA nvarchar(1),  
   @BAACIKLA nvarchar(12),  
   @KODU nvarchar(5),  
   @ISLEMNO int,  
   @MUSKOD nvarchar(20),  
   @DOVIZTUT float,  
   @DOVIZCINSI int,  
   @DOVIZKODU nvarchar(2),  
   @KASAADI nvarchar(10),  
   @KASAKODU nvarchar(6),  
   @KULNO int,  
   @KULADI nvarchar(20),  
   @AcikKapali nvarchar(3),  
   @DovizBorc float,  
   @DovizAlacak float,  
   @VardiyaKodu nvarchar(15),  
   @VardiyaDurumu nvarchar(9),  
   @Departman nvarchar(8),  
   @HesapKodu nvarchar(25),  
   @HesapAdi nvarchar(50),  
   @KarsiHesp nvarchar(5),  
   @KayitDuzeyi int,  
   @BelgeNo nvarchar(30),  
   @OzelKod1 nvarchar(10),  
   @OzelKod2 nvarchar(10),  
   @IsIstasyonKodu nvarchar(30),  
   @IsIstasyonAdi nvarchar(30),  
   @VardiyaNo nvarchar(8),  
   @BordroNosu int,  
   @BordroAciklamasi nvarchar(100),  
   @Modul nvarchar(3),      
   @SaticiKodu nvarchar(10),  
   @SaticiAdi nvarchar(25),  
   @Tutar float,  
   @KdvTutari float,  
   @Kdv float,  
   @StopajTutari float,  
   @Stopaj float,  
   @FisNo int,
   @DovizKuru float
AS  
  
 INSERT GELGID VALUES ( @BORC, @ALACAK, @ACIKLAMA,  
    @GELGIDKODU, @GELGIDADI, @MUSNO,  
    @MUSADI,@TARIH, @BA,@BAACIKLA,  
    @KODU, @ISLEMNO,@MUSKOD,@DOVIZTUT,  
    @DOVIZCINSI,@DOVIZKODU, @KASAADI,  
    @KASAKODU,@KULNO,@KULADI,@AcikKapali,  
    @DovizBorc,@DovizAlacak,@VardiyaKodu,  
    @VardiyaDurumu, @Departman,@HesapKodu,  
    @HesapAdi,@KarsiHesp,@KayitDuzeyi,  
    @BelgeNo,@OzelKod1,@OzelKod2,@IsIstasyonKodu,  
    @IsIstasyonAdi,@VardiyaNo,@BordroNosu, @BordroAciklamasi,  
    @Modul,@SaticiKodu,@SaticiAdi,@Tutar,@KdvTutari,@Kdv,@StopajTutari,@Stopaj, @FisNo,@DovizKuru)  

	GO
	ALTER TABLE ACARI_Log ALTER COLUMN ACIKLAMA nvarchar(200)
	GO

	CREATE  PROC sp_Perakende_PeşinSatisFarklari
as

select  M.MUSADI CARIADI,YIL,AY,GUN,Tutar , M.MUSKOD CARIKODU  from (
select MUSNO , YEAR (TARIH) YIL,MONTH (TARIH)AY,day (TARIH )GUN ,round(sum(BORC-ALACAK),2)  Tutar from ACARI group by  MUSNO,YEAR (TARIH),MONTH (TARIH),day (TARIH ) 
) x LEFT JOIN AMUSTERI M ON x.MUSNO=M.MUSNO
where x.Tutar<>0 
and     EXISTS (  
        SELECT 1 FROM KullaniciAyarlari k  
        WHERE k.Ayar = 'PesinCariNo' AND k.Deger = CAST(M.MUSNO AS NVARCHAR)  )

 order by 1 ,2,3,4,5
GO
 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






