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)
| Kategori | F — MANUAL REVIEW · F-CONSTRAINT_OR_CROSSDB |
| Güven | 40 |
| Gerekçe | Güvenlik kontrolü pozitif: crossdb |
| Dinamik SQL | Bu 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_modulestanımı (salt okunur); gizli sabitler[REDACTED_SECRET]ile değiştirildi.
Bilinmeyenler
- Hangi sürümde eklendiği:
createdDB tarihi bir kurulumun tarihidir, ürün sürümü değil (GAP-VERSION-02).
