AIFA AKADEMI · Kurumsal Wiki
4.330 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

BASE künyesi ve kullanım haritası (v1.5 · 13.09.2026)

BASE DurumuBASE dışı — BASE Status: CANDIDATE_CANONICAL (Runtime Certification tamamlanmadı)
BASE SınıfıUNKNOWN (BASE MASTER) · Wiki önerisi: UNKNOWN — F-DYNAMIC_SQL · Action: MANUAL_REVIEW · Güven: LOW
Runtime CertificationN/A — BASE üyesi değil
Kodda Kullanılıyor mu?HAYIR — doğrudan/dolaylı kod referansı bulunamadı
Kod Referans SayısıBASE taraması: 0 (uygulama kodunda string literal referansı yok) · Kullanım Haritası kanıtı: 0 kayıt
Kullanan Ekranlar
Kullanan Class/Method
Incoming Dependency (bunu kullanan nesneler)
Outgoing Dependency (bunun kullandığı nesneler)Cari.AccountLog, Cari.BakiyeIslem, Cari.History, Cari.IslemDetaylari, Cari.Islemler, Cari.Transferler, Sistem.GetKurListesi, Sistem.Login, Stok.GetMadenStoklari, Stok.GetNakitStoklari … (+1)
Trigger İlişkisiyok
Ticket Problem AileleriPF-034, PF-036
Bilinen HatalarERR-OBS-036, ERR-OBS-251, ERR-SIL-065 (Hata Bilgi Bankası; Gözlemlendi durumu kayıtta)
Bilinen SQL RiskleriSQLR-065
Health Check KuralıINV-05, INV-16, INV-24, INV-29
Müşteri Özel mi?HAYIR
Opsiyonel Modül mü?HAYIR
Legacy mi?HAYIR
Son Doğrulama Tarihi13.09.2026 — statik analiz (katalog 2026-09-10 + kaynak kod taraması). Çalışma zamanı doğrulaması: PENDING

Kullanım haritası

Kullanım Haritası kategorisiF — MANUAL REVIEW · F-DYNAMIC_SQL · güven 20
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
Uzlaştırma10_Manual_Review — Her iki yöntem de karar veremedi: Adı dinamik SQL kullanan modül(ler)de geçiyor: dbo.sp_DevirIslemiYap, Sistem.FromERP

Bkz. ERPGOLD BASE · Uzlaştırma · Database Usage Map · Kullanım Haritası Manual · Hata Bilgi Bankası. BASE Status: CANDIDATE_CANONICAL · Runtime Certification: PENDING · 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).