AIFA AKADEMI · Kurumsal Wiki
4.310 makale
Ana sayfa Kurumsal Wiki › Veritabanı › StoredProcedures › SP-DBO.SP_DEVIRISLEMIYAP

dbo.sp_DevirIslemiYap

PROCEDUREMOD-DIGERERPGOLD_COREUNUSED_MEDIUM_CONFIDENCEVERY_HIGH[SOURCE_IMPLEMENTED]
Kanonik kaynak: markdown · bu sayfa üretilmiş görünümdür

Tip: STORED PROCEDURE · Şema: dbo · Modül: MOD-DIGER · Temizlik sınıfı: UNUSED_MEDIUM_CONFIDENCE (kategori F, güven 90) · Kapsam: ERPGOLD_CORE / ALL

Kullanım haritası (13.09.2026)

KategoriF — MANUAL REVIEW · F-CONSTRAINT_OR_CROSSDB
Güven40
GerekçeGüvenlik kontrolü pozitif: crossdb
Dinamik SQLBu modül dinamik SQL kuruyor (EXEC/sp_executesql) — bağımlılıkları metadata’da eksik olabilir

Bkz. Database Usage Map · Manual Review. Hiçbir DB değişikliği yapılmadı; SAFETY > CLEANUP.

Temizlik kanıtı

Kontrol Sonuç
app NO
report NO
config NO
dynamic NO
db_in NO
db_out YES
trigger NO
fk NO
computed NO
crossdb YES
runtime UNKNOWN
external NO

Gerekçe: UNKNOWN CROSS-DATABASE DEPENDENCY: ERPGLOBAL.Dbo.Company

KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)

Tür: PROCEDURE (P) · Modül: MOD-DIGER · Uzunluk: 738 satır

Özet

[GAP] Kaynakta açıklama yorumu yok; davranış aşağıdaki SQL tanımından ve ilişkilerden okunur.

Parametreler

# Parametre Tip Çıktı
1 @Tarih date

Bağımlılıklar (bu nesne → hedef)

İlişki Hedef Tip
WRITES Bilanco.Bilancolar TABLE
WRITES Cari.BakiyeIslem TABLE
WRITES Cari.Hesaplar TABLE
WRITES Cari.History TABLE
WRITES Cari.IslemDetaylari TABLE
WRITES Cari.Islemler TABLE
WRITES Cari.Transferler TABLE
CALLS FN.GetKur FUNCTION
CALLS Muhasebe.Stoklar FUNCTION
READS Sistem.Birimler TABLE
CALLS Sistem.GetBirimToId FUNCTION
CALLS Sistem.GetIdToBirim FUNCTION
READS Sistem.Kasalar TABLE
WRITES Sistem.Kurlar TABLE
WRITES Sistem.Login TABLE
READS Sistem.Sirketler TABLE
READS Sistem.Subeler TABLE
WRITES Stok.DevirCesniStoklari TABLE
CALLS Stok.GetCesniStoklari FUNCTION
CALLS Stok.GetMadenStoklari FUNCTION
CALLS Stok.GetNakitStoklari FUNCTION
READS Stok.Maden TABLE
READS Stok.Nakit TABLE
WRITES Stok.StokHaraketleri TABLE
WRITES Stok.Takoz TABLE

SQL tanımı (AS-IMPLEMENTED, örnek DB)

CREATE Proc sp_DevirIslemiYap(@Tarih date)
as
SET NOCOUNT ON

Declare @SuccessMSG nvarchar(max)='       Görev Tamamlandı.'

if (Select Count(*) from (Select Kodu,Sum(Sadet) as Adet From Cari.Islemler Where Tarih<=@Tarih and IsDeleted=0 and IslemKodu=0 Group by Kodu Having Sum(SAdet)<>0) T ) >0 
BEGIN
    PRINT( convert(nvarchar(max), @Tarih,104) +  ' TARIHINDE ELINIZDE CIKILMAMIS TAKOZ BULUNUYOR. BU TARIHE DEVIR YAPAMAZSINIZ!.' )
    Declare @MSG nvarchar(Max)=''
    Select @MSG += Kodu + ' ' +  convert(nvarchar(max),Sum(Sadet)) + char(13) From Cari.Islemler Where Tarih<=@Tarih and IsDeleted=0 and IslemKodu=0 Group by Kodu Having Sum(SAdet)<>0
    print  @MSG
    RETURN
END
print 'Message  : ERP_DEVIR Hesap Kartları olmayan subelerde oluşturuluyor.'
Alter Table Cari.Hesaplar Disable Trigger All
INSERT INTO [Cari].[Hesaplar]
    ([KarsiHesapId], [MuhHesapId], [OldFirmaId], [KartId], [SubeId], [HesapAdi], [GrupKodu], [Kategori], [VergiDairesi], [VergiNo], [TCNo], [PassaportNo], [HukukiKod], [SanalHesap], [Kaldirac], [OnsCarpan], [MarginLevel], [MarginCall], [MarginStop], [Limit], [LimitBirimId], [AutoStop], [TakozHasIsc], [TakozHasIscBirimId], [TakozGumIsc], [TakozGumIscBirimId], [Yetkili], [Adres], [Ulke], [Il], [Ilce], [Semt], [Telefon1], [Telefon2], [Fax], [Gsm], [Email], [Web], [IsActive], [PasifDescription], [LastDate], [UserId], [RefNo], [Rating], [FixingDiscount], [FixingBirimId], [HesapTuru], [TicariUnvan], [Temsilci1], [Temsilci2])
    SELECT 0 AS KarsiHesapId,0 AS MuhHesapId,0 AS OldFirmaId,1 AS KartId,S.Id AS SubeId,'ERP_DEVIR' AS HesapAdi,'' AS GrupKodu,'' AS Kategori,'' AS VergiDairesi,'' AS VergiNo,'' AS TCNo,'' AS PassaportNo,0 AS HukukiKod,0 AS SanalHesap,0 AS Kaldirac,0.0 AS OnsCarpan,0.0 AS MarginLevel,0.0 AS MarginCall,0.0 AS MarginStop,0.0 AS Limit,1 AS LimitBirimId,0 AS AutoStop,0.0 AS TakozHasIsc,1 AS TakozHasIscBirimId,0.0 AS TakozGumIsc,1 AS TakozGumIscBirimId,'' AS Yetkili,'' AS Adres,'' AS Ulke,'' AS Il,'' AS Ilce,'' AS Semt,'' AS Telefon1,'' AS Telefon2,'' AS Fax,'' AS Gsm,'' AS Email,'' AS Web,0 AS IsActive,'' AS PasifDescription,GETDATE() AS LastDate,0 AS UserId,'' AS RefNo,0 AS Rating,0.0 AS FixingDiscount,1 AS FixingBirimId,0 AS HesapTuru,'' AS TicariUnvan,'' AS Temsilci1,'' AS Temsilci2 FROM 
    Sistem.Subeler S WHERE S.Id NOT IN (SELECT SubeId FROM Cari.Hesaplar WHERE SubeId = S.Id AND HesapAdi = 'ERP_DEVIR') AND S.IsDeleted = 0;
Alter Table Cari.Hesaplar Enable Trigger All
print  @SuccessMSG

print 'Message      : Devir Çeşni Stokları İçin Temp Tablo Oluşturuloyr.'
    CREATE TABLE #TempCesniStoklari (SubeId INT,Sube NVARCHAR(100),Kasa NVARCHAR(100),Kodu NVARCHAR(50),Miktar DECIMAL(10, 2),Has DECIMAL(10, 5),Gum DECIMAL(10, 6));
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'Stok.DevirCesniStoklari') AND type in (N'U')) 
    BEGIN CREATE TABLE Stok.DevirCesniStoklari (SubeId INT,Sube NVARCHAR(100),Kasa NVARCHAR(100),Kodu NVARCHAR(50),Miktar DECIMAL(10, 2),Has DECIMAL(10, 5),Gum DECIMAL(10, 6)); END ELSE BEGIN truncate table Stok.DevirCesniStoklari  END

    DECLARE @CesniSQL NVARCHAR(MAX);
    SET @CesniSQL = N'
    ALTER FUNCTION [Stok].[GetCesniStoklari] 
    (
        @SubeId INT,
        @KasaId INT,
        @Tarih DATE
    )
    RETURNS TABLE
    AS
    RETURN
    (
        SELECT 
            Cesni.SubeId, 
            S.Kodu AS Sube,
            ''MERKEZ'' AS Kasa, 
            Cesni.Kodu,
            SUM(Miktar) AS Miktar,
            SUM(Has) AS Has,
            SUM(Gum) AS Gum
        FROM
        (
            SELECT SubeId, 0 as KasaId, ''CESNI'' as Kodu, Miktar, Has, Gum 
            FROM Stok.DevirCesniStoklari

            UNION ALL

            SELECT SubeId, KasaId, ''CESNI'' As Kodu, SUM(Miktar * -1) as Miktar, SUM(Miktar * AuMilyem) * -1 as Has, SUM(Miktar * AgMilyem) * -1 as Gum  
            FROM Cari.Islemler 
            WHERE IslemKodu = 14 AND IsDeleted = ''False'' AND (SubeId = @SubeId OR @SubeId = 0) AND CONVERT(date, InsertDate) <= @Tarih 
            GROUP BY SubeId, KasaId

            UNION ALL

            SELECT SubeId, KasaId, ''CESNI'' As Kodu, SUM(cesniMiktar) as Miktar, SUM(cesniMiktar * AuMilyem) as Has, SUM(cesniMiktar * AgMilyem) as Gum  
            FROM Cari.Islemler 
            WHERE IslemKodu = 0 AND IslemTuru = 0 AND IsDeleted = ''False'' AND IsRapor = ''True'' AND (SubeId = @SubeId OR @SubeId = 0) AND CONVERT(date, InsertDate) <= @Tarih 
            GROUP BY SubeId, KasaId

            UNION ALL

            SELECT SubeId, KasaId, ''RAPORSUZ'' As Kodu, SUM(cesniMiktar) as Miktar, SUM(cesniMiktar * 0.600) as Has, SUM(cesniMiktar * AgMilyem) as Gum  
            FROM Cari.Islemler 
            WHERE IslemKodu = 0 AND IslemTuru = 0 AND IsDeleted = ''False'' AND IsRapor = ''False'' AND (SubeId = @SubeId OR @SubeId = 0) AND CONVERT(date, InsertDate) <= @Tarih 
            GROUP BY SubeId, KasaId
        ) Cesni
        LEFT JOIN Sistem.Subeler S ON S.Id = Cesni.SubeId
        GROUP BY S.Kodu, Cesni.SubeId, Cesni.Kodu
    )';

    EXEC sp_executesql @CesniSQL;
    INSERT INTO #TempCesniStoklari SELECT * FROM stok.GetCesniStoklari(0, 0, @Tarih);
    print  @SuccessMSG


DECLARE @DisableNonSystemTriggers NVARCHAR(MAX)=N'' 
DECLARE @EnableNonSystemTriggers NVARCHAR(MAX) = N'';
DECLARE @DisableSystemTriggers NVARCHAR(MAX)=N'' 
DECLARE @EnableSystemTriggers NVARCHAR(MAX) = N'';
SELECT @DisableNonSystemTriggers += N'DISABLE TRIGGER ' + QUOTENAME(T.name) + ' ON Cari.Islemler;' FROM sys.triggers AS T LEFT JOIN sys.objects AS O ON T.parent_id = O.object_id LEFT JOIN Sys.schemas AS S ON S.schema_id = O.schema_id WHERE S.name = 'Cari' AND O.name = 'Islemler' AND T.name NOT IN ('DeleteTransaction', 'InsertTransaction', 'UpdateTransaction', 'AcceptTransaction');
SELECT @EnableNonSystemTriggers  += N'ENABLE TRIGGER ' + QUOTENAME(T.name) + ' ON Cari.Islemler;' FROM sys.triggers AS T LEFT JOIN sys.objects AS O ON T.parent_id = O.object_id LEFT JOIN Sys.schemas AS S ON S.schema_id = O.schema_id WHERE S.name = 'Cari' AND O.name = 'Islemler' AND T.name NOT IN ('DeleteTransaction', 'InsertTransaction', 'UpdateTransaction', 'AcceptTransaction');

SELECT @DisableSystemTriggers += N'DISABLE TRIGGER ' + QUOTENAME(T.name) + ' ON Cari.Islemler;' FROM sys.triggers AS T LEFT JOIN sys.objects AS O ON T.parent_id = O.object_id LEFT JOIN Sys.schemas AS S ON S.schema_id = O.schema_id WHERE S.name = 'Cari' AND O.name = 'Islemler' AND T.name IN ('DeleteTransaction', 'InsertTransaction', 'UpdateTransaction', 'AcceptTransaction');
SELECT @EnableSystemTriggers  += N'ENABLE TRIGGER ' + QUOTENAME(T.name) + ' ON Cari.Islemler;' FROM sys.triggers AS T LEFT JOIN sys.objects AS O ON T.parent_id = O.object_id LEFT JOIN Sys.schemas AS S ON S.schema_id = O.schema_id WHERE S.name = 'Cari' AND O.name = 'Islemler' AND T.name IN ('DeleteTransaction', 'InsertTransaction', 'UpdateTransaction', 'AcceptTransaction');


DECLARE @CurrentDBName NVARCHAR(MAX), @BackupFileName NVARCHAR(MAX), @RestoreDBName NVARCHAR(MAX);
DECLARE @BackupSQL NVARCHAR(MAX);
DECLARE @Path NVARCHAR(MAX)='', @MDFName NVARCHAR(MAX), @LDFName NVARCHAR(MAX);
DECLARE @RestoreSQL NVARCHAR(MAX);


-- Mevcut ve yeni veritabanı adlarını al
SELECT @CurrentDBName = DB_NAME()
SELECT @RestoreDBName = 'ERP_' + (SELECT TOP 1 Kodu FROM Sistem.Sirketler) + '_' +REPLACE(CONVERT(NVARCHAR, @Tarih, 112), '-', '') 
-- Yedek dosyası adını belirle
SET @BackupFileName = @RestoreDBName + '.bak';

print 'STEP 1   : Yedekleme İşlemi Başlatılıyor[' + @CurrentDBName +  ']'
SET @BackupSQL = 'BACKUP DATABASE [' + @CurrentDBName + '] TO DISK = ''' + @BackupFileName + ''' WITH NOFORMAT, NOINIT, NAME = N''Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10';
EXEC sp_executesql @BackupSQL;
print  @SuccessMSG


-- Mevcut veritabanı dosya yolu
SELECT @Path = LEFT(physical_name, LEN(physical_name) - CHARINDEX('\', REVERSE(physical_name))) FROM sys.database_files WHERE type_desc = 'ROWS';
-- MDF ve LDF dosya isimlerini belirle
SET @MDFName = @Path + '\' + @RestoreDBName + '.MDF';
SET @LDFName = @Path + '\' + @RestoreDBName + '.LDF';

-- Geri yükleme komutunu oluşturmak için önce mantıksal dosya isimlerini bul
DECLARE @LogicalDataFileName NVARCHAR(260), @LogicalLogFileName NVARCHAR(260);


CREATE TABLE #FileList (LogicalName NVARCHAR(128),PhysicalName NVARCHAR(260),[Type] CHAR(1));
INSERT INTO #FileList  SELECT name,physical_name,Case When Type=0 Then 'D' when type =1 Then 'L' end as Type    from sys.database_files 

SELECT @LogicalDataFileName = LogicalName FROM #FileList WHERE [Type] = 'D';
SELECT @LogicalLogFileName = LogicalName FROM #FileList WHERE [Type] = 'L';
DROP TABLE #FileList;


print 'STEP 2   : Arsiv Veritabanı Geri Yükleniyor [' + @RestoreDBName +  ']'

-- Geri yükleme komutunu oluştur
SET @RestoreSQL = 'RESTORE DATABASE [' + @RestoreDBName + '] FROM DISK = ''' + @BackupFileName + ''' WITH MOVE ''' + @LogicalDataFileName + ''' TO ''' + @MDFName + ''', MOVE ''' + @LogicalLogFileName + ''' TO ''' + @LDFName + ''', NOUNLOAD, STATS = 5';
-- Geri yükleme komutunu çalıştır
 EXEC sp_executesql @RestoreSQL;
  print  @SuccessMSG



print 'STEP 3   : Kullanıcı Triggerları Kapatılıyor.'
EXEC sp_executesql @DisableNonSystemTriggers;
print @SuccessMSG


print 'STEP 4   : Stoklar İçin Geçici Tablo Oluşturuluyor'
    IF OBJECT_ID('tempdb..#TempStoklar') IS NOT NULL DROP TABLE #TempStoklar;
    CREATE TABLE #TempStoklar (SirketId INT,SubeId INT,KasaId INT,StokId INT,AnaBirimId int,Kodu nvarchar(Max),Cinsi NVARCHAR(50),Adet INT,Miktar DECIMAL(18, 5),Milyem DECIMAL(18, 5),Has DECIMAL(18, 5),BirimFiyat DECIMAL(18, 5),I CHAR(1),Maliyet DECIMAL(18, 5),Birim NVARCHAR(50));
 print  @SuccessMSG

print 'STEP 5   : Bakiyeler İçin Geçici Tablo Oluşturuluyor'
    IF OBJECT_ID('tempdb..#TempBakiyeler') IS NOT NULL DROP TABLE #TempBakiyeler;
    CREATE TABLE #TempBakiyeler(HesapId int,SubeId int,KasaId INT,BirimId INT,Bakiye DECIMAL(18, 5));
print  @SuccessMSG


print 'STEP 6   : Stoklar Geçici Tablo Yazılıyor'
    INSERT INTO #TempStoklar
    Select * from 
    (
        Select SirketId,SubeId,KasaId,Id as StokId,Sistem.GetBirimToId( AnaBirim) as AnaBirimId,Kodu,Cinsi,Adet,Miktar,Milyem,Has,BirimFiyat ,I,Maliyet ,Birim  from stok.GetMadenStoklari (0,0,@Tarih,0)
        UNION ALL
        Select SirketId,SubeId,KasaId,StokId,Sistem.GetBirimToId( AnaBirim) as AnaBirimId,Kodu,'NAKIT' as Cinsi,0 as Adet,Miktar ,0 as Milyem,0 as Has,0 as BirimFiyat,'M' as I,0 as Maliyet,null as Birim from Stok.GetNakitStoklari (0,0,@Tarih)   
    ) Stoklar
print  @SuccessMSG


print 'STEP 7   : Bakiyeler Geçici Tablo Yazılıyor'
    Insert Into #TempBakiyeler
    Select HesapId,H.SubeId,KasaId,BirimId,Sum(Bakiye) as Bakiye from Cari.BakiyeIslem B Left Join Cari.Hesaplar H on H.Id=B.HesapId    Where Tarih<= @Tarih AND BirimId<>-1
    Group by HesapId,SubeId,BirimId,KasaId having Sum(Bakiye )<>0
print  @SuccessMSG

print 'STEP 8   : Sistem Triggerları Kapatılıyor'
    EXEC sp_executesql @DisableSystemTriggers;
print  @SuccessMSG

print 'STEP 9   : Kayıtlar Arsivleniyor'
    print '       Cari.Islemler Tablosu Arsivleniyor'
                    Delete From Cari.Islemler  Where Tarih <=@Tarih 
    print '       Cari.Islemlerdetaları Tablosu Arsivleniyor'
                    Delete From Cari.IslemDetaylari Where IslemId not in (Select Id From Cari.Islemler)
    print '       Cari.History Tablosu Arsivleniyor'
                    Delete From Cari.History  Where Tarih <=@Tarih 
    print '       Cari.Bilancolar Tablosu Arsivleniyor'
                    Delete From Bilanco.Bilancolar Where Tarih <= @Tarih
    print '       Sistem.Kurlar Tablosu Arsivleniyor'
                    Delete From Sistem.Kurlar Where Tarih <=@Tarih
    print '       Sistem.Login Tablosu Arsivleniyor'
                    Delete From Sistem.Login Where convert(date,LoginDate )<=@Tarih
    print '       Sistem.BakiyeIslem Tablosu Arsivleniyor'
                    Delete from Cari.BakiyeIslem  Where Tarih<=@Tarih 
    print '       Stok.StokHaraketleri Tablosu Arsivleniyor'
                    Delete From Stok.StokHaraketleri  Where Tarih <=@Tarih 
    print '       Cari.Transferler Tablosu Arsivleniyor'
                    Delete From Cari.Transferler Where Tarih <=@Tarih 
    print '       Stok.Takoz Tablosu Arsivleniyor'
                    Delete From Stok.Takoz Where Convert(date,InsertDate) <=@Tarih 
    print '       Cesni Stokları Aktarılıyor'
                    insert Into Stok.DevirCesniStoklari Select * from #TempCesniStoklari
                    Drop table #TempCesniStoklari

print  @SuccessMSG

print 'STEP10   : Sistem Triggerları Açılıyor'
                EXEC sp_executesql @EnableSystemTriggers;
print  @SuccessMSG

     ---Bakiyeleri Aktar
print 'STEP11   : Bakiyeler Aktarılıyor'

     Declare @IslemId int=1

     SET IDENTITY_INSERT Cari.Islemler ON

     INSERT INTO [Cari].[Islemler]
           (Id,
           [ProjeId]
           ,[HesapType]
           ,[OwnerRefNo]
           ,[RefNo]
           ,[SubeId]
           ,[KasaId]
           ,[HesapId]
           ,[FisNo]
           ,[Tarih]
           ,[IslemKodu]
           ,[IslemTuru]
           ,[IslemTipi]
           ,[Vade]
           ,[StokId]
           ,[AyarEviId]
           ,[RaporNo]
           ,[IsRapor]
           ,[IsExtra]
           ,[Kodu]
           ,[BakiyeId]
           ,[Adet]
           ,[Miktar]
           ,[CesniMiktar]
           ,[AuMilyem]
           ,[AgMilyem]
           ,[PldMilyem]
           ,[PltMilyem]
           ,[HasIsc]
           ,[HasIscBirimId]
           ,[HasIscBirimKur]
           ,[GumIsc]
           ,[GumIscBirimId]
           ,[GumIscBirimKur]
           ,[IscilikDurumu]
           ,[GumusDurumu]
           ,[PlatinDurumu]
           ,[PalladiumDurumu]
           ,[Fiyat]
           ,[FiyatTipi]
           ,[Tutar]
           ,[BirimId]
           ,[Birim]
           ,[BirimKur]
           ,[Aciklama]
           ,[Kategori]
           ,[Kategori2]
           ,[Maliyet]
           ,[Satis]
           ,[Iscilik]
           ,[IscilikBirim]
           ,[IscilikBirimKur]
           ,[IscilikBirimId]
           ,[HasKur]
           ,[GumKur]
           ,[PltKur]
           ,[PldKur]
           ,[UsdKur]
           ,[EurKur]
           ,[Tag]
           ,[Locked]
           ,[UserId]
           ,[InsertDate]
           ,[IsDeleted]
           ,[Status]
           ,[LoginId]
           ,[MUser]
           ,[MTarih]
           ,[Mutabakat]
           ,[VaryantId]
           ,[OzelKodId]
           ,[LastModify]
           ,[Olcu]
           ,[RsAktar]
           ,[FaturaIscilikTL])

Select     ROW_NUMBER() OVER (ORDER BY HesapId,SubeId,KasaId,BirimId) as Id,        
           0 as ProjeId,
           0 as HesapType, 
           null as OwnerRefNo,
           REPLACE(UPPER(NEWID()),'-','') as REFNO,
           b.SubeId  as SubeId, 
           KasaId  As KasaId,
           HesapId,
           0 as FisNo,
           @Tarih as Tarih,
           999 as IslemKodu, 
           Case When Bakiye >0 then 1 Else 0 End as IslemTuru,
           0 as IslemTipi, 
           @Tarih as Vade ,
           0 as StokId ,
           0 as AyarEviId,
           '' as RaporNo,
           0 as IsRapor,
           0 as IsExtra,
           'DEVIR' as Kodu,
           0 as BakiyeId,
           0 as Adet,
           0 as Miktar,
           0 as CesniMiktar,
           0 as AuMilyem,
           0as AgMilyem, 
           0 as PldMilyem,
           0 as PltMilyem, 
           0 as HasIsc,  
           0 as HasIscBirimId, 
           0 as HasIscBirimKur, 
           0 as GumIsc, 
           0 as GumIscBirimId, 
           0 as GumIscBirimKur, 
           0 as IscilikDurumu,
           0 as GumusDurumu, 
           0 as PlatinDurumu, 
           0 as PalladiumDurumu, 
           abs(Bakiye)  as Fiyat, 
           0 as FiyatTipi, 
           abs(Bakiye) as Tutar,
           BirimId, 
           br.Kodu as  Birim,
           Fn.GetKur (BirimId) as BirimKur,
           'DEVIR #' + left(replace(newId(),'-',''),7) AS Aciklama, 
           '' Kategori,
           '' AS Kategori2, 
           0 AS Maliyet,
           0 AS Satis, 
           0 AS Iscilik, 
           '' AS IscilikBirim, 
           0 AS IscilikBirimKur, 
           0 AS IscilikBirimId, 
           0 AS HasKur,
           0 AS GumKur,
           0 as PltKur,
           0 as PldKur,
           0 as UsdKur,
           0 as EurKur, 
           '' as Tag,
           0 as Locked,
           1 as UserId, 
           @Tarih as InsertDate,
           0 as IsDeleted,
           0 as [Status],
           1 as LoginId,
           '' as MUser,
           null as MTarih, 
           0 as Mutabakat,
           0 as VaryantId, 
           0 as OzelKodId, 
           null as LastModify, 
           0 as Olcu,
           0 as RsAktar, 
           0 as FaturaIscilikTL
from  #TempBakiyeler B Left Join Sistem.Birimler Br on Br.Id =B.BirimId 
print  @SuccessMSG

Declare @IDCount int = (Select Max(Id) from Cari.Islemler Where Tarih =@Tarih)

print 'STEP12   : Stoklar Aktarılıyor'

     INSERT INTO [Cari].[Islemler]
           (Id,
           [ProjeId]
           ,[HesapType]
           ,[OwnerRefNo]
           ,[RefNo]
           ,[SubeId]
           ,[KasaId]
           ,[HesapId]
           ,[FisNo]
           ,[Tarih]
           ,[IslemKodu]
           ,[IslemTuru]
           ,[IslemTipi]
           ,[Vade]
           ,[StokId]
           ,[AyarEviId]
           ,[RaporNo]
           ,[IsRapor]
           ,[IsExtra]
           ,[Kodu]
           ,[BakiyeId]
           ,[Adet]
           ,[Miktar]
           ,[CesniMiktar]
           ,[AuMilyem]
           ,[AgMilyem]
           ,[PldMilyem]
           ,[PltMilyem]
           ,[HasIsc]
           ,[HasIscBirimId]
           ,[HasIscBirimKur]
           ,[GumIsc]
           ,[GumIscBirimId]
           ,[GumIscBirimKur]
           ,[IscilikDurumu]
           ,[GumusDurumu]
           ,[PlatinDurumu]
           ,[PalladiumDurumu]
           ,[Fiyat]
           ,[FiyatTipi]
           ,[Tutar]
           ,[BirimId]
           ,[Birim]
           ,[BirimKur]
           ,[Aciklama]
           ,[Kategori]
           ,[Kategori2]
           ,[Maliyet]
           ,[Satis]
           ,[Iscilik]
           ,[IscilikBirim]
           ,[IscilikBirimKur]
           ,[IscilikBirimId]
           ,[HasKur]
           ,[GumKur]
           ,[PltKur]
           ,[PldKur]
           ,[UsdKur]
           ,[EurKur]
           ,[Tag]
           ,[Locked]
           ,[UserId]
           ,[InsertDate]
           ,[IsDeleted]
           ,[Status]
           ,[LoginId]
           ,[MUser]
           ,[MTarih]
           ,[Mutabakat]
           ,[VaryantId]
           ,[OzelKodId]
           ,[LastModify]
           ,[Olcu]
           ,[RsAktar]
           ,[FaturaIscilikTL])


Select       (ROW_NUMBER() OVER (ORDER BY SubeId,KasaId,Cinsi,StokId)) + @IDCount as Id,
           0 as ProjeId,
           0 as HesapType, 
           null as OwnerRefNo,
           REPLACE(UPPER(NEWID()),'-','') as REFNO,
           SubeId  as SubeId, 
           KasaId  As KasaId,
           (Select TOP 1 Id From Cari.Hesaplar Where SubeId =B.SubeId And HesapAdi ='ERP_DEVIR') as HesapId,
           0 as FisNo,
           @Tarih as Tarih,
           Case When Cinsi ='MADEN' then  1 When Cinsi ='HURDA' then 2 When Cinsi='NAKIT' then 3 End as IslemKodu, 
           0 as IslemTuru,
           0 as IslemTipi, 
           @Tarih as Vade ,
           StokId as StokId ,
           0 as AyarEviId,
           '' as RaporNo,
           0 as IsRapor,
           0 as IsExtra,
           Kodu as Kodu,
           0 as BakiyeId,
           Adet as Adet,
           Miktar as Miktar,
           0 as CesniMiktar,
           Milyem as AuMilyem,
           0 as AgMilyem, 
           0 as PldMilyem,
           0 as PltMilyem, 
           0 as HasIsc,  
           0 as HasIscBirimId, 
           0 as HasIscBirimKur, 
           0 as GumIsc, 
           0 as GumIscBirimId, 
           0 as GumIscBirimKur, 
           0 as IscilikDurumu,
           0 as GumusDurumu, 
           0 as PlatinDurumu, 
           0 as PalladiumDurumu, 
           BirimFiyat  as Fiyat, 
           0 as FiyatTipi, 
           abs(Maliyet) as Tutar,
           Sistem.GetBirimToId ( Birim) as BirimId, 
           Birim as  Birim,
           Fn.GetKur (Sistem.GetBirimToId ( Birim)) as BirimKur,
           'DEVIR #' + left(replace(newId(),'-',''),7) AS Aciklama, 
           '' Kategori,
           '' AS Kategori2, 
           0 AS Maliyet,
           0 AS Satis, 
           Maliyet AS Iscilik, 
           Birim AS IscilikBirim, 
           Fn.GetKur (Sistem.GetBirimToId(Birim))  AS IscilikBirimKur, 
           Sistem.GetBirimToId (Birim) AS IscilikBirimId, 
           Fn.GetKur (Sistem.GetBirimToId( 'HAS')) AS HasKur,
           Fn.GetKur (Sistem.GetBirimToId( 'GUM'))  AS GumKur,
           Fn.GetKur (Sistem.GetBirimToId( 'PLT'))  as PltKur,
           Fn.GetKur (Sistem.GetBirimToId( 'PLD'))  as PldKur,
           Fn.GetKur (Sistem.GetBirimToId( 'USD'))  as UsdKur,
           Fn.GetKur (Sistem.GetBirimToId( 'EUR'))  as EurKur, 
           '' as Tag,
           0 as Locked,
           1 as UserId, 
           @Tarih as InsertDate,
           0 as IsDeleted,
           0 as [Status],
           1 as LoginId,
           '' as MUser,
           null as MTarih, 
           0 as Mutabakat,
           0 as VaryantId, 
           0 as OzelKodId, 
           null as LastModify, 
           0 as Olcu,
           0 as RsAktar, 
           0 as FaturaIscilikTL
from  #TempStoklar B

print 'STEP13   : Resmi Stoklar Devir Ediliyor'
Set @IDCount = (Select Max(Id) from Cari.Islemler Where Tarih =@Tarih)
-- Geçici tablo oluştur
CREATE TABLE #TempResmiStoklar (SubeId INT,Cinsi nvarchar(Max),StokId int,Kodu NVARCHAR(50),Adet int,Miktar DECIMAL(18, 2));

-- Sorgu sonuçlarını geçici tabloya ekle
INSERT INTO #TempResmiStoklar (SubeId,Cinsi,StokId, Kodu,Adet, Miktar)
    SELECT S.Id AS SubeId,st.Cinsi,St.StokId,ST.Kodu,ST.Adet, ST.Miktar 
    FROM Sistem.Subeler AS S 
    CROSS APPLY Muhasebe.Stoklar(S.Id, 0, GETDATE()) AS ST 
    WHERE ST.Miktar <> 0;

-- Geçici tablonun içeriğini kontrol et (isteğe bağlı)
     INSERT INTO [Cari].[Islemler]
           (Id,
           [ProjeId]
           ,[HesapType]
           ,[OwnerRefNo]
           ,[RefNo]
           ,[SubeId]
           ,[KasaId]
           ,[HesapId]
           ,[FisNo]
           ,[Tarih]
           ,[IslemKodu]
           ,[IslemTuru]
           ,[IslemTipi]
           ,[Vade]
           ,[StokId]
           ,[AyarEviId]
           ,[RaporNo]
           ,[IsRapor]
           ,[IsExtra]
           ,[Kodu]
           ,[BakiyeId]
           ,[Adet]
           ,[Miktar]
           ,[CesniMiktar]
           ,[AuMilyem]
           ,[AgMilyem]
           ,[PldMilyem]
           ,[PltMilyem]
           ,[HasIsc]
           ,[HasIscBirimId]
           ,[HasIscBirimKur]
           ,[GumIsc]
           ,[GumIscBirimId]
           ,[GumIscBirimKur]
           ,[IscilikDurumu]
           ,[GumusDurumu]
           ,[PlatinDurumu]
           ,[PalladiumDurumu]
           ,[Fiyat]
           ,[FiyatTipi]
           ,[Tutar]
           ,[BirimId]
           ,[Birim]
           ,[BirimKur]
           ,[Aciklama]
           ,[Kategori]
           ,[Kategori2]
           ,[Maliyet]
           ,[Satis]
           ,[Iscilik]
           ,[IscilikBirim]
           ,[IscilikBirimKur]
           ,[IscilikBirimId]
           ,[HasKur]
           ,[GumKur]
           ,[PltKur]
           ,[PldKur]
           ,[UsdKur]
           ,[EurKur]
           ,[Tag]
           ,[Locked]
           ,[UserId]
           ,[InsertDate]
           ,[IsDeleted]
           ,[Status]
           ,[LoginId]
           ,[MUser]
           ,[MTarih]
           ,[Mutabakat]
           ,[VaryantId]
           ,[OzelKodId]
           ,[LastModify]
           ,[Olcu]
           ,[RsAktar]
           ,[FaturaIscilikTL])


Select       (ROW_NUMBER() OVER (ORDER BY SubeId,KasaId,Cinsi,StokId)) + @IDCount as Id,
           0 as ProjeId,
           0 as HesapType, 
           null as OwnerRefNo,
           REPLACE(UPPER(NEWID()),'-','') as REFNO,
           SubeId  as SubeId, 
           (Select Top 1 Id From Sistem.Kasalar  Where SubeId =S.SubeId And IsDeleted =0) As KasaId,
           (Select TOP 1 Id From Cari.Hesaplar Where SubeId =S.SubeId And HesapAdi ='ERP_DEVIR') as HesapId,
           0 as FisNo,
           @Tarih as Tarih,
           Case When Cinsi ='MADEN' then  1 When Cinsi ='HURDA' then 2 When Cinsi='NAKIT' then 3 End as IslemKodu, 
           0 as IslemTuru,
           12 as IslemTipi, 
           @Tarih as Vade ,
           StokId as StokId ,
           0 as AyarEviId,
           '' as RaporNo,
           0 as IsRapor,
           0 as IsExtra,
           S.Kodu as Kodu,
           0 as BakiyeId,
           S.Adet as Adet,
           Miktar as Miktar,
           0 as CesniMiktar,
           IsNull(M.Milyem,1) as AuMilyem,
           0 as AgMilyem, 
           0 as PldMilyem,
           0 as PltMilyem, 
           0 as HasIsc,  
           0 as HasIscBirimId, 
           0 as HasIscBirimKur, 
           0 as GumIsc, 
           0 as GumIscBirimId, 
           0 as GumIscBirimKur, 
           0 as IscilikDurumu,
           0 as GumusDurumu, 
           0 as PlatinDurumu, 
           0 as PalladiumDurumu, 
           0  as Fiyat, 
           0 as FiyatTipi, 
           Miktar as Tutar,
           ISNULL (M.AnaBirimId,N.AnaBirimId) as BirimId, 
           Sistem.GetIdToBirim( ISNULL (M.AnaBirimId,N.AnaBirimId))  as  Birim,
           Fn.GetKur (Sistem.GetIdToBirim( ISNULL (M.AnaBirimId,N.AnaBirimId))) as BirimKur,
           'DEVIR #' + left(replace(newId(),'-',''),7) AS Aciklama, 
           '' Kategori,
           '' AS Kategori2, 
           0 AS Maliyet,
           0 AS Satis, 
           0 AS Iscilik, 
           null AS IscilikBirim, 
           0  AS IscilikBirimKur, 
           0 AS IscilikBirimId, 
           Fn.GetKur (Sistem.GetBirimToId( 'HAS')) AS HasKur,
           Fn.GetKur (Sistem.GetBirimToId( 'GUM'))  AS GumKur,
           Fn.GetKur (Sistem.GetBirimToId( 'PLT'))  as PltKur,
           Fn.GetKur (Sistem.GetBirimToId( 'PLD'))  as PldKur,
           Fn.GetKur (Sistem.GetBirimToId( 'USD'))  as UsdKur,
           Fn.GetKur (Sistem.GetBirimToId( 'EUR'))  as EurKur, 
           '' as Tag,
           0 as Locked,
           1 as UserId, 
           @Tarih as InsertDate,
           0 as IsDeleted,
           0 as [Status],
           1 as LoginId,
           '' as MUser,
           null as MTarih, 
           0 as Mutabakat,
           0 as VaryantId, 
           0 as OzelKodId, 
           null as LastModify, 
           0 as Olcu,
           0 as RsAktar, 
           0 as FaturaIscilikTL
from  #TempResmiStoklar S 
Left Join Stok.Maden M on M.Id=S.StokId And S.Cinsi ='MADEN'
left Join Stok.Nakit N on N.Id=S.StokId And S.Cinsi ='NAKIT'


-- İşlemler bittikten sonra geçici tabloyu sil
DROP TABLE #TempResmiStoklar;



SET IDENTITY_INSERT Cari.Islemler OFF
print  @SuccessMSG

print 'STEP14   : Kullanıcı Trigerları Açılıyor'
EXEC sp_executesql @EnableNonSystemTriggers  


print 'STEP15   : Arsiv Veritabanınız Sisteme Ekleniyor'
 -- Veritabanı var mı diye kontrol et
    IF NOT EXISTS (SELECT name FROM master.sys.databases WHERE name = N'ERPGLOBAL')
    BEGIN
        -- Veritabanı yoksa, oluştur
        EXEC('CREATE DATABASE ERPGLOBAL');
    END

    -- Veritabanında tablo var mı diye kontrol et
    IF NOT EXISTS (SELECT * FROM ERPGLOBAL.sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Company]') AND type in (N'U'))
    BEGIN
        -- Tablo yoksa, veritabanında tablo oluştur
        EXEC('
            USE ERPGLOBAL;
            CREATE TABLE [dbo].[Company](
                [DBName] [nvarchar](max) NULL,
                [Company] [nvarchar](max) NULL
            ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
        ');
    END

    Insert Into ERPGLOBAL.Dbo.Company(DBName,Company) Values (@RestoreDBName,@RestoreDBName)

print '**** Devir İşlemi Tamamlandı ****'

Kaynaklar

  • SRC-DB-MODULES — sys.sql_modules tanımı (salt okunur); gizli sabitler [REDACTED_SECRET] ile değiştirildi.

Bilinmeyenler

  • Hangi sürümde eklendiği: created DB tarihi bir kurulumun tarihidir, ürün sürümü değil (GAP-VERSION-02).