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

Sistem.Devir

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

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)

KategoriF — MANUAL REVIEW · F-DYNAMIC_SQL
Güven20
GerekçeAdı dinamik SQL kullanan modül(ler)de geçiyor: dbo.sp_DevirIslemiYap, Sistem.FromERP
Dinamik SQL eşleşmesidbo.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_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).