Tip: STORED PROCEDURE · Şema: Sistem · Modül: MOD-SISTEM · Temizlik sınıfı: MANUAL_REVIEW (kategori D, güven 80) · Kapsam: ERPGOLD_CORE / ALL
Kullanım haritası (13.09.2026)
| Kategori | F — MANUAL REVIEW · F-DYNAMIC_SQL |
| Güven | 20 |
| Gerekçe | Adı dinamik SQL kullanan modül(ler)de geçiyor: dbo.sp_DevirIslemiYap, Sistem.FromERP |
| Dinamik SQL eşleşmesi | dbo.sp_DevirIslemiYap, Sistem.FromERP |
Bkz. Database Usage Map · Manual Review. Hiçbir DB değişikliği yapılmadı; SAFETY > CLEANUP.
Temizlik kanıtı
| Kontrol | Sonuç |
|---|---|
| app | WEAK |
| report | NO |
| config | NO |
| dynamic | NO |
| db_in | NO |
| db_out | YES |
| trigger | NO |
| fk | NO |
| computed | NO |
| crossdb | NO |
| runtime | UNKNOWN |
| external | NO |
Gerekçe: Kaynak kodda yalnızca zayıf ad eşleşmesi var (sınıf/özellik adı olabilir); ikinci turda incelendi
KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)
Tür: PROCEDURE (P) · Modül: MOD-SISTEM · Uzunluk: 80 satır
Özet
Dönem devri prosedürü — verilen tarihten önceki işlem/geçmiş/transferleri arşivler (siler), bakiye ve stok defterlerini devir (açılış) satırlarıyla yeniden kurar. Tetikleyiciler süreç boyunca kapatılır.
Parametreler
| # | Parametre | Tip | Çıktı |
|---|---|---|---|
| 1 | @Tarih | date |
Bağımlılıklar (bu nesne → hedef)
| İlişki | Hedef | Tip |
|---|---|---|
| WRITES | Cari.AccountLog | TABLE |
| WRITES | Cari.BakiyeIslem | TABLE |
| WRITES | Cari.History | TABLE |
| WRITES | Cari.IslemDetaylari | TABLE |
| WRITES | Cari.Islemler | TABLE |
| WRITES | Cari.Transferler | TABLE |
| CALLS | Sistem.GetKurListesi | FUNCTION |
| WRITES | Sistem.Login | TABLE |
| CALLS | Stok.GetMadenStoklari | FUNCTION |
| CALLS | Stok.GetNakitStoklari | FUNCTION |
| WRITES | Stok.StokHaraketleri | TABLE |
İlgili iş kuralları
- Cari.Islemler triggerlarını DISABLE eder, stok ve bakiye defterlerini devir satırlarıyla (IslemId=-1) yeniden oluşturup TRUNCATE+INSERT eder, eski işlemleri siler, triggerları ENABLE eder (Sistem.Devir.md)
- Login ve AccountLog TRUNCATE edilir (Sistem.Devir.md)
SQL tanımı (AS-IMPLEMENTED, örnek DB)
Create Proc Sistem.Devir(@Tarih Date)
as
print 'Triggerlar Disable Ediliyor.'
Alter Table Cari.Islemler DISABLE TRIGGER ALL
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Print 'Stok Haraketleri Arsivleniyor.....'
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF OBJECT_ID(N'tempdb..#TBLStokHaraketleri') IS NULL
BEGIN
CREATE TABLE [#TBLStokHaraketleri](IslemId int,Bolum int,IslemTuru int,Tarih Date,SubeId int,KasaId int,StokTipi int,StokId int,Adet int,Miktar Decimal(18,2),Milyem Decimal(18,5),Has Decimal(18,2),Maliyet Decimal(18,2),VaryantId int)
END
ELSE
BEGIN
TRUNCATE TABLE #TBLStokHaraketleri
END
INSERT INTO #TBLStokHaraketleri
Select * from
(
Select -1 as IslemId,0 as Bolum,Case When Miktar>0 Then 0 Else 1 End as IslemTuru,dateadd(day,-1,@Tarih) as Tarih,SubeId,KasaId,2 as StokTipi,StokId,0 as Adet,Miktar,0 as Milyem,0 as Has,0 as MAliyet,0 as VaryantId from Stok.GetNakitStoklari (0,0,dateadd(day,-1,@Tarih))
UNION ALL
Select IslemId,Bolum,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet,VaryantId from stok.StokHaraketleri Where Tarih >=@Tarih And StokTipi =2
UNION ALL
Select -1 as IslemId,0 as Bolum,Case When Miktar>0 Then 0 Else 1 End as IslemTuru,dateadd(day,-1,@Tarih) as Tarih,SubeId,KasaId,1 as StokTipi,M.Id as StokId,0 as Adet,Miktar,0 as Milyem,0 as Has,convert( decimal(18,2), Maliyet * K.Alis) as Maliyet,0 as VaryantId from Stok.GetMadenStoklari (0,0,dateadd(day,-1,@Tarih),0) M Left Join Sistem.GetKurListesi (getdate()) K on K.Birim =M.Birim
UNION ALL
Select IslemId,Bolum,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet,VaryantId from stok.StokHaraketleri Where Tarih >=@Tarih And StokTipi =1
) X
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Print 'Bakiye Haraketleri Arsivleniyor.....'
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF OBJECT_ID(N'tempdb..#TBLDevirBakiye') IS NULL
BEGIN
CREATE TABLE #TBLDevirBakiye(IslemID int,Tarih Date,HesapType int,HesapId int,KasaId int,BirimId int,Bakiye decimal(18,2),RefNo nvarchar(36)) ON [PRIMARY]
END
ELSE
BEGIN
TRUNCATE TABLE #TBLDevirBakiye
END
INSERT INTO #TBLDevirBakiye
Select * from
(
Select -1 as IslemId,DATEADD (day, -1,@Tarih) as Tarih,0 as HesapType,HesapId ,KasaId,BirimId ,Sum(Bakiye) as Bakiye,NEWID() as RefNo from Cari.BakiyeIslem Where Tarih <@Tarih
group by HesapId,KasaId ,BirimId Having SUM(Bakiye)<>0
UNION ALL
Select IslemId,Tarih,0 as HesapType,HesapId ,KasaId,BirimId ,Bakiye as Bakiye,RefNo from Cari.BakiyeIslem Where Tarih >=@Tarih
) X Order by IslemId
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print 'Stok Haraketleri Ve Bakiyeler Yeniden Hesaplanıyor.'
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
truncate Table Cari.BakiyeIslem
truncate Table Stok.StokHaraketleri
Insert Into Cari.BakiyeIslem Select * from #TBLDevirBakiye
Insert Into Stok.StokHaraketleri Select * from #TBLStokHaraketleri
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print 'İşlemler Arşivleniyor.....'
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Delete From Cari.Islemler Where convert(date, IsNull(Tarih,InsertDate ))<@Tarih
Delete From Cari.History Where convert(date, IsNull(Tarih,InsertDate ))<@Tarih
Delete From Cari.Transferler Where convert(date, IsNull(Tarih,InsertDate ))<@Tarih
Delete From Cari.IslemDetaylari Where IslemId not in (Select Id From Cari.Islemler)
truncate Table Sistem.Login
truncate Table Cari.AccountLog
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
print 'Triggerlar Enable Ediliyor.'
Alter Table Cari.Islemler ENABLE TRIGGER ALL
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).
